Historical Odds Archive

Multi-source historical betting data for backtesting. Prices are real book rows only. Result-only archives are labeled separately so modelers know exactly what is price history and what is match history.

Historical product matrix

Use the endpoint that matches the evidence you need. We keep price archives, closing lines, result archives, and forward line movement separate on purpose.

DatasetEndpointBest forGuarantee
Point-in-time odds/v1/historical/sports/{sport_key}/oddsTOA-style historical pullsReal historical price rows inside the tier window.
Closing odds/v1/historical/sports/{sport_key}/closing-oddsPregame backtestsLast real price before commence where we have that archive.
Matches/results/v1/historical/sports/{sport_key}/matchesSchedules, teams, scores, esports training setsEach row exposes has_odds; result-only rows are not odds history.
Line movement/v1/sports/{sport_key}/line-movementCLV and before/after movementForward capture from our live tables, not a backfilled simulation.

Current esports status: CS2, Dota 2, and Valorant have match/result archives plus forward Pinnacle price rows from May 2026 onward. They do not yet have deep historical odds movement for prior years.

Total rows
…
odds rows in archive
Sports
…
covered
Sources
…
distinct data sources
Score coverage
…
rows with final result

Cross-source verification

Every claim a backtester wants to make rests on: are the prices real, do the games settle correctly, and is more than one source telling me the same thing? We pre-deduplicated and cross-tabulated for you.

Unique games
…
distinct (date, sport, teams)
2+ sources
…
games with 2+ books quoted
5+ sources
…
games with 5+ books quoted
10+ sources
…
games with 10+ books quoted

Where the data comes from

Six independent feeds, none derived or interpolated. Every row is a real endpoint reading.

loading…

Sports coverage

Top sports by row count. Each sport lists how many distinct sources we have prices from. Soccer leagues get the deepest cross-source coverage thanks to football-data.co.uk's bookmaker grid.

SportRowsSourcesFirst dateLast date
loading…

Source breakdown

Each source is a distinct upstream. pinnacle and pinnacle_open are our own forward-going daily snapshots from the live Pinnacle endpoint. draftkings_espn is the DraftKings closing line as published by ESPN. nflverse_pbp is the community NFL play-by-play archive; our NFL records include history from 2005, with sparse seed rows in earlier seasons. hoopr_nba is sportsdataverse's NBA betting-lines archive going back to 2017; NBA closing lines reach further back than that in the archive as a whole, to 2007, via sbr_close. cfbd_consensus and the per-book cfbd_* entries come from collegefootballdata.com's /lines API across 11 NCAAF seasons. Each is an independent read of the market.

SourceRowsSportsFirst dateLast date
loading…

How to query it

Same auth as the rest of the API. The endpoint is paginated; you can filter by date range, source, and sport.

# Example: NBA closing lines from any source, last 30 days
curl "https://parlay-api.com/v1/historical/sports/basketball_nba/odds?\
start=2026-04-01&end=2026-04-30" \
  -H "X-API-Key: YOUR_KEY"

# Filter to a specific source for an apples-to-apples backtest
curl "https://parlay-api.com/v1/historical/sports/baseball_mlb/odds?\
source=draftkings_espn&start=2026-04-01" \
  -H "X-API-Key: YOUR_KEY"

# Coverage report (no auth required)
curl "https://parlay-api.com/v1/historical/coverage"

Free sample of the archive

Start with the NFL Week 1 opening lines dataset to inspect the response shape. This released dataset and the reuse and adaptations permitted under CC BY 4.0 are licensed with attribution. That grant does not cover the API, other archives, future datasets, commercial derived products using other data, or an SLA. Before planning a backtest or purchase, use the coverage report and a representative sample to verify the exact league, market, book, date range, and row completeness you need. Summary counts do not guarantee coverage for a specific combination. Review the terms; broader commercial or redistribution rights require a separate written agreement. Contact support with the requested scope if you need help checking it.