Reference
Schema glossary and sample JSON
What every field means, what its null means, and a sample file for every resource. Types and null counts are measured from real stored rows.
Samples generated Nov 3, 2026, 20:47 UTC from a read-only copy that predates the 3 November database move, so sample values are dated. Shapes are checked against this page by a test.
Null semantics
- null means unknown or not sent. It never means zero, false or empty.
- A missing key means the row predates the field or the source did not include it. Treat it like null.
- field_stats in each sample file records how often each field was present and null across the rows read.
- Numeric columns stored as NUMERIC arrive as decimal strings, such as line and decimal on /api/v1/odds. Large sequence ids also arrive as strings.
Terms
- Capture
- One stored read of one source page or response. Identified by a receipt, with its own observed_at.
- observed_at
- When this service read the value. It is the only clock most rows have, and it says nothing about when the value changed at the source.
- source_updated_at
- A clock sent by the source. When it is null, which is usual, source-to-API lag cannot be measured for that row.
- Current row
- A stored row whose observed_at is at most 900 seconds old. Current does not mean offered right now.
- Stale row
- A stored row older than 900 seconds. The API keeps returning it with stale true, and the offer may have changed or ended.
- Retained row
- Any row still stored, current or stale. A retained count is not a board size or an athlete count.
- Active scope
- A scope the source still lists or discovery still sees. The exact test per dataset is on /reliability.
- Complete capture
- A matched, untruncated response that was stored in full. Complete applies to that one scope, not to the board.
- Known target
- A sport, group and category this service has discovered. Known targets are the denominator on the completeness report, and categories never discovered are not counted.
- Capture interval
- Seconds between two consecutive captures of the same scope. It bounds how long a change can go unseen. It is not latency.
- Capture to commit
- Seconds from a capture's observed_at to the close of the batch that stored it. Upper bound on capture-to-available.
- Standings multiplier
- The Pick6 multiplier on a selection. Not decimal odds, a probability or an entry payout.
- p50, p95, p99
- Percentiles of the stated samples. p95 needs 20 samples and p99 needs 100; below that the figure is withheld rather than interpolated.
- No data yet
- Nothing has been measured. It never stands in for zero, and a zero on these pages is a counted zero.
Pick6
Selected public Pick6 category captures. Market rows, not unique players, and not a full board.
Pick6 current observations
GET /api/v1/pick6/projections. Sample JSON. Counts from 400 stored rows.
| Field | Observed type | Seen null | Meaning | When null |
|---|---|---|---|---|
pick_group_id | string | 0 of 400 | Source pick group, usually one slate of contests. | not seen null |
pickable_id | string | 0 of 400 | Source id of the pickable: one athlete or athlete group on one stat. | not seen null |
pickable_market_id | string | 0 of 400 | Source id of one target value on that pickable. A changed target is usually a different id. | not seen null |
market_id | string | 0 of 400 | Source id of the stat market. | not seen null |
product | string | 0 of 400 | Always pick6 on this dataset. | not seen null |
sport | string | 0 of 400 | Source sport code, such as NBA or SOCCER. | not seen null |
stat | string | 0 of 400 | Stat name as the source labels it. | not seen null |
stat_abbreviation | string | 0 of 400 | Stat abbreviation as the source labels it. | not seen null |
target_value | number | 0 of 400 | The line for this row. Not a sportsbook line. | not seen null |
period | always null | 400 of 400 | Period the stat applies to. | The source named no period, which on observed rows means the whole game. |
is_live | boolean | 0 of 400 | Source live flag at capture. | not seen null |
is_paused | boolean | 0 of 400 | Source paused flag at capture. A paused row was not selectable when captured. | not seen null |
promo_class | string | 399 of 400 | Source promotion class. | Not a promotional row, as far as the source states. |
promo_type_id | string | 0 of 400 | Source promotion type id. | not seen null |
live_stat_value | always null | 400 of 400 | The athlete's in-game stat value, when the source sends one. | No live stat was sent, normally because the game has not started. It does not mean the stat is zero. |
live_stat_updated_at | always null | 400 of 400 | Clock on the live stat value. A stat clock, not a price clock. | No live stat was sent. |
source_updated_at | always null | 400 of 400 | Source clock for this row. | The source sent no update clock. Update time at the source is unknown; it does not mean the value never changed. |
observed_at | string | 0 of 400 | When this service captured the row. The freshness clock. | not seen null |
source_url | string | 0 of 400 | Public source page the capture read. | not seen null |
capture_hash | string | 0 of 400 | Receipt id of the capture that last wrote this row. | not seen null |
age_seconds | number | 0 of 400 | Seconds between observed_at and the API response. Computed per response. | not seen null |
stale | boolean | 0 of 400 | True when observed_at is more than 900 seconds old at response time. A stale row may still be offered, or may be gone. | not seen null |
raw_source_status | object | 0 of 400 | Source status object as received. | not seen null |
raw_source_status.isLive | boolean | 0 of 400 | Source live flag, unmodified. | not seen null |
raw_source_status.isPaused | boolean | 0 of 400 | Source paused flag, unmodified. | not seen null |
selections | array | 0 of 400 | Sides offered on this target. Two entries is a two-sided quote, and one entry is usually a single rung of a ladder. | not seen null |
selections[].side | string | 0 of 458 | More or Less, as the source labels it. | not seen null |
selections[].selection_id | string | 0 of 458 | Source selection id. | not seen null |
selections[].proposition_id | string | 0 of 458 | Source proposition id. | not seen null |
selections[].standings_multiplier | number | 0 of 458 | Pick6 standings multiplier. Not decimal odds, a probability or an entry payout. | not seen null |
selections[].formatted_standings_multiplier | string | 0 of 458 | The same multiplier as the source formats it, such as 1.5x. | not seen null |
selections[].is_correlation_eligible | boolean | 0 of 458 | Source flag, unmodified. Its meaning is not documented by the source. | not seen null |
entities | array | 0 of 400 | Athletes on the row. | not seen null |
entities[].entity_id | string | 0 of 400 | Source athlete id. Not linked to ESPN ids. | not seen null |
entities[].full_name | string | 0 of 400 | Athlete name as the source writes it. | not seen null |
entities[].display_name | string | 0 of 400 | Short athlete name as the source writes it. | not seen null |
entities[].events | array | 0 of 400 | Games this athlete's row refers to. | not seen null |
entities[].events[].event_id | string | 0 of 400 | Source event id. Not an ESPN id. | not seen null |
entities[].events[].name | string | 0 of 400 | Game label as the source writes it. | not seen null |
entities[].events[].league_id | string | 0 of 400 | Source league id. | not seen null |
entities[].events[].sport_id | string | 0 of 400 | Source sport id. | not seen null |
entities[].events[].start_time | string | 0 of 400 | Scheduled start from the source. | not seen null |
entities[].events[].team_id | string | 0 of 400 | Source team id. | not seen null |
entities[].events[].team_name | string | 0 of 400 | Team label as the source writes it. | not seen null |
entities[].events[].opponent_id | string | 0 of 400 | Source opponent id. | not seen null |
entities[].events[].opponent_name | string | 22 of 400 | Opponent label as the source writes it. | The source named no opponent, as on some multi-team or futures rows. |
Pick6 recorded changes
GET /api/v1/pick6/history (alias /api/v1/changes). Sample JSON. Counts from 400 stored rows.
Carries every field of pick6-projections, plus the fields below.
| Field | Observed type | Seen null | Meaning | When null |
|---|---|---|---|---|
change_id | string | 0 of 400 | Sequence id of this change, as text. Use it as the resume cursor. | not seen null |
change_kind | string | 0 of 400 | offer_changed, or primary_line_changed for a source-designated default line. | not seen null |
economic_market_key | always null | 400 of 400 | Stable key across provider offer ids for source-designated primary lines. | The change is not tied to a source-designated primary line. Keys are forward-only and never backfilled. |
previous | object | 0 of 400 | The row as stored before this change, in the same shape as the row itself. | not seen null |
previous.*: Same meaning as the field of the same name on the row. When null: Same meaning as the field of the same name on the row.
Sportsbook, ESPN-attributed mainlines
DraftKings moneyline, spread and total prices as ESPN reports them. Stored observations, not executable offers, and no player props.
ESPN-attributed sportsbook events
GET /api/v1/events. Sample JSON. Counts from 97 stored rows.
| Field | Observed type | Seen null | Meaning | When null |
|---|---|---|---|---|
id | string | 0 of 97 | Service event id: source, league and ESPN event. | not seen null |
source_id | string | 0 of 97 | Source of the row, espn-draftkings. | not seen null |
sport | string | 0 of 97 | League code. | not seen null |
home | string | 0 of 97 | Home team. | not seen null |
away | string | 0 of 97 | Away team. | not seen null |
starts_at | string | 0 of 97 | Scheduled start. | not seen null |
event_status | string | 0 of 97 | pre, in, post or unknown. unknown means no state was stored for the event. | not seen null |
observed_at | string | 0 of 97 | When this service captured the event. | not seen null |
age_seconds | number | 0 of 97 | Seconds between observed_at and the API response. | not seen null |
stale | boolean | 0 of 97 | True when observed_at is more than 900 seconds old. | not seen null |
provenance | object | 0 of 97 | Where the value came from. | not seen null |
provenance.provider | string | 0 of 97 | Attributed provider. ESPN rows carry DraftKings provider 100 as ESPN reports it. | not seen null |
provenance.url | string | 0 of 97 | Public response read. | not seen null |
provenance.rights_reference | string | 0 of 97 | Rights statement for this source. Technical access is not a license. | not seen null |
ESPN-attributed mainline quotes
GET /api/v1/odds. Sample JSON. Counts from 400 stored rows.
| Field | Observed type | Seen null | Meaning | When null |
|---|---|---|---|---|
id | string | 0 of 400 | Service offer id. | not seen null |
event_id | string | 0 of 400 | Service event id. | not seen null |
source_id | string | 0 of 400 | Source of the row. | not seen null |
market | string | 0 of 400 | moneyline, spread or total. | not seen null |
period | string | 0 of 400 | Period the quote covers. | not seen null |
side | string | 0 of 400 | home, away, over or under. | not seen null |
line | string | 113 of 400 | Spread or total, as a decimal string. | A moneyline has no line. It does not mean a line of zero. |
american | number | 0 of 400 | American price. | not seen null |
decimal | string | 0 of 400 | Decimal price, as a decimal string. | not seen null |
fingerprint | string | 0 of 400 | Hash of the quote content, used to detect change. | not seen null |
event_status | string | 0 of 400 | pre, in, post or unknown. | not seen null |
observed_at | string | 0 of 400 | When this service captured the quote. | not seen null |
source_updated_at | always null | 400 of 400 | Source clock for the quote. | The source sent no update clock. Update time at the source is unknown; it does not mean the value never changed. |
age_seconds | number | 0 of 400 | Seconds between observed_at and the API response. | not seen null |
stale | boolean | 0 of 400 | True when observed_at is more than 900 seconds old. | not seen null |
provenance | object | 0 of 400 | Where the value came from. | not seen null |
provenance.provider | string | 0 of 400 | Attributed provider. ESPN rows carry DraftKings provider 100 as ESPN reports it. | not seen null |
provenance.url | string | 0 of 400 | Public response read. | not seen null |
provenance.rights_reference | string | 0 of 400 | Rights statement for this source. Technical access is not a license. | not seen null |
ESPN-attributed quote history
GET /api/v1/history. Sample JSON. Counts from 400 stored rows.
| Field | Observed type | Seen null | Meaning | When null |
|---|---|---|---|---|
seq | string | 0 of 400 | Sequence id, as text. | not seen null |
offer_id | string | 0 of 400 | Service offer id. | not seen null |
observed_at | string | 0 of 400 | When this quote state was captured. | not seen null |
age_seconds | number | 0 of 400 | Seconds between observed_at and the API response. | not seen null |
stale | boolean | 0 of 400 | True when observed_at is more than 900 seconds old. | not seen null |
data | object | 0 of 400 | The quote as stored at that time. | not seen null |
data.id | string | 0 of 400 | Service offer id. | not seen null |
data.event_id | string | 0 of 400 | Service event id. | not seen null |
data.source_id | string | 0 of 400 | Source of the row. | not seen null |
data.market | string | 0 of 400 | moneyline, spread or total. | not seen null |
data.period | string | 0 of 400 | Period the quote covers. | not seen null |
data.side | string | 0 of 400 | home, away, over or under. | not seen null |
data.line | number | 115 of 400 | Spread or total, as a number. | A moneyline has no line. It does not mean a line of zero. |
data.american | number | 0 of 400 | American price. | not seen null |
data.decimal | number | 0 of 400 | Decimal price, as a number. | not seen null |
data.observed_at | string | 0 of 400 | When this quote state was captured. | not seen null |
data.source_updated_at | always null | 400 of 400 | Source clock for the quote. | The source sent no update clock. Update time at the source is unknown; it does not mean the value never changed. |
data.provenance | object | 0 of 400 | Where the value came from. | not seen null |
data.provenance.provider | string | 0 of 400 | Attributed provider. | not seen null |
data.provenance.url | string | 0 of 400 | Public response read. | not seen null |
data.provenance.rights_reference | string | 0 of 400 | Rights statement for this source. | not seen null |
Sportsbook, native scopes
Native rows for specific subscribed scopes only, such as New York NHL Shots on Goal. Full-book coverage is unknown. Paid plans read it through a snapshot and a WebSocket.
Native sportsbook events
GET /api/v1/sportsbook/snapshot?scope=<scope_id>. Sample JSON (shape only: values are replaced by their type). Counts from 1 stored rows, from a retained source excerpt rather than production rows.
| Field | Observed type | Seen null | Meaning | When null |
|---|---|---|---|---|
id | string | 0 of 1 | Source id, unique within this scope and kind. | not seen null |
label | string | 0 of 1 | Source label. | not seen null |
raw | object | 0 of 1 | The source object as received. Emptied in this sample. | not seen null |
received_at | string | 0 of 1 | When this service received the batch. | not seen null |
source_updated_at | always null | 1 of 1 | Source clock for the row. | No source clock was available for this row, so source-to-receipt lag is unknown. |
participants | array | 0 of 1 | Teams or players the row names. | not seen null |
participants[].id | string | 0 of 2 | Source participant id. | not seen null |
participants[].name | string | 0 of 2 | Source participant name. | not seen null |
participants[].type | string | 0 of 2 | Team or Player, as the source labels it. | not seen null |
participants[].venue_role | string | 0 of 2 | Home or away role, as the source labels it. | not seen null |
starts_at | string | 0 of 1 | Scheduled start. | not seen null |
live | boolean | 0 of 1 | Source live flag. | The source did not state it. |
status | string | 0 of 1 | Source event status. | The source did not send this value for the row. |
Native sportsbook markets
GET /api/v1/sportsbook/snapshot?scope=<scope_id>. Sample JSON (shape only: values are replaced by their type). Counts from 1 stored rows, from a retained source excerpt rather than production rows.
| Field | Observed type | Seen null | Meaning | When null |
|---|---|---|---|---|
id | string | 0 of 1 | Source id, unique within this scope and kind. | not seen null |
label | string | 0 of 1 | Source label. | not seen null |
raw | object | 0 of 1 | The source object as received. Emptied in this sample. | not seen null |
received_at | string | 0 of 1 | When this service received the batch. | not seen null |
source_updated_at | always null | 1 of 1 | Source clock for the row. | No source clock was available for this row, so source-to-receipt lag is unknown. |
event_id | string | 0 of 1 | Parent event id. | not seen null |
market_type | string | 0 of 1 | Source market type name. | not seen null |
market_type_id | string | 0 of 1 | Source market type id. | not seen null |
Native sportsbook selections
GET /api/v1/sportsbook/snapshot?scope=<scope_id>. Sample JSON (shape only: values are replaced by their type). Counts from 2 stored rows, from a retained source excerpt rather than production rows.
| Field | Observed type | Seen null | Meaning | When null |
|---|---|---|---|---|
id | string | 0 of 2 | Source id, unique within this scope and kind. | not seen null |
label | string | 0 of 2 | Source label. | not seen null |
raw | object | 0 of 2 | The source object as received. Emptied in this sample. | not seen null |
received_at | string | 0 of 2 | When this service received the batch. | not seen null |
source_updated_at | always null | 2 of 2 | Source clock for the row. | No source clock was available for this row, so source-to-receipt lag is unknown. |
participants | array | 0 of 2 | Teams or players the row names. | not seen null |
participants[].id | string | 0 of 2 | Source participant id. | not seen null |
participants[].name | string | 0 of 2 | Source participant name. | not seen null |
participants[].type | string | 0 of 2 | Team or Player, as the source labels it. | not seen null |
participants[].venue_role | string | 0 of 2 | Home or away role, as the source labels it. | not seen null |
market_id | string | 0 of 2 | Parent market id. | not seen null |
line | number | 0 of 2 | Line for this selection. | The selection has no line, or a delta did not state one. It does not mean a line of zero. |
american | number | 0 of 2 | American price. | No usable price was sent. Treat the selection as unpriced, not as even money. |
decimal | number | 0 of 2 | Decimal price. | No usable price was sent. Treat the selection as unpriced. |
DFS
Selected DFS catalog, contest, slate and player-list observations. Salary is not an offered line or odds. Public redistribution is pending source permission, so these samples show shape only.
DFS sports
GET /api/v1/dfs/sports. Sample JSON (shape only: values are replaced by their type). Counts from 25 stored rows.
| Field | Observed type | Seen null | Meaning | When null |
|---|---|---|---|---|
id | string | 0 of 25 | Record id within this kind and scope. | not seen null |
sport | always null | 25 of 25 | Sport code. | The record is not tied to one sport, as with the sport catalog. |
slate_id | always null | 25 of 25 | Draft group id this record belongs to. | The record is not tied to one slate. |
observed_at | string | 0 of 25 | When this service requested the source. | not seen null |
received_at | string | 0 of 25 | When the response arrived. received_at minus observed_at is request time, not a publication delay. | The capture predates this column. |
source_updated_at | always null | 25 of 25 | Source clock for the capture. | The source sent no update clock. Update time at the source is unknown; it does not mean the value never changed. |
http_date | string | 0 of 25 | The response's HTTP Date header. Response time, not a salary change time. | The capture predates this column. |
payload_sha256 | string | 0 of 25 | SHA-256 of the response. | not seen null |
adapter_version | string | 0 of 25 | Version of the parser that stored the row. | not seen null |
rights_status | string | 0 of 25 | Rights review state for the capture. | not seen null |
source_url | string | 0 of 25 | Public response read. | not seen null |
caveats | string | 0 of 25 | What the row does and does not establish. | not seen null |
data | object | 0 of 25 | The source row as received. Its keys belong to the source and can change without notice. | not seen null |
data.*: Source field, passed through unmodified and not separately defined here. When null: The source did not send this value for the row.
DFS contests
GET /api/v1/dfs/contests. Sample JSON (shape only: values are replaced by their type). Counts from 400 stored rows.
| Field | Observed type | Seen null | Meaning | When null |
|---|---|---|---|---|
id | string | 0 of 400 | Record id within this kind and scope. | not seen null |
sport | string | 0 of 400 | Sport code. | The record is not tied to one sport, as with the sport catalog. |
slate_id | string | 0 of 400 | Draft group id this record belongs to. | The record is not tied to one slate. |
observed_at | string | 0 of 400 | When this service requested the source. | not seen null |
received_at | string | 0 of 400 | When the response arrived. received_at minus observed_at is request time, not a publication delay. | The capture predates this column. |
source_updated_at | always null | 400 of 400 | Source clock for the capture. | The source sent no update clock. Update time at the source is unknown; it does not mean the value never changed. |
http_date | string | 0 of 400 | The response's HTTP Date header. Response time, not a salary change time. | The capture predates this column. |
payload_sha256 | string | 0 of 400 | SHA-256 of the response. | not seen null |
adapter_version | string | 0 of 400 | Version of the parser that stored the row. | not seen null |
rights_status | string | 0 of 400 | Rights review state for the capture. | not seen null |
source_url | string | 0 of 400 | Public response read. | not seen null |
caveats | string | 0 of 400 | What the row does and does not establish. | not seen null |
data | object | 0 of 400 | The source row as received. Its keys belong to the source and can change without notice. | not seen null |
data.*: Source field, passed through unmodified and not separately defined here. When null: The source did not send this value for the row.
DFS slates
GET /api/v1/dfs/slates. Sample JSON (shape only: values are replaced by their type). Counts from 80 stored rows.
| Field | Observed type | Seen null | Meaning | When null |
|---|---|---|---|---|
id | string | 0 of 80 | Record id within this kind and scope. | not seen null |
sport | string | 0 of 80 | Sport code. | The record is not tied to one sport, as with the sport catalog. |
slate_id | string | 0 of 80 | Draft group id this record belongs to. | The record is not tied to one slate. |
observed_at | string | 0 of 80 | When this service requested the source. | not seen null |
received_at | string | 0 of 80 | When the response arrived. received_at minus observed_at is request time, not a publication delay. | The capture predates this column. |
source_updated_at | always null | 80 of 80 | Source clock for the capture. | The source sent no update clock. Update time at the source is unknown; it does not mean the value never changed. |
http_date | string | 0 of 80 | The response's HTTP Date header. Response time, not a salary change time. | The capture predates this column. |
payload_sha256 | string | 0 of 80 | SHA-256 of the response. | not seen null |
adapter_version | string | 0 of 80 | Version of the parser that stored the row. | not seen null |
rights_status | string | 0 of 80 | Rights review state for the capture. | not seen null |
source_url | string | 0 of 80 | Public response read. | not seen null |
caveats | string | 0 of 80 | What the row does and does not establish. | not seen null |
data | object | 0 of 80 | The source row as received. Its keys belong to the source and can change without notice. | not seen null |
data.*: Source field, passed through unmodified and not separately defined here. When null: The source did not send this value for the row.
DFS players
GET /api/v1/dfs/players. Sample JSON (shape only: values are replaced by their type). Counts from 400 stored rows.
| Field | Observed type | Seen null | Meaning | When null |
|---|---|---|---|---|
id | string | 0 of 400 | Record id within this kind and scope. | not seen null |
sport | string | 0 of 400 | Sport code. | The record is not tied to one sport, as with the sport catalog. |
slate_id | string | 0 of 400 | Draft group id this record belongs to. | The record is not tied to one slate. |
observed_at | string | 0 of 400 | When this service requested the source. | not seen null |
received_at | string | 0 of 400 | When the response arrived. received_at minus observed_at is request time, not a publication delay. | The capture predates this column. |
source_updated_at | always null | 400 of 400 | Source clock for the capture. | The source sent no update clock. Update time at the source is unknown; it does not mean the value never changed. |
http_date | string | 0 of 400 | The response's HTTP Date header. Response time, not a salary change time. | The capture predates this column. |
payload_sha256 | string | 0 of 400 | SHA-256 of the response. | not seen null |
adapter_version | string | 0 of 400 | Version of the parser that stored the row. | not seen null |
rights_status | string | 0 of 400 | Rights review state for the capture. | not seen null |
source_url | string | 0 of 400 | Public response read. | not seen null |
caveats | string | 0 of 400 | What the row does and does not establish. | not seen null |
data | object | 0 of 400 | The source row as received. Its keys belong to the source and can change without notice. | not seen null |
data.*: Source field, passed through unmodified and not separately defined here. When null: The source did not send this value for the row.
Game context
ESPN-sourced game rows and box-score rows captured alongside sportsbook summaries. ESPN ids are not linked to DraftKings ids.
Game context: games
GET /api/v1/context/games. Sample JSON. Counts from 107 stored rows.
| Field | Observed type | Seen null | Meaning | When null |
|---|---|---|---|---|
kind | string | 0 of 107 | games, player-stats or team-stats. | not seen null |
sport | string | 0 of 107 | League code. | not seen null |
event_id | string | 0 of 107 | ESPN event id. Not a DraftKings id. | not seen null |
entity_id | string | 0 of 107 | The row's subject: event, athlete or team, as an ESPN id. | not seen null |
observed_at | string | 0 of 107 | When this service captured the row. | not seen null |
source_url | string | 0 of 107 | Public response read. | not seen null |
payload_sha256 | string | 0 of 107 | SHA-256 of the response. | not seen null |
age_seconds | number | 0 of 107 | Seconds between observed_at and the API response. | not seen null |
stale | boolean | 0 of 107 | True when observed_at is more than 900 seconds old. | not seen null |
data | object | 0 of 107 | The normalized row. | not seen null |
data.event_id | string | 0 of 107 | ESPN event id. | not seen null |
data.source_updated_at | always null | 107 of 107 | Source clock. | The source sent no update clock. Update time at the source is unknown; it does not mean the value never changed. |
data.sport | string | 0 of 107 | League code. | not seen null |
data.description | string | 0 of 107 | Game label. | not seen null |
data.starts_at | string | 0 of 107 | Scheduled start. | not seen null |
data.state | string | 0 of 107 | ESPN state: pre, in or post. | not seen null |
data.completed | boolean | 0 of 107 | ESPN completed flag. | not seen null |
data.clock | always null | 107 of 107 | ESPN game clock. | No clock was sent. |
data.period | always null | 107 of 107 | Period number. | No period was sent. |
data.teams | array | 0 of 107 | The two teams. | not seen null |
data.teams[].id | string | 0 of 214 | ESPN team id. | not seen null |
data.teams[].name | string | 0 of 214 | Team name. | not seen null |
data.teams[].side | string | 0 of 214 | home or away. | not seen null |
data.teams[].score | string | 96 of 214 | Score as text. | Not scored at capture. It does not mean zero. |
data.teams[].winner | boolean | 94 of 214 | ESPN winner flag. | Not decided or not sent at capture. |
Game context: player-stats
GET /api/v1/context/player-stats. Sample JSON. Counts from 400 stored rows.
| Field | Observed type | Seen null | Meaning | When null |
|---|---|---|---|---|
kind | string | 0 of 400 | games, player-stats or team-stats. | not seen null |
sport | string | 0 of 400 | League code. | not seen null |
event_id | string | 0 of 400 | ESPN event id. Not a DraftKings id. | not seen null |
entity_id | string | 0 of 400 | The row's subject: event, athlete or team, as an ESPN id. | not seen null |
observed_at | string | 0 of 400 | When this service captured the row. | not seen null |
source_url | string | 0 of 400 | Public response read. | not seen null |
payload_sha256 | string | 0 of 400 | SHA-256 of the response. | not seen null |
age_seconds | number | 0 of 400 | Seconds between observed_at and the API response. | not seen null |
stale | boolean | 0 of 400 | True when observed_at is more than 900 seconds old. | not seen null |
data | object | 0 of 400 | The normalized row. | not seen null |
data.event_id | string | 0 of 400 | ESPN event id. | not seen null |
data.source_updated_at | always null | 400 of 400 | Source clock. | The source sent no update clock. Update time at the source is unknown; it does not mean the value never changed. |
data.statistics | array | 0 of 400 | Stat lines. | not seen null |
data.statistics[].key | string | 0 of 4,086 | ESPN stat key. | not seen null |
data.statistics[].label | string | 0 of 4,086 | ESPN stat label. | ESPN sent no label for this key. |
data.statistics[].value | string | 0 of 4,086 | Value as text. | ESPN sent no value for this key. It does not mean zero. |
data.team | string | 0 of 400 | Team name. | not seen null |
data.team_id | string | 0 of 400 | ESPN team id. | not seen null |
data.athlete_id | string | 0 of 400 | ESPN athlete id. | not seen null |
data.player | string | 0 of 400 | Athlete name. | not seen null |
data.category | string | 0 of 400 | Box-score group, such as passing. | not seen null |
data.position | string | 12 of 400 | Position. | ESPN sent no position. |
data.starter | boolean | 12 of 400 | ESPN starter flag. | ESPN did not state it. It does not mean false. |
data.did_not_play | boolean | 12 of 400 | ESPN did-not-play flag. | ESPN did not state it. It does not mean the athlete played. |
data.headshot_url | string | 67 of 400 | Portrait URL from ESPN. | ESPN sent no portrait. |
Game context: team-stats
GET /api/v1/context/team-stats. Sample JSON. Counts from 214 stored rows.
| Field | Observed type | Seen null | Meaning | When null |
|---|---|---|---|---|
kind | string | 0 of 214 | games, player-stats or team-stats. | not seen null |
sport | string | 0 of 214 | League code. | not seen null |
event_id | string | 0 of 214 | ESPN event id. Not a DraftKings id. | not seen null |
entity_id | string | 0 of 214 | The row's subject: event, athlete or team, as an ESPN id. | not seen null |
observed_at | string | 0 of 214 | When this service captured the row. | not seen null |
source_url | string | 0 of 214 | Public response read. | not seen null |
payload_sha256 | string | 0 of 214 | SHA-256 of the response. | not seen null |
age_seconds | number | 0 of 214 | Seconds between observed_at and the API response. | not seen null |
stale | boolean | 0 of 214 | True when observed_at is more than 900 seconds old. | not seen null |
data | object | 0 of 214 | The normalized row. | not seen null |
data.event_id | string | 0 of 214 | ESPN event id. | not seen null |
data.source_updated_at | always null | 214 of 214 | Source clock. | The source sent no update clock. Update time at the source is unknown; it does not mean the value never changed. |
data.statistics | array | 0 of 214 | Stat lines. | not seen null |
data.statistics[].key | string | 0 of 3,740 | ESPN stat key. | not seen null |
data.statistics[].label | string | 8 of 3,740 | ESPN stat label. | ESPN sent no label for this key. |
data.statistics[].value | string | 8 of 3,740 | Value as text. | ESPN sent no value for this key. It does not mean zero. |
data.team | string | 0 of 214 | Team name. | not seen null |
data.team_id | string | 0 of 214 | ESPN team id. | not seen null |
Independent statistics
Retained ESPN game samples for NBA, NFL and NHL, not full seasons. Not linked to Pick6 athletes.
Independent statistics: games
GET /api/v1/stats/games. Sample JSON. Counts from 75 stored rows.
| Field | Observed type | Seen null | Meaning | When null |
|---|---|---|---|---|
data | object | 0 of 75 | One game. | not seen null |
data.sport | string | 0 of 75 | NBA, NFL or NHL. | not seen null |
data.event_id | string | 0 of 75 | ESPN event id. Not a DraftKings id. | not seen null |
data.season | number | 0 of 75 | Season. NFL uses its starting year; NBA and NHL use their ending year. | not seen null |
data.season_type | number | 0 of 75 | ESPN season type number. | not seen null |
data.starts_at | string | 0 of 75 | Scheduled start. | not seen null |
data.state | string | 0 of 75 | ESPN state: pre, in or post. | not seen null |
data.status | string | 0 of 75 | ESPN status code, such as STATUS_FINAL. | not seen null |
data.completed | boolean | 0 of 75 | ESPN completed flag at capture. | not seen null |
data.period | number | 65 of 75 | Period number. | ESPN sent no period, as on final rows captured from a summary. |
data.display_clock | string | 65 of 75 | ESPN game clock text. | ESPN sent no clock. |
data.source_updated_at | always null | 75 of 75 | Source clock for this game. | The source sent no update clock. Update time at the source is unknown; it does not mean the value never changed. |
data.teams | array | 0 of 75 | The two teams. | not seen null |
data.teams[].id | string | 0 of 150 | ESPN team id. | not seen null |
data.teams[].name | string | 0 of 150 | Team name. | not seen null |
data.teams[].side | string | 0 of 150 | home or away. | not seen null |
data.teams[].score | string | 50 of 150 | Score as text. | Not scored at capture, normally a game not yet played. It does not mean zero. |
data.evidence | object | 0 of 75 | Receipt of the retained response. | not seen null |
data.evidence.url | string | 0 of 75 | Public response read. | not seen null |
data.evidence.sha256 | string | 0 of 75 | SHA-256 of the retained response. | not seen null |
data.evidence.observed_at | string | 0 of 75 | When the response was captured. | not seen null |
data.evidence.http_date | string | 52 of 75 | The response's HTTP Date header. | No Date header was recorded. |
data.evidence.last_modified | always null | 75 of 75 | The response's Last-Modified header. | ESPN sent no Last-Modified header. |
data.evidence.file | not seen | not seen | Retained archive file name. Internal receipt detail; do not depend on it. | not seen null |
data.date | not seen | not seen | Backfill checkpoint detail present on some rows. Not part of the contract; do not depend on it. | not seen null |
data.discovered | not seen | not seen | Backfill checkpoint detail present on some rows. Not part of the contract; do not depend on it. | not seen null |
data.from | not seen | not seen | Backfill checkpoint detail present on some rows. Not part of the contract; do not depend on it. | not seen null |
data.to | not seen | not seen | Backfill checkpoint detail present on some rows. Not part of the contract; do not depend on it. | not seen null |
data.games | not seen | not seen | Backfill checkpoint detail present on some rows. Not part of the contract; do not depend on it. | not seen null |
data.id | not seen | not seen | Backfill checkpoint detail present on some rows. Not part of the contract; do not depend on it. | not seen null |
data.pending | not seen | not seen | Backfill checkpoint detail present on some rows. Not part of the contract; do not depend on it. | not seen null |
Independent statistics: player games
GET /api/v1/stats/player-games. Sample JSON. Counts from 400 stored rows.
| Field | Observed type | Seen null | Meaning | When null |
|---|---|---|---|---|
data | object | 0 of 400 | One athlete's stat category in one game. | not seen null |
data.athlete_id | string | 0 of 400 | ESPN athlete id. | not seen null |
data.name | string | 0 of 400 | Athlete name. | not seen null |
data.category | string | 0 of 400 | Box-score group. | not seen null |
data.team_id | string | 0 of 400 | ESPN team id. | not seen null |
data.opponent_id | string | 0 of 400 | ESPN opponent id. | not seen null |
data.starter | boolean | 297 of 400 | ESPN starter flag. | ESPN did not state it. It does not mean false. |
data.did_not_play | boolean | 297 of 400 | ESPN did-not-play flag. | ESPN did not state it. It does not mean the athlete played. |
data.stats | array | 0 of 400 | Stat lines. | not seen null |
data.stats[].key | string | 0 of 7,517 | ESPN stat key. | not seen null |
data.stats[].label | string | 0 of 7,517 | ESPN stat label. | not seen null |
data.stats[].scope | string | 0 of 7,517 | What the value covers, such as game. | not seen null |
data.stats[].display | string | 140 of 7,517 | Value as ESPN displays it. | ESPN sent no value for this stat. |
data.stats[].numeric | number | 1,553 of 7,517 | The value as a number, when it parses as one. | The value is not one number, as with 18-52, or ESPN sent none. It does not mean zero. |
game | object | 0 of 400 | The game this row belongs to, in the same shape as a games row. | not seen null |
game.*: Same meaning as the field of the same name on a games row. When null: Same meaning as the field of the same name on a games row.
Independent statistics: team games
GET /api/v1/stats/team-games. Sample JSON. Counts from 134 stored rows.
| Field | Observed type | Seen null | Meaning | When null |
|---|---|---|---|---|
data | object | 0 of 134 | One team in one game. | not seen null |
data.team_id | string | 0 of 134 | ESPN team id. | not seen null |
data.opponent_id | string | 0 of 134 | ESPN opponent id. | not seen null |
data.stats | array | 0 of 134 | Stat lines. | not seen null |
data.stats[].key | string | 0 of 2,398 | ESPN stat key. | not seen null |
data.stats[].label | string | 0 of 2,398 | ESPN stat label. | not seen null |
data.stats[].scope | string | 0 of 2,398 | What the value covers, such as game. | not seen null |
data.stats[].display | string | 0 of 2,398 | Value as ESPN displays it. | ESPN sent no value for this stat. |
data.stats[].numeric | number | 340 of 2,398 | The value as a number, when it parses as one. | The value is not one number, as with 18-52, or ESPN sent none. It does not mean zero. |
game | object | 0 of 134 | The game this row belongs to, in the same shape as a games row. | not seen null |
game.*: Same meaning as the field of the same name on a games row. When null: Same meaning as the field of the same name on a games row.
Not covered one by one
- Stream and webhook frames carry Pick6 change rows, so their fields are the ones under Pick6 recorded changes. They have no separate sample here.
- Source fields passed through under data on DFS rows are not defined one by one, because the source owns them.
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. Information only. Every value is a stored observation with its capture clock, and no row is a live offer, a recommendation or a guarantee of what is available now.