STAT-API

NFL play_participations API

play_participationsnfl.play_participations
The personnel and pre-snap setup on every NFL play (one row per play, not per player) — offensive formation, personnel grouping, defensive look, coverage scheme, and the on-field player ids as comma-joined text columns. 2024 season coverage.
GET/api/v1/nfl/play_participations
Requires one of: play_id or game_id — requests satisfying none of these return 400.
Parameters
play_idquerystringoptional
Filter by play.
game_idquerybigintoptional
Filter to a single game.
possession_team_idquerybigintoptional
Filter by team in possession.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/play_participations?play_id=example'
Responses
200play_participations rows matching the declared filter set, wrapped in { play_participations, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(20 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 61
play_id
string—Play identifier matching `play_by_plays.play_id` for the same game.
e.g. 40
possession_team_id
bigintTeam in possession on this play (FK to `teams`).
e.g. 26
defenders_in_box
integernullable—Number of defenders within ~8 yards of the line of scrimmage at the snap.
e.g. 6
defense_coverage_type
stringnullable—Specific coverage scheme (e.g., `COVER_1`, `COVER_2_MAN`, `COVER_3`, `COVER_4`).
Values:COVER_1COVER_2COVER_32_MANCOVER_4COVER_0COVER_6COMBOCOVER_9BLOWN
defense_man_zone_type
stringnullable—Man- vs. zone-coverage classification (`MAN`, `ZONE`).
Values:MAN_COVERAGEZONE_COVERAGE
defense_personnel
stringnullable—Defensive personnel grouping (e.g., `4 DL, 2 LB, 5 DB`).
e.g. 3 CB, 2 DE, 2 DT, 1 FS, 2 ILB, 1 SS
defense_players_gsis_ids
stringnullable—GSIS IDs of defensive players on the field for this play.
e.g. 00-0033393,00-0039156,00-0038407,00-0034359,00-0036479,00-0…
n_defense
integernullable—Count of defensive players on the field (typically 11).
e.g. 11
n_offense
integernullable—Count of offensive players on the field (typically 11).
e.g. 11
ngs_air_yds
decimalnullable—Air yards traveled by the pass from the line of scrimmage to where the receiver caught/dropped it (Next Gen Stats).
e.g. — (all-null in sample)
number_of_pass_rushers
integernullable—Number of defenders who rushed the passer on this play (Next Gen Stats).
e.g. 0
offense_formation
stringnullable—Offensive formation alignment (e.g., `SHOTGUN`, `SINGLEBACK`, `I_FORM`, `PISTOL`).
Values:SHOTGUNUNDER CENTERPISTOL
offense_personnel
stringnullable—Offensive personnel grouping in `RB-TE-WR` shorthand (e.g., `1 RB, 2 TE, 2 WR` → `12 personnel`).
e.g. 1 C, 2 G, 1 QB, 1 RB, 2 T, 1 TE, 3 WR
offense_players_gsis_ids
stringnullable—GSIS IDs of offensive players on the field for this play.
e.g. 00-0036325,00-0036417,00-0036968,00-0037297,00-0039150,00-0…
players_on_play_gsis_ids
stringnullable—GSIS IDs of every player on the field for this play (comma-separated or JSON-encoded depending on source vintage).
e.g. 00-0037758,00-0039000,00-0039821,00-0036552,00-0036325,00-0…
route
stringnullable—Route the targeted receiver ran (e.g., `GO`, `SLANT`, `OUT`, `POST`).
Values:QUICK OUTHITCH/CURLSCREENIN/DIGGODEEP OUTSHALLOW CROSS/DRAGSLANTCORNERSWINGPOSTTEXAS/ANGLEWHEEL
time_to_throw
decimalnullable—Time from snap to pass release in seconds (Next Gen Stats).
e.g. 2.3000
was_pressure
booleannullable—True if the quarterback faced pass-rush pressure on this play.
Values:falsetrue
GET/api/v1/nfl/play_participations/{id}
Parameters
idpathbigintrequired
Primary key (id) of the play_participation row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/play_participations/{pk_value}'
Responses
200Single play_participation row.application/jsonshow example ▸
404Row not found.
Response Schema(20 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 61
play_id
string—Play identifier matching `play_by_plays.play_id` for the same game.
e.g. 40
possession_team_id
bigintTeam in possession on this play (FK to `teams`).
e.g. 26
defenders_in_box
integernullable—Number of defenders within ~8 yards of the line of scrimmage at the snap.
e.g. 6
defense_coverage_type
stringnullable—Specific coverage scheme (e.g., `COVER_1`, `COVER_2_MAN`, `COVER_3`, `COVER_4`).
Values:COVER_1COVER_2COVER_32_MANCOVER_4COVER_0COVER_6COMBOCOVER_9BLOWN
defense_man_zone_type
stringnullable—Man- vs. zone-coverage classification (`MAN`, `ZONE`).
Values:MAN_COVERAGEZONE_COVERAGE
defense_personnel
stringnullable—Defensive personnel grouping (e.g., `4 DL, 2 LB, 5 DB`).
e.g. 3 CB, 2 DE, 2 DT, 1 FS, 2 ILB, 1 SS
defense_players_gsis_ids
stringnullable—GSIS IDs of defensive players on the field for this play.
e.g. 00-0033393,00-0039156,00-0038407,00-0034359,00-0036479,00-0…
n_defense
integernullable—Count of defensive players on the field (typically 11).
e.g. 11
n_offense
integernullable—Count of offensive players on the field (typically 11).
e.g. 11
ngs_air_yds
decimalnullable—Air yards traveled by the pass from the line of scrimmage to where the receiver caught/dropped it (Next Gen Stats).
e.g. — (all-null in sample)
number_of_pass_rushers
integernullable—Number of defenders who rushed the passer on this play (Next Gen Stats).
e.g. 0
offense_formation
stringnullable—Offensive formation alignment (e.g., `SHOTGUN`, `SINGLEBACK`, `I_FORM`, `PISTOL`).
Values:SHOTGUNUNDER CENTERPISTOL
offense_personnel
stringnullable—Offensive personnel grouping in `RB-TE-WR` shorthand (e.g., `1 RB, 2 TE, 2 WR` → `12 personnel`).
e.g. 1 C, 2 G, 1 QB, 1 RB, 2 T, 1 TE, 3 WR
offense_players_gsis_ids
stringnullable—GSIS IDs of offensive players on the field for this play.
e.g. 00-0036325,00-0036417,00-0036968,00-0037297,00-0039150,00-0…
players_on_play_gsis_ids
stringnullable—GSIS IDs of every player on the field for this play (comma-separated or JSON-encoded depending on source vintage).
e.g. 00-0037758,00-0039000,00-0039821,00-0036552,00-0036325,00-0…
route
stringnullable—Route the targeted receiver ran (e.g., `GO`, `SLANT`, `OUT`, `POST`).
Values:QUICK OUTHITCH/CURLSCREENIN/DIGGODEEP OUTSHALLOW CROSS/DRAGSLANTCORNERSWINGPOSTTEXAS/ANGLEWHEEL
time_to_throw
decimalnullable—Time from snap to pass release in seconds (Next Gen Stats).
e.g. 2.3000
was_pressure
booleannullable—True if the quarterback faced pass-rush pressure on this play.
Values:falsetrue