---
title: "Get closing lines for a sport and date"
method: GET
path: "/api/v2/sports/{sportID}/closing/{date}"
tags: ["V2 Events"]
---

# Get closing lines for a sport and date

`GET /api/v2/sports/{sportID}/closing/{date}`

## Request

- Base URL: `https://therundown.io`
- URL: `https://therundown.io/api/v2/sports/{sportID}/closing/{date}`
- Auth: API key in header `X-TheRundown-Key`

Returns events with the latest recorded price for each available line and sportsbook at or before each event's scheduled start time. Before an event starts, the snapshot is provisional. Period markets use the event start time as their closing cutoff.

Historical-data access and the event-date lookback depend on your plan. Omit `hide_closed` or use `false` to include currently closed prices in completed-event snapshots. Events can be returned without prices when no recorded lines match the filters. Use market history for price changes over time; see the [Historical Odds guide](/guides/historical-odds).

## Path parameters

- `sportID` integer, required
- `date` string, date, required

## Query parameters

- `offset` integer
- `market_ids` string
- `affiliate_ids` string
- `main_line` 'true' | 'false'
- `event_status` string
- `exclude_status` string
- `hide_closed` 'true' | 'false'

## Response `200`

Events with closing market prices

- EventsV2Response
  - `meta` EventsSnapshotMeta, nullable
    - `delta_last_id` union: Positive whole-integer cursor for `/api/v2/markets/delta`. The API may return it as an integer or a numeric string. Use a snapshot value to begin market-delta polling only for known zero-delay access when that snapshot explicitly reports `X-Data-Delay-Seconds: 0`; otherwise use scoped snapshots and never substitute `0`.
      - integer
      - string
  - `events` EventV2[]
    - `event_id` string: Canonical event identifier string used by V2 endpoints, filters, and delta feeds.
    - `event_uuid` string: Compatibility identifier retained for older integrations. Do not assume it matches `event_id`.
    - `sport_id` integer
    - `event_date` string, date-time
    - `rotation_number_away` integer
    - `rotation_number_home` integer
    - `score` Score
      - `event_id` string
      - `event_status` string: Event status. Common values: STATUS_SCHEDULED, STATUS_IN_PROGRESS, STATUS_FINAL, STATUS_POSTPONED, STATUS_CANCELED, STATUS_SUSPENDED, STATUS_DELAYED, STATUS_RAIN_DELAY, STATUS_HALFTIME, STATUS_END_PERIOD, STATUS_END_OF_REGULATION, STATUS_OVERTIME, STATUS_FIRST_HALF, STATUS_SECOND_HALF
      - `team_id_away` integer: Away team ID. Omitted when zero.
      - `team_id_home` integer: Home team ID. Omitted when zero.
      - `score_away` integer
      - `score_home` integer
      - `winner_away` integer
      - `winner_home` integer
      - `score_away_by_period` integer[]: Away team's per-period scores, not running totals; index `0` is the first period. Overtime periods are appended. Read this array by its own length. Its sum is not guaranteed to equal `score_away`; verify before using it.
      - `score_home_by_period` integer[]: Home team's per-period scores, not running totals; index `0` is the first period. Overtime periods are appended. Read this array by its own length. Its sum is not guaranteed to equal `score_home`; verify before using it.
      - `venue_name` string: Arena or stadium name. May be an empty string when unavailable.
      - `venue_location` string: City and state. May be an empty string when unavailable.
      - `game_clock` integer
      - `display_clock` string
      - `is_clock_running` boolean: Clock-running flag when supplied. Omitted when unavailable.
      - `game_period` integer
      - `broadcast` string
      - `event_status_detail` string
      - `updated_at` string, date-time
    - `teams` TeamNormalized[]
      - `team_id` integer
      - `name` string
      - `mascot` string
      - `abbreviation` string
      - `record` string
      - `is_home` boolean
      - `is_away` boolean
      - `ranking` integer, nullable
      - `conference` Conference
        - `conference_id` integer
        - `sport_id` integer
        - `name` string
      - `division` Division
        - `division_id` integer
        - `conference_id` integer
        - `sport_id` integer
        - `name` string
    - `schedule` Schedule
      - `season_type` string
      - `season_year` integer
      - `conference_competition` boolean, nullable
      - `conference_name` string
      - `league_name` string, nullable
      - `event_name` string
      - `attendance` string
      - `event_headline` string
      - `game_number` 1 | 2: Game number for a true MLB doubleheader. Omitted for ordinary and standalone makeup games.
      - `game_type` 'doubleheader' | 'makeup' | 'doubleheader_makeup': Structured MLB doubleheader or makeup classification. Omitted for ordinary games.
      - `week` integer
      - `week_name` string
      - `week_detail` string
    - `pitcher_away` Pitcher
      - `id` integer
      - `name` string
      - `throws_left_handed` boolean, nullable
      - `throws_right_handed` boolean, nullable
      - `bats_left_handed` boolean, nullable
      - `bats_right_handed` boolean, nullable
    - `pitcher_home` Pitcher
      - `id` integer
      - `name` string
      - `throws_left_handed` boolean, nullable
      - `throws_right_handed` boolean, nullable
      - `bats_left_handed` boolean, nullable
      - `bats_right_handed` boolean, nullable
    - `markets` MarketResponse[]
      - `id` integer
      - `market_id` integer
      - `period_id` integer
      - `name` string
      - `market_description` string
      - `participants` MarketParticipantResponse[]
        - `id` integer: Stable, joinable participant identifier. Join on this field rather than name to avoid shared-name collisions. Its meaning depends on `type`: for `TYPE_TEAM` it is the normalized team ID (stable across seasons, matches `event.teams[].team_id`; full record at GET /api/v2/teams/{team_id}); for `TYPE_PLAYER` it is the player ID (full record at GET /api/v2/players/{player_id}); for `TYPE_RESULT` it is a small outcome index (e.g. 0/1 for Over/Under) and is not a team or player resource key.
        - `type` 'TYPE_TEAM' | 'TYPE_PLAYER' | 'TYPE_RESULT': Kind of participant. Determines what `id` points to (team, player, or result outcome).
        - `name` string: Display name. Not guaranteed unique across participants: join on `id`, not `name`.
        - `lines` MarketLinesResponse[]
          - `id` string
          - `value` string: Line value. For spreads/totals this is numeric; for some prop and special markets it can be a method, round, threshold, or other display value. When `line_value_is_participant` is true, the participant usually carries the selection.
          - `selection` string
          - `handicap` string
          - `prices` object: Prices keyed by affiliate ID
    - `live_game_state` LiveGameState: Real-time game-state snapshot embedded on live event payloads. Requires the live game state entitlement (Ultra plan or higher); keys without it never receive this field. Sport-specific blocks (`mlb`, `football`, `basketball`, `hockey`) are present only for the relevant sport.
      - `event_id` string
      - `sport_id` integer
      - `sport` string: Sport slug: `mlb`, `nba`, `nba-summer`, `ncaab`, `nfl`, `ncaaf`, `nhl`, `wnba`, or `soccer`
      - `period` integer: Current period/inning/quarter number
      - `half_indicator` string: Half within the period where applicable (e.g. `top`/`bottom` for MLB innings)
      - `display_clock` string: Clock display string. Omitted when inapplicable or not yet known.
      - `clock_seconds` integer: The same clock in seconds. Omitted when inapplicable or not yet known.
      - `clock_running` boolean: Whether the clock has been observed running. Omitted when inapplicable or not yet known.
      - `clock_as_of` string, date-time: When this clock value was observed, separate from the state row's updated_at.
      - `last_play` LastPlayRef: Reference to the most recent play, mirrored from the play-by-play timeline
        - `play_id` integer
        - `sequence` integer
        - `type` string
        - `result` string
        - `description` string
        - `team_id` integer
        - `scoring_play` boolean
        - `score_value` integer
        - `occurred_at` string, date-time
        - `win_probability_home` number
        - `participants` PlayParticipant[]
          - `player_id` integer: Normalized player ID: joins to the players endpoints
          - `name` string
          - `team_id` integer
          - `role` string
          - `position` string
      - `updated_at` string, date-time
      - `mlb` object: Baseball-only snapshot
        - `balls` integer
        - `strikes` integer
        - `outs` integer
        - `on_first` PlayPlayerSummary
          - `player_id` integer
          - `name` string
          - `team_id` integer
        - `on_second` PlayPlayerSummary
          - `player_id` integer
          - `name` string
          - `team_id` integer
        - `on_third` PlayPlayerSummary
          - `player_id` integer
          - `name` string
          - `team_id` integer
        - `current_batter` PlayPlayerSummary
          - `player_id` integer
          - `name` string
          - `team_id` integer
        - `current_pitcher` PlayPlayerSummary
          - `player_id` integer
          - `name` string
          - `team_id` integer
      - `football` object: NFL/NCAAF-only snapshot
        - `possession_team_id` integer
        - `down` integer
        - `distance` integer
        - `yard_line` integer
        - `down_distance_text` string
        - `short_down_distance_text` string
        - `possession_text` string
        - `is_red_zone` boolean
        - `home_timeouts` integer
        - `away_timeouts` integer
      - `basketball` object: NBA/WNBA/NCAAB-only snapshot
        - `possession_team_id` integer
        - `home_timeouts` integer
        - `away_timeouts` integer
        - `home_in_bonus` boolean
        - `away_in_bonus` boolean
      - `hockey` object: NHL-only snapshot
        - `possession_team_id` integer
        - `strength` string: Skater strength situation (e.g. even strength, power play)
        - `power_play_team_id` integer
        - `home_shots_on_goal` integer
        - `away_shots_on_goal` integer
        - `home_goalie_pulled` boolean
        - `away_goalie_pulled` boolean
    - `affiliate_source_ids` object: Map of affiliate ID (as a string) to that sportsbook's own identifier for this event, when available. Useful for deep-linking or joining against a book's data. For Polymarket (affiliate 26) the value is the Polymarket event slug; see the Source identifiers section of the Sportsbook reference.

## Other responses

- `400`: Invalid request parameters
- `401`: Missing or invalid API key
- `403`: The requested historical data is not available for this plan

## Changes

- **2026-10-29** `5a4eb15704f7`: 5 info
  - added the optional property `events/items/live_game_state/clock_as_of` to the response with the `200` status
  - added the optional property `events/items/live_game_state/clock_running` to the response with the `200` status
  - added the optional property `events/items/live_game_state/clock_seconds` to the response with the `200` status
  - added the optional property `events/items/live_game_state/display_clock` to the response with the `200` status
  - …1 more
- **2026-09-10** `75e26606912e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/therundown/apis/therundown-sports-api/changes/api/v2/sports/:sportID/closing/:date/get.md)

---

[API](https://skmtc.dev/therundown/apis/therundown-sports-api.md) - [All operations](https://skmtc.dev/therundown/apis/therundown-sports-api/llms.txt) - [OpenAPI document](https://skmtc.dev/therundown/apis/therundown-sports-api/revisions/b1735c57a340?raw)
