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. 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:
ParameterTypeDefaultDescription
market_idsquery1,2,3Comma-separated market IDs. 1=Moneyline, 2=Spread, 3=Total. See Market IDs for the full list.
affiliate_idsqueryallComma-separated sportsbook IDs to include. E.g., 19,23 for DraftKings and FanDuel.
offsetquery0UTC 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_statusquerynoneComma-separated event statuses to exclude (e.g., STATUS_FINAL).
main_linequeryfalseSet to true to return only the main/consensus line for spreads and totals.
participant_idsquerynoneComma-separated participant IDs to filter (useful for player props).
participant_typequerynoneFilter by participant type (e.g., player, team).
hide_no_marketsqueryfalseSet to true to exclude events that have no market data.

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

ParameterDescription
sportIDSport ID (e.g., 4 for NBA)
dateDate in YYYY-MM-DD format
curl "https://therundown.io/api/v2/sports/4/events/2026-02-26?key=YOUR_API_KEY&market_ids=1,2,3&offset=300"

Example Response

{
  "meta": {
    "delta_last_id": "7f2a1b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c"
  },
  "events": [
    {
      "event_id": "401584701-d1f2-43e7-b5a6-9c8d7e6f5a4b",
      "sport_id": 4,
      "event_uuid": "11f1-197d-e93ea800-8c2a-ef6a554ca62d",
      "event_date": "2026-02-27T00:30:00Z",
      "rotation_number_away": 501,
      "rotation_number_home": 502,
      "score": {
        "event_id": "401584701-d1f2-43e7-b5a6-9c8d7e6f5a4b",
        "event_status": "STATUS_SCHEDULED",
        "score_away": 0,
        "score_home": 0,
        "winner_away": 0,
        "winner_home": 0,
        "score_away_by_period": [],
        "score_home_by_period": [],
        "venue_name": "Madison Square Garden",
        "venue_location": "New York, NY",
        "game_clock": 0,
        "display_clock": "0:00",
        "game_period": 0,
        "broadcast": "ESPN",
        "event_status_detail": "7:30 PM ET",
        "updated_at": "2026-02-26T12:00:00Z"
      },
      "teams": [
        {
          "team_id": 51,
          "name": "Cleveland Cavaliers",
          "mascot": "Cavaliers",
          "abbreviation": "CLE",
          "record": "42-14",
          "is_away": true,
          "is_home": false
        },
        {
          "team_id": 56,
          "name": "New York Knicks",
          "mascot": "Knicks",
          "abbreviation": "NYK",
          "record": "35-21",
          "is_away": false,
          "is_home": true
        }
      ],
      "schedule": {
        "season_type": "Regular Season",
        "season_year": 2026,
        "event_name": "Cleveland Cavaliers at New York Knicks",
        "league_name": "NBA"
      },
      "markets": [
        {
          "id": 28401,
          "market_id": 1,
          "period_id": 0,
          "name": "Moneyline",
          "market_description": "Pick the winner of the game",
          "participants": [
            {
              "id": 51,
              "type": "TYPE_TEAM",
              "name": "Cleveland Cavaliers",
              "lines": [
                {
                  "id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
                  "value": "",
                  "prices": {
                    "19": { "id": "194920001", "price": -145, "is_main_line": true, "updated_at": "2026-02-26T16:30:00Z" }
                  }
                }
              ]
            },
            {
              "id": 56,
              "type": "TYPE_TEAM",
              "name": "New York Knicks",
              "lines": [
                {
                  "id": "b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7",
                  "value": "",
                  "prices": {
                    "19": { "id": "194920002", "price": 122, "is_main_line": true, "updated_at": "2026-02-26T16:30:00Z" }
                  }
                }
              ]
            }
          ]
        },
        {
          "id": 28402,
          "market_id": 2,
          "period_id": 0,
          "name": "handicap",
          "market_description": "Spread: Win or lose by margin of points",
          "participants": [
            {
              "id": 51,
              "type": "TYPE_TEAM",
              "name": "Cleveland Cavaliers",
              "lines": [
                {
                  "id": "c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8",
                  "value": "-3.5",
                  "prices": {
                    "19": { "id": "194920003", "price": -110, "is_main_line": true, "updated_at": "2026-02-26T16:30:00Z" }
                  }
                }
              ]
            },
            {
              "id": 56,
              "type": "TYPE_TEAM",
              "name": "New York Knicks",
              "lines": [
                {
                  "id": "d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9",
                  "value": "3.5",
                  "prices": {
                    "19": { "id": "194920004", "price": -110, "is_main_line": true, "updated_at": "2026-02-26T16:30:00Z" }
                  }
                }
              ]
            }
          ]
        },
        {
          "id": 28403,
          "market_id": 3,
          "period_id": 0,
          "name": "Total Over/Under",
          "market_description": "Combined score of both teams",
          "participants": [
            {
              "id": 0,
              "type": "TYPE_RESULT",
              "name": "Over",
              "lines": [
                {
                  "id": "e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0",
                  "value": "224.5",
                  "prices": {
                    "19": { "id": "194920005", "price": -110, "is_main_line": true, "updated_at": "2026-02-26T16:30:00Z" }
                  }
                }
              ]
            },
            {
              "id": 1,
              "type": "TYPE_RESULT",
              "name": "Under",
              "lines": [
                {
                  "id": "f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1",
                  "value": "224.5",
                  "prices": {
                    "19": { "id": "194920006", "price": -110, "is_main_line": true, "updated_at": "2026-02-26T16:30:00Z" }
                  }
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}
Returns a single event with full market data. Use when you already have an event ID and need its current odds.

Path Parameters

ParameterDescription
eventIDCanonical 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.
curl "https://therundown.io/api/v2/events/EVENT_ID?key=YOUR_API_KEY&market_ids=1,2,3"

Example Response

{
  "meta": {
    "delta_last_id": "8a3b2c1d-5e4f-6a7b-8c9d-0e1f2a3b4c5d"
  },
  "events": [
    {
      "event_id": "401584701-d1f2-43e7-b5a6-9c8d7e6f5a4b",
      "sport_id": 4,
      "event_uuid": "11f1-197d-e93ea800-8c2a-ef6a554ca62d",
      "event_date": "2026-02-27T00:30:00Z",
      "score": {
        "event_id": "401584701-d1f2-43e7-b5a6-9c8d7e6f5a4b",
        "event_status": "STATUS_IN_PROGRESS",
        "score_away": 62,
        "score_home": 55,
        "score_away_by_period": [28, 18, 16],
        "score_home_by_period": [24, 19, 12],
        "game_period": 3,
        "display_clock": "4:32",
        "broadcast": "ESPN",
        "event_status_detail": "3rd Quarter - 4:32",
        "updated_at": "2026-02-27T01:45:00Z"
      },
      "teams": [
        { "team_id": 51, "name": "Cleveland Cavaliers", "abbreviation": "CLE", "is_away": true, "is_home": false },
        { "team_id": 56, "name": "New York Knicks", "abbreviation": "NYK", "is_away": false, "is_home": true }
      ],
      "schedule": {
        "season_type": "Regular Season",
        "season_year": 2026,
        "event_name": "Cleveland Cavaliers at New York Knicks"
      },
      "markets": [
        {
          "id": 28401,
          "market_id": 1,
          "period_id": 0,
          "name": "Moneyline",
          "market_description": "Pick the winner of the game",
          "participants": [
            {
              "id": 51,
              "type": "TYPE_TEAM",
              "name": "Cleveland Cavaliers",
              "lines": [
                {
                  "id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
                  "value": "",
                  "prices": {
                    "19": { "id": "194930001", "price": -220, "is_main_line": true, "updated_at": "2026-02-27T01:42:00Z" }
                  }
                }
              ]
            },
            {
              "id": 56,
              "type": "TYPE_TEAM",
              "name": "New York Knicks",
              "lines": [
                {
                  "id": "b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7",
                  "value": "",
                  "prices": {
                    "19": { "id": "194930002", "price": 180, "is_main_line": true, "updated_at": "2026-02-27T01:42:00Z" }
                  }
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}
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 market prices (opening lines) for an event. Useful for comparing opening vs current odds.
curl "https://therundown.io/api/v2/events/EVENT_ID/openers?key=YOUR_API_KEY&market_ids=1,2,3"

Example Response

The response uses the same event structure as GET /events/{eventID}, with prices reflecting the first recorded lines from each sportsbook.
{
  "event_id": "401584701-d1f2-43e7-b5a6-9c8d7e6f5a4b",
  "sport_id": 4,
  "markets": [
    {
      "id": 28401,
      "market_id": 1,
      "period_id": 0,
      "name": "Moneyline",
      "market_description": "Pick the winner of the game",
      "participants": [
        {
          "id": 51,
          "type": "TYPE_TEAM",
          "name": "Cleveland Cavaliers",
          "lines": [
            {
              "id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
              "value": "",
              "prices": {
                "19": { "id": "194910001", "price": -130, "is_main_line": true, "updated_at": "2026-02-24T14:00:00Z" }
              }
            }
          ]
        },
        {
          "id": 56,
          "type": "TYPE_TEAM",
          "name": "New York Knicks",
          "lines": [
            {
              "id": "b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7",
              "value": "",
              "prices": {
                "19": { "id": "194910002", "price": 110, "is_main_line": true, "updated_at": "2026-02-24T14:00:00Z" }
              }
            }
          ]
        }
      ]
    }
  ]
}
Returns the final market prices recorded before event start (closing lines). Available only after an event has begun or completed.
curl "https://therundown.io/api/v2/events/EVENT_ID/closing?key=YOUR_API_KEY&market_ids=1,2,3"

Example Response

Same event structure as openers, with prices reflecting the final lines recorded before event start.
{
  "event_id": "401584701-d1f2-43e7-b5a6-9c8d7e6f5a4b",
  "sport_id": 4,
  "markets": [
    {
      "id": 28402,
      "market_id": 2,
      "period_id": 0,
      "name": "handicap",
      "market_description": "Spread: Win or lose by margin of points",
      "participants": [
        {
          "id": 51,
          "type": "TYPE_TEAM",
          "name": "Cleveland Cavaliers",
          "lines": [
            {
              "id": "c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8",
              "value": "-4.5",
              "prices": {
                "19": { "id": "194940001", "price": -108, "is_main_line": true, "updated_at": "2026-02-27T00:28:00Z" }
              }
            }
          ]
        },
        {
          "id": 56,
          "type": "TYPE_TEAM",
          "name": "New York Knicks",
          "lines": [
            {
              "id": "d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9",
              "value": "4.5",
              "prices": {
                "19": { "id": "194940002", "price": -112, "is_main_line": true, "updated_at": "2026-02-27T00:28:00Z" }
              }
            }
          ]
        }
      ]
    }
  ]
}
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

ParameterDefaultDescription
periodperiod_full_gamePeriod 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.
curl "https://therundown.io/api/v2/events/EVENT_ID/best-line?key=YOUR_API_KEY"

Example Response

{
  "event_id": "401584701-d1f2-43e7-b5a6-9c8d7e6f5a4b",
  "sport_id": 4,
  "best_lines": {
    "moneyline": {
      "away": { "price": -140, "affiliate_id": 23, "affiliate_name": "FanDuel" },
      "home": { "price": 125, "affiliate_id": 22, "affiliate_name": "BetMGM" }
    },
    "spread": {
      "away": { "value": "-3.5", "price": -105, "affiliate_id": 22, "affiliate_name": "BetMGM" },
      "home": { "value": "3.5", "price": -108, "affiliate_id": 23, "affiliate_name": "FanDuel" }
    },
    "total": {
      "over": { "value": "224.5", "price": -108, "affiliate_id": 19, "affiliate_name": "DraftKings" },
      "under": { "value": "224.5", "price": -105, "affiliate_id": 22, "affiliate_name": "BetMGM" }
    }
  }
}
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

ParameterTypeRequiredDescription
last_idqueryYes36-character UUID cursor. Use empty string for initial fetch, then pass the delta_last_id from the previous response.
sport_idqueryNoFilter by sport ID
affiliate_idsqueryNoComma-separated sportsbook IDs
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.
curl "https://therundown.io/api/v2/delta?key=YOUR_API_KEY&last_id=00000000-0000-0000-0000-000000000000&sport_id=4"

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.
{
  "meta": {
    "delta_last_id": "9e8f7d6c-5b4a-3210-fedc-ba9876543210"
  },
  "deltas": [
    {
      "data": "{\"event_id\":\"401584701-d1f2-43e7-b5a6-9c8d7e6f5a4b\",\"sport_id\":4,\"event_status\":\"STATUS_IN_PROGRESS\",\"score\":{\"score_away\":62,\"score_home\":55,\"game_period\":3},\"teams\":[{\"team_id\":51,\"name\":\"Cleveland Cavaliers\"},{\"team_id\":56,\"name\":\"New York Knicks\"}],\"markets\":[...]}"
    },
    {
      "data": "{\"event_id\":\"401584702-a3b4-56c7-d8e9-0f1a2b3c4d5e\",\"sport_id\":4,\"event_status\":\"STATUS_SCHEDULED\",\"teams\":[{\"team_id\":50,\"name\":\"Golden State Warriors\"},{\"team_id\":55,\"name\":\"Phoenix Suns\"}],\"markets\":[...]}"
    }
  ]
}

Opening & Closing Lines by Sport and Date

In addition to per-event openers/closing, you can fetch opening and closing lines for all events in a sport on a date:
curl "https://therundown.io/api/v2/sports/4/openers/2026-02-26?key=YOUR_API_KEY&market_ids=1,2,3&offset=300"

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.