Push Feeds
The NCAAFB API's Push feeds stream data to you as it is entered, over a long-lived HTTP connection, removing the need to poll during live windows. Push complements the REST feeds rather than replacing them: there is no stateful session, so after any disconnection the matching REST feed fills the gap.
The Push Feeds
| Feed | What it streams |
|---|---|
| Push Events | Every play and game event as it lands, with the game header and situation context |
| Push Statistics | Team and player statistic lines updated as plays are entered |
Opening a Connection
Subscribe with a single GET; follow redirects and keep the connection open:
GET https://api.sportradar.com/ncaafb/{access_level}/stream/{language_code}/events/subscribeGET https://api.sportradar.com/ncaafb/{access_level}/stream/{language_code}/statistics/subscribeFiltering the Stream
By default a connection carries every live game. Query string parameters narrow the stream:
| Parameter | Purpose |
|---|---|
event_category | Event families such as redzone, two_minute, scoring_play, big_play, turnover |
event_type | Specific event types such as timeout, two_minute_warning, period_end, game_over |
match | A single game |
team | A single team's games |
status | inprogress or created |
locale | Language code (en) |
The Push Events reference page carries the full parameter list with examples.
Reading the Stream
Messages arrive one JSON object per line. Heartbeats confirm the connection every five seconds:
{
"heartbeat": {
"interval": 5000
}
}An event message pairs the game header with the event itself (trimmed to scalar fields):
{
"payload": {
"game": {
"id": "fd3b9a50-7b22-45ea-852b-fe9362affc9d",
"title": "Rose Bowl",
"parent_id": "9c77e6a1-d2c6-483a-a01e-150797e94e7e",
"status": "inprogress",
"coverage": "full",
"neutral_site": true,
"game_type": "playoff",
"playoff_game_type": "CFP Quarterfinal",
"expected_latency": 25,
"scheduled": "2026-01-01T21:00:00+00:00",
"entry_mode": "LDE",
"wx_temp": 63,
"wx_humidity": 94,
"wx_wind_speed": 6,
"wx_wind_direction": "S",
"wx_condition": "Partly cloudy",
"weather": "Partly cloudy Temp: 63 F, Humidity: 94%, Wind: S 6 mph",
"quarter": 1,
"clock": "15:00",
"conference_game": false,
"sr_id": "sr:match:66951994"
},
"event": {
"type": "play",
"id": "55618620-e750-11f0-a712-15d9367530ce",
"sequence": 1767301964210,
"clock": "15:00",
"home_points": 0,
"away_points": 0,
"created_at": "2026-01-01T21:12:44+00:00",
"updated_at": "2026-01-01T21:12:44+00:00",
"play_type": "kickoff",
"wall_clock": "2026-01-01T21:12:39+00:00",
"source": "SRUS",
"official": true,
"fake_punt": false,
"fake_field_goal": false,
"screen_pass": false,
"play_action": false,
"run_pass_option": false,
"description": "C.Talty kicks 65 yards from ALA 35 to the IND End Zone. Touchback."
}
},
"locale": "en",
"metadata": {
"match": "sd:match:fd3b9a50-7b22-45ea-852b-fe9362affc9d,sr:match:66951994",
"team": "sd:team:19775492-f1eb-4bc5-9e15-078ebd689c0f",
"league": "ncaafb",
"locale": "en",
"status": "inprogress",
"event_type": "kickoff",
"event_category": "",
"operation": "update",
"version": "v7"
}
}Messages arrive ahead of the television picture. Broadcast integrations commonly hold the display of push data back so it lands with their video feed; apply that offset in the presentation layer and keep ingestion immediate.
Statistics Messages
Statistics messages carry the team context and the updated statistic lines (trimmed):
{
"payload": {
"name": "Crimson Tide",
"market": "Alabama",
"alias": "ALA",
"id": "fd3b9a50-7b22-45ea-852b-fe9362affc9d",
"title": "Rose Bowl",
"parent_id": "9c77e6a1-d2c6-483a-a01e-150797e94e7e",
"status": "inprogress",
"coverage": "full",
"neutral_site": true,
"game_type": "playoff",
"playoff_game_type": "CFP Quarterfinal",
"expected_latency": 25,
"scheduled": "2026-01-01T21:00:00+00:00",
"entry_mode": "LDE",
"wx_temp": 63,
"wx_humidity": 94,
"wx_wind_speed": 6,
"wx_wind_direction": "S",
"wx_condition": "Partly cloudy",
"weather": "Partly cloudy Temp: 63 F, Humidity: 94%, Wind: S 6 mph",
"quarter": 1,
"clock": "15:00",
"conference_game": false,
"sr_id": "sr:match:66951994",
"team": {
"name": "Crimson Tide",
"market": "Alabama",
"alias": "ALA",
"id": "19775492-f1eb-4bc5-9e15-078ebd689c0f"
}
},
"locale": "en",
"metadata": {
"match": "sd:match:fd3b9a50-7b22-45ea-852b-fe9362affc9d,sr:match:66951994",
"league": "ncaafb",
"locale": "en",
"status": "inprogress",
"participant": "sd:team:19775492-f1eb-4bc5-9e15-078ebd689c0f",
"operation": "update",
"version": "v7"
}
}Metadata and Routing
Every payload closes with a metadata block: the league, the game, the game status, the operation, and the event type or participant the message concerns. Comma-delimited values pair the sd:-prefixed GUID with the sr: URN for the same entity, so read them as an array:
"match": "sd:match:fd3b9a50-...,sr:match:66951994"is one game under both ID families- Event messages name the team in
teamand statistics messages name the team or player inparticipant; in the messages above these carry the GUID alone - Route messages by
metadata.matchbefore parsing the payload when you track several games on one connection - Filter high-interest moments client-side with
event_typeandevent_category, which carry the same values the query string parameters accept
Recovering from Disconnections
If you are disconnected, resubscribe and use the corresponding RESTful feed to catch up: request the Game Play-by-Play to recover missed plays, and the Game Statistics feed to refresh statistic lines. Design the catch-up path first; live streams should always have a REST fallback.
Testing Push
You can use our API Simulations to open a continuous Push simulation of a NCAAFB game. Simulations replay past games as if they were live, over both REST and Push, so connection handling, parsing, and recovery can be exercised at any time of year.
Updated 8 days ago
