Docs
Coverage MatrixDocumentationChange LogLog InContact Us
Docs

Push Statistics

Displays statistics information for live events.

Syntax

https://api.sportradar.com/snooker/{access_level}/stream/statistics/subscribe

Parameters

ParameterDescription
access_levelDefines the access level of your API key

production, trial
🔐

Authorization

Place your API key in the header for each request (x-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.

Each query string parameter can be added with a preceding ampersand (&).

URL ParametersDescription
channelChannel type

Example: channel=snooker
competition_idCompetition id

Example: competition_id=sr:competition:20508
event_idEvent id

Example: event_id=535536474
formatFormat type

json, xml
season_idSeason id

Example: season_id=sr:season:63867
sport_event_idSport event id

Example: sport_event_id=sr:sport_event:17738118
sport_idSport id

Example: sport_id=sr:sport:19


Code Samples

require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://api.sportradar.com/snooker/trial/stream/statistics/subscribe")

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)
request["x-api-key"] = "{your_api_key}"  # Replace with your actual key

response = http.request(request)
puts response.read_body
import requests
import json

headers = {
    'x-api-key': 'your_api_key'  # Replace with your actual key
}

r = requests.get(
    "https://api.sportradar.com/snooker/trial/stream/statistics/subscribe",
    headers=headers,
    allow_redirects=False
)

redirect_url = r.headers['Location']
r = requests.get(redirect_url, stream=True, headers=headers)

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 -X GET 'https://api.sportradar.com/snooker/trial/stream/statistics/subscribe' \
  -H 'x-api-key: {your_api_key}'

Samples with Query String Params

require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://api.sportradar.com/snooker/trial/v2/stream/statistics/subscribe?&format=json&sport_event_id=sr:sport_event:16519273")

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)
request["x-api-key"] = "{your_api_key}"  # Replace with your actual key

response = http.request(request)
puts response.read_body
import requests
import json

headers = {
    'x-api-key': 'your_api_key'  # Replace with your actual key
}

r = requests.get("https://api.sportradar.com/snooker/trial/v2/stream/statistics/subscribe",
    params = {'format': 'json', 'sport_event_id': 'sr:sport_event:16519273'},
    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 -X GET 'api.sportradar.com/snooker/trial/v2/stream/statistics/subscribe?&format=json&sport_event_id=sr:sport_event:16519273'
  -H 'x-api-key: {your_api_key}'


Response Sample

The above commands return json like this.



Data Points

Metadata
AttributeParent ElementTypeDescription
channelmetadataStringSport of the stream connection

ex. snooker
competition_idmetadataStringUnique Id of a competition

ex. sr:competition:2055
event_idmetadataStringType of timeline event

ex. match_started, score_change, frame_started, change_of_possession, ball_pot

See our FAQ for a complete list of timeline event values
formatmetadataStringFormat type of the response

json, xml
season_idmetadataStringUnique Id of a season

ex. sr:season:104989
sport_event_idmetadataStringUnique Id of a sport event

ex. sr:sport_event_id:49877723
sport_idmetadataStringUnique Id of a sport

ex. sr:sport:12
fromheartbeatIntegerUnix timestamp of the beginning of a heartbeat message

ex. 1713804799
toheartbeatIntegerUnix timestamp of the end of a heartbeat message

ex. 1713804804
intervalheartbeatIntegerInterval of a heartbeat message in seconds
typeheartbeatStringType of heartbeat message

ex. events, statistics
packageheartbeatStringPackage of a heartbeat message

ex. snooker-v2
Competitor
AttributeParent ElementTypeDescription
abbreviationstatistics - competitorsStringAbbreviation for a competitor name

ex. JON (Jones, Jak)
idstatistics - competitorsStringUnique ID for a competitor

ex. sr:competitor:130248
namestatistics - competitorsStringName for a competitor

ex. Jones, Jak
qualifierstatistics - competitorsStringDesignation of a competitor for a match

home, away
Sport Event Status
AttributeParent ElementTypeDescription
away_scoresport_event_statusIntegerTotal score for the away competitor in a match
home_scoresport_event_statusIntegerTotal score for the home competitor in a match
match_statussport_event_statusStringStatus within a match (sport event). Provides more detail on the state of a match when live than status

ex. not_started, interrupted, in_progress, ended

See our FAQ for a complete list of statuses and their definitions.
count_abandonedsport_event_statusBooleanSignifies a match was abandoned by a scout when true
statussport_event_statusStringStatus of a sport event

ex. not_started, live, ended, closed

See our FAQ for a complete list of statuses and their definitions.
winner_idsport_event_statusStringUnique ID of the match winner

ex. sr:competitor:120814
Period Scores
AttributeParent ElementTypeDescription
away_scoresport_event_status - period_scoresIntegerAway competitor period score
home_scoresport_event_status - period_scoresIntegerHome competitor period score
numbersport_event_status - period_scoresIntegerPeriod number
typesport_event_status - period_scoresStringPeriod type

ex. regular_period, snooker_session_break
Match Stats (Competitor)
AttributeParent ElementTypeDescription
balls_pottedcompetitors - statisticsIntegerNumber of balls potted for a competitor in a match
black_balls_pottedcompetitors - statisticsIntegerNumber of black balls potted for a competitor in a match
blue_balls_pottedcompetitors - statisticsIntegerNumber of blue balls potted for a competitor in a match
breaks_100_pluscompetitors - statisticsIntegerNumber of 100+ point breaks for a competitor in a match
breaks_50_pluscompetitors - statisticsIntegerNumber of 50+ point breaks for a competitor in a match
brown_balls_pottedcompetitors - statisticsIntegerNumber of brown balls potted for a competitor in a match
fouls_concededcompetitors - statisticsIntegerNumber of fouls conceded for a competitor in a match
green_balls_pottedcompetitors - statisticsIntegerNumber of green balls potted for a competitor in a match
highest_breakcompetitors - statisticsIntegerHighest break number for a competitor in a match
pink_balls_pottedcompetitors - statisticsIntegerNumber of pink balls potted for a competitor in a match
pointscompetitors - statisticsIntegerNumber of total points for a competitor in a match
red_balls_pottedcompetitors - statisticsIntegerNumber of red balls potted for a competitor in a match
shots_takencompetitors - statisticsIntegerNumber of total shots taken for a competitor in a match
time_on_table_percentagecompetitors - statisticsDoublePercentage of time on the table for a competitor in a match

ex. 0.49958207083899
time_on_table_secondscompetitors - statisticsIntegerAmount of time on the table in seconds for a competitor in a match
yellow_balls_pottedcompetitors - statisticsIntegerNumber of yellow balls potted for a competitor in a match