Intro to Push
Insights Push feeds deliver real-time JSON payloads over a persistent HTTP connection, reducing the need for repeated REST API calls.
These feeds use a publish/subscribe model:
- You subscribe via a single HTTP request
- The server continuously streams updates as they occur
- A heartbeat message is sent every 5 seconds when no new data is available
Push feeds mirror the structure of their corresponding REST endpoints, making them easy to integrate into existing workflows.
Quick Start
- Open a streaming HTTP connection to the endpoint
- Provide your API key
- Optionally filter results using query parameters
- Continuously process incoming JSON messages
Example
curl -N \
--request GET \
--url "https://api.sportradar.com/insights/production/stream/nba/sportradar/subscribe?insight_type=scoring" \
--header "x-api-key: YOUR_API_KEY"How It Works
- The connection remains open and streams data continuously
- Updates are sent as soon as new data is available
- When idle, heartbeat messages are sent every 5 seconds
- No historical data is replayed upon reconnect
Technical Requirements
To accept data from our Push feeds, ensure that your application can:
- Can follow a HTTP redirect or use the location provided in the feeds header within one minute of your initial request.
- Can accept HTTP data transfer encoded as chunked.
Access
Each Insights Push feed is available based on your subscription (e.g., NBA, NFL, MLB).
Refer to your Marketplace account to confirm access.
Disconnections
Our Push service does not provide a "stateful session", there is no memory of what data has been sent previously.
Should you cease to receive heartbeat messages, or are disconnected from the Push service for any reason, re-connect using your same initial request.
Endpoint
https://api.sportradar.com/insights/production/stream/{league}/{provider}/subscribe
Path Parameters
| Parameter | Description |
|---|---|
league | League for Insightsmlb, nba, ncaafb, ncaamb, nfl, nhl |
provider | Insight providersportradar (Scoring, Milestones, Leaderboards, Highs)fansure (Player Betting Trends, Team Betting Trends)tallysight (Expert Picks)fairplay (Lineup Changes, Predictions) |
Optional Query Parameters
| Parameter | Description |
|---|---|
insight_type | Filter by insight type (scoring, milestones, leaderboards, highs, expert_picks, player_betting_trends, team_betting_trends, lineup_changes, predictions) |
locale | Language (en, fr, de, it, es)Note: Non-English translations are currently only available for scoring insights |
subject_type | Filter scope: game, team, or player |
game_id | Filter by game. Accepts a Sportradar ID (sr:match:...) or UUID |
player_id | Filter by player. Accepts a Sportradar ID (sr:player:...) or UUID |
team_id | Filter by team. Accepts a Sportradar ID (sr:competitor:...) or UUID |
Note: IDs correspond to values returned in the response payload fields
subject_id,subject_sr_id, andsubject_us_id. Any of these identifiers may be used interchangeably when filtering requests.
Request Samples
Basic Subscription (NBA Scoring)
curl -N \
--request GET \
--url "https://api.sportradar.com/insights/production/stream/nba/sportradar/subscribe?insight_type=scoring" \
--header "x-api-key: YOUR_API_KEY"Node.js (Streaming with Axios)
import axios from "axios";
const url = "https://api.sportradar.com/insights/production/stream/nba/sportradar/subscribe";
const response = await axios({
method: "get",
url,
params: {
insight_type: "scoring"
},
headers: {
"x-api-key": process.env.API_KEY
},
responseType: "stream"
});
response.data.on("data", (chunk) => {
console.log(chunk.toString());
});Filter by Game + Insight Type
curl -N \
--request GET \
--url "https://api.sportradar.com/insights/production/stream/nba/sportradar/subscribe?subject_type=game&game_id=sr:match:45785631&insight_type=milestones" \
--header "x-api-key: YOUR_API_KEY"Betting Trends (FanSure Provider)
curl -N \
--request GET \
--url "https://api.sportradar.com/insights/production/stream/nfl/fansure/subscribe?insight_type=player_betting_trends" \
--header "x-api-key: YOUR_API_KEY"Response Samples
Response samples will be added soon.
Notes
Push feeds remain open until explicitly closed.
Ensure your client properly handles long-lived HTTP connections and reconnection logic.
Make note of your subscriptions to ensure access to the provider and league.
