NBA PLAYER PROPSLive · cross-book lines
NBA Player Props API
Per-player props live across 7 sportsbooks and 5 markets: points, rebounds, assists, points+rebounds+assists, and threes. Cross-book best-line aggregation in the same canonical schema as the rest of the API.
1,000 req/day on the free plan (2,000 with GitHub). No credit card.
Cross-book lines from BetMGM, DraftKings, FanDuel, Caesars, BetRivers, Fanatics, and Rebet, plus a 20-game rolling hit rate per market.
What you'll get
The same prop primitives that power the live NHL props page, built for NBA first. One free key, one shape.
Cross-book best line
Surface the best over and best under per market in a single request, with the book that posted the price.
Hit rate dashboards
Render last-20-game hit rate per market so users see the bet history at a glance.
Unified player_id
Props join cleanly to /v1/nba/games/{id}/matchup, player streaks, rolling stats — one id everywhere.
Bets Chat ready
JSON envelope mirrors the live NHL props shape, so a prop integration built for one sport ports to the other with no schema rework.
Five core markets
Points, rebounds, assists, points+rebounds+assists, and threes. Audited markets, no novelty clutter.
Season-round coverage
Cross-book lines pull from BetMGM, DraftKings, FanDuel, Caesars, BetRivers, Fanatics, and Rebet; hit-rate history stays queryable year-round, including the offseason.
Markets covered
Five core NBA markets live today. Audited, no novelty props.
| Market | Description |
|---|---|
points | Total points scored in the game |
rebounds | Total rebounds |
assists | Total assists |
points_rebounds_assists | Combined points + rebounds + assists (the standard PRA prop) |
threes | Three-pointers made |
Endpoint shape
One call returns a single market for the player: the current line across books (best book per side) plus a rolling 20-game hit rate for that market.
GET /v1/nba/players/:id/props?market=points
{
"data": {
"player": {
"bbs_id": "6b928f2d-3c95-433a-89d6-00db5813364d",
"name": "Nikola Jokic",
"position": "C",
"team": { "bbs_id": "bf31614a-a23a-40ad-a7cc-760cea3a5443", "name": "Denver Nuggets", "abbr": "DEN" }
},
"market": "points",
"current_line": {
"line": 28.5,
"over_juice": -115,
"under_juice": -115,
"sportsbook": "balldontlie_betmgm",
"sportsbook_display": "BetMGM",
"fetched_at": "2026-06-02T06:57:19.711Z",
"all_books": [
{ "sportsbook": "balldontlie_betrivers", "display": "BetRivers", "line": 27.5, "over_juice": -108, "under_juice": -127 },
{ "sportsbook": "balldontlie_draftkings", "display": "DraftKings", "line": 17.5, "over_juice": 420, "under_juice": -660 },
{ "sportsbook": "balldontlie_fanduel", "display": "FanDuel", "line": 22.5, "over_juice": 162, "under_juice": -220 }
]
},
"hit_rate": {
"lookback_games": 20,
"games_with_box_score": 20,
"over_hits": 5,
"under_hits": 15,
"pushes": 0,
"hit_pct_over": 0.25,
"samples": [
{ "match_id": "52fa99d1-ea1d-4fc4-869a-b380b92dc00d", "game_date": "2026-04-30", "opponent": "MIN", "value": 28, "result": "under" },
{ "match_id": "1a5866bb-cada-46d9-817c-dc62004dab18", "game_date": "2026-04-06", "opponent": "POR", "value": 35, "result": "over" }
]
},
"as_of": "2026-08-03T23:25:25.507Z"
},
"meta": { "cached": false, "cache_age_ms": 0 }
}SDK call
One call returns the market you ask for, with the cross-book attribution in the same payload.
- · Five markets, one per call
- · Cross-book best-line attribution per market
- · Same canonical envelope as the rest of the API
// One market per call: best line across books + a rolling hit rate.
const url =
'https://api.bigballsdata.com/v1/nba/players/' + playerId +
'/props?market=points';
const res = await fetch(url, { headers: { 'x-api-key': process.env.BBS_API_KEY! } });
const { data } = await res.json();
console.log(data.market, data.current_line?.line, 'best:', data.current_line?.sportsbook_display);
console.log('over hit rate:', data.hit_rate?.hit_pct_over, 'on', data.hit_rate?.games_with_box_score, 'games');
for (const b of data.current_line?.all_books ?? []) {
console.log(' ', b.display, b.line, b.over_juice, '/', b.under_juice);
}What will it cost
Free tier: 1,000 req/day on the free plan, 2,000 with GitHub connected. No credit card. Paid tiers (Solo / Trio / Edge / Pro) carry forward with the rest of the API.
Frequently asked
- How do I call the NBA Player Props endpoint?
- GET /v1/nba/players/:id/props?market=points with your API key in the Authorization header or as ?api_key=. One call returns one market: data.current_line (line, over_juice / under_juice, the best book per side, and all_books) plus data.hit_rate (over_hits / under_hits, hit_pct_over, games_with_box_score, and per-game samples). Live today across BetMGM, DraftKings, FanDuel, Caesars, BetRivers, Fanatics, and Rebet. The market param is required — call without one and the endpoint 400s with the five valid values.
- Will it be on the free tier?
- Yes. NBA Player Props is on the free tier (1,000 req/day, 2,000 if you connect GitHub). No credit card to start.
- Which sportsbooks does it cross-reference?
- The same books the rest of the API normalises across. The response includes the specific book that posted the best over and the best under per market in all_books, so the source attribution is in the payload, not buried in a separate call.
- How fresh are the prices?
- Prices refresh from the upstream books while the NBA season is active, canonicalised to the BBS schema; current_line.fetched_at shows exactly when each book's line was last pulled, so you never have to guess. Between seasons, the endpoint keeps serving the most recently posted lines and the hit-rate history stays queryable year-round rather than going dark.
Also on this sport
Get an API key now
The endpoint is live across BetMGM, DraftKings, FanDuel, Caesars, BetRivers, Fanatics, and Rebet, with a 20-game rolling hit rate on every market.