Skip to main content
The V2 API organizes sports data in a nested hierarchy. Understanding this structure is essential for parsing event responses, building odds screens, and processing delta updates.

Hierarchy Overview

Event Object

Each event represents a single game or match. Events are the top-level objects returned by /api/v2/sports/{sportID}/events/{date}.
For V2 REST endpoints and WebSocket filters, pass the event_id value returned in event payloads. Do not substitute event_uuid.

Score Object

Treat score as best-effort live feed data. Fields such as venue_name, venue_location, broadcast, display_clock, and the period arrays may be empty strings, empty arrays, or 0 until the upstream source provides them. Use updated_at to judge freshness.

Team Object

Market Object

Each market represents a type of bet (moneyline, spread, total, player prop, etc.). Markets are nested inside events.

Participant Object

Participants are the entities you can bet on within a market — teams, players, or result types (Over/Under).
id is the stable, joinable identifier — join on id, not name. What id points to depends on type:
  • TYPE_TEAMid is the normalized team ID. It is stable across seasons and endpoints, and matches event.teams[].team_id. Fetch the full team at GET /api/v2/teams/{team_id}.
  • TYPE_PLAYERid is the player ID. Fetch the full player (team, names, position) at GET /api/v2/players/{player_id}.
  • TYPE_RESULTid is a small outcome index (e.g. 0/1 for Over/Under) and is not a team or player resource key.
Because every distinct team and player has a distinct id, joining on id resolves shared-name collisions that joining on name cannot. To look up an id from a name once, use the roster at GET /api/v2/teams/{team_id}/players or the team list at GET /api/v2/sports/{sportID}/teams.

Line Object

A line represents a specific betting line for a participant. For spreads and totals, the value contains the line number. For moneylines, value is an empty string.
line_value_is_participant tells you where the meaningful selection detail lives. When it is true, the participant carries the selection and the line value may be a placeholder or label. When it is false, display the line value when present; it may be a number, threshold, method, round, or other outcome qualifier.

Price Object

A price is the odds offered by a single sportsbook for a specific line. Fields that appear in delta/history responses:

Traversing the Data

Reading a moneyline price

Gives you the DraftKings (affiliate 19) moneyline price for the first participant (away team).

Reading a spread value and price

Iterating all prices for an event

Delta Responses

Delta endpoints return a different shape. Instead of the nested event → market → participant → line → price hierarchy, they return flat change records: Use the event_id, market_id, participant_id, and affiliate_id to locate the correct entry in your local cache and replace the price. See the Efficient Polling guide for the full update pattern.