NBA Historical Player Props: Sources, Fields, and Pitfalls
Historical NBA player prop odds come mainly from paid odds providers or your own collection. The Odds API documents prop history from May 3, 2023 at 5-minute snapshots on paid plans; SportsDataIO's page says props from 2020 in one place and 2019 for the NBA in another, so confirm it before buying. Store player, statistic, line, both prices, book, and timestamp, then join outcomes from box scores.
Where historical NBA prop odds come from
There are three realistic routes, and most serious datasets combine at least two of them. The provider details below were checked on 2026-10-22 against each provider's own documentation; coverage and terms change, so confirm before buying.
Historical endpoints from odds APIs. The Odds API documents historical data for additional markets, which it says includes player props, from May 3, 2023, captured as snapshots at 5-minute intervals. Its featured markets (moneyline, spreads, totals) go back further, to June 6, 2020. Historical access is limited to paid plans, and prop history is requested per event through its historical event-odds endpoint.
Bulk historical vendors. SportsDataIO's historical odds product says it covers betting lines for major sports from 2019, with props and futures from 2020, while the same page's NBA section says every game since 2019 including player props. The two statements disagree, so confirm the NBA start year with its sales team rather than relying on either. It is sold through its sales team, with delivery by API or bulk download, and the page does not publish prices.
Collecting it yourself. Polling a live odds feed and storing every response builds a history that matches your own needs exactly: your books, your snapshot timing, your markets. The cost is that it only starts on the day you start, so it complements purchased history rather than replacing it.
Free, ready-made NBA prop odds archives are rare. Scraped datasets do circulate, but their provenance, timing and licensing are usually unclear, and a dataset whose capture method is unknown cannot support a serious backtest.
Budgeting a historical pull
Historical prop requests are usually priced per market and per event, which makes cost scale with how much you ask for. The Odds API states its historical event-odds cost as 10 quota units per region per market per event. As an illustration of that formula, pulling one snapshot of four prop markets for one game in one region costs 40 units, and repeating that at several timestamps per game across a full season multiplies quickly. Decide which markets and which snapshot times you need before writing the loop.
The fields that matter
A prop price without context is close to useless. Each stored observation should carry:
- Event identifier and scheduled tip-off time, so snapshots can be placed relative to the start.
- Player identifier, mapped to your own canonical player ID, plus the name exactly as the source sent it.
- Statistic type, with its definition. Points, rebounds and assists combined is a different market from any of its parts, and sources label combined markets inconsistently.
- Line, and whether it is the main line or an alternate.
- Over price and under price. Both sides are needed to remove the margin; a single side cannot be de-vigged.
- Bookmaker, since prop pricing quality varies more across books than main lines do.
- Snapshot timestamp, from the provider, and your own receipt time if you collected it.
- Market status, including whether the market was absent at that snapshot.
Then the outcome side: the player's final statistic from a box score source, whether the player appeared at all, and whether the game went to overtime. Settlement depends on all three.
Gaps and pitfalls in historical prop data
Start dates are hard limits. If the dataset you can afford starts in 2023, any model that needs several seasons of prop prices is bounded by that. Box score data goes back much further than prop odds, so it is common to train on statistics from many seasons and evaluate against prices from only the most recent ones.
Snapshots are not changes. A 5-minute snapshot series records the price at fixed times, not every move. A line that moved and moved back between snapshots is invisible, and the exact moment of a move is only known to within the interval.
Closing is a definition, not a field. For props, the last snapshot before tip-off is the usual stand-in for the close, but markets are often pulled early on late injury news. Decide whether the close is the last price seen, the last price before a cutoff, or missing, and apply it consistently.
Coverage varies by player. Books post props for stars on almost every slate and for bench players only sometimes. A historical dataset therefore over-represents high-usage players, and a model evaluated on it is evaluated mostly on the most efficiently priced markets.
Pulled markets look like missing data. When a player is ruled out, their props disappear. A dataset that only stores present markets cannot tell a pulled market from a gap in collection, and that difference matters for any analysis of injury news.
Settlement rules differ. What happens when a player does not play, or plays only briefly, depends on each book's house rules. Check them before computing results, rather than assuming void or loss.
Statistics get corrected. Official box scores are occasionally revised after a game. Store the outcome source and retrieval date so a later correction can be traced rather than silently changing past results.
Joining odds to outcomes
The outcome side usually comes from a separate source: NBA.com statistics, often accessed through the community-maintained nba_api Python client, or reference sites such as Basketball-Reference. Neither shares identifiers with odds providers, so the join runs through a player mapping table you maintain: canonical player ID, every name variant seen from each source, and an explicit queue for unmatched names. Fuzzy matching alone produces silent mismatches, which are worse than missing rows because they look like real data.
Join on event and player, then check the unmatched rate per source and per season. A sudden rise usually means a source changed its naming, not that players vanished.
What historical props are useful for
With both sides of each line, you can remove the margin and get a market-implied probability for every snapshot. With alternate lines at the same book and time, you can read a rough market-implied distribution for the statistic rather than a single point. With timestamps, you can measure how prices moved after lineup news and whether a model's prices would have beaten the close.
Those are measurement uses. Historical data can show how a market behaved; it cannot by itself show that a strategy will keep working, and prop markets with low limits are often the ones that change fastest.
This page describes data sources and practice and is not betting advice.
Frequently asked questions
- Where can I get historical NBA player prop odds?
- Mainly from commercial providers. The Odds API documents player prop history from May 3, 2023 at 5-minute snapshots on paid plans, and SportsDataIO's page gives props from 2020 generally but 2019 for the NBA, sold through sales. The other route is collecting snapshots yourself from a live feed, which starts only on the day collection begins. Free archives are rare and often undocumented.
- Why do I need both the over and under price?
- Removing the bookmaker margin requires both sides of the market. Converting each price to an implied probability and normalising them so they sum to one gives a no-vig estimate. With only one side, the margin cannot be separated from the market's view, so any comparison between a model and the price is biased by an unknown amount.
- What is the closing line for a player prop?
- There is no single standard. It is usually taken as the last snapshot before tip-off, but prop markets are often pulled early when injury news arrives, so the last observed price may be well before the start. Pick a definition, such as the last price within a set window before tip-off, record it, and apply it consistently across the dataset.
- How far back does NBA prop odds history go?
- It depends on the provider, and dates should be checked at purchase. As documented on 2026-10-22, The Odds API's prop history starts May 3, 2023, while SportsDataIO states props coverage from 2020 generally and 2019 in its NBA section. Box score data goes back much further, so models often train on long statistical histories and evaluate against a shorter window of prices.