draftkings apiDashboard ↗

INDEPENDENT DEVELOPER REFERENCE

Training data for sports prop models

Why there is no ready-made training set here, where point-in-time leakage comes from, and how to record your own as-of dataset from now on.

Editorial review: · Not a live coverage report

There is no ready-made training set

This API does not offer a labeled export of past lines and outcomes. 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. What it does offer is the raw material to build a dataset going forward, with the clocks needed to keep it honest.

A training example needs three things: what you knew, when you knew it and what happened. You can record the first two from now on, and read the third from statistics once a game is finished.

Labels are yours to define

There is no public graded endpoint, so a label such as over or under a target is something you compute and own. Game state in statistics is not settlement for a bet or an entry. Rules on voids, late scratches and stat corrections belong to each product, and these observations do not establish them.

  • Start with a numeric target, such as points in the game, rather than a graded result. It needs fewer assumptions.
  • Exclude rows where did_not_play is true or the stat is missing. Do not code them as zero.
  • Only use games where game.completed is true. In-progress statistics are not final.
  • If you derive over or under against a recorded target, document how you treat a push and a late scratch.
Completed 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"

Where leakage comes from

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. That matters most in modeling, because a row looks like past knowledge when it is really a later capture.

  • Capture time. evidence.observed_at can be long after starts_at. The row is what ESPN reported at capture, and later corrections are not tracked as an as-of history.
  • Season-to-date fields. Values with scope: "season-to-date" include games after the one you are predicting. Keep only scope: "game".
  • Random splits. Shuffling rows puts a player's later games in training and earlier games in test.
  • Rolling features that include the current game. Shift by one game before averaging.
  • Current rows joined to past games. A Pick6 target read today says nothing about a target last week.

Record an as-of dataset going forward

The fix for leakage is to record what you could see, when you could see it, before the game. Store each read with your own timestamp and never overwrite it. The daily archive example is a starting point.

One table design for your own snapshots
CREATE TABLE pick6_snapshot (
  read_at       TEXT NOT NULL,  -- your clock, set when you read
  observed_at   TEXT NOT NULL,  -- API capture clock
  pick_group_id TEXT NOT NULL,
  pickable_id   TEXT NOT NULL,
  pickable_market_id TEXT NOT NULL,
  sport TEXT, stat TEXT, target_value REAL,
  is_paused INTEGER, stale INTEGER,
  row_json TEXT NOT NULL,         -- keep every selection as observed
  PRIMARY KEY (read_at, pick_group_id, pickable_id, pickable_market_id)
);
Start recording
python3 daily-archive.py --db archive.sqlite --sports NBA,NFL,NHL --max-requests 60

When building features for a game, only use snapshots with read_at before that game's start, and skip stale rows if you are claiming a current view. Keep raw JSON so a later schema decision does not lose data.

Use chronological splits

Sports data has a time order, and the split must keep it. Train on earlier games and test on later ones. Statistics endpoints accept from and to, applied to game start, so you can pull each window directly.

Earlier window, then later window
curl --fail-with-body "https://draftkingsapi.com/api/v1/stats/player-games?sport=NBA&season=2027&completed=true&to=2026-10-31&limit=200" \
  -H "Authorization: Bearer $DRAFTKINGS_API_KEY"

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

Keep a test window you only score once. Each time you tune against it, it stops being a fair test. If you fit any scaling or player averages, fit them on training data only.

Be honest about sample size

Retained samples are small and not full seasons. Check the coverage report for current scope. A model fit on a small sample can look accurate by chance, and few players will have many games.

  • Report how many games and athletes were in training and in test.
  • Compare against a plain baseline such as a rolling mean. If you cannot beat it, keep the baseline.
  • Do not describe a small-sample result as an edge or a profitable system. These data cannot establish that.
  • Rerun as your own archive grows. Earlier results do not carry over automatically.

Try it

Check the recorded data

Questions

Can I buy or download a labeled training set here?

No. There is no labeled export or public grading endpoint. You build labels from statistics and record your own as-of snapshots over time.

Can I treat retained statistics as what was known before a game?

No. Those samples were captured after the games were played and there is no as-of correction history. They describe outcomes, not what was known beforehand.

How much data do I need?

There is no fixed answer. Current samples are limited, so report your counts, compare with a simple baseline and treat early results as provisional.

Can I use this data to prove a betting strategy works?

No. The service provides no wagering advice and the recorded window cannot support that claim.

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.