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.

DatasetWhere it appearsCoverage/access check
Schedule and teamsevent_date, teams, schedule on an eventQuery the correct league and season variant
Scores and game statusscore on the same eventOptional clock, venue and period fields can be empty
Odds and marketsmarkets → participants → lines → pricesSource/market availability and plan delay apply
Plays and live stateSupported event feedsEligible tier and actual sport/event coverage
Box scores and aggregatesDedicated stats routesEffective 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/groupSport IDsDocumented scopeNext guide
NFL2 regular season; 25 preseason; 26 playoffsGame lines; supported props and scores/nfl-odds-api
NBA4 regular season; 23 preseason; 24 playoffs; 32 summer leagueGame lines; supported props and period scores/nba-odds-api
MLB3 regular season; 30 spring training; 31 playoffsGame lines; supported props and inning scores/mlb-odds-api
NHL / WNBA / college6 / 8 / 1 football, 5 basketballGame lines and supported marketsDiscover dates in the sport catalog
SoccerLeague-specific IDs, including EPL 11 and MLS 10Two-way and optional regulation three-way markets/soccer-odds-api
ATP / WTA38 / 39Full-match game markets; set markets opt-in/tennis-odds-api
IPL / T2020 / 21Game markets and supported match dataCheck a current event response
PGA / Formula 140 / 41Futures-specific routesFutures 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.

Python
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 planUSD/monthOdds delayIncluded volumeUse and delivery
Free$05 minutes20,000/day · 200,000/monthThree books; delayed pre-match main lines. Internal or personal use.
Starter$4960 seconds25,000,000/moAdditional books, props, alternates and delayed in-play odds. Internal or personal use.
Pro$14930 seconds125,000,000/moCommercial end-user display and a 30-second odds delay.
Ultra$399Real-time500,000,000/moReal-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.