nhl

NHL play-by-play

Pro plan or higher: all NHL play-by-play requires Pro; Free / Solo / Trio / Edge receive a 403 naming the tier and linking the docs and pricing pages. Mirrors NFL and NBA play-by-play's tier ("all play by play is pro"); NBA's Edge-and-up gate was retired on 2026-09-18.

nhl_play_by_play mirrors nba_play_by_play's schema (migration 057). Two columns the migration declares are 0% populated in production (verified against all 434,815 rows) and are never served: text and score_value. team_id (~84%) and coordinate_x/ coordinate_y (~83%) are null on faceoffs/stoppages with no team or spatial attribution; home_score/away_score (~2%) are stamped only on the goal event itself. shooting_only=true turns the response into a shot-chart feed and adds our licensed play-derived xG, distance, angle, rebound, rush and empty-net fields where the xG model covers the event. Coverage includes the complete 2025-26 season; the licensed 2026-27 feed begins with the September 29 regular-season opener.

get/v1/nhl/games/{game_id}/plays

Request

  • Base URL: https://api.bigballsdata.com
  • URL: https://api.bigballsdata.com/v1/nhl/games/{game_id}/plays
  • Auth: one of:
    • API key in header x-api-key
    • HTTP bearer

Path parameters

game_idstring uuid required

Query parameters

play_typestring
periodinteger
scoring_onlyboolean

Return scoring plays only. Accepted: true|1|yes|on and false|0|no|off; anything else is a 400 naming the parameter.

shooting_onlyboolean

Return shot events only; rows include shot geometry and computed xG fields when available. Accepted: true|1|yes|on and false|0|no|off; anything else is a 400 naming the parameter. false means OFF. Measured 2026-09-20 on game 9aac43c2-...-d4127f1f7147, ?shooting_only=false returned 119 of 361 plays because Boolean("false") is true.

limitinteger
offsetinteger

Response

ok. { data, pagination, meta }; meta.pbp_available: false when the match exists but this vendor never covered it.

dataobject[]

Changes

No recorded changes to this operation across all 3 revisions of this API.