TheRundown developer API
Sports data API for connected game experiences
Choose TheRundown when your product needs odds and scores joined under one event ID. Public plans, stable resource identifiers and scoped requests give you a measurable path from a first response to a production game view.
Free: delayed pre-match main lines from three books. No credit card. Real-time REST and WebSocket require Ultra or above.
One event model for odds, scores and schedules
A sports data API should make it clear which facts describe the same game. TheRundown event responses include a canonical event_id, scheduled event_date, teams, score and requested markets. Use that event ID in V2 paths and cache keys; the compatibility event_uuid is a different identifier.
This model suits scoreboards with odds, matchup pages, research tools and sports applications that need the data together. Stable team and participant IDs let you join entities without relying on display names. Catalog availability and a real populated response remain separate checks.
| Dataset | Where it appears | Coverage/access check |
|---|---|---|
| Schedule and teams | event_date, teams, schedule on an event | Query the correct league and season variant |
| Scores and game status | score on the same event | Optional clock, venue and period fields can be empty |
| Odds and markets | markets → participants → lines → prices | Source/market availability and plan delay apply |
| Plays and live state | Supported event feeds | Eligible tier and actual sport/event coverage |
| Box scores and aggregates | Dedicated stats routes | Effective X-Stats-* headers and available datasets |
League coverage with explicit season scopes
Discover the current sport catalog before issuing requests. Regular season, preseason and playoff slates can use different sport IDs. MLB postseason is 31, for example, while regular-season MLB is 3. A query under the wrong ID can return no games even when another variant has a slate.
The table describes documented scopes, not a promise that every source prices every event. Futures use their own endpoints. Stats and play-by-play should be checked for the specific sport, season and event your application needs.
| League/group | Sport IDs | Documented scope | Next guide |
|---|---|---|---|
| NFL | 2 regular season; 25 preseason; 26 playoffs | Game lines; supported props and scores | /nfl-odds-api |
| NBA | 4 regular season; 23 preseason; 24 playoffs; 32 summer league | Game lines; supported props and period scores | /nba-odds-api |
| MLB | 3 regular season; 30 spring training; 31 playoffs | Game lines; supported props and inning scores | /mlb-odds-api |
| NHL / WNBA / college | 6 / 8 / 1 football, 5 basketball | Game lines and supported markets | Discover dates in the sport catalog |
| Soccer | League-specific IDs, including EPL 11 and MLS 10 | Two-way and optional regulation three-way markets | /soccer-odds-api |
| ATP / WTA | 38 / 39 | Full-match game markets; set markets opt-in | /tennis-odds-api |
| IPL / T20 | 20 / 21 | Game markets and supported match data | Check a current event response |
| PGA / Formula 1 | 40 / 41 | Futures-specific routes | Futures require eligible paid access |
Fetch a joined event in Python
Install Python requests and set THERUNDOWN_API_KEY in your environment. This example requests today’s regular-season NFL slate in UTC, with main lines from the three Free-tier books. On a date without regular-season games, an empty events array is a valid result; discover another active sport or season variant.
The response already contains schedule, teams and score alongside the requested odds. Keep credentials server-side and choose an explicit timezone strategy for your application’s daily slates.
import os
from datetime import datetime, timezone
import requests
api_key = os.environ["THERUNDOWN_API_KEY"]
day = datetime.now(timezone.utc).date().isoformat()
response = requests.get(
f"https://therundown.io/api/v2/sports/2/events/{day}",
headers={"X-TheRundown-Key": api_key},
params={"market_ids": "1,2,3", "affiliate_ids": "19,22,23",
"main_line": "true", "hide_closed": "true"},
timeout=20,
)
response.raise_for_status()
print("Data points:", response.headers.get("X-Datapoints"))
for event in response.json().get("events", []):
print(event["event_id"], event.get("event_date"), event.get("score", {}))
for team in event.get("teams", []):
print(team["team_id"], team.get("name"), team.get("is_home"))Read event_id for joins, teams for identity, score for game state and X-Datapoints for billed usage.
Build a complete game view without guessing
Treat score status as game state rather than inferring finality from the date. Empty broadcast, venue, display-clock or period fields mean unavailable information; do not fabricate values. A stats sample demonstrates a schema, not live coverage.
Keep market period and participant identity in your key. A first-half market, full-game market and player market are different resources even when their labels look similar. Prices carry their own closure state; an old updated_at timestamp alone is not a closure signal.
Size a plan from the required freshness, rights and dataset access, then measure the returned rows. Narrow requests avoid consuming included volume for unused price rows. The base subscription fee still applies, and commercial end-user display requires Pro or above.
Sports data API pricing and plan delays
Published USD monthly plans start at Free, Starter $49, Pro $149 and Ultra $399. Select the feature set first, then size your included data-point volume. Free and Starter are for internal or personal use; commercial end-user display begins on Pro. Real-time odds and WebSocket begin on Ultra. Paid plans have a fixed subscription fee with included data-point volume. Choose the sports, books and markets your application needs: unrequested price rows do not consume that volume, but using fewer points does not reduce the base fee. Measure each request with X-Datapoints; requests, event objects, credits and data points are different billing units.
| Monthly plan | USD/month | Odds delay | Included volume | Use and delivery |
|---|---|---|---|---|
| Free | $0 | 5 minutes | 20,000/day · 200,000/month | Three books; delayed pre-match main lines. Internal or personal use. |
| Starter | $49 | 60 seconds | 25,000,000/mo | Additional books, props, alternates and delayed in-play odds. Internal or personal use. |
| Pro | $149 | 30 seconds | 125,000,000/mo | Commercial end-user display and a 30-second odds delay. |
| Ultra | $399 | Real-time | 500,000,000/mo | Real-time REST, WebSocket, futures and supported live game data. |
Annual billing has different monthly equivalents. Monthly and annual plans stop at included data points by default; optional overage and weekly billing have separate terms. Super, Mega and Max add published volume and connection capacity; Enterprise is scoped by contract. Confirm effective API and stats access in response headers.
Sports data API FAQ
- What data does the sports data API return?
- Event responses join schedules, teams, scores and requested odds under one canonical event ID. Supported plays, live state, box scores and aggregates have their own coverage and entitlement checks. A catalog entry does not guarantee every field is populated.
- Can I use sports data for free?
- Free requires no credit card. It includes 20,000 data points per day, capped at 200,000 per month, and five-minute-delayed pre-match main lines from DraftKings, FanDuel and BetMGM. Props, other books, in-play odds and streaming require eligible paid plans.
- Does one API plan include every sport’s live statistics?
- No universal live-stat coverage is promised. New-account stats access differs by tier, and production data varies by sport, season and event. Read the effective X-Stats-* response headers and test the required dataset.
- Is the pricing pure pay-as-you-go?
- Paid plans have a fixed subscription fee with included data-point volume. Choose the sports, books and markets your application needs: unrequested price rows do not consume that volume, but using fewer points does not reduce the base fee. Measure each request with X-Datapoints; requests, event objects, credits and data points are different billing units.
Build and compare
Choose the API scope that matches your application. Each guide below covers a different integration need.
Product and documentation sources checked October 13, 2026. Source, sport, event and market availability varies; catalog entries do not guarantee a priced line or a populated statistic.