---
title: "Get play-by-play for an event"
method: GET
path: "/api/v2/events/{eventID}/plays"
tags: ["V2 Events"]
---

# Get play-by-play for an event

`GET /api/v2/events/{eventID}/plays`

Returns the play-by-play timeline for a live or completed event — one entry per play with description, period, game clock, running score, and (as attribution rolls out) the players involved. Live game state and play-by-play require an **Ultra plan or higher**; keys on lower tiers receive a `403`. The companion `live_game_state` snapshot (current inning/quarter, count, base runners, possession, and more) is embedded on live event payloads for entitled keys. Also available for streaming via the `plays` channel on the V2 WebSocket.

## Path parameters

- `eventID` string, required

## Query parameters

- `limit` integer
- `before_sequence` integer

## Response `200`

Play-by-play timeline

- PlaysResponse
  - `event_id` string
  - `sport_id` integer
  - `sport` string
  - `plays` Play[] — Plays in ascending sequence order. Always an array, never null.
    - `play_id` integer
    - `sequence` integer — Monotonic ordering key within the event. Use with `before_sequence` to page backwards.
    - `team_id` integer — Possession/acting team. May be omitted while per-play attribution rolls out.
    - `period` integer
    - `half_indicator` string
    - `type` string — Play type (e.g. `single`, `strikeout`, `made-three`, `goal`)
    - `result` string
    - `description` string
    - `scoring_play` boolean — Whether this play scored. May be omitted while per-play attribution rolls out.
    - `score_value` integer — Points/runs/goals credited by this play
    - `score_away_after` integer — Away score after this play
    - `score_home_after` integer — Home score after this play
    - `win_probability_home` number — Home win probability after this play, 0-1
    - `display_clock` string — Game clock display at the time of the play, where applicable
    - `occurred_at` string, date-time
    - `participants` PlayParticipant[] — Players involved in the play. May be omitted while per-play attribution rolls out; not available for NFL/NCAAF live plays.
      - `player_id` integer — Normalized player ID — joins to the players endpoints
      - `name` string
      - `team_id` integer
      - `role` string
      - `position` string
    - `mlb` object — Baseball-only play details
      - `batter` PlayPlayerSummary
        - `player_id` integer
        - `name` string
        - `team_id` integer
      - `pitcher` PlayPlayerSummary
        - `player_id` integer
        - `name` string
        - `team_id` integer
      - `scorer` PlayPlayerSummary
        - `player_id` integer
        - `name` string
        - `team_id` integer
      - `pitch_speed_mph` number
      - `exit_velocity_mph` number
      - `hit_distance_ft` number
      - `launch_angle_deg` number
    - `football` object — NFL/NCAAF-only play details
      - `start_yard_line` integer
      - `end_yard_line` integer
      - `stat_yardage` integer
      - `drive_description` string

## Other responses

- `403` — The API key's plan does not include live game state

---

[API](https://skmtc.net/therundown/apis/therundown-sports-api.md) · [All operations](https://skmtc.net/therundown/apis/therundown-sports-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/therundown/therundown-sports-api/revisions/5aa0aa5c5f66/schema)
