draftkings apiDashboard ↗

INDEPENDENT DEVELOPER REFERENCE

NBA points props data for developers

Pair NBA Points rows from Pick6 with ESPN player points from the statistics API, and see where the join and the history stop.

Editorial review: · Not a live coverage report

Two datasets, two meanings

NBA points data lives in two places here. Pick6 rows hold a target and standings multipliers. The statistics API holds what a player recorded, from ESPN. Neither one contains the other, and neither is a sportsbook price.

QuestionEndpointField
What target was recorded?/api/v1/pick6/projections?sport=NBA&stat=Pointstarget_value
How did the row change?/api/v1/pick6/history?sport=NBA&stat=Pointstarget_value and previous
What did the player score?/api/v1/stats/player-games?sport=NBA&season=2027Stat with key equal to points

As of 2026-11-03, native sportsbook scopes cover New York NFL, NHL, college basketball and college football game lines and New York NHL Shots on Goal, points, assists, saves, goalscorers, power-play points and first-period shots. Read snapshots and streamed changes through the sportsbook endpoints. ESPN-attributed DraftKings moneyline, spread and total observations are also available across eight leagues. Current scope inventory is listed at /api/v1/sportsbook/scopes.

Read the Points rows

Filter on stat=Points, and expect several rows per athlete. Check stale before you treat any row as current, since NBA captures are not always fresh.

Points targets
curl --fail-with-body "https://draftkingsapi.com/api/v1/pick6/projections?sport=NBA&stat=Points&limit=25" \
  -H "Authorization: Bearer $DRAFTKINGS_API_KEY"

Read points from a box score

Each ESPN row holds a stats array. Find the entry with key equal to points and read numeric. Values such as field goals display as 1-3 and have a null numeric, so they stay display-only.

Read by key, not by position
def points(row):
    for stat in row["data"]["stats"]:
        if stat["key"] == "points" and stat["scope"] == "game":
            return stat["numeric"]  # None when no scalar exists
    return None

Rows also report did_not_play and starter. A missing points value on a did-not-play row is not a zero. Treat it as no game for that player.

Why the two do not join by themselves

Pick6 identifies an athlete with entity_id. ESPN uses athlete_id. No mapping between them is supplied, and the API does not infer one from names. If you match on names, you own that matching and its errors.

  1. Build a table of entity_id, athlete_id, the matched name, and how you verified it.
  2. Require an exact name match within the same team and game date.
  3. Send ambiguous names to manual review instead of guessing.

Games have the same split. Pick6 event IDs differ from ESPN event IDs, so match games on date and teams after you have reviewed them.

What this sample can and cannot show

Independent ESPN statistics cover NBA, NFL and NHL as limited retained game samples, not full seasons. As of 2026-11-03 those samples were captured after the games were played, so they do not show what was known at game time.

Recording began around 2026-11-03. Retained history is short, and it is not a complete opening-to-close archive. It does not contain seasons of past lines, and there is no public graded-results endpoint.

A recorded NBA Points row and a later box score can give you an honest small sample to inspect. They cannot support a hit rate presented as a long-run edge. For that sample, report the count and the date range next to any number, and read the coverage report first.

There is also no public grading endpoint, so compare target and result yourself, and make your own rules for pushes, inactive players and in-game rows.

Live scores are a separate clock

live_stat_value on a Pick6 row is the source's in-game statistic at capture, stamped by live_stat_updated_at. It can change after the row was captured, and it is not a final box score. Use completed games from the statistics API for finished values: add completed=true.

Completed NBA games only
curl --fail-with-body "https://draftkingsapi.com/api/v1/stats/player-games?sport=NBA&season=2027&completed=true&limit=50" \
  -H "Authorization: Bearer $DRAFTKINGS_API_KEY"

Try it

Pull a page of box scores and read the points entry from each row.

python3 player-game-log.py --sport NBA --season 2027 --stat points --max-pages 1

Check the recorded data

Questions

Can I get NBA points props as sportsbook odds?

As of 2026-11-03, native sportsbook scopes cover New York NFL, NHL, college basketball and college football game lines and New York NHL Shots on Goal, points, assists, saves, goalscorers, power-play points and first-period shots. Read snapshots and streamed changes through the sportsbook endpoints. ESPN-attributed DraftKings moneyline, spread and total observations are also available across eight leagues. Current scope inventory is listed at /api/v1/sportsbook/scopes.

How do I connect a Pick6 Points row to a player's box score?

No key mapping is supplied. Pick6 uses entity_id and ESPN uses athlete_id. Build your own verified mapping using name, team and game date, and review ambiguous matches by hand.

Can I compute a season hit rate for NBA Points?

Not from this data today. Line recording began around 2026-11-03 and box scores are limited samples, so any rate covers a small window. Report it with its count and dates, not as a long-run figure.

Related resources

Independent service operated by DD Inc., not affiliated with or endorsed by DraftKings. Technical access is not a redistribution license. No wagering: this service does not place, recommend or settle entries or bets. Check sources and status for actual capture context.