Integration GuidesDocs
Coverage MatrixDocumentationChange LogLog InContact Us
Docs

Push Events

Global Hockey Push Events provides real-time event updates for all live matches.

Syntax

https://api.sportradar.com/icehockey/{access_level}/stream/events/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=icehockey
competition_idCompetition id

Example: competition_id=sr:competition:237
event_idEvent type

Example: event_id=score_change
formatFormat type

json, xml

Example: format=json
season_idSeason id

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

>Example: sport_event_id=sr:sport_event:18449748
sport_idSport id

Example: sport_id=sr:sport:4


Code Samples

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

url = URI("https://api.sportradar.com/icehockey/trial/stream/events/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/icehockey/trial/stream/events/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/icehockey/trial/stream/events/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/icehockey/trial/stream/events/subscribe?&format=json&sport_event_id=sr:sport_event_id:18449748")

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/icehockey/trial/stream/events/subscribe",
    params = {'format': 'json', 'sport_event_id': 'sr:sport_event_id:18449748'},
    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/icehockey/trial/stream/events/subscribe?&format=json&sport_event_id=sr:sport_event_id:18449748'
  -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. icehockey
competition_idmetadataStringUnique Id of a competition

ex. sr:competition:268
event_idmetadataStringType of timeline event. Reference enum_event_type in our Global Ice Hockey OpenAPI Spec for a complete list of event types

ex. match_started, score_change, suspension
formatmetadataStringFormat type of the response

json, xml
season_idmetadataStringUnique Id of a season

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

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

ex. sr:sport:4
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. icehockey-v2
Game Timeline
AttributeParent ElementTypeDescription
away_scoreeventIntegerScore for the away team after a timeline event
break_nameeventStringBrief description of a break event

ex. 1st_pause
competitoreventStringDesignation of a competitor for a timeline event

home, away
home_scoreeventIntegerScore for the home team after a timeline event
ideventIntegerUnique ID for a timeline event

ex. 1721786685
match_clockeventStringClock value for a timeline event, in minutes and seconds

ex. 47:04
match_timeeventIntegerClock value of a timeline event, in minutes

ex. 48
periodeventIntegerPeriod number of a timeline event
period_nameeventStringPeriod name of a timeline event, appearing at the beginning of a period

ex. 1st_period
suspension_minuteseventIntegerNumber of suspension minutes for a suspension event
timeeventDate-timeTimestamp of a timeline event

ex. 2024-04-16T20:49:49+00:00
typeeventStringType of timeline event. Reference enum_event_type in our Global Ice Hockey OpenAPI Spec for a complete list of event types

ex. match_started, suspension, penalty_missed
updatedeventBooleanSignifies this event has been updated since its original entry when true
updated_timeeventDate-timeTimestamp of an updated time entry

ex. 2024-04-22T17:17:24+00:00
Player Event Details
AttributeParent ElementTypeDescription
idevent - playerStringUnique player Id associated with a timeline event

ex. sr:player:1306498
nameevent - playerStringPlayer name associated with a timeline event

ex. Marcinek, Patrik
typeevent - playerStringType of timeline event associated with a player

ex. scorer, assist, secondary_assist
Sport Event Status
AttributeParent ElementTypeDescription
aggregate_away_scoresport_event_statusIntegerAggregate score (of multiple sport events) for the away team
aggregate_home_scoresport_event_statusIntegerAggregate score (of multiple sport events) for the home team
aggregate_winner_idsport_event_statusStringUnique ID of the aggregate score winner

ex. sr:competitor:3945
away_normaltime_scoresport_event_statusIntegerScore for the away team in normal time
away_scoresport_event_statusIntegerTotal score for the away team in the game
home_normaltime_scoresport_event_statusIntegerScore for the home team in normal time
home_scoresport_event_statusIntegerTotal score for the home team in the game
decided_by_fedsport_event_statusBooleanSignifies a match result was decided by the federation when true. For example, incomplete due to crowd disruption
match_statussport_event_statusStringStatus within a match. Provides more detail on the state of a match when live than status

ex. not_started, 1st_period, 1st_extra, awaiting_extra_time

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

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:3950
Sport Event Situation
AttributeParent ElementTypeDescription
away_scoresport_event_status - period_scoresIntegerAway team period score
home_scoresport_event_status - period_scoresIntegerHome team period score
numbersport_event_status - period_scoresIntegerPeriod number
typesport_event_status - period_scoresStringPeriod type

regular_period, overtime, 1st_period, 1st_pause, 2nd_period, 2nd_pause, 3rd_period, awaiting_extra, awaiting_penalties, penalties, interrupted