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.

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

FieldTypeNotes
eventIdstring
winProbabilityobject[]
drivesobject[]

League support

Checked against live data on 2026-10-04: 3 available, 0 limited, 2 seasonal or not verified, 24 not available.

Available
NBA

A preseason game returned no series; regular season not yet checked.

Seasonal / not verified
Available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available

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

PlanPriceCallsRateWebSocketWebhooks
Free$0125/mo (1,000 first 30 days)1/s500 msgs/moNo
Starter$29/mo ($290/yr)10,000/mo5/sShares monthly poolShares monthly pool
Growth$49/mo ($490/yr)25,000/mo10/sShares monthly poolShares monthly pool
Pro$99/mo ($990/yr)50,000/mo20/s100,000 msgs/mo25,000/mo
Scale$299/mo ($2,990/yr)500,000/mo100/s500,000 msgs/mo100,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.