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. To get player props or other markets, you must explicitly request them.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.Key Parameters
These parameters are shared across most event endpoints:| Parameter | Type | Default | Description |
|---|---|---|---|
market_ids | query | 1,2,3 | Comma-separated market IDs. 1=Moneyline, 2=Spread, 3=Total. See Market IDs for the full list. |
affiliate_ids | query | all | Comma-separated sportsbook IDs to include. E.g., 19,23 for DraftKings and FanDuel. |
offset | query | 0 | UTC offset in minutes for the date boundary. Use 300 for US Central Time, 240 for Eastern, 360 for Mountain, 420 for Pacific. Without this, the API day boundary is midnight UTC. |
exclude_status | query | none | Comma-separated event statuses to exclude (e.g., STATUS_FINAL). |
main_line | query | false | Set to true to return only the main/consensus line for spreads and totals. |
participant_ids | query | none | Comma-separated participant IDs to filter (useful for player props). |
participant_type | query | none | Filter by participant type (e.g., player, team). |
hide_no_markets | query | false | Set to true to exclude events that have no market data. |
Endpoints
GET /api/v2/sports/{sportID}/events/{date} — Events by sport and date
GET /api/v2/sports/{sportID}/events/{date} — Events by sport and date
GET /api/v2/events/{eventID} — Single event
GET /api/v2/events/{eventID} — Single event
Returns a single event with full market data. Use when you already have an event ID and need its current odds.
Path Parameters
| Parameter | Description |
|---|---|
eventID | Canonical V2 event ID from the event_id field |
Pass
event_id, not event_uuid, to GET /api/v2/events/{eventID} and other per-event V2 endpoints.Example Response
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.GET /api/v2/events/{eventID}/openers — Opening prices
GET /api/v2/events/{eventID}/openers — Opening prices
Returns the earliest recorded market prices (opening lines) for an event. Useful for comparing opening vs current odds.
Example Response
The response uses the same event structure asGET /events/{eventID}, with prices reflecting the first recorded lines from each sportsbook.GET /api/v2/events/{eventID}/closing — Closing prices
GET /api/v2/events/{eventID}/closing — Closing prices
Returns the final market prices recorded before event start (closing lines). Available only after an event has begun or completed.
Example Response
Same event structure as openers, with prices reflecting the final lines recorded before event start.GET /api/v2/events/{eventID}/best-line — Best available line
GET /api/v2/events/{eventID}/best-line — Best available line
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
| Parameter | Default | Description |
|---|---|---|
period | period_full_game | Period to get best line for. Options: period_full_game, period_first_half, period_second_half, period_first_period through period_fourth_period, plus live equivalents. |
Example Response
GET /api/v2/delta — Event delta feed
GET /api/v2/delta — Event delta feed
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
| Parameter | Type | Required | Description |
|---|---|---|---|
last_id | query | Yes | 36-character UUID cursor. Use empty string for initial fetch, then pass the delta_last_id from the previous response. |
sport_id | query | No | Filter by sport ID |
affiliate_ids | query | No | Comma-separated sportsbook IDs |
Example Response
Each delta entry’sdata field is a serialized JSON string containing the full event update. Parse it to get the event object.