Player Props API: Prop Odds for NBA, NFL, MLB and NHL
What a prop line looks like in JSON, why matching players across sportsbooks is the hard part, and how to test a provider before you pay for it.
Last updated:
What a Player Props API Returns
A player props API gives you betting lines on what one player does in a game, not on who wins it. Points, passing yards, strikeouts, shots on goal. Each prop is a player, a stat, a line, and a price on each side, quoted by one or more sportsbooks.
Game odds are easy to model: a game has two teams and three or four main markets. Props are messier. One NBA game can carry hundreds of prop prices once you count every player, every stat, and every alternate line. That volume is why props usually sit on a higher plan than moneylines and spreads, and why the data quality varies so much between providers.
Most props APIs return something close to this for each prop:
{
"event_id": "nba-2026-11-04-lal-den",
"commence_time": "2026-11-05T02:00:00Z",
"player": {
"id": "p_20391",
"name": "Nikola Jokic",
"team": "DEN"
},
"market": "player_rebounds",
"line": 12.5,
"is_alternate": false,
"prices": [
{ "book": "draftkings", "over": -125, "under": -105, "updated_at": "2026-11-04T23:41:07Z" },
{ "book": "fanduel", "over": -118, "under": -110, "updated_at": "2026-11-04T23:40:52Z" },
{ "book": "pinnacle", "over": -121, "under": +104, "updated_at": "2026-11-04T23:41:15Z" }
]
}
The fields that matter most are the ones beginners skip. A stable player.id lets you join odds to stats. A per-book updated_at tells you whether a price is live or stale. An is_alternate flag keeps the main line apart from the ladder of alternate lines. If a provider's sample response lacks any of the three, ask why before you build on it.
The Hard Part: Matching Players and Markets Across Books
Every sportsbook names things its own way. One book lists "Nikola Jokic", another "N. Jokic", a third "Nikola Jokić" with the accent. One calls the market "Total Rebounds", another "Rebounds O/U", another files it under "Player Specials". Some books count overtime in a prop and some do not.
A props API earns its price by doing this matching for you. If it does not, you get three rows for one player and an odds screen that compares the wrong lines. Before you sign up, check these:
- Player IDs: does every prop carry a player ID that stays the same across books and across seasons? Names alone break on trades, accents and nicknames.
- Market keys: is there one fixed list of market keys (
player_points,player_pass_yds,batter_total_bases) with a definition for each one? - Combo markets: are points + rebounds + assists, or rush + receiving yards, their own keys, or mixed in with the single-stat markets?
- Rules: does the docs page say whether overtime counts, and what happens when a player does not play?
The quickest test: pull one night's NBA slate, pick five players, and check that each one appears once with prices from several books under the same market key. Ten minutes of that tells you more than the feature list.
Alternate Lines and Ladders
Books now post a main line plus a ladder of alternates for the same player and stat: over 19.5, 24.5, 29.5 and 34.5 points, each at its own price. Milestone props ("25+ points") are the same idea in a different shape.
Alternate lines multiply the row count, so some APIs leave them out, some put them behind a separate market key, and some return them only on request. If you build anything that prices risk, such as a model, a parlay tool or an arbitrage finder, you need the ladder. A main line alone hides the shape of the book's distribution.
When Props Post, Move and Disappear
Props follow a different clock from game lines. Spreads go up days ahead. Most player props go up the day before or the morning of the game, and the full board often fills in only a few hours before tip-off or kickoff.
- Injury news: when a player is ruled out, books pull that player's props and move teammates' lines within minutes. Your feed needs to show both the removal and the move.
- Suspended markets: a prop that stops getting updates is not the same as a prop that a book took down. Good APIs mark the difference. Weak ones leave the last price in place, and that stale price looks like value on an odds screen.
- Live props: in-game props move on every possession. Polling every minute is fine for pregame work and far too slow for live. If you need live props, look for a WebSocket or push feed and test it during a real game.
See our live sports odds API guide for how push feeds compare with polling.
Player Props by Sport
Coverage is deepest where US betting volume is highest. Expect the most markets for NBA and NFL, solid coverage for MLB, and thinner boards for NHL and soccer.
| Sport | Core prop markets | What to check |
|---|---|---|
| NBA | Points, rebounds, assists, threes made, PRA and other combos, double-double, first basket | Alternate ladders, and how fast lines move after late scratches |
| NFL | Passing, rushing and receiving yards, receptions, passing TDs, anytime and first TD scorer | Thursday and primetime boards are full; early Sunday games can be thin until the morning |
| MLB | Pitcher strikeouts, outs recorded, hits allowed, batter hits, total bases, home runs, RBIs | Props depend on confirmed lineups and starters, so they post late and change when a starter is scratched |
| NHL | Shots on goal, points, goals, assists, goalie saves | Fewer books carry the full set; check goalie confirmation timing |
| Soccer | Anytime goalscorer, shots, shots on target, cards | Coverage drops fast outside the top European leagues |
Same Game Parlay (SGP) Odds
A same game parlay combines several props and game markets from one game into one bet. The book prices the combination as a whole and adjusts for correlation: a quarterback's passing yards and the top receiver's receiving yards tend to go up together, so the book shortens that combo.
That is why SGP prices are hard to get by API. There is no posted SGP board to copy. Each price exists only for a specific combination of legs, at a specific moment, at one book. Providers that offer SGP data either query the books for each combination you ask for, or estimate the price with their own correlation model. Ask which one you are getting, because the two are not the same product.
The directory marks which providers return SGP prices. Use the SGP filter in the API directory to list them.
Grading Props Needs Stats Data Too
Odds are only half of a props product. To grade a bet, backtest a model or show a hit rate, you need the player's actual stat line from the box score, joined to the same player ID that the odds use. If your odds API and your stats API use different IDs, you write and maintain that join yourself.
Some providers ship odds and stats under one ID scheme. Others sell odds only, and you pair them with a sports data API. For backtesting, you also need the prop lines as they stood at a fixed time before the game, not just the closing line. Our historical odds guide covers what to ask for.
How to Test a Player Props API
Feature lists all say "player props". Run this test during a free trial instead:
- Pick a busy slate. A full NBA night or an NFL Sunday shows coverage at its real size.
- Count props per game. Compare the count with what two sportsbook sites show for the same game.
- Spot-check five prices. Open the books' own sites and compare line and price. Note how many seconds old each API price is.
- Check the joins. Make sure each player shows up once, with one ID, across all books.
- Watch a scratch. When a player is ruled out, time how long the API takes to pull that player's props.
- Read the rate limits. Props multiply your request count. A plan that is fine for game odds can run out by mid-afternoon on props.
Compare Player Props Providers
Use the directory filters to find APIs with SGP prices, WebSocket feeds and bet settlement.
Browse API Directory →Use Cases for Player Props APIs
Frequently Asked Questions
Need Help Choosing a Player Props API?
Ask in our Discord. Developers there build props tools and can tell you which feeds held up on a busy night.