Win probability API
A per-play home/away win probability series for one game (join to play-by-play by playId), plus drive summaries for football. Data is aggregated from public sources and is typically 20-30 seconds behind live play (about 1 second after our source). There is no SLA.
- Only published for some leagues; see the support table below.
Paths and parameters
GET/api/v1/sports/{sport}/leagues/{league}/events/{eventId}/winprobability
Get win probability. Per-play win probability series (join to plays via playId) plus drive summaries, where the source publishes them.
sport(path, required): Sport slug: football, basketball, baseball, hockey, soccer.league(path, required): League slug, e.g. nfl, college-football, nba, mens-college-basketball, mlb, nhl, eng.1, usa.1.eventId(path, required): Event (game) id, as returned by the events endpoints.drives(query): Include drive summaries (default true).
Live example
Request
curl -H "Authorization: Bearer $RSA_API_KEY" \
"https://www.realtimesportsapi.com/api/v1/sports/football/leagues/nfl/events/401772982/winprobability"Example shape generated from the OpenAPI spec (live data was not available when this page was built). Example shape generated from the OpenAPI spec, not live data.
Response
{
"success": true,
"data": {
"eventId": "",
"winProbability": [
{
"playId": "",
"homeWinPercentage": 0.62,
"awayWinPercentage": 0.38,
"tiePercentage": 0
}
],
"drives": [
{}
]
},
"meta": {
"rateLimit": {
"limit": 125,
"remaining": 124,
"reset": 1793491200000
}
}
}Fields
| Field | Type | Notes |
|---|---|---|
| eventId | string | |
| winProbability | object[] | |
| drives | object[] |
League support
Checked against live data on 2026-10-04: 3 available, 0 limited, 2 seasonal or not verified, 24 not available.
A preseason game returned no series; regular season not yet checked.
Code samples
curl
curl -H "Authorization: Bearer $RSA_API_KEY" \
"https://www.realtimesportsapi.com/api/v1/sports/football/leagues/nfl/events/401772982/winprobability"JavaScript (fetch)
const res = await fetch("https://www.realtimesportsapi.com/api/v1/sports/football/leagues/nfl/events/401772982/winprobability", {
headers: { Authorization: `Bearer ${process.env.RSA_API_KEY}` }
});
const { success, data, meta } = await res.json();
console.log(data, meta.rateLimit);Python (requests)
import os, requests
res = requests.get(
"https://www.realtimesportsapi.com/api/v1/sports/football/leagues/nfl/events/401772982/winprobability",
headers={"Authorization": f"Bearer {os.environ['RSA_API_KEY']}"},
timeout=10,
)
body = res.json()
print(body["data"])Rate limits and pricing
| Plan | Price | Calls | Rate | WebSocket | Webhooks |
|---|---|---|---|---|---|
| Free | $0 | 125/mo (1,000 first 30 days) | 1/s | 500 msgs/mo | No |
| Starter | $29/mo ($290/yr) | 10,000/mo | 5/s | Shares monthly pool | Shares monthly pool |
| Growth | $49/mo ($490/yr) | 25,000/mo | 10/s | Shares monthly pool | Shares monthly pool |
| Pro | $99/mo ($990/yr) | 50,000/mo | 20/s | 100,000 msgs/mo | 25,000/mo |
| Scale | $299/mo ($2,990/yr) | 500,000/mo | 100/s | 500,000 msgs/mo | 100,000/mo |
Every successful REST call counts as one call. Over the limit you get HTTP 429 with a Retry-After header. No SLA. Full pricing.
FAQ
- What does the win probability endpoint return?
- A per-play home/away win probability series for one game (join to play-by-play by playId), plus drive summaries for football.
- Which leagues support win probability?
- Verified on 2026-10-04: NFL, College Football, MLB. Seasonal or not verified: NBA, Men's College Basketball. Not available: 24 other leagues.
- Is it free to try?
- Yes. The Free plan is $0 with 125 calls per month (1,000 in the first 30 days) at 1 request per second, no card required. Every successful call counts as one call.
- How fresh is the data?
- Data is aggregated from public sources and is typically 20-30 seconds behind live play (about 1 second after our source). There is no SLA.
- Can I get updates pushed instead of polling?
- Webhooks are included on every paid plan (Starter, Growth, Pro, Scale). WebSocket is included on paid plans, and the Free plan gets a 500-message monthly preview.