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.

Edge ($149/mo) or higher. Start free on the rest of the API, 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.

MarketDescription
pointsTotal points scored in the game
reboundsTotal rebounds
assistsTotal assists
points_rebounds_assistsCombined points + rebounds + assists (the standard PRA prop)
threesThree-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

Response shapejson
{
  "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
Node.js, @bigballsdata/sdktypescript
// 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

Edge, $149/mo, is where NBA Player Props starts, and Pro includes it. Edge is the odds and model layer: props and their hit rates, live and stored bookmaker lines, opening-to-closing movement, and closing-line value. Free, Solo and Trio cover the rest of the API at 1,000 req/day (2,000 with GitHub), no credit card, so you can build against the schema before you pay for the lines.

See all plans

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.
Which plan do I need?
The Edge plan ($149/mo) or higher. Player props are part of the odds and model layer, so they sit with live and stored bookmaker lines, opening-to-closing movement, closing-line value and fair-price edges. Free, Solo and Trio do not include them. Those plans still cover NBA schedules, scores, box scores, standings and player data at 1,000 req/day (2,000 if you connect GitHub), no credit card, so you can build and test the rest of your integration before you pay for the props layer.
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.

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.