Integration GuidesReference Docs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

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

FeedWhat it streams
Push EventsEvery play and game event as it lands, with the game header and situation context
Push StatisticsTeam 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/subscribe
GET https://api.sportradar.com/ncaafb/{access_level}/stream/{language_code}/statistics/subscribe
PUSH CONNECTION LIFECYCLEone connection covers every live NCAAFB game
1. SubscribeGET /stream/en/events/subscribethe connection redirects, then stays open
2. Streamchunked messagesone JSON message per line; heartbeats every 5 seconds confirm a healthy connection
3. Applyreplace by ideach message carries full current state for its entity; newer replaces older
4. Reconnectresubscribe + REST catch-upon a drop, open a new connection and refill the gap from the matching REST feeds
Push complements the REST feeds; it does not replace them.


Filtering the Stream

By default a connection carries every live game. Query string parameters narrow the stream:

ParameterPurpose
event_categoryEvent families such as redzone, two_minute, scoring_play, big_play, turnover
event_typeSpecific event types such as timeout, two_minute_warning, period_end, game_over
matchA single game
teamA single team's games
statusinprogress or created
localeLanguage 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 team and statistics messages name the team or player in participant; in the messages above these carry the GUID alone
  • Route messages by metadata.match before parsing the payload when you track several games on one connection
  • Filter high-interest moments client-side with event_type and event_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.




Did this page help you?