Returns detailed, real-time information on every match event
Syntax
https://api.sportradar.com/tennis/{access_level}/{version}/stream/events/subscribe?api_key={your_api_key} |
Parameters
Parameter | Description |
---|---|
access_level | Defines the access level of your API keyproduction , trial |
version | Version number of the APIv3 |
your_api_key | Your API key |
Optional Query String Parameters
By default, a Push feed will provide all data available for all in progress games. If needed, you can filter the data returned by including query strings.
Optional query string parameters must be added after your API key with an ampersand (&
). If you are filtering for more than one result, separate the results with a comma (,
) and no spaces.
Parameter | Description |
---|---|
event_id | Event id Example: event_id=point |
format | Format returnedjson , xml Example: format=json |
sport_event_id | Sport Event id Example: sport_event_id=sr:sport_event:27496678 |
season_id | Season id Example: season_id=sr:season:81932 |
competition_id | Competition id Example: competition_id=sr:competition:16126 |
Code Samples
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.sportradar.com/tennis/trial/v3/stream/events/subscribe?api_key={your_api_key}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
import requests
import json
r = requests.get("https://api.sportradar.com/tennis/trial/v3/stream/events/subscribe",
params = {'api_key': 'your_api_key'},
allow_redirects=False)
redirect_url = r.headers['Location']
r = requests.get(redirect_url, stream=True)
for line in r.iter_lines():
# filter out keep-alive new lines
if line:
decoded_line = line.decode('utf-8')
print(json.loads(decoded_line))
curl -L GET 'api.sportradar.com/tennis/trial/v3/stream/events/subscribe?api_key={your_api_key}'
Samples with Query String Params
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.sportradar.com/tennis/trial/v3/stream/events/subscribe?api_key={your_api_key}&format=json&competition_id=sr:competition:16126")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
import requests
import json
r = requests.get("https://api.sportradar.com/tennis/trial/v3/stream/events/subscribe",
params = {'api_key': 'your_api_key', 'format': 'json', 'competition_id': 'sr:competition:16126'},
allow_redirects=False)
redirect_url = r.headers['Location']
r = requests.get(redirect_url, stream=True)
for line in r.iter_lines():
# filter out keep-alive new lines
if line:
decoded_line = line.decode('utf-8')
print(json.loads(decoded_line))
curl -L GET 'api.sportradar.com/tennis/trial/v3/stream/events/subscribe?api_key={your_api_key}&format=json&competition_id=sr:competition:16126'
Response Sample
The above commands return json like this.
Data Points
Metadata:
Attribute | Parent Element | Type | Description |
---|---|---|---|
channel | metadata | String | Sport of the stream connection ex. tennis |
competition_id | metadata | String | Unique Id of a competition ex. sr:competition:34630 |
event_id | metadata | String | Description of a push timeline event ex. point or period_score |
format | metadata | String | Format type of the responsejson , xml |
season_id | metadata | String | Unique Id of a season ex. sr:season:121215 |
sport_event_id | metadata | String | Unique Id of a sport event ex. sr:sport_event_id:51950313 |
sport_id | metadata | String | Unique Id of a sport ex. sr:sport:5 |
from | heartbeat | Integer | Unix timestamp of the beginning of a heartbeat message ex. 1722267631 |
to | heartbeat | Integer | Unix timestamp of the end of a heartbeat message ex. 1722267636 |
interval | heartbeat | Integer | Interval of a heartbeat message in seconds |
type | heartbeat | String | Type of heartbeat message ex. events , statistics |
package | heartbeat | String | Package of a heartbeat message ex. tennis-v3 |
Game State:
Attribute | Parent Element | Type | Description |
---|---|---|---|
advantage | sport_event_status - game_state | String | Signifies the competitor with the advantage in the gamehome , away |
away_score | sport_event_status - game_state | Integer | Score for the away competitor in a game ex. 0 , 15 , 30 , 40 |
home_score | sport_event_status - game_state | Integer | Score for the home competitor in a game ex. 0 , 15 , 30 , 40 |
last_point_result | sport_event_status - game_state | String | Result of the last point in a gameserver_winner , receiver_winner , ace , double_fault |
point_type | sport_event_status - game_state | String | Type of point scoredgame , break , set , match |
serving | sport_event_status - game_state | String | Signifies the competitor currently servinghome , away |
tie_break | sport_event_status - game_state | Boolean | Signifies a match is in a tie break when true |
Sport Event Status:
Attribute | Parent Element | Type | Description |
---|---|---|---|
away_score | sport_event_status | Integer | Total score for the away competitor in a match |
decided_by_fed | sport_event_status | Boolean | Signifies a match result was decided by the federation when true . For example, incomplete due to crowd disruption |
home_score | sport_event_status | Integer | Total score for the home competitor in a match |
match_status | sport_event_status | String | Status within a match (sport event). Provides more detail on the state of a match when live than status ex. not_started , interrupted , 1st_set , walkover See our FAQ for a complete list of statuses and their definitions. |
scount_abandoned | sport_event_status | Boolean | Signifies a match was abandoned by a scout when true |
status | sport_event_status | String | Status of a sport event ex. not_started , live , ended , closed See our FAQ for a complete list of statuses and their definitions. |
winner_id | sport_event_status | String | Unique ID of the match winner ex. sr:competitor:138546 |
winning_reason | sport_event_status | String | Winning reason description for a match ex. walkover |
Period Scores:
Attribute | Parent Element | Type | Description |
---|---|---|---|
away_score | sport_event_status - period_scores | Integer | Away competitor set score |
away_tiebreak_score | sport_event_status - period_scores | Integer | Away competitor tiebreak set score |
home_score | sport_event_status - period_scores | Integer | Home competitor set score |
home_tiebreak_score | sport_event_status - period_scores | Integer | Home competitor tiebreak set score |
number | sport_event_status - period_scores | Integer | Set number |
type | sport_event_status - period_scores | String | Period type ex. set |
Match Timeline:
Attribute | Parent Element | Type | Description |
---|---|---|---|
away_score | event | Integer | Away competitor point score ex. 0 , 15 , 30 , 40 |
competitor | event | String | Designation of a competitor for a timeline eventhome , away |
first_serve_fault | event | Boolean | Signifies the first serve of a point was a fault when true |
home_score | event | Integer | Home competitor point score ex. 0 , 15 , 30 , 40 |
id | event | Integer | Unique ID for a timeline event ex. 1804315823 |
period | event | Integer | Set number of a timeline event. Populates for each period_score event. |
period_name | event | String | Period name of a timeline event, appearing at the beginning of a period ex. 2nd_set |
reason | event | String | Reason for a match_suspended eventtoilet_break , bad_weather , trainer_called |
result | event | String | Result of an eventace , double_fault , server_won , receiver_won , unknown |
result | event | String | Result of an eventace , double_fault , server_won , receiver_won , unknown |
server | event | String | Server for a timeline eventhome , away |
time | event | Date-time | Timestamp of a timeline event ex. 2024-04-16T20:49:49+00:00 |
type | event | String | Type of timeline event. See our Tennis OpenAPI for a complete list of event types under enum_event_type ex. match_started , point , match_suspended |
updated | event | Boolean | Signifies this event has been updated since its original entry when true |
updated_time | event | Date-time | Timestamp of an updated time entry ex. 2024-04-22T17:17:24+00:00 |