---
title: "Play By Play [Final]"
method: GET
path: "/v3/nhl/pbp/{format}/PlayByPlayFinal/{gameid}"
tags: ["NHL v3 Play-by-Play"]
---

# Play By Play \[Final\]

`GET /v3/nhl/pbp/{format}/PlayByPlayFinal/{gameid}`

## Request

- Base URL: `https://api.sportsdata.io`
- URL: `https://api.sportsdata.io/v3/nhl/pbp/{format}/PlayByPlayFinal/{gameid}`
- Auth: one of:
  - API key in header `Ocp-Apim-Subscription-Key`
  - API key in query parameter `key`
- TypeScript: <https://skmtc.dev/sportsdata/apis/nhl-api/docs/v3/nhl/pbp/:format/PlayByPlayFinal/:gameid/get.ts> (a function with typed inputs; its response is checked against the schema)

Each invididual play, its type and outcome, complete with player and team stats down to the play level, delivered final (after the game ends), called by game.

## Path parameters

- `format` 'JSON' | 'XML', required
- `gameid` string, required

## Response `200`

Success

- PlayByPlay
  - `Game` Game
    - `GameID` integer: The unique ID of this game
    - `Season` integer: The NHL season of the game
    - `SeasonType` integer: The type of season that this record corresponds to (1=Regular Season, 2=Preseason, 3=Postseason, 5=AllStar, 6=Exhibition).
    - `Status` string, nullable: Indicates the game's status. Possible values include: Scheduled, InProgress, Final, F/SO, F/OT, Postponed, Canceled, NotNecessary
    - `Day` string, nullable: The date of the game
    - `DateTime` string, nullable: The date and time of the game in US Eastern Time
    - `Updated` string, nullable: The timestamp of when the record was last updated (in US Eastern Time).
    - `IsClosed` boolean, nullable: Indicates whether the game is over and the final score has been verified and closed out. NOTE: it is recommend for bet resulting to use IsClosed = True rather than simply Final game status
    - `AwayTeam` string, nullable: The abbreviation [Key] of the away team
    - `HomeTeam` string, nullable: The abbreviation [Key] of the home team
    - `AwayTeamID` integer: The unique ID of the away team
    - `HomeTeamID` integer: The unique ID of the home team
    - `StadiumID` integer, nullable: The unique ID of the stadium
    - `Channel` string, nullable: The television station broadcasting the game
    - `Attendance` integer, nullable: The total number of people who attended the game
    - `AwayTeamScore` integer, nullable: Total number of goals scored by the away team in the game
    - `HomeTeamScore` integer, nullable: Total number of goals scored by the home team in the game
    - `Period` string, nullable: Indicates the current period of the game. Possible values include: 1; 2; 3; OT; SO; NULL
    - `TimeRemainingMinutes` integer, nullable: Number of minutes remaining in the current period
    - `TimeRemainingSeconds` integer, nullable: Number of seconds that have passed in the current period. NOTE: this field name might be misleading as it actually represents the game clock sconds which are the number of minutes that have already passed in the period.
    - `AwayTeamMoneyLine` integer, nullable: Moneyline from the perspective of the away team
    - `HomeTeamMoneyLine` integer, nullable: Moneyline from the perspective of the home team
    - `PointSpread` number, nullable: The oddsmaker puck line at game start from the perspective of the HomeTeam (negative numbers indicate the HomeTeam is favored; positive numbers indicate the AwayTeam is favored).
    - `OverUnder` number, nullable: The sportsbook's total goals scored line (Over/Under) for the game
    - `GlobalGameID` integer: A globally unique ID for this game. This value is guaranteed to be unique across all sports/leagues.
    - `GlobalAwayTeamID` integer: A globally unique ID for the away team. This value is guaranteed to be unique across all sports/leagues.
    - `GlobalHomeTeamID` integer: A globally unique ID for the home team. This value is guaranteed to be unique across all sports/leagues.
    - `PointSpreadAwayTeamMoneyLine` integer, nullable: The payout odds when betting on the away team with the puck line
    - `PointSpreadHomeTeamMoneyLine` integer, nullable: The payout odds when betting on the home team with the puck line
    - `LastPlay` string, nullable: The description of the most recent play/event of the game. This is for display purposes and does not include corresponding data points.
    - `Periods` Period[]: The details of the periods (including overtime if applicable) for this game.
      - `PeriodID` integer: The unique ID associated of this period
      - `GameID` integer: The unique ID of this game tied to this period
      - `Name` string, nullable: The name of the period (possible values: 1; 2; 3; SO; OT; OT2; OT3; OT4; etc)
      - `AwayScore` integer, nullable: Total goals scored by the away team in a given period
      - `HomeScore` integer, nullable: Total goals scored by the home team in the period
      - `ScoringPlays` ScoringPlay[]: The details of the scoring plays that occurred during this period
        - `ScoringPlayID` integer: The unique ID of the scoring play
        - `PeriodID` integer: The unique ID associated of this period
        - `Sequence` integer, nullable: The sequence/order that this scoring play happened
        - `TimeRemainingMinutes` integer, nullable: Number of minutes that have passed in the current period. NOTE: this field name might be misleading as it actually represents the game clock minutes which are the number of minutes that have already passed in the period.
        - `TimeRemainingSeconds` integer, nullable: Number of seconds that have passed in the current period. NOTE: this field name might be misleading as it actually represents the game clock sconds which are the number of minutes that have already passed in the period.
        - `ScoredByTeamID` integer, nullable: The TeamID of the team that scored the goal
        - `AllowedByTeamID` integer, nullable: The TeamID of the team that allowed the goal
        - `ScoredByPlayerID` integer, nullable: The PlayerID of the player who scored the goal
        - `AssistedByPlayerID1` integer, nullable: The PlayerID of the FIRST player who assisted on the goal
        - `AssistedByPlayerID2` integer, nullable: The PlayerID of the SECOND player who assisted on the goal
        - `PowerPlay` boolean, nullable: Whether or not the goal was scored on the power play
        - `ShortHanded` boolean, nullable: Whether the goal was scored shorthanded
        - `EmptyNet` boolean, nullable: Whether the goal was an empty net goal or not
        - `AwayTeamScore` integer, nullable: The score of the away team after the conclusion of the scoring play
        - `HomeTeamScore` integer, nullable: The score of the home team after the conclusion of the scoring play
      - `Penalties` Penalty[]: The details of the penalties that occurred during this period
        - `PenaltyID` integer: The unique ID of this penalty
        - `PeriodID` integer: The unique ID of the period during which this penalty occurred
        - `Sequence` integer, nullable: The sequence/order that this penalty happened
        - `TimeRemainingMinutes` integer, nullable: Number of minutes that have passed in the current period. NOTE: this field name might be misleading as it actually represents the game clock minutes which are the number of minutes that have already passed in the period.
        - `TimeRemainingSeconds` integer, nullable: Number of seconds that have passed in the current period. NOTE: this field name might be misleading as it actually represents the game clock seconds which are the number of minutes that have already passed in the period.
        - `Description` string, nullable: The description of the penalty
        - `PenaltyMinutes` integer, nullable: Total minutes the penalty lasts
        - `PenalizedTeamID` integer, nullable: The TeamID of the team who committed the penalty
        - `PenalizedPlayerID` integer, nullable: The PlayerID of the player who committed the penalty
        - `DrawnByTeamID` integer, nullable: The TeamID of the player/team that drew the penalty
        - `DrawnByPlayerID` integer, nullable: The PlayerID of the player who drew the penalty
        - `IsBenchPenalty` boolean, nullable: Whether or not the penalty is a bench penalty
        - `BenchPenaltyServedByPlayerID` integer, nullable: The PlayerID of the player who served the bench penalty
    - `GameEndDateTime` string, nullable: The date and time that the game ended in US Eastern Time
    - `HomeRotationNumber` integer, nullable: The rotation number of the home team for this game
    - `AwayRotationNumber` integer, nullable: The rotation number of the away team for a game
    - `NeutralVenue` boolean, nullable: Indicates whether this game is played in a neutral venue
    - `OverPayout` integer, nullable: The sportsbook's payout for the over
    - `UnderPayout` integer, nullable: The sportsbook's payout for the under
    - `DateTimeUTC` string, nullable: The date and time of the game in UTC
    - `SeriesInfo` Series
      - `HomeTeamWins` integer: Total wins in the series by the home team
      - `AwayTeamWins` integer: Total wins in the series by the away team
      - `GameNumber` integer: The number of the game being played in the series
      - `MaxLength` integer: The maximum number of games that can be played in a postseason series
    - `RescheduledFromGameID` integer, nullable: The GameID of the originally scheduled, postponed game, that this game was rescheduled from. This only pertains to games that are scheduled as "make up" games.
    - `RescheduledGameID` integer, nullable: The GameID of the game that was rescheduled from this game. This only pertains to postponed games that require rescheduling.
    - `Referee1ID` integer, nullable: The unique ID of the main referee of this game
    - `Referee2ID` integer, nullable: The unique ID of the secondary referee of this game
    - `Linesperson1ID` integer, nullable: The unique ID of the main linesperson of this game
    - `Linesperson2ID` integer, nullable: The unique ID of the secondary linesperson of this game
    - `Deleted` boolean: Indicates whether the game or event has been soft deleted and never existed on the real-life schedule. Deleted records have their Status set to Canceled and are retained for reference only.
  - `Plays` Play[]: List of Plays in the game
    - `PlayID` integer: The unique ID of the play
    - `PeriodID` integer: The unique ID of the period during which this play occurred
    - `PeriodName` string, nullable: The name of the period that this play occurred in
    - `Sequence` integer: The order in which this play happened over the course of the game
    - `ClockMinutes` integer, nullable: The number of minutes passed in the period when this play completed
    - `ClockSeconds` integer, nullable: The number of seconds passed in the period when this play completed
    - `AwayTeamScore` integer, nullable: The score of the away team after the play ended
    - `HomeTeamScore` integer, nullable: The score of the home team after the play ended
    - `TeamID` integer, nullable: The unique ID of the team
    - `Team` string, nullable: The abbreviation [Key] of the team associated with this play
    - `OpponentID` integer, nullable: The unique ID of the team's opponent associated with this play
    - `Opponent` string, nullable: The abbreviation [Key] of the opponent team
    - `Category` string, nullable: The category of the play. Possible values: Block; Faceoff; Goal; Hit; Penalty; Period; Shootout; Shot; Stoppage; Turnover
    - `Type` string, nullable: The type of the play. Possible values: AwayTeamTimeout, Block, Boarding, Charging, CheckToTheHead, Clipping, ClosingHandOnThePuck, CrossChecking, DelayOfGame, Elbowing, Faceoff, Fighting, GameMisconduct, Giveaway, Goal, GoalieStopped, HandPass, HighSticking, HighStickOnPuck, Hit, Holding, HoldingTheStick, HomeTeamTimeout, Hooking, Icing, IllegalEquipment, Interference, Kneeing, MinorPenalty, Misconduct, NetOffPost, ObjectsOnIce, Offside, Period, PeriodEnd, PlayerEquipment, PlayerInjury, PowerPlayGoal, PuckFrozen, PuckInBench, PuckInCrowd, PuckInNetting, Referee, RinkRepair, Roughing, ShootoutGoal, ShootoutMiss, ShootoutSave, ShotMissed, ShotOnGoal, Slashing, Stoppage, Takeaway, TooManyMen, Tripping, TvTimeout, Unsportsmanlike, VideoReview
    - `Description` string, nullable: The description of the play (example: Sidney Crosby won faceoff against Aaron Ekblad)
    - `PlayerID` integer, nullable: The player's unique PlayerID as assigned by SportsDataIO. Note: this ID will stay with the player throughout their entire career
    - `Updated` string, nullable: The timestamp of when the play was last updated (in US Eastern Time)
    - `Created` string, nullable: The database generated timestamp of when this play was first created; based on US Eatern Time (EST/EDT)
    - `FirstAssistedByPlayerID` integer, nullable: The PlayerID of the player who got the first assist on this play (if applicable)
    - `SecondAssistedByPlayerID` integer, nullable: The PlayerID of the player who got the second assist on this play (if applicable)
    - `PowerPlayTeamID` integer, nullable: The unique TeamID of the team on the power play this play (if any)
    - `PowerPlayTeam` string, nullable: The abbreviation [Key] of the team on the power play this play (if any)
    - `OpposingPlayerID` integer, nullable: The PlayerID of the player involved in the play on the opposing team

## Other responses

- `401`: Unauthorized

## Changes

- **2026-11-07** `23cc22d7f2ad`: 1 info
  - added the optional property `Game/Deleted` to the response with the `200` status

[Operation history](https://skmtc.dev/sportsdata/apis/nhl-api/changes/v3/nhl/pbp/:format/PlayByPlayFinal/:gameid/get.md)

---

[API](https://skmtc.dev/sportsdata/apis/nhl-api.md) - [All operations](https://skmtc.dev/sportsdata/apis/nhl-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sportsdata/apis/nhl-api/revisions/23cc22d7f2ad?raw)
