Skip to main content

Overview

The V2 events endpoints return events with a market-based data model where odds are organized by market (moneyline, spread, total, player props, etc.), each containing participants with lines and prices per sportsbook.
The market_ids parameter defaults to 1,2,3 (Moneyline, Spread, Total) if not specified — 1,2,3,563 for soccer leagues and NHL. To get player props or other markets, you must explicitly request them.
Opening and closing endpoints return snapshots, while market history returns recorded price changes. Historical access and its available lookback depend on your plan.
For a detailed breakdown of how events, markets, participants, lines, and prices relate, see the Data Model. For delta-based polling strategies, see the Efficient Polling guide.
For V2 endpoints, use the event_id returned in event payloads as the canonical identifier for path parameters, WebSocket filters, and local cache keys. The payload’s event_uuid field is compatibility-only and may differ from event_id.
For MLB doubleheaders and makeup games, the nested schedule object includes game_number (1 or 2 for a true doubleheader) and game_type (doubleheader, makeup, or doubleheader_makeup). Both fields are omitted for ordinary games, so no headline parsing is required.

Key Parameters

These parameters are shared across most event endpoints:

Endpoints

The primary endpoint for building odds screens. Returns all events for a sport on a given date, with full market/odds data.

Path Parameters

Example Response

Returns a single event with full market data. Use when you already have an event ID and need its current odds.

Path Parameters

Pass event_id, not event_uuid, to GET /api/v2/events/{eventID} and other per-event V2 endpoints.

Example Response

participant.id is the stable join key — join on id, not name. What id points to depends on participant.type:
  • TYPE_TEAM — id is the normalized team ID, stable across seasons, and matches event.teams[].team_id. Full record at GET /api/v2/teams/{team_id}.
  • TYPE_PLAYER — id is the player ID. Full record (team, names, position) at GET /api/v2/players/{player_id}.
  • TYPE_RESULT — id is a small outcome index (e.g. 0/1 for Over/Under), not a team or player resource key.
Joining on id resolves shared-name collisions. To filter the response server-side, pass participant_ids (comma-separated, max 99) with participant_type set to TYPE_TEAM, TYPE_PLAYER, or TYPE_RESULT. To resolve a name to an id once, use GET /api/v2/teams/{team_id}/players or GET /api/v2/sports/{sportID}/teams. See the Participant object reference for full definitions.
Live score metadata is best-effort. Fields such as venue_name and venue_location may be empty strings even when event_status is STATUS_IN_PROGRESS.
Returns the earliest recorded price for each available line at each sportsbook. An opening snapshot is available before, during, or after the event when a price has been recorded.The response uses the standard events envelope array, even for one event ID. market_ids defaults to 1,2,3 (1,2,3,563 for soccer and NHL), accepts at most 12 IDs, and respects your sportsbook access. main_line=true selects main lines in the snapshot. Use history to follow which line was main at each timestamp. Set hide_closed=true only when you want to exclude currently closed lines.

Example Response

The response uses the same event structure as GET /api/v2/events/{eventID}, with prices reflecting the first recorded lines from each sportsbook.
Returns the latest recorded price at or before the scheduled event start. Before that time, the snapshot is provisional. Period markets use the event start time as their closing cutoff.The response uses the standard events envelope array, even for one event ID. market_ids defaults to 1,2,3 (1,2,3,563 for soccer and NHL), accepts at most 12 IDs, and respects your sportsbook access. main_line=true selects main lines in the snapshot. Use history to follow which line was main at each timestamp. Omit hide_closed (or use false) to retrieve a completed historical snapshot.

Example Response

Same event envelope as openers, with prices reflecting the latest recorded lines at or before event start.
Returns the best moneyline, spread, and total across all tracked sportsbooks for an event. Compares prices across books and returns the most favorable line for each side.

Additional Parameters

Example Response

Returns events that have changed since your last request, identified by a cursor (last_id). Use this for efficient polling instead of re-fetching all events.

Parameters

Each delta payload contains the full event update as a JSON string. Parse the json field within each delta item to get the event data.

Example Response

Each delta entry’s data field is a serialized JSON string containing the full event update. Parse it to get the event object.

Opening & Closing Lines by Sport and Date

In addition to per-event snapshots, you can fetch opening and closing lines for all events in a sport on a date. These routes support offset, event_status, and exclude_status as well as the shared snapshot filters.
See the opening sport/date reference, closing sport/date reference, event opening reference, and event closing reference.

Live Game State & Play-by-Play

Live game state and play-by-play require an Ultra plan or higher. Keys on lower tiers do not receive the live_game_state field, and requests to the plays endpoint return a 403.
For entitled keys, live event payloads embed a live_game_state snapshot with the current period, the last play, and sport-specific detail:
  • MLB — balls, strikes, outs, base runners, current batter and pitcher
  • NFL / NCAAF — possession, down & distance, yard line, red-zone flag, timeouts
  • NBA / WNBA / NCAAB — possession, timeouts, bonus status
  • NHL — possession, skater strength, power-play team, shots on goal, goalie-pulled flags
  • Soccer — period, half indicator, and last play
The full play timeline is available at GET /api/v2/events/{eventID}/plays — one entry per play with description, period, game clock, running score, and (as attribution rolls out) the players involved. Responses return up to 500 plays per request; page backwards through long games with before_sequence. For streaming delivery, subscribe to the plays channel on the V2 WebSocket. Coverage spans MLB, NBA (including Summer League), WNBA, NCAAB, NFL, NCAAF, NHL, and soccer, with per-play player attribution rolling out progressively by sport.

Off-the-Board Sentinel

A price value of 0.0001 means the line is “off the board” — the sportsbook has temporarily removed pricing (e.g., pending injury news). This is not an error. Display it as “OTB” or “N/A” in your UI.