NFL

40 tables

Every scheduled and played NFL game — preseason exhibitions, the 18-week regular season, and the playoffs from Wild Card weekend through the Super Bowl — plus the players, teams, coaching staffs, depth charts, injuries, betting markets, and play-by-play behind them.

Machine-readable spec: /api/openapi/public.json (OpenAPI 3.1)

Main· 4 tables

seasonsnfl.seasons
Each NFL league year, from the opening of training camp through the Super Bowl. The 2025 season refers to the 2025-26 league year, kicking off in early August and ending in February.
Fields10
FieldTypeReferencesDescription
idkeybigintPrimary Key
short_idstringShort identifier used by the NFL feed (e.g., `2024REG` for the 2024 regular season).
e.g. 2024
descriptionstringnullable
Values:2024-2025 NFL Season2025-2026 NFL Season
end_datetimestamptznullableLast day of the season (Super Bowl date or shortly after).
e.g. 2025-02-09T00:00:00.000Z
post_season_start_datetimestamptznullableFirst day of the postseason (Wild Card weekend).
e.g. 2025-01-11T00:00:00.000Z
regular_season_start_datetimestamptznullableFirst day of regular-season play (typically the Thursday after Labor Day).
e.g. 2024-09-05T00:00:00.000Z
regular_season_weeksintegerNumber of regular-season weeks (18 since 2021; 17 in 2020 and earlier).
e.g. 18
start_datetimestamptzFirst day of the season (typically the start of preseason in early August).
e.g. 2024-09-05T00:00:00.000Z
start_yearintegerCalendar year in which the season starts (e.g., 2025 = the 2025-26 season).
e.g. 2024
super_bowl_datetimestamptznullableDate of the Super Bowl for this season.
e.g. 2025-02-09T00:00:00.000Z
GET/api/v1/nfl/seasons
Parameters
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/seasons?limit=3'
Responses
200seasons rows matching the declared filter set, wrapped in { seasons, 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
GET/api/v1/nfl/seasons/{id}
Parameters
idpathbigintrequired
Primary key (id) of the season row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/seasons/{pk_value}'
Responses
200Single season row.application/jsonshow example ▸
404Row not found.
teamsnfl.teams
The 32 NFL franchises plus historical predecessors — teams that have since relocated, renamed, or merged into the current league.
Fields13
FieldTypeReferencesDescription
idkeybigintPrimary Key
league_team_idstringOfficial NFL team UUID from api.nfl.com
e.g. 10403800-517c-7b8c-65a3-c61b95d86123
stadium_idbigintPrimary home stadium (FK to `stadiums`); null if unknown or shared.
e.g. 16
abbreviationstringThree-letter team code (e.g., KC, NE, GB).
e.g. ARI
activebooleanTrue for currently-active franchises; false for relocated or defunct teams retained for historical references.
e.g. true
citystring
e.g. Los Angeles
conferencestringConference assignment (AFC or NFC).
Values:NFCAFC
divisionstringDivision within the conference (e.g., AFC East, NFC West).
Values:WestSouthNorthEast
full_namestring
e.g. Arizona Cardinals
logo_urlstringnullableURL to team logo image
e.g. https://a.espncdn.com/i/teamlogos/nfl/500/ari.png
namestring
e.g. Cardinals
primary_colorstringnullableHex color code for the team's primary uniform color (e.g., `#A71930`).
e.g. #002244
secondary_colorstringnullableHex color code for the team's secondary uniform color.
Values:#000000#FFB612#A5ACAF#C60C30#B0B7BC#A71930#9E7C0C#E64100#311D00#FB4F14#FFC20E#FFD100#F58220#FFC62F#B3995D#69BE28#322F2B#D50A0A
GET/api/v1/nfl/teams
Parameters
activequerybooleanoptional
Filter by active status (defaults to true to show only currently-active rows; pass active=false to include inactive).
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/teams?limit=3'
Responses
200teams rows matching the declared filter set, wrapped in { teams, 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
GET/api/v1/nfl/teams/{id}
Parameters
idpathbigintrequired
Primary key (id) of the team row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/teams/{pk_value}'
Responses
200Single team row.application/jsonshow example ▸
404Row not found.
playersnfl.players
Every individual who has played in the NFL — current rosters, free agents, retired veterans — plus team-defense entries used for fantasy and DST scoring.
Fields28
FieldTypeReferencesDescription
idkeybigintPrimary Key
gsis_idstringGame Statistics and Information System ID (e.g. 00-0028830)
e.g. 00-0022531
league_player_idstringOfficial NFL player ID (UUID) from nfl.com
e.g. 00-0022531
team_idbigintnullableCurrent NFL team (FK to `teams`); null for free agents and retired players.
e.g. 27
birth_citystringnullable
e.g. — (all-null in sample)
birth_countrystringnullable
e.g. — (all-null in sample)
birth_datedatenullable
e.g. 1997-02-14T05:00:00.000Z
birth_statestringnullable
e.g. — (all-null in sample)
collegestringnullableCollege or last football affiliation before turning pro.
e.g. Ohio State
draft_numberstringnullablePick number within the round; null or `UDFA` if undrafted.
e.g. 1
draft_roundstringnullableDraft round (1-7); null or `UDFA` if undrafted.
e.g. 3
draft_yearstringnullableCalendar year the player was drafted; null or `UDFA` if undrafted.
e.g. 2023
experienceintegernullableYears of NFL experience (rookies = 0).
e.g. 0
first_namestring
e.g. Michael
full_namestring
e.g. Aaron Brewer
full_position_liststringnullableAll positions the player is eligible at (semicolon-joined when multiple, e.g., `RB;WR`).
e.g. — (all-null in sample)
heightintegernullableHeight in inches.
e.g. 75
is_teambooleanTrue for synthetic team-level entities (DST, team defense). Used to distinguish team defense 'players' from individual players.
Values:falsetrue
jerseystringnullableJersey number with the player's current team (string to preserve leading zeros and special codes).
e.g. 35
last_namestring
e.g. Johnson
nfl_slugstringnullableURL slug used on nfl.com (e.g., `patrick-mahomes`).
e.g. — (all-null in sample)
overall_pickintegernullableOverall pick number across all rounds (1-262); null if undrafted.
e.g. 230
position_groupstringnullableBroad position group classification used by nflverse (e.g., `OFFENSE`, `DEFENSE`, `ST`).
Values:OffenseDefenseSpecial Teams
primary_positionstringPrimary roster position (e.g., QB, WR, RB, CB).
Values:DBOLDLWRLBRBTEQBKPLSDST
profile_pic_urlstringnullableURL to player profile picture image
e.g. https://static.www.nfl.com/image/upload/f_auto,q_auto/leagu…
roster_statusstringnullableActive roster status code from the NFL feed (separate from `status`; e.g., `A` = active, `P` = practice squad).
e.g. A01
statusstringnullableRoster status, readable single-word vocabulary (`Active`, `Cut`, `PracticeSquad`, `Reserve`, `Inactive`, `Retired`, `PracticeSquadReleased`, `Exempt`).
Values:ActiveCutPracticeSquadReserveInactiveRetiredPracticeSquadReleased
weightintegernullableWeight in pounds.
e.g. 200
GET/api/v1/nfl/players
Requires one of: team_id or status or gsis_id or primary_position — requests satisfying none of these return 400.
Parameters
team_idquerybigintoptional
Filter by team.
statusquerystringoptional
Filter by roster status (readable single-word vocabulary; PracticeSquadReleased covers the nflverse TRC/TRD codes). Values: Active, Cut, Exempt, Inactive, PracticeSquad, PracticeSquadReleased, Reserve, Retired.
gsis_idquerystringoptional
Filter by GSIS external player id.
primary_positionquerystringoptional
Filter by player primary position (e.g. QB, WR, RB). Values: DB, DL, DST, K, LB, LS, OL, P, QB, RB, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/players?team_id=1'
Responses
200players rows matching the declared filter set, wrapped in { players, 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
GET/api/v1/nfl/players/{id}
Parameters
idpathbigintrequired
Primary key (id) of the player row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/players/{pk_value}'
Responses
200Single player row.application/jsonshow example ▸
404Row not found.
gamesnfl.games
Every scheduled and played NFL game — preseason exhibitions, the 18-week regular season, the playoffs from Wild Card weekend through the Super Bowl.
Fields31
FieldTypeReferencesDescription
idkeybigintPrimary Key
away_team_idbigint
e.g. 19
home_team_idbigint
e.g. 26
league_game_idstringOfficial NFL game ID from league source
e.g. c7ce9df0-2459-11ef-afd1-646009f18b2e
season_idbigint
e.g. 2024
stadium_idintegerStadium hosting the game (FK to `stadiums`).
e.g. 4
attendanceintegernullableReported attendance count; null when not published.
e.g. — (all-null in sample)
away_rotation_numberintegernullableSportsbook rotation number for the away team (3-4 digit cross-book reference).
e.g. — (all-null in sample)
away_teamstringDenormalized team abbreviation for the away side at game time (snapshot copy of `teams.abbreviation`).
e.g. LAR
away_team_scoreintegerFinal away-team score; 0 (not null) until the game completes.
e.g. 0
channelstringnullablePrimary broadcast network/channel (e.g., `CBS`, `FOX`, `Prime Video`).
e.g. — (all-null in sample)
dayintegerCalendar day as a YYYYMMDD integer (e.g. 20240915), US Eastern.
e.g. 20240915
end_timetimestamptznullableActual game end timestamp; null until the game completes.
e.g. — (all-null in sample)
game_labelstringnullableDisplay label for special games (e.g., `Thanksgiving Day`, `Monday Night Football`).
Values:AFC Wild CardNFC Wild CardAFC DivisionalNFC DivisionalNFC ChampionshipAFC ChampionshipSuper Bowl
game_sub_labelstringnullableSecondary label or sub-category for the game.
e.g. — (all-null in sample)
game_timetimestamptzScheduled kickoff time (timezone-aware).
e.g. 2024-09-15T17:00:00.000Z
home_rotation_numberintegernullableSportsbook rotation number for the home team (3-4 digit cross-book reference).
e.g. — (all-null in sample)
home_teamstringDenormalized team abbreviation for the home side at game time (snapshot copy of `teams.abbreviation`).
e.g. PHI
home_team_scoreintegerFinal home-team score; 0 (not null) until the game completes.
e.g. 0
neutral_venuebooleanTrue if the game is played at a neutral site (Super Bowl, international games, etc.).
Values:falsetrue
overtimebooleanTrue if the game went to overtime.
Values:falsetrue
overtime_periodsintegernullableNumber of overtime periods played (1+ when `overtime` is true).
e.g. — (all-null in sample)
playoff_roundstringnullablePostseason round (`WildCard`, `Divisional`, `Conference Championship`, `Super Bowl`); null outside the postseason.
Values:Wild CardDivisionalConference ChampionshipSuper Bowl
playoff_seed_awayintegernullableAway-team playoff seed (1-7); null outside the postseason.
e.g. — (all-null in sample)
playoff_seed_homeintegernullableHome-team playoff seed (1-7); null outside the postseason.
e.g. — (all-null in sample)
postponed_statusstringnullableReason for postponement (e.g., `Weather`, `COVID`); null for games played as scheduled.
e.g. — (all-null in sample)
season_typestringStage within the season (`Regular Season`, `Preseason`, `Playoff` = Wild Card round, `Divisional`, `Conference Championship`, `Super Bowl`).
Values:Regular SeasonPreseasonPlayoffDivisionalConference ChampionshipSuper Bowl
start_timetimestamptzActual kickoff timestamp; null before the game starts.
e.g. 2024-09-15T17:00:00.000Z
statusstringGame status. Currently always `Scheduled` (status reconciliation is pending) — detect completed games via populated scores, not this field.
e.g. Scheduled
typestringGame classification (`Regular`, `Playoff`, `Super Bowl`, `Preseason`).
Values:RegularPreseasonPlayoff
weekintegerWeek number within the season stage — 1-18 for regular season, restarting at 1 in the postseason (1 Wild Card, 2 Divisional, 3 Conference Championship, 4 Super Bowl). Note nfl.injuries.week uses the continuous 19-22 convention instead.
e.g. 1
GET/api/v1/nfl/games
Requires one of: season_id — requests satisfying none of these return 400.
Parameters
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
weekqueryintegeroptional
Filter by week of the season. Range syntax: week__gte=, week__lte=, week__between=.
season_typequerystringoptional
Filter by season stage — exact values: Regular Season, Preseason, Playoff (= Wild Card round), Divisional, Conference Championship, Super Bowl. Values: Conference Championship, Divisional, Playoff, Preseason, Regular Season, Super Bowl.
home_team_idquerybigintoptional
Filter by home team.
away_team_idquerybigintoptional
Filter by away team.
statusquerystringoptional
Filter by row status.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/games?season_id=2025'
Responses
200games rows matching the declared filter set, wrapped in { games, 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
GET/api/v1/nfl/games/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/games/{pk_value}'
Responses
200Single game row.application/jsonshow example ▸
404Row not found.

Plays· 3 tables

game_drivesnfl.game_drives
Each offensive possession in an NFL game — how the drive started, how it ended (touchdown, field goal, punt, turnover), starting and ending field position, time of possession, and play count.
Fields22
FieldTypeReferencesDescription
idkeybigintPrimary Key
first_play_idbigintplay_id of first play in drive
e.g. 40
game_idbigint
e.g. 222
last_play_idbigintplay_id of last play in drive
e.g. 131
possession_team_idbigintTeam with possession (FK to teams)
e.g. 13
drive_numberintegerDrive sequence number in game (1-indexed)
e.g. 2
end_transitionstringnullableHow possession ended (PUNT, TOUCHDOWN, TURNOVER, etc.)
Values:PUNTTOUCHDOWNFIELD_GOALINTERCEPTIONDOWNSFUMBLEEND_GAMEEND_HALFMISSED_FGSAFETYBLOCKED_PUNTBLOCKED_FGBLOCKED_PUNT,_DOWNSFUMBLE,_SAFETYBLOCKED_FG,_DOWNS
end_yard_linestringnullableEnding field position (e.g., "OPP 10")
e.g. 50
ended_with_scorebooleanDrive resulted in points
Values:falsetrue
first_downsintegernullableFirst downs gained
e.g. 0
fixed_driveintegerCorrected drive number from nflverse
e.g. 2
game_clock_endstringnullableGame clock at drive end (mm:ss)
e.g. 00:00
game_clock_startstringnullableGame clock at drive start (mm:ss)
e.g. 15:00
inside_20booleanDrive reached red zone
Values:falsetrue
play_countintegernullableNumber of plays in drive
e.g. 3
quarter_endintegernullableQuarter when drive ended
e.g. 2
quarter_startintegernullableQuarter when drive started
e.g. 2
resultstringnullableDrive outcome (Touchdown, Field goal, Punt, Turnover, etc.)
Values:PuntTouchdownField goalTurnoverEnd of halfTurnover on downsMissed field goalOpp touchdownSafety
start_transitionstringnullableHow possession was gained (KICKOFF, PUNT, TURNOVER, etc.)
Values:KICKOFFPUNTINTERCEPTIONDOWNSFUMBLEMISSED_FGMUFFED_PUNTBLOCKED_PUNTONSIDE_KICKBLOCKED_PUNT,_DOWNSBLOCKED_FG,_DOWNSBLOCKED_FGMUFFED_KICKOFF
start_yard_linestringnullableStarting field position (e.g., "KC 25")
e.g. LV 30
time_of_possessionstringnullableDrive duration (mm:ss format)
e.g. 1:30
yds_penalizedintegernullablePenalty yards on drive
e.g. 0
GET/api/v1/nfl/game_drives
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
possession_team_idquerybigintoptional
Filter by team in possession.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_drives?game_id=1'
Responses
200game_drives rows matching the declared filter set, wrapped in { game_drives, 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
GET/api/v1/nfl/game_drives/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_drive row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_drives/{pk_value}'
Responses
200Single game_drive row.application/jsonshow example ▸
404Row not found.
play_by_playsnfl.play_by_plays
Every individual play of every NFL game — what happened, where on the field, with what result. Includes pass and rush attempts, penalties, special teams, EPA, win probability, and the full game-clock and down-and-distance context.
Fields372
FieldTypeReferencesDescription
idkeybigintPrimary Key
assist_tackle_1_player_idstringnullableAssist tackler 1 GSIS ID
e.g. 00-0037616
assist_tackle_2_player_idstringnullableAssist tackler 2 GSIS ID
e.g. 00-0036294
assist_tackle_3_player_idstringnullableAssist tackler 3 GSIS ID
e.g. — (all-null in sample)
assist_tackle_4_player_idstringnullableAssist tackler 4 GSIS ID
e.g. — (all-null in sample)
blocked_player_idstringnullableBlocked kick player GSIS ID
Values:00-003752700-003784300-003698200-0037156
defensive_team_idbigintnullableFK to teams table for defensive team
e.g. 14
drive_idbigintnullableFK to game_drives table
e.g. — (all-null in sample)
fantasy_idstringnullableFantasy identifier
e.g. 00-0035700
fantasy_player_idstringnullableFantasy designation player ID
e.g. 00-0034844
forced_fumble_player_1_player_idstringnullableForced fumble player 1 GSIS ID
e.g. 00-0033868
forced_fumble_player_2_player_idstringnullableForced fumble player 2 GSIS ID
e.g. — (all-null in sample)
fumble_recovery_1_player_idstringnullableRecovery player 1 GSIS ID
e.g. 00-0037666
fumble_recovery_2_player_idstringnullableRecovery player 2 GSIS ID
e.g. — (all-null in sample)
fumbled_1_player_idstringnullableFirst fumbler GSIS ID
e.g. 00-0036442
fumbled_2_player_idstringnullableSecond fumbler GSIS ID
e.g. — (all-null in sample)
game_idbigintFK to games table
e.g. 50
half_sack_1_player_idstringnullableHalf-sack player 1 GSIS ID
Values:00-003914800-003850400-003237800-003695400-003267100-003241500-003910800-003589000-003760300-003694000-0035402
half_sack_2_player_idstringnullableHalf-sack player 2 GSIS ID
Values:00-003613000-003648000-003434400-003104000-003438500-003158300-003156500-003637800-003853500-003257400-003632100-0034251
interception_player_idstringnullableInterceptor GSIS ID
e.g. 00-0036388
kicker_player_idstringnullableKicker GSIS ID
e.g. 00-0038905
kickoff_returner_player_idstringnullableKickoff returner GSIS ID
e.g. 00-0037429
lateral_interception_player_idstringnullableLateral after INT GSIS ID
e.g. — (all-null in sample)
lateral_kickoff_returner_player_idstringnullableLateral kickoff returner GSIS ID
e.g. — (all-null in sample)
lateral_punt_returner_player_idstringnullableLateral punt returner GSIS ID
e.g. — (all-null in sample)
lateral_receiver_player_idstringnullableLateral receiver GSIS ID (pass)
e.g. 00-0038976
lateral_rusher_player_idstringnullableLateral receiver GSIS ID (rush)
e.g. 00-0034975
lateral_sack_player_idstringnullableLateral after sack GSIS ID
e.g. — (all-null in sample)
nfl_api_idstringnullableUUID from NFL API
e.g. 7d4019ca-1312-11ef-afd1-646009f18b2e
nflverse_game_idstringnullableTen digit identifier for NFL game (nflverse format)
e.g. — (all-null in sample)
old_game_idstringnullableLegacy NFL game ID format
e.g. 2024090600
own_kickoff_recovery_player_idstringnullableOwn kickoff recovery player GSIS ID
e.g. — (all-null in sample)
pass_defense_1_player_idstringnullablePass defense player 1 GSIS ID
e.g. 00-0034856
pass_defense_2_player_idstringnullablePass defense player 2 GSIS ID
Values:00-003155400-003724600-003423400-003982900-003502000-003725000-0034720
passer_idbigintnullableFK to players table
e.g. 358
passer_player_idstringnullablePasser GSIS ID
e.g. 00-0033537
penalty_player_idstringnullablePenalized player GSIS ID
e.g. 00-0036874
play_idstringNumeric play identifier unique to game
e.g. 1
possession_team_idbigintnullableFK to teams table for possession team
e.g. 8
primary_player_gsis_idstringnullablePrimary player GSIS ID
e.g. — (all-null in sample)
punt_returner_player_idstringnullablePunt returner GSIS ID
e.g. 00-0039392
punter_player_idstringnullablePunter GSIS ID
e.g. 00-0032943
qb_hit_1_player_idstringnullableQB hitter GSIS ID
e.g. 00-0036932
qb_hit_2_player_idstringnullableSecond QB hitter GSIS ID
Values:00-003613000-003648000-003434400-003104000-003438500-003158300-003156500-003257400-003632100-0034251
receiver_idbigintnullableFK to players table
e.g. 438
receiver_player_idstringnullableReceiver GSIS ID
e.g. 00-0033908
rusher_idbigintnullableFK to players table
e.g. 943
rusher_player_idstringnullableRusher GSIS ID
e.g. 00-0035700
sack_player_idstringnullableSacker GSIS ID
e.g. 00-0036914
safety_player_idstringnullableSafety scorer GSIS ID
Values:00-003524800-0037251
solo_tackle_1_player_idstringnullableSolo tackler 1 GSIS ID
e.g. 00-0034987
solo_tackle_2_player_idstringnullableSolo tackler 2 GSIS ID
Values:00-003975300-0039032
stadium_idintegernullableStadium ID
e.g. — (all-null in sample)
tackle_for_loss_1_player_idstringnullableTFL player 1 GSIS ID
e.g. 00-0034973
tackle_for_loss_2_player_idstringnullableTFL player 2 GSIS ID
e.g. — (all-null in sample)
tackle_with_assist_1_player_idstringnullableTackle-assist player 1 GSIS ID
e.g. 00-0031898
tackle_with_assist_2_player_idstringnullableTackle-assist player 2 GSIS ID
e.g. — (all-null in sample)
td_player_idstringnullableTD scorer GSIS ID
e.g. 00-0033906
aborted_playbooleanPlay was aborted
Values:falsetrue
air_epadecimalnullableEPA from air yards
e.g. -0.1479
air_wpadecimalnullableWPA from air yards
e.g. 0.0000
air_ydsintegernullableYards in air (perpendicular to LOS)
e.g. 5
assist_tacklebooleanAssist tackle on play
Values:falsetrue
assist_tackle_1_player_namestringnullableAssist tackler 1 name
e.g. J.Jones
assist_tackle_1_teamstringnullableAssist tackler 1 team
e.g. IND
assist_tackle_2_player_namestringnullableAssist tackler 2 name
e.g. L.Wilson
assist_tackle_2_teamstringnullableAssist tackler 2 team
e.g. LA
assist_tackle_3_player_namestringnullableAssist tackler 3 name
e.g. — (all-null in sample)
assist_tackle_3_teamstringnullableAssist tackler 3 team
e.g. — (all-null in sample)
assist_tackle_4_player_namestringnullableAssist tackler 4 name
e.g. — (all-null in sample)
assist_tackle_4_teamstringnullableAssist tackler 4 team
e.g. — (all-null in sample)
away_coachstringnullableAway team head coach
e.g. Antonio Pierce
away_scoreintegernullableTotal away points
e.g. 20
away_teamstringnullableAway team abbreviation
e.g. LV
away_timeouts_remainingintegernullableAway timeouts remaining
e.g. 3
away_wpdecimalnullableAway team win probability
e.g. 0.0001
away_wp_postdecimalnullableAway WP after play
e.g. 0.0001
blocked_player_namestringnullableBlocked kick player name
Values:S.OlubiD.HardyC.GolstonI.Charles
comp_air_epadecimalnullableCompletion air EPA
e.g. 0.0000
comp_air_wpadecimalnullableCompletion air WPA
e.g. 0.0000
comp_yac_epadecimalnullableCompletion YAC EPA
e.g. 0.0000
comp_yac_wpadecimalnullableCompletion YAC WPA
e.g. 0.0000
complete_passbooleanPass completed
Values:falsetrue
cpdecimalnullableCompletion probability
e.g. 0.8676
cpoedecimalnullableCompletion percentage over expected
e.g. 13.2417
def_wpdecimalnullableWin probability for defense
e.g. 0.4537
defensive_extra_point_attemptbooleanDefense extra point attempt
e.g. false
defensive_extra_point_convbooleanDefense extra point success
e.g. false
defensive_two_point_attemptbooleanDefense two-point attempt
e.g. false
defensive_two_point_convbooleanDefense two-point conversion success
e.g. false
defteamstringnullableDefensive team abbreviation
e.g. IND
defteam_scoreintegernullableDefense team score at start
e.g. 0
defteam_score_postintegernullableDefense team score at end
e.g. 0
defteam_timeouts_remainingintegernullableDefensive team timeouts
e.g. 3
descstringnullableFull play description text
e.g. GAME
div_gamebooleanDivision game
Values:falsetrue
downintegernullableDown (1-4)
e.g. 1
driveintegernullableDrive number in game
e.g. 6
drive_end_transitionstringnullableHow drive ended
Values:FIELD_GOALPUNTTOUCHDOWNDOWNSINTERCEPTIONEND_GAMEFUMBLEMISSED_FGEND_HALFBLOCKED_PUNTSAFETY
drive_end_yard_linestringnullableYard line at drive end
e.g. 50
drive_ended_with_scorebooleanDrive resulted in score
Values:truefalse
drive_first_downsintegernullableFirst downs gained in drive
e.g. 0
drive_game_clock_endstringnullableGame clock at drive end
e.g. 00:00
drive_game_clock_startstringnullableGame clock at drive start
e.g. 15:00
drive_inside20booleanDrive reached red zone
Values:falsetrue
drive_play_countintegernullableNumber of plays in drive
e.g. 3
drive_play_id_endedstringnullableLast play_id of drive
e.g. 4175
drive_play_id_startedstringnullableFirst play_id of drive
e.g. 40
drive_quarter_endintegernullableQuarter when drive ended
e.g. 2
drive_quarter_startintegernullableQuarter when drive started
e.g. 3
drive_real_start_timestringnullableDrive start time (real clock)
e.g. 2024-09-07T03:15:55.057Z
drive_start_transitionstringnullableHow possession was obtained
Values:KICKOFFPUNTINTERCEPTIONDOWNSFUMBLEMISSED_FGMUFFED_PUNTBLOCKED_PUNTMUFFED_KICKOFF
drive_start_yard_linestringnullableYard line at drive start
e.g. PHI 30
drive_time_of_possessionstringnullableDrive time of possession (mm:ss)
e.g. 2:28
drive_yds_penalizedintegernullablePenalty yards during drive
e.g. 0
end_clock_timestringnullableGame clock at play end
e.g. 2024-09-15T17:30:53.207Z
end_yard_linestringnullableYard line at play end
e.g. — (all-null in sample)
epdecimalnullableExpected points before play
e.g. 0.9324
epadecimalnullableExpected points added
e.g. 0.0000
extra_point_attemptbooleanExtra point attempt
Values:falsetrue
extra_point_probdecimalnullableExtra point probability
e.g. 0.0000
extra_point_resultstringnullablegood, failed, blocked, safety, aborted
Values:goodfailedblocked
fantasystringnullableFantasy designation
e.g. B.Robinson
fantasy_player_namestringnullableFantasy designation player name
e.g. B.Robinson
fg_probdecimalnullableFG probability
e.g. 0.0000
field_goal_attemptbooleanField goal attempt
Values:falsetrue
field_goal_resultstringnullablemade, missed, or blocked
Values:mademissed
first_downbooleanFirst down achieved
Values:falsetrue
first_down_passbooleanPassing first down
Values:falsetrue
first_down_penaltybooleanFirst down via penalty
Values:falsetrue
first_down_rushbooleanRushing first down
Values:falsetrue
fixed_driveintegernullableManual drive number correction
e.g. 1
fixed_drive_resultstringnullableManual drive result correction
Values:Field goalPuntTouchdownTurnoverTurnover on downsEnd of halfMissed field goalOpp touchdownSafety
forced_fumble_player_1_player_namestringnullableForced fumble player 1 name
e.g. M.Garrett
forced_fumble_player_1_teamstringnullableForced fumble team 1
e.g. KC
forced_fumble_player_2_player_namestringnullableForced fumble player 2 name
e.g. — (all-null in sample)
forced_fumble_player_2_teamstringnullableForced fumble team 2
e.g. — (all-null in sample)
fourth_down_convertedbooleanFourth down conversion
Values:falsetrue
fourth_down_failedbooleanFourth down failure
Values:falsetrue
fumblebooleanFumble occurred
Values:falsetrue
fumble_forcedbooleanFumble was forced
Values:falsetrue
fumble_lostbooleanFumble was lost
Values:falsetrue
fumble_not_forcedbooleanFumble was not forced
Values:falsetrue
fumble_out_of_boundsbooleanFumble went OOB
Values:falsetrue
fumble_recovery_1_player_namestringnullableRecovery player 1 name
e.g. J.Tolbert
fumble_recovery_1_teamstringnullableRecovery team 1
e.g. CHI
fumble_recovery_1_ydsintegernullableRecovery yards 1
e.g. 0
fumble_recovery_2_player_namestringnullableRecovery player 2 name
e.g. — (all-null in sample)
fumble_recovery_2_teamstringnullableRecovery team 2
e.g. — (all-null in sample)
fumble_recovery_2_ydsintegernullableRecovery yards 2
e.g. — (all-null in sample)
fumbled_1_player_namestringnullableFirst fumbler name
e.g. J.Burrow
fumbled_1_teamstringnullableFirst fumbler team
e.g. CIN
fumbled_2_player_namestringnullableSecond fumbler name
e.g. — (all-null in sample)
fumbled_2_teamstringnullableSecond fumbler team
e.g. — (all-null in sample)
game_halfstringnullableHalf1, Half2, or Overtime
Values:Half1Half2Overtime
game_seconds_remainingintegerSeconds remaining in game
e.g. 1800
game_stadiumstringnullableGame stadium name
e.g. GEHA Field at Arrowhead Stadium
goal_to_gobooleanGoal-to-go situation
Values:falsetrue
half_sack_1_player_namestringnullableHalf-sack player 1 name
Values:K.WhiteT.SimpsonD.BucknerL.OnwuzurikeM.FoxM.JudonW.AndersonT.WhartonJ.PeevyO.OwehC.Granderson
half_sack_2_player_namestringnullableHalf-sack player 2 name
Values:J.MadubuikeD.OdeyingboM.DavenportK.MackJ.BentleyG.JarrettD.HunterM.DannaDj.JohnsonM.PierceC.YoungD.Ekuale
half_seconds_remainingintegerSeconds remaining in half
e.g. 1800
home_coachstringnullableHome team head coach
e.g. Nick Sirianni
home_opening_kickoffbooleanHome team had opening kickoff
Values:truefalse
home_scoreintegernullableTotal home points
e.g. 26
home_teamstringnullableHome team abbreviation
e.g. PHI
home_timeouts_remainingintegernullableHome timeouts remaining
e.g. 3
home_wpdecimalnullableHome team win probability
e.g. 0.9999
home_wp_postdecimalnullableHome WP after play
e.g. 0.9999
incomplete_passbooleanPass incomplete
Values:falsetrue
interceptionbooleanInterception indicator
Values:falsetrue
interception_player_namestringnullableInterceptor name
e.g. X.McKinney
jersey_numberintegernullablePrimary player jersey
e.g. 8
kick_distanceintegernullableKick distance in yards
e.g. 65
kicker_player_namestringnullableKicker name
e.g. B.Grupe
kickoff_attemptbooleanKickoff attempt
Values:falsetrue
kickoff_downedbooleanKickoff downed
e.g. false
kickoff_fair_catchbooleanKickoff fair catch
Values:falsetrue
kickoff_in_endzonebooleanKickoff in endzone
Values:falsetrue
kickoff_inside_twentybooleanKickoff inside 20
Values:falsetrue
kickoff_out_of_boundsbooleanKickoff OOB
Values:falsetrue
kickoff_returner_player_namestringnullableKickoff returner name
e.g. R.Blackshear
lateral_interception_player_namestringnullableLateral after INT name
e.g. — (all-null in sample)
lateral_kickoff_returner_player_namestringnullableLateral kickoff returner name
e.g. — (all-null in sample)
lateral_punt_returner_player_namestringnullableLateral punt returner name
e.g. — (all-null in sample)
lateral_receiver_player_namestringnullableLateral receiver name (pass)
e.g. M.Mims
lateral_receiving_ydsintegernullableYards after lateral (pass)
e.g. 2
lateral_receptionbooleanLateral on pass play
Values:falsetrue
lateral_returnbooleanLateral on return
e.g. false
lateral_rushbooleanLateral on rush play
Values:falsetrue
lateral_rusher_player_namestringnullableLateral receiver name (rush)
e.g. J.Hill
lateral_rushing_ydsintegernullableYards after lateral (rush)
e.g. 5
lateral_sack_player_namestringnullableLateral after sack name
e.g. — (all-null in sample)
locationstringnullableHome or Neutral
Values:HomeNeutral
namestringnullablePrimary player name (passer or rusher)
e.g. L.Jackson
no_huddlebooleanNo-huddle offense
Values:falsetrue
no_score_probdecimalnullableProbability of no score
e.g. 0.0000
opp_fg_probdecimalnullableOpponent FG probability
e.g. 0.0000
opp_safety_probdecimalnullableOpponent safety probability
e.g. 0.0000
opp_td_probdecimalnullableOpponent TD probability
e.g. 0.0000
order_sequencedecimalnullableNFL play-ordering column
e.g. 1.0000
out_of_boundsbooleanRan/pushed/sacked out of bounds
Values:falsetrue
own_kickoff_recoverybooleanOwn kickoff recovery
e.g. false
own_kickoff_recovery_player_namestringnullableOwn kickoff recovery player name
e.g. — (all-null in sample)
own_kickoff_recovery_tdbooleanOwn kickoff recovery TD
e.g. false
passbooleanPass play indicator
Values:falsetrue
pass_attemptbooleanPass attempt (includes sacks)
Values:falsetrue
pass_defense_1_player_namestringnullablePass defense player 1 name
e.g. D.Ward
pass_defense_2_player_namestringnullablePass defense player 2 name
Values:E.KendricksJ.PitreP.FordD.MuasauD.Flannigan-FowlesM.EmersonR.Spillane
pass_lengthstringnullableshort or deep
Values:shortdeep
pass_locationstringnullableleft, middle, or right
Values:rightleftmiddle
pass_oedecimalnullableDropback percent over expected
e.g. 37.7849
pass_touchdownbooleanPassing touchdown
Values:falsetrue
passerstringnullableDropback player name (includes scrambles)
e.g. D.Watson
passer_jersey_numberintegernullablePasser jersey number
e.g. 8
passer_player_namestringnullablePasser name
e.g. D.Watson
passing_ydsintegernullableOfficial passing yards
e.g. 5
penaltybooleanPenalty on play
Values:falsetrue
penalty_player_namestringnullablePenalized player name
e.g. P.Surtain
penalty_teamstringnullablePenalized team
e.g. CLE
penalty_typestringnullableType of penalty
e.g. Offensive Holding
penalty_ydsintegernullablePenalty yards
e.g. 5
playbooleanRegular play (1) vs special event (0)
Values:truefalse
play_clockintegernullablePlay clock at snap
e.g. 0
play_deletedbooleanPlay was deleted
e.g. false
play_typestringnullablepass, run, punt, field_goal, kickoff, extra_point, qb_kneel, qb_spike, no_play
Values:passrunno_playkickoffpuntfield_goalextra_pointqb_kneelqb_spike
play_type_nflstringnullableNFL source play type
Values:PASSRUSHKICK_OFFPENALTYTIMEOUTPUNTSACKFIELD_GOALXP_KICKEND_QUARTERINTERCEPTIONGAME_STARTEND_GAMEPAT2UNSPECIFIED
posteamstringnullablePossession team abbreviation
e.g. CLE
posteam_scoreintegernullablePossession team score at start
e.g. 0
posteam_score_postintegernullablePossession team score at end
e.g. 0
posteam_timeouts_remainingintegernullablePossession team timeouts
e.g. 3
posteam_typestringnullablehome or away
Values:homeaway
punt_attemptbooleanPunt attempt
Values:falsetrue
punt_blockedbooleanPunt blocked
Values:falsetrue
punt_downedbooleanPunt downed
Values:falsetrue
punt_fair_catchbooleanPunt fair catch
Values:falsetrue
punt_in_endzonebooleanPunt in endzone
e.g. false
punt_inside_twentybooleanPunt inside 20
Values:falsetrue
punt_out_of_boundsbooleanPunt OOB
Values:falsetrue
punt_returner_player_namestringnullablePunt returner name
e.g. J.Jackson
punter_player_namestringnullablePunter name
e.g. R.Dixon
qb_dropbackbooleanQB dropback (pass or scramble)
Values:falsetrue
qb_epadecimalnullableQB EPA credit
e.g. 0.0000
qb_hitbooleanQB was hit
Values:falsetrue
qb_hit_1_player_namestringnullableQB hitter name
e.g. K.White
qb_hit_2_player_namestringnullableSecond QB hitter name
Values:J.MadubuikeD.OdeyingboM.DavenportK.MackJ.BentleyG.JarrettD.HunterM.PierceC.YoungD.Ekuale
qb_kneelbooleanQB kneel
Values:falsetrue
qb_scramblebooleanQB scramble
Values:falsetrue
qb_spikebooleanQB spike
Values:falsetrue
quarterintegerQuarter (1-4, 5=OT)
e.g. 2
quarter_endbooleanBinary quarter-end marker
Values:falsetrue
quarter_seconds_remainingintegerSeconds remaining in quarter
e.g. 900
receiverstringnullableTargeted receiver name
e.g. C.Kupp
receiver_jersey_numberintegernullableReceiver jersey number
e.g. 1
receiver_player_namestringnullableReceiver name
e.g. C.Kupp
receiving_ydsintegernullableOfficial receiving yards
e.g. 5
replay_or_challengebooleanReplay/challenge occurred
Values:falsetrue
replay_or_challenge_resultstringnullableReplay result
Values:reversedupheld
resultintegernullableHome score - Away score
e.g. 6
return_teamstringnullableReturning team
e.g. DEN
return_touchdownbooleanReturn touchdown
Values:falsetrue
return_ydsintegernullableReturn yards
e.g. 0
roofstringnullabledome, outdoors, closed, open
Values:outdoorscloseddome
run_gapstringnullableend, guard, or tackle
Values:endguardtackle
run_locationstringnullableleft, middle, or right
Values:leftrightmiddle
rushbooleanRush play (no scrambles)
Values:falsetrue
rush_attemptbooleanRushing play indicator
Values:falsetrue
rush_touchdownbooleanRushing touchdown
Values:falsetrue
rusher_jersey_numberintegernullableRusher jersey number
e.g. 4
rusher_player_namestringnullableRusher name
e.g. B.Robinson
rushing_ydsintegernullableOfficial rushing yards
e.g. 2
sackbooleanSack indicator
Values:falsetrue
sack_player_namestringnullableSacker name
e.g. G.Rousseau
safetybooleanSafety scored
Values:falsetrue
safety_player_namestringnullableSafety scorer name
Values:Z.AllenA.Wright
safety_probdecimalnullableSafety probability
e.g. 0.0000
score_differentialintegernullableScore gap at play start
e.g. 0
score_differential_postintegernullableScore gap at play end
e.g. 0
seriesintegernullableSeries counter within game
e.g. 1
series_resultstringnullableFirst down, Touchdown, Punt, etc.
Values:First downPuntField goalTouchdownTurnover on downsTurnoverQB kneelEnd of halfMissed field goalOpp touchdownSafety
series_successbooleanSeries resulted in first down or TD
Values:truefalse
shotgunbooleanShotgun formation
Values:truefalse
side_of_fieldstringnullableTeam abbreviation whose side of field
e.g. CAR
solo_tacklebooleanSolo tackle on play
Values:falsetrue
solo_tackle_1_player_namestringnullableSolo tackler 1 name
e.g. J.Jones
solo_tackle_1_teamstringnullableSolo tackler 1 team
e.g. ATL
solo_tackle_2_player_namestringnullableSolo tackler 2 name
Values:B.LimmerT.Spears
solo_tackle_2_teamstringnullableSolo tackler 2 team
Values:LATEN
spbooleanScoring play indicator
Values:falsetrue
specialbooleanSpecial teams indicator
Values:falsetrue
special_teams_playbooleanSpecial teams play indicator
Values:falsetrue
spread_linedecimalnullableVegas spread line
e.g. 6.5000
st_play_typestringnullableType of special teams play
e.g. — (all-null in sample)
stadiumstringnullableStadium name
e.g. GEHA Field at Arrowhead Stadium
start_timestringnullableKickoff time (eastern)
e.g. 9/8/24, 13:03:08
successbooleannullablePlay success (based on down/distance)
Values:falsetrue
surfacestringnullablePlaying surface type
Values:grassfieldturfmatrixturfastroturfsportturfa_turf
tackle_for_loss_1_player_namestringnullableTFL player 1 name
e.g. M.Crosby
tackle_for_loss_2_player_namestringnullableTFL player 2 name
e.g. — (all-null in sample)
tackle_with_assistbooleanTackle with assistance
Values:falsetrue
tackle_with_assist_1_player_namestringnullableTackle-assist player 1 name
e.g. A.Singleton
tackle_with_assist_1_teamstringnullableTackle-assist player 1 team
e.g. IND
tackle_with_assist_2_player_namestringnullableTackle-assist player 2 name
e.g. — (all-null in sample)
tackle_with_assist_2_teamstringnullableTackle-assist player 2 team
e.g. — (all-null in sample)
tackled_for_lossbooleanTackle for loss
Values:falsetrue
td_player_namestringnullableTD scorer name
e.g. A.Kamara
td_probdecimalnullableTD probability
e.g. 0.0000
td_teamstringnullableTeam scoring TD
e.g. NO
tempintegernullableTemperature
e.g. 67
third_down_convertedbooleanThird down conversion
Values:falsetrue
third_down_failedbooleanThird down failure
Values:falsetrue
timestringnullableGame clock at play start (mm:ss)
e.g. 15:00
time_of_daystringnullablePlay time in UTC
e.g. 2024-09-08T19:40:41Z
timeoutbooleanTimeout called
Values:falsetrue
timeout_teamstringnullableTeam calling timeout
e.g. BAL
totalintegernullableHome score + Away score
e.g. 41
total_away_comp_air_epadecimalnullableCumulative away completion air EPA
e.g. 0.0000
total_away_comp_air_wpadecimalnullableCumulative away completion air WPA
e.g. 0.0000
total_away_comp_yac_epadecimalnullableCumulative away completion YAC EPA
e.g. 0.0000
total_away_comp_yac_wpadecimalnullableCumulative away completion YAC WPA
e.g. 0.0000
total_away_epadecimalnullableCumulative away EPA
e.g. 0.0000
total_away_pass_epadecimalnullableCumulative away passing EPA
e.g. 0.0000
total_away_pass_wpadecimalnullableCumulative away passing WPA
e.g. 0.0000
total_away_raw_air_epadecimalnullableCumulative away raw air EPA
e.g. 0.0000
total_away_raw_air_wpadecimalnullableCumulative away raw air WPA
e.g. 0.0000
total_away_raw_yac_epadecimalnullableCumulative away raw YAC EPA
e.g. 0.0000
total_away_raw_yac_wpadecimalnullableCumulative away raw YAC WPA
e.g. 0.0000
total_away_rush_epadecimalnullableCumulative away rushing EPA
e.g. 0.0000
total_away_rush_wpadecimalnullableCumulative away rushing WPA
e.g. 0.0000
total_away_scoreintegernullableAway score at play start
e.g. 0
total_home_comp_air_epadecimalnullableCumulative home completion air EPA
e.g. 0.0000
total_home_comp_air_wpadecimalnullableCumulative home completion air WPA
e.g. 0.0000
total_home_comp_yac_epadecimalnullableCumulative home completion YAC EPA
e.g. 0.0000
total_home_comp_yac_wpadecimalnullableCumulative home completion YAC WPA
e.g. 0.0000
total_home_epadecimalnullableCumulative home EPA
e.g. 0.0000
total_home_pass_epadecimalnullableCumulative home passing EPA
e.g. 0.0000
total_home_pass_wpadecimalnullableCumulative home passing WPA
e.g. 0.0000
total_home_raw_air_epadecimalnullableCumulative home raw air EPA
e.g. 0.0000
total_home_raw_air_wpadecimalnullableCumulative home raw air WPA
e.g. 0.0000
total_home_raw_yac_epadecimalnullableCumulative home raw YAC EPA
e.g. 0.0000
total_home_raw_yac_wpadecimalnullableCumulative home raw YAC WPA
e.g. 0.0000
total_home_rush_epadecimalnullableCumulative home rushing EPA
e.g. 0.0000
total_home_rush_wpadecimalnullableCumulative home rushing WPA
e.g. 0.0000
total_home_scoreintegernullableHome score at play start
e.g. 0
total_linedecimalnullableVegas total line
e.g. 41.5000
touchbackbooleanTouchback
Values:falsetrue
touchdownbooleanTouchdown scored
Values:falsetrue
two_point_attemptbooleanTwo-point conversion attempt
Values:falsetrue
two_point_conv_resultstringnullablesuccess, failure, safety, return
Values:failuresuccess
two_point_conversion_probdecimalnullableTwo-point conversion probability
e.g. 0.0000
vegas_home_wpdecimalnullableVegas home win probability
e.g. 1.0000
vegas_home_wpadecimalnullableVegas home WPA
e.g. 0.0000
vegas_wpdecimalnullableVegas win probability
e.g. 0.9999
vegas_wpadecimalnullableVegas-adjusted WPA
e.g. 0.0000
weatherstringnullableWeather conditions description
e.g. Temp: 63° F, Humidity: 87%, Wind: SE 4 mph
windintegernullableWind speed (mph)
e.g. 10
wpdecimalnullableWin probability for possession team
e.g. 0.5463
wpadecimalnullableWin probability added
e.g. 0.0000
xpassdecimalnullableDropback probability
e.g. 0.9759
xyac_epadecimalnullableExpected EPA after catch
e.g. 0.2981
xyac_fddecimalnullableFirst down probability (xYAC)
e.g. 1.0000
xyac_mean_yardagedecimalnullableAverage expected YAC
e.g. 3.9685
xyac_median_yardagedecimalnullableMedian expected YAC
e.g. 2.0000
xyac_successdecimalnullablePositive EPA probability
e.g. 1.0000
yac_epadecimalnullableEPA from yards after catch
e.g. 0.0000
yac_wpadecimalnullableWPA from yards after catch
e.g. 0.0000
yard_lineintegernullableYard line number (0-50)
e.g. — (all-null in sample)
yardline_100integernullableYards from opponent endzone (0-100)
e.g. 35
yds_after_catchintegernullableYAC yards
e.g. 0
yds_gainedintegernullableYards gained on play
e.g. 0
ydsnetintegernullableTotal net yards on drive
e.g. 70
ydstogointegernullableYards to first down/goal
e.g. 10
yrdlnstringnullableYard line string (e.g., "KC 25")
e.g. MID 50
GET/api/v1/nfl/play_by_plays
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game. Required — querying NFL play-by-play across all games is impractical (millions of rows).
possession_team_idquerybigintoptional
Filter by team in possession.
defensive_team_idquerybigintoptional
Filter by team on defense.
drive_idquerybigintoptional
Filter by drive.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/play_by_plays?game_id=1'
Responses
200play_by_plays rows matching the declared filter set, wrapped in { play_by_plays, 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
GET/api/v1/nfl/play_by_plays/{id}
Parameters
idpathbigintrequired
Primary key (id) of the play_by_play row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/play_by_plays/{pk_value}'
Responses
200Single play_by_play row.application/jsonshow example ▸
404Row not found.
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.
Fields20
FieldTypeReferencesDescription
idkeybigintPrimary Key
game_idbigint
e.g. 61
play_idstringPlay identifier matching `play_by_plays.play_id` for the same game.
e.g. 40
possession_team_idbigintTeam in possession on this play (FK to `teams`).
e.g. 26
defenders_in_boxintegernullableNumber of defenders within ~8 yards of the line of scrimmage at the snap.
e.g. 6
defense_coverage_typestringnullableSpecific 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_typestringnullableMan- vs. zone-coverage classification (`MAN`, `ZONE`).
Values:MAN_COVERAGEZONE_COVERAGE
defense_personnelstringnullableDefensive 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_idsstringnullableGSIS 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_defenseintegernullableCount of defensive players on the field (typically 11).
e.g. 11
n_offenseintegernullableCount of offensive players on the field (typically 11).
e.g. 11
ngs_air_ydsdecimalnullableAir 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_rushersintegernullableNumber of defenders who rushed the passer on this play (Next Gen Stats).
e.g. 0
offense_formationstringnullableOffensive formation alignment (e.g., `SHOTGUN`, `SINGLEBACK`, `I_FORM`, `PISTOL`).
Values:SHOTGUNUNDER CENTERPISTOL
offense_personnelstringnullableOffensive 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_idsstringnullableGSIS 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_idsstringnullableGSIS 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…
routestringnullableRoute the targeted receiver ran (e.g., `GO`, `SLANT`, `OUT`, `POST`).
Values:QUICK OUTHITCH/CURLSCREENIN/DIGGODEEP OUTSHALLOW CROSS/DRAGSLANTCORNERSWINGPOSTTEXAS/ANGLEWHEEL
time_to_throwdecimalnullableTime from snap to pass release in seconds (Next Gen Stats).
e.g. 2.3000
was_pressurebooleannullableTrue if the quarterback faced pass-rush pressure on this play.
Values:falsetrue
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 200.
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 \
  -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
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 \
  -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.

Stats· 16 tables

operator_team_lookupsnfl.operator_team_lookups
How each sportsbook and fantasy operator names every NFL team — the mapping from each operator's team code or abbreviation to the unified franchise record.
Fields6
FieldTypeReferencesDescription
idkeybigintPrimary Key
operator_idbigintReference to main.operator entity
e.g. 4
operator_team_idstringExternal team ID from operator
e.g. 28
team_idbigintInternal nfl.teams.id reference
e.g. 32
abbreviationstringnullableTeam abbreviation for reconciliation
e.g. — (all-null in sample)
team_namestringnullableTeam name for reconciliation
e.g. Washington Commanders
GET/api/v1/nfl/operator_team_lookups
Requires one of: operator_id — requests satisfying none of these return 400.
Parameters
operator_idquerybigintoptional
Filter by sportsbook / operator.
team_idquerybigintoptional
Filter by team.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/operator_team_lookups?operator_id=1'
Responses
200operator_team_lookups rows matching the declared filter set, wrapped in { operator_team_lookups, 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
GET/api/v1/nfl/operator_team_lookups/{id}
Parameters
idpathbigintrequired
Primary key (id) of the operator_team_lookup row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/operator_team_lookups/{pk_value}'
Responses
200Single operator_team_lookup row.application/jsonshow example ▸
404Row not found.
season_team_statsnfl.season_team_stats
Season totals for each NFL team — wins and losses, points scored and allowed, yards on offense and defense, turnovers, red-zone and down-conversion efficiency, kicking accuracy. Regular-season games only.
Fields32
FieldTypeReferencesDescription
idkeybigintPrimary Key
season_idbigint
e.g. 2025
team_idbigint
e.g. 1
completionsinteger
e.g. 0
defensive_interceptionsinteger
e.g. 10
defensive_sacksdecimalSacks recorded by this team's defense (half-sacks supported as decimals).
e.g. 42.0000
defensive_tdsintegerTouchdowns scored by the defense (interception return + fumble recovery TD); excludes special-teams returns.
e.g. 1
extra_pts_attemptedinteger
e.g. 40
extra_pts_madeinteger
e.g. 33
field_goals_attemptedinteger
e.g. 31
field_goals_madeinteger
e.g. 34
first_downsinteger
e.g. 410
fourth_down_attemptsintegerTotal fourth-down plays attempted (excludes punts and field-goal attempts).
e.g. 35
fourth_down_conversionsintegerFourth-down attempts converted to a first down or touchdown.
e.g. 15
fumbles_recoveredinteger
e.g. 7
games_playedinteger
e.g. 20
lossesinteger
e.g. 9
pass_attemptsinteger
e.g. 0
passing_tdsinteger
e.g. 0
passing_ydsinteger
e.g. 4737
pts_allowedinteger
e.g. 439
pts_scoredinteger
e.g. 481
red_zone_attemptsintegerPossessions reaching the red zone (inside the opponent's 20-yard line).
e.g. 0
red_zone_conversionsintegerRed-zone trips that ended in a touchdown.
e.g. 0
rushing_tdsinteger
e.g. 0
rushing_ydsinteger
e.g. 2136
third_down_attemptsintegerTotal third-down plays attempted.
e.g. 264
third_down_conversionsintegerThird-down attempts converted to a first down or touchdown.
e.g. 99
tiesinteger
e.g. 3
total_ydsinteger
e.g. 5759
turnoversintegerPossessions lost via interception or fumble.
e.g. 22
winsinteger
e.g. 8
GET/api/v1/nfl/season_team_stats
Requires one of: season_id — requests satisfying none of these return 400.
Parameters
team_idquerybigintoptional
Filter by team.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/season_team_stats?season_id=2025'
Responses
200season_team_stats rows matching the declared filter set, wrapped in { season_team_stats, 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
GET/api/v1/nfl/season_team_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the season_team_stat row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/season_team_stats/{pk_value}'
Responses
200Single season_team_stat row.application/jsonshow example ▸
404Row not found.
game_player_firstdown_statsnfl.game_player_firstdown_stats
Per-game player stats restricted to first-down plays — the same first-down production breakouts as the season aggregate, for each individual game.
Fields54
FieldTypeReferencesDescription
idkeybigintPrimary Key
game_idbigint
e.g. 61
opponent_team_idbigint
e.g. 10
player_idbigint
e.g. 657
team_idbigint
e.g. 9
assisted_tacklesintegerAssisted tackles on first down
e.g. 0
defensive_tdsintegerTotal defensive touchdowns on first down
e.g. 0
forced_fumblesintegerForced fumbles on first down
e.g. 0
fumble_recovery_tdsintegerFumble recovery touchdowns on first down
e.g. 0
fumble_recovery_ydsintegerFumble recovery yards on first down
e.g. 0
fumblesintegerFumbles on first down
e.g. 0
fumbles_lostintegerFumbles lost on first down
e.g. 0
fumbles_recoveredintegerFumbles recovered on first down
e.g. 0
interception_tdsintegerInterception return touchdowns on first down
e.g. 0
interception_ydsintegerInterception return yards on first down
e.g. 0
interceptionsintegerInterceptions on first down
e.g. 0
is_homebooleanTrue if player's team is the home team
Values:truefalse
offensive_snapsintegerOffensive snaps played on first down
e.g. 0
offensive_tdsintegerTotal offensive touchdowns on first down
e.g. 0
passes_defendedintegerPasses defended on first down
e.g. 0
passing_attemptsintegerPassing attempts on first down
e.g. 0
passing_completion_percentagedecimalCompletion percentage on first down
e.g. 0.0000
passing_completionsintegerCompleted passes on first down
e.g. 0
passing_interceptionsintegerInterceptions thrown on first down
e.g. 0
passing_longintegerLongest pass completion on first down
e.g. 0
passing_ratingdecimalPasser rating on first down
e.g. 0.0000
passing_sack_ydsintegerYards lost to sacks on first down
e.g. 0
passing_sacksintegerTimes sacked on first down
e.g. 0
passing_tdsintegerPassing touchdowns on first down
e.g. 0
passing_ydsintegerPassing yards on first down
e.g. 0
passing_yds_per_attemptdecimalPassing yards per attempt on first down
e.g. 0.0000
passing_yds_per_completiondecimalPassing yards per completion on first down
e.g. 0.0000
positionstringPlayer position at time of game
Values:WRRBDEFTEQBOLLB
quarterback_hitsintegerQB hits on first down
e.g. 0
receiving_longintegerLongest reception on first down
e.g. 0
receiving_tdsintegerReceiving touchdowns on first down
e.g. 0
receiving_ydsintegerReceiving yards on first down
e.g. 0
receiving_yds_per_receptiondecimalYards per reception on first down
e.g. 0.0000
receiving_yds_per_targetdecimalReceiving yards per target on first down
e.g. 0.0000
reception_percentagedecimalReception percentage (receptions/targets) on first down
e.g. 0.0000
receptionsintegerReceptions on first down
e.g. 0
rushing_attemptsintegerRushing attempts on first down
e.g. 0
rushing_longintegerLongest rush on first down
e.g. 0
rushing_tdsintegerRushing touchdowns on first down
e.g. 0
rushing_ydsintegerRushing yards on first down
e.g. 0
rushing_yds_per_attemptdecimalRushing yards per attempt on first down
e.g. 0.0000
sacksdecimalSacks on first down (0.5 for half sacks)
e.g. 0.0000
solo_tacklesintegerSolo tackles on first down
e.g. 0
tackles_for_lossintegerTackles for loss on first down
e.g. 0
targetsintegerTimes targeted on first down
e.g. 0
total_tdsintegerTotal touchdowns scored on first down
e.g. 0
two_pt_pass_conversionsinteger
e.g. 0
two_pt_reception_conversionsinteger
e.g. 0
two_pt_rush_conversionsinteger
e.g. 0
GET/api/v1/nfl/game_player_firstdown_stats
Requires one of: game_id or player_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
player_idquerybigintoptional
Filter to a single player.
team_idquerybigintoptional
Filter by team.
opponent_team_idquerybigintoptional
Filter by opponent team.
positionquerystringoptional
Filter by player position. Values: DB, DEF, DL, LB, OL, QB, RB, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_player_firstdown_stats?game_id=1'
Responses
200game_player_firstdown_stats rows matching the declared filter set, wrapped in { game_player_firstdown_stats, 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
GET/api/v1/nfl/game_player_firstdown_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_player_firstdown_stat row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_player_firstdown_stats/{pk_value}'
Responses
200Single game_player_firstdown_stat row.application/jsonshow example ▸
404Row not found.
game_player_ngs_passingsnfl.game_player_ngs_passings
NFL Next Gen Stats for quarterbacks per game — RFID-tracked passing metrics like time to throw, average depth of target, completed air yards, on-target throw rate, and aggressiveness against tight coverage.
Fields26
FieldTypeReferencesDescription
idkeybigintPrimary Key
game_idbigint
e.g. 121
player_gsis_idstringGSIS ID for cross-reference
e.g. 00-0039732
player_idbigint
e.g. 2999
team_idbigint
e.g. 17
aggressivenessdecimalnullablePercentage of throws into tight windows (defender within 1 yard)
e.g. 20.0000
attemptsintegernullable
e.g. 30
avg_air_distancedecimalnullableAverage ball travel distance on all attempts
e.g. 22.4754
avg_air_yds_differentialdecimalnullableDifference between intended and completed air yards
e.g. -0.8631
avg_air_yds_to_sticksdecimalnullableAverage air yards relative to first down marker
e.g. -5.2445
avg_completed_air_ydsdecimalnullableAverage air yards on completed passes
e.g. 3.7511
avg_intended_air_ydsdecimalnullableAverage air yards on all pass attempts
e.g. 6.0133
avg_time_to_throwdecimalnullableAverage time from snap to throw (seconds)
e.g. 2.6513
completion_percentagedecimalnullable
e.g. 66.6667
completion_percentage_above_expectationdecimalnullableCPOE - Actual completion % minus expected (positive = better than expected)
e.g. -2.0683
completionsintegernullable
e.g. 19
expected_completion_percentagedecimalnullableModel-predicted completion percentage based on throw difficulty
e.g. 65.3373
interceptionsintegernullable
e.g. 0
max_air_distancedecimalnullableMaximum ball travel distance
e.g. 45.0275
max_completed_air_distancedecimalnullableLongest completed pass distance (ball travel)
e.g. 35.6106
pass_tdsintegernullable
e.g. 1
pass_ydsintegernullable
e.g. 212
passer_ratingdecimalnullable
e.g. 81.2500
seasoninteger
e.g. 2024
season_typestringREG, POST, etc.
e.g. REG
weekinteger
e.g. 3
GET/api/v1/nfl/game_player_ngs_passings
Requires one of: game_id or player_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
player_idquerybigintoptional
Filter to a single player.
team_idquerybigintoptional
Filter by team.
seasonqueryintegeroptional
Filter by season start year.
weekqueryintegeroptional
Filter by week of the season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_player_ngs_passings?game_id=1'
Responses
200game_player_ngs_passings rows matching the declared filter set, wrapped in { game_player_ngs_passings, 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
GET/api/v1/nfl/game_player_ngs_passings/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_player_ngs_passing row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_player_ngs_passings/{pk_value}'
Responses
200Single game_player_ngs_passing row.application/jsonshow example ▸
404Row not found.
game_player_ngs_receivingsnfl.game_player_ngs_receivings
NFL Next Gen Stats for receivers per game — RFID-tracked receiving metrics like separation at the throw, cushion at the snap, target separation, and yards over expected.
Fields20
FieldTypeReferencesDescription
idkeybigintPrimary Key
game_idbigint
e.g. 157
player_gsis_idstringGSIS ID for cross-reference
e.g. 00-0036900
player_idbigint
e.g. 1446
team_idbigint
e.g. 9
avg_cushiondecimalnullableAverage distance from nearest defender at snap (yards)
e.g. 5.5500
avg_expected_yacdecimalnullableModel-predicted YAC based on catch location/defenders
e.g. 3.9326
avg_intended_air_ydsdecimalnullableAverage depth of targets
e.g. 7.1300
avg_separationdecimalnullableAverage distance from nearest defender at catch point (yards)
e.g. 3.3793
avg_yacdecimalnullableAverage yards after catch
e.g. 0.8400
avg_yac_above_expectationdecimalnullableActual YAC minus expected (positive = creates extra yards)
e.g. 1.0087
catch_percentagedecimalnullable
e.g. 66.6667
percent_share_of_intended_air_ydsdecimalnullablePercentage of team total intended air yards (deep target share)
e.g. 23.4320
rec_tdsintegernullable
e.g. 0
receptionsintegernullable
e.g. 4
seasoninteger
e.g. 2024
season_typestringREG, POST, etc.
e.g. REG
targetsintegernullable
e.g. 5
weekinteger
e.g. 3
yardsintegernullable
e.g. 30
GET/api/v1/nfl/game_player_ngs_receivings
Requires one of: game_id or player_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
player_idquerybigintoptional
Filter to a single player.
team_idquerybigintoptional
Filter by team.
seasonqueryintegeroptional
Filter by season start year.
weekqueryintegeroptional
Filter by week of the season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_player_ngs_receivings?game_id=1'
Responses
200game_player_ngs_receivings rows matching the declared filter set, wrapped in { game_player_ngs_receivings, 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
GET/api/v1/nfl/game_player_ngs_receivings/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_player_ngs_receiving row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_player_ngs_receivings/{pk_value}'
Responses
200Single game_player_ngs_receiving row.application/jsonshow example ▸
404Row not found.
game_player_ngs_rushingsnfl.game_player_ngs_rushings
NFL Next Gen Stats for ball carriers per game — RFID-tracked rushing metrics like efficiency, expected rushing yards, rushing yards over expected, and time behind the line of scrimmage.
Fields19
FieldTypeReferencesDescription
idkeybigintPrimary Key
game_idbigint
e.g. 4904
player_gsis_idstringGSIS ID for cross-reference
e.g. 00-0037840
player_idbigint
e.g. 1927
team_idbigint
e.g. 11
avg_rush_ydsdecimalnullable
e.g. 4.0000
avg_time_to_losdecimalnullableAverage time to reach line of scrimmage (seconds)
e.g. 2.8227
efficiencydecimalnullableDistance traveled per rushing yard gained (lower = more efficient)
e.g. 3.4002
expected_rush_ydsdecimalnullableModel-predicted rushing yards based on blocking/defense
e.g. 47.4790
percent_attempts_gte_eight_defendersdecimalnullablePercentage of rushes facing 8+ defenders in box
e.g. 0.0000
rush_attemptsintegernullable
e.g. 12
rush_pct_over_expecteddecimalnullableRYOE as percentage over expected
e.g. 0.5000
rush_tdsintegernullable
e.g. 0
rush_ydsintegernullable
e.g. 44
rush_yds_over_expecteddecimalnullableRYOE - Actual yards minus expected (positive = better)
e.g. 35.5210
rush_yds_over_expected_per_attdecimalnullableRYOE per attempt
e.g. 0.0416
seasoninteger
e.g. 2025
season_typestringREG, POST, etc.
e.g. REG
weekinteger
e.g. 4
GET/api/v1/nfl/game_player_ngs_rushings
Requires one of: game_id or player_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
player_idquerybigintoptional
Filter to a single player.
team_idquerybigintoptional
Filter by team.
seasonqueryintegeroptional
Filter by season start year.
weekqueryintegeroptional
Filter by week of the season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_player_ngs_rushings?game_id=1'
Responses
200game_player_ngs_rushings rows matching the declared filter set, wrapped in { game_player_ngs_rushings, 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
GET/api/v1/nfl/game_player_ngs_rushings/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_player_ngs_rushing row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_player_ngs_rushings/{pk_value}'
Responses
200Single game_player_ngs_rushing row.application/jsonshow example ▸
404Row not found.
game_player_pfr_advstatsnfl.game_player_pfr_advstats
Per-game advanced player stats in the Pro Football Reference tradition — drop rates, time under pressure, yards before and after contact, broken tackles, passer rating allowed in coverage.
Fields46
FieldTypeReferencesDescription
idkeybigintPrimary Key
game_idbigint
e.g. 57
opponent_team_idbigintOpposing team in this matchup (FK to `teams`).
e.g. 10
player_idbigint
e.g. 657
team_idbigint
e.g. 10
carriesintegernullableRushing attempts.
e.g. 0
def_adotdecimalnullableAverage depth of target (yards) when this defender was in coverage.
e.g. 0.0000
def_air_yds_completedintegernullableAir yards completed on receptions allowed.
e.g. 0
def_completion_pctdecimalnullableCompletion percentage allowed (0.0-100.0).
e.g. 0.0000
def_completions_allowedintegernullableReceptions allowed in coverage.
e.g. 0
def_intsintegernullableInterceptions made by this defender in coverage.
e.g. 0
def_missed_tackle_pctdecimalnullableMissed-tackle rate on tackle opportunities (0.0-100.0).
e.g. 0.0000
def_missed_tacklesintegernullableTackle attempts missed by this defender.
e.g. 0
def_passer_rating_alloweddecimalnullablePasser rating allowed when targeted (0-158.3).
e.g. 0.0000
def_pressuresintegernullableTotal pressures generated (hurries + hits + sacks).
e.g. 0
def_receiving_td_allowedintegernullableReceiving touchdowns allowed in coverage.
e.g. 0
def_sacksdecimalnullableSacks recorded (half-sacks supported as decimals).
e.g. 0.0000
def_tackles_combinedintegernullableCombined tackles (solo + assisted).
e.g. 0
def_targetsintegernullablePass targets thrown at this defender's coverage assignment.
e.g. 0
def_times_blitzedintegernullablePass-rushing snaps as a blitzer.
e.g. 0
def_times_hitqbintegernullableQB hits generated as a pass rusher.
e.g. 0
def_times_hurriedintegernullableHurries generated as a pass rusher.
e.g. 0
def_yds_after_catchintegernullableYards-after-catch allowed in coverage.
e.g. 0
def_yds_allowedintegernullableReceiving yards allowed in coverage.
e.g. 0
def_yds_allowed_per_cmpdecimalnullableYards allowed per reception.
e.g. 0.0000
def_yds_allowed_per_tgtdecimalnullableYards allowed per target.
e.g. 0.0000
passing_bad_throw_pctdecimalnullableBad-throw rate on pass attempts (0.0-100.0).
e.g. 0.0000
passing_bad_throwsintegernullablePass attempts charged as bad throws by PFR scoring.
e.g. 0
passing_drop_pctdecimalnullableDrop rate on catchable passes (0.0-100.0).
e.g. 0.0000
passing_dropsintegernullablePass attempts dropped by the receiver (charged to the QB's catchable-target count).
e.g. 0
receiving_broken_tacklesintegernullableTackles the receiver broke on receiving plays.
e.g. 0
receiving_dropintegernullableDrops charged to this receiver.
e.g. 0
receiving_drop_pctdecimalnullableReceiver drop rate on catchable targets (0.0-100.0).
e.g. 0.0000
receiving_intintegernullableInterceptions thrown when this player was the target.
e.g. 0
receiving_ratdecimalnullablePasser rating generated when targeted (0-158.3).
e.g. 0.0000
rushing_broken_tacklesintegernullableTackles the runner broke on rushing plays.
e.g. 0
rushing_yds_after_contactintegernullableTotal rushing yards gained after first contact.
e.g. 0
rushing_yds_after_contact_avgdecimalnullableYards after contact averaged per rush.
e.g. 0.0000
rushing_yds_before_contactintegernullableTotal rushing yards gained before first contact.
e.g. 0
rushing_yds_before_contact_avgdecimalnullableYards before contact averaged per rush.
e.g. 0.0000
times_blitzedintegernullableDropbacks the QB faced a blitz.
e.g. 0
times_hitintegernullableQB hits (defender contacted the QB on the throw).
e.g. 0
times_hurriedintegernullableDropbacks the QB was hurried but not pressured.
e.g. 0
times_pressuredintegernullableTotal pressures faced (sum of hurries/hits/sacks-allowed indicators).
e.g. 0
times_pressured_pctdecimalnullablePressure rate per dropback (0.0-100.0).
e.g. 0.0000
times_sackedintegernullableSacks taken by this QB.
e.g. 0
GET/api/v1/nfl/game_player_pfr_advstats
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
player_idquerybigintoptional
Filter to a single player.
team_idquerybigintoptional
Filter by team.
opponent_team_idquerybigintoptional
Filter by opponent team.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_player_pfr_advstats?game_id=1'
Responses
200game_player_pfr_advstats rows matching the declared filter set, wrapped in { game_player_pfr_advstats, 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
GET/api/v1/nfl/game_player_pfr_advstats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_player_pfr_advstat row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_player_pfr_advstats/{pk_value}'
Responses
200Single game_player_pfr_advstat row.application/jsonshow example ▸
404Row not found.
game_player_redzone_statsnfl.game_player_redzone_stats
Per-game player stats restricted to red-zone plays — the same red-zone breakouts as the season aggregate, for each individual game.
Fields54
FieldTypeReferencesDescription
idkeybigintPrimary Key
game_idbigint
e.g. 95
opponent_team_idbigint
e.g. 16
player_idbigint
e.g. 657
team_idbigint
e.g. 16
assisted_tacklesintegerAssisted tackles in red zone
e.g. 0
defensive_tdsintegerTotal defensive touchdowns in red zone
e.g. 0
forced_fumblesintegerForced fumbles in red zone
e.g. 0
fumble_recovery_tdsintegerFumble recovery touchdowns in red zone
e.g. 0
fumble_recovery_ydsintegerFumble recovery yards in red zone
e.g. 0
fumblesintegerFumbles in the red zone
e.g. 0
fumbles_lostintegerFumbles lost in the red zone
e.g. 0
fumbles_recoveredintegerFumbles recovered in red zone
e.g. 0
interception_tdsintegerInterception return touchdowns in red zone
e.g. 0
interception_ydsintegerInterception return yards in red zone
e.g. 0
interceptionsintegerInterceptions in red zone
e.g. 0
is_homebooleanTrue if player's team is the home team
Values:falsetrue
offensive_snapsintegerOffensive snaps played in red zone situations
e.g. 0
offensive_tdsintegerTotal offensive touchdowns in the red zone
e.g. 0
passes_defendedintegerPasses defended in red zone
e.g. 0
passing_attemptsintegerPassing attempts in the red zone
e.g. 0
passing_completion_percentagedecimalCompletion percentage in the red zone
e.g. 0.0000
passing_completionsintegerCompleted passes in the red zone
e.g. 0
passing_interceptionsintegerInterceptions thrown in the red zone
e.g. 0
passing_longintegerLongest pass completion in the red zone
e.g. 0
passing_ratingdecimalPasser rating in the red zone
e.g. 0.0000
passing_sack_ydsintegerYards lost to sacks in the red zone
e.g. 0
passing_sacksintegerTimes sacked in the red zone
e.g. 0
passing_tdsintegerPassing touchdowns in the red zone
e.g. 0
passing_ydsintegerPassing yards in the red zone
e.g. 0
passing_yds_per_attemptdecimalPassing yards per attempt in the red zone
e.g. 0.0000
passing_yds_per_completiondecimalPassing yards per completion in the red zone
e.g. 0.0000
positionstringPlayer position at time of game
Values:DEFWRRBQBTEOLPLBDL
quarterback_hitsintegerQB hits in red zone
e.g. 0
receiving_longintegerLongest reception in the red zone
e.g. 0
receiving_tdsintegerReceiving touchdowns in the red zone
e.g. 0
receiving_ydsintegerReceiving yards in the red zone
e.g. 0
receiving_yds_per_receptiondecimalYards per reception in the red zone
e.g. 0.0000
receiving_yds_per_targetdecimalReceiving yards per target in the red zone
e.g. 0.0000
reception_percentagedecimalReception percentage (receptions/targets) in the red zone
e.g. 0.0000
receptionsintegerReceptions in the red zone
e.g. 0
rushing_attemptsintegerRushing attempts in the red zone
e.g. 0
rushing_longintegerLongest rush in the red zone
e.g. 0
rushing_tdsintegerRushing touchdowns in the red zone
e.g. 0
rushing_ydsintegerRushing yards in the red zone
e.g. 0
rushing_yds_per_attemptdecimalRushing yards per attempt in the red zone
e.g. 0.0000
sacksdecimalSacks in red zone (0.5 for half sacks)
e.g. 0.0000
solo_tacklesintegerSolo tackles in red zone
e.g. 0
tackles_for_lossintegerTackles for loss in red zone
e.g. 0
targetsintegerTimes targeted in the red zone
e.g. 0
total_tdsintegerTotal touchdowns scored in the red zone
e.g. 0
two_pt_pass_conversionsintegerSuccessful two-point conversion passes in the red zone
e.g. 0
two_pt_reception_conversionsintegerSuccessful two-point conversion receptions in the red zone
e.g. 0
two_pt_rush_conversionsintegerSuccessful two-point conversion runs in the red zone
e.g. 0
GET/api/v1/nfl/game_player_redzone_stats
Requires one of: game_id or player_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
player_idquerybigintoptional
Filter to a single player.
team_idquerybigintoptional
Filter by team.
opponent_team_idquerybigintoptional
Filter by opponent team.
positionquerystringoptional
Filter by player position. Values: DB, DEF, DL, K, LB, OL, P, QB, RB, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_player_redzone_stats?game_id=1'
Responses
200game_player_redzone_stats rows matching the declared filter set, wrapped in { game_player_redzone_stats, 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
GET/api/v1/nfl/game_player_redzone_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_player_redzone_stat row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_player_redzone_stats/{pk_value}'
Responses
200Single game_player_redzone_stat row.application/jsonshow example ▸
404Row not found.
game_player_statsnfl.game_player_stats
Each NFL player's stat line for each game — every passing, rushing, receiving, defensive, special-teams, and scoring statistic recorded that day.
Fields142
FieldTypeReferencesDescription
idkeybigintPrimary Key
game_idbigint
e.g. 90
opponent_team_idbigint
e.g. 10
player_idbigint
e.g. 298
team_idbigint
e.g. 10
air_yds_sharedecimalPercentage of team air yards
e.g. 0.0000
assisted_tacklesintegernullableAssisted tackles
e.g. 0
blocked_kick_return_tdsintegernullableBlocked kick return touchdowns
e.g. 0
blocked_kick_return_ydsintegernullableBlocked kick return yards
e.g. 0
blocked_kicksintegernullableBlocked kicks (FG, XP, punts)
e.g. 0
completionsinteger
e.g. 0
dakotadecimalnullableDAKOTA: adjusted completion % + EPA metric
e.g. 0.1798
data_sourcestringnullableData source (nflverse, nfl_api, sportsdata)
Values:nflversepbp_only
defensive_interceptionsintegernullableDefensive interceptions
e.g. 0
defensive_sack_ydsintegernullableYards lost on defensive sacks
e.g. 0
defensive_sacksdecimalnullableDefensive sacks (can be half sacks)
e.g. 0.0000
defensive_snapsintegernullableDefensive snaps played
e.g. 0
defensive_tdsintegernullableTotal defensive touchdowns (INT + fumble return TDs)
e.g. 0
defensive_team_snapsintegernullableTotal team defensive snaps (for calculating snap %)
e.g. 1
depth_orderintegernullableDepth order within position (1=starter, 2=backup, etc.) - joined from depth charts
e.g. 1
depth_positionstringnullableDepth chart position (QB1, RB2, etc.) - joined from depth charts
e.g. WR
extra_pts_attemptedintegernullableExtra points attempted
e.g. 0
extra_pts_had_blockedintegernullableExtra points blocked by opponent
e.g. 0
extra_pts_madeintegernullableExtra points made
e.g. 0
fantasy_ptsdecimalStandard fantasy points (nflverse calculation)
e.g. 0.0000
fantasy_pts_pprdecimalPPR fantasy points (nflverse calculation)
e.g. 0.0000
field_goal_percentagedecimalnullableField goal percentage
e.g. — (all-null in sample)
field_goal_return_tdsintegernullableField goal return touchdowns
e.g. — (all-null in sample)
field_goal_return_ydsintegernullableField goal return yards (missed FG returns)
e.g. — (all-null in sample)
field_goals_attemptedintegernullableField goals attempted
e.g. 0
field_goals_had_blockedintegernullableField goals blocked by opponent
e.g. 0
field_goals_longestintegernullableLongest field goal made (yards)
e.g. — (all-null in sample)
field_goals_madeintegernullableField goals made
e.g. 0
field_goals_made_0_19integernullableField goals made 0-19 yards
e.g. 0
field_goals_made_20_29integernullableField goals made 20-29 yards
e.g. 0
field_goals_made_30_39integernullableField goals made 30-39 yards
e.g. 0
field_goals_made_40_49integernullableField goals made 40-49 yards
e.g. 0
field_goals_made_50_plusintegernullableField goals made 50+ yards
e.g. 0
forced_fumblesintegernullableForced fumbles
e.g. 0
fumble_return_tdsintegernullableFumble return touchdowns
e.g. 0
fumble_return_ydsintegernullableFumble return yards
e.g. 0
fumbles_out_of_boundsintegernullableFumbles out of bounds
e.g. 1
fumbles_own_recoveriesintegernullableOwn fumbles recovered
e.g. 1
fumbles_recoveredintegernullableFumbles recovered
e.g. 0
humidityintegernullableHumidity percentage
e.g. — (all-null in sample)
interception_return_tdsintegernullableInterception return touchdowns
e.g. 0
interception_return_ydsintegernullableInterception return yards
e.g. 0
interceptions_throwninteger
e.g. 0
is_homebooleanTrue if player's team is the home team
Values:falsetrue
kick_return_avgfloatnullableKick return average (yards per return)
e.g. 280
kick_return_fair_catchesintegernullableFair catches on kick returns
e.g. 0
kick_return_fumblesintegernullableFumbles on kick returns
e.g. 0
kick_return_fumbles_lostintegernullableFumbles lost on kick returns
e.g. 0
kick_return_longintegernullableLongest kick return (yards)
e.g. 29
kick_return_tdsintegernullableKick return touchdowns
e.g. 0
kick_return_ydsintegernullableTotal kick return yards
e.g. 0
kick_returnsintegernullableNumber of kick returns
e.g. 0
misc_assisted_tacklesintegernullableMiscellaneous assisted tackles
e.g. — (all-null in sample)
misc_fumbles_forcedintegernullableMiscellaneous fumbles forced
e.g. — (all-null in sample)
misc_fumbles_recoveredintegernullableMiscellaneous fumbles recovered
e.g. — (all-null in sample)
misc_solo_tacklesintegernullableMiscellaneous solo tackles
e.g. — (all-null in sample)
offensive_snapsintegernullableOffensive snaps played
e.g. 14
offensive_team_snapsintegernullableTotal team offensive snaps (for calculating snap %)
e.g. 64
pacrdecimalnullablePasser air conversion ratio
e.g. 0.0000
pass_attemptsinteger
e.g. 0
passes_defendedintegernullablePasses defended
e.g. 0
passing_2pt_conversionsinteger
e.g. 0
passing_air_ydsinteger
e.g. 0
passing_completion_percentagedecimalnullableCompletion percentage
e.g. 10.0000
passing_epadecimalExpected points added from passing
e.g. 0.0000
passing_first_downsinteger
e.g. 0
passing_longintegernullableLongest pass completion (yards)
e.g. 25
passing_ratingdecimalnullablePasser rating
e.g. 39.5833
passing_tdsinteger
e.g. 0
passing_ydsinteger
e.g. 0
passing_yds_after_catchinteger
e.g. 0
playing_surfacestringnullablePlaying surface type (grass, turf, etc.)
e.g. — (all-null in sample)
positionstringPlayer position at time of game
Values:WRRBTEQBDBPOLDEFLBDL
position_groupstringPosition group (QB, RB, WR, TE, etc.)
Values:WRRBTEQBDBSPECOLDEFLBDL
punt_averagedecimalnullablePunt average (yards)
e.g. 510.0000
punt_inside_20integernullablePunts inside 20 yard line
e.g. 0
punt_longintegernullableLongest punt (yards)
e.g. 60
punt_net_averagefloatnullableNet punt average (gross - return yards)
e.g. — (all-null in sample)
punt_net_ydsintegernullableNet punt yards (gross - return yards)
e.g. — (all-null in sample)
punt_return_avgfloatnullablePunt return average (yards per return)
e.g. 100
punt_return_fair_catchesintegernullableFair catches on punt returns
e.g. 0
punt_return_fumblesintegernullableFumbles on punt returns (includes muffs)
e.g. 0
punt_return_fumbles_lostintegernullableFumbles lost on punt returns
e.g. 0
punt_return_longintegernullableLongest punt return (yards)
e.g. 10
punt_return_tdsintegernullablePunt return touchdowns
e.g. 0
punt_return_ydsintegernullableTotal punt return yards
e.g. 0
punt_returnsintegernullableNumber of punt returns
e.g. 0
punt_touchbacksintegernullablePunt touchbacks
e.g. 0
punt_ydsintegernullableTotal punt yards
e.g. 0
puntsintegernullableNumber of punts
e.g. 0
punts_had_blockedintegernullablePunts blocked by opponent
e.g. 0
quarterback_hitsintegernullableQuarterback hits
e.g. 0
racrdecimalnullableReceiver air conversion ratio
e.g. 0.0000
receiving_2pt_conversionsinteger
e.g. 0
receiving_air_ydsinteger
e.g. 0
receiving_epadecimalExpected points added from receiving
e.g. 0.0000
receiving_first_downsinteger
e.g. 0
receiving_fumblesinteger
e.g. 0
receiving_fumbles_lostinteger
e.g. 0
receiving_longintegernullableLongest reception (yards)
e.g. 9
receiving_tdsinteger
e.g. 0
receiving_ydsinteger
e.g. 0
receiving_yds_after_catchinteger
e.g. 0
receiving_yds_per_receptiondecimalnullableYards per reception
e.g. 50.0000
reception_percentagedecimalnullableReception percentage (receptions/targets)
e.g. 10.0000
receptionsinteger
e.g. 0
rushing_2pt_conversionsinteger
e.g. 0
rushing_attemptsinteger
e.g. 0
rushing_epadecimalExpected points added from rushing
e.g. 0.0000
rushing_first_downsinteger
e.g. 0
rushing_fumblesinteger
e.g. 0
rushing_fumbles_lostinteger
e.g. 0
rushing_longintegernullableLongest rush (yards)
e.g. 6
rushing_tdsinteger
e.g. 0
rushing_ydsinteger
e.g. 0
rushing_yds_per_attemptdecimalnullableRushing yards per attempt
e.g. 30.0000
sack_fumblesinteger
e.g. 0
sack_fumbles_lostinteger
e.g. 0
sack_ydsinteger
e.g. 0
sacks_allowedinteger
e.g. 0
safetiesintegernullableSafeties
e.g. 0
solo_tacklesintegernullableSolo tackles
e.g. 0
special_teams_assisted_tacklesintegernullableAssisted tackles on special teams
e.g. 0
special_teams_fumbles_forcedintegernullableFumbles forced on special teams
e.g. 0
special_teams_fumbles_recoveredintegernullableFumbles recovered on special teams
e.g. 0
special_teams_snapsintegernullableSpecial teams snaps played
e.g. 0
special_teams_solo_tacklesintegernullableSolo tackles on special teams
e.g. 0
special_teams_tdsinteger
e.g. 0
special_teams_team_snapsintegernullableTotal team special teams snaps (for calculating snap %)
e.g. 13
stadiumstringnullableStadium name
e.g. — (all-null in sample)
tackles_for_lossintegernullableTackles for loss
e.g. 0
target_sharedecimalPercentage of team targets
e.g. 0.0000
targetsinteger
e.g. 0
temperatureintegernullableGame temperature (Fahrenheit)
e.g. — (all-null in sample)
two_pt_returnsintegernullableTwo-point conversion returns (defensive)
e.g. — (all-null in sample)
wind_speedintegernullableWind speed (mph)
e.g. — (all-null in sample)
woprdecimalnullableWeighted opportunity rating
e.g. 0.0787
GET/api/v1/nfl/game_player_stats
Requires one of: game_id or player_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
player_idquerybigintoptional
Filter to a single player.
team_idquerybigintoptional
Filter by team.
opponent_team_idquerybigintoptional
Filter by opponent team.
positionquerystringoptional
Filter by player position. Values: DB, DEF, DL, K, LB, LS, OL, P, QB, RB, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_player_stats?game_id=1'
Responses
200game_player_stats rows matching the declared filter set, wrapped in { game_player_stats, 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
GET/api/v1/nfl/game_player_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_player_stat row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_player_stats/{pk_value}'
Responses
200Single game_player_stat row.application/jsonshow example ▸
404Row not found.
game_player_thirddown_statsnfl.game_player_thirddown_stats
Per-game player stats restricted to third-down plays — the same third-down breakouts as the season aggregate, for each individual game.
Fields54
FieldTypeReferencesDescription
idkeybigintPrimary Key
game_idbigint
e.g. 60
opponent_team_idbigint
e.g. 8
player_idbigint
e.g. 657
team_idbigint
e.g. 10
assisted_tacklesintegerAssisted tackles on third down
e.g. 0
defensive_tdsintegerTotal defensive touchdowns on third down
e.g. 0
forced_fumblesintegerForced fumbles on third down
e.g. 0
fumble_recovery_tdsintegerFumble recovery touchdowns on third down
e.g. 0
fumble_recovery_ydsintegerFumble recovery yards on third down
e.g. 0
fumblesintegerFumbles on third down
e.g. 0
fumbles_lostintegerFumbles lost on third down
e.g. 0
fumbles_recoveredintegerFumbles recovered on third down
e.g. 0
interception_tdsintegerInterception return touchdowns on third down
e.g. 0
interception_ydsintegerInterception return yards on third down
e.g. 0
interceptionsintegerInterceptions on third down
e.g. 0
is_homebooleanTrue if player's team is the home team
Values:falsetrue
offensive_snapsintegerOffensive snaps played on third down
e.g. 0
offensive_tdsintegerTotal offensive touchdowns on third down
e.g. 0
passes_defendedintegerPasses defended on third down
e.g. 0
passing_attemptsintegerPassing attempts on third down
e.g. 0
passing_completion_percentagedecimalCompletion percentage on third down
e.g. 0.0000
passing_completionsintegerCompleted passes on third down
e.g. 0
passing_interceptionsintegerInterceptions thrown on third down
e.g. 0
passing_longintegerLongest pass completion on third down
e.g. 0
passing_ratingdecimalPasser rating on third down
e.g. 0.0000
passing_sack_ydsintegerYards lost to sacks on third down
e.g. 0
passing_sacksintegerTimes sacked on third down
e.g. 0
passing_tdsintegerPassing touchdowns on third down
e.g. 0
passing_ydsintegerPassing yards on third down
e.g. 0
passing_yds_per_attemptdecimalPassing yards per attempt on third down
e.g. 0.0000
passing_yds_per_completiondecimalPassing yards per completion on third down
e.g. 0.0000
positionstringPlayer position at time of game
Values:DEFWRRBQBTEOLDL
quarterback_hitsintegerQB hits on third down
e.g. 0
receiving_longintegerLongest reception on third down
e.g. 0
receiving_tdsintegerReceiving touchdowns on third down
e.g. 0
receiving_ydsintegerReceiving yards on third down
e.g. 0
receiving_yds_per_receptiondecimalYards per reception on third down
e.g. 0.0000
receiving_yds_per_targetdecimalReceiving yards per target on third down
e.g. 0.0000
reception_percentagedecimalReception percentage (receptions/targets) on third down
e.g. 0.0000
receptionsintegerReceptions on third down
e.g. 0
rushing_attemptsintegerRushing attempts on third down
e.g. 0
rushing_longintegerLongest rush on third down
e.g. 0
rushing_tdsintegerRushing touchdowns on third down
e.g. 0
rushing_ydsintegerRushing yards on third down
e.g. 0
rushing_yds_per_attemptdecimalRushing yards per attempt on third down
e.g. 0.0000
sacksdecimalSacks on third down (0.5 for half sacks)
e.g. 0.0000
solo_tacklesintegerSolo tackles on third down
e.g. 0
tackles_for_lossintegerTackles for loss on third down
e.g. 0
targetsintegerTimes targeted on third down
e.g. 0
total_tdsintegerTotal touchdowns scored on third down
e.g. 0
two_pt_pass_conversionsinteger
e.g. 0
two_pt_reception_conversionsinteger
e.g. 0
two_pt_rush_conversionsinteger
e.g. 0
GET/api/v1/nfl/game_player_thirddown_stats
Requires one of: game_id or player_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
player_idquerybigintoptional
Filter to a single player.
team_idquerybigintoptional
Filter by team.
opponent_team_idquerybigintoptional
Filter by opponent team.
positionquerystringoptional
Filter by player position. Values: DB, DEF, DL, LB, OL, QB, RB, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_player_thirddown_stats?game_id=1'
Responses
200game_player_thirddown_stats rows matching the declared filter set, wrapped in { game_player_thirddown_stats, 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
GET/api/v1/nfl/game_player_thirddown_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_player_thirddown_stat row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_player_thirddown_stats/{pk_value}'
Responses
200Single game_player_thirddown_stat row.application/jsonshow example ▸
404Row not found.
game_team_statsnfl.game_team_stats
Each NFL team's stat line for each game — the same offensive, defensive, scoring, and situational counters as the season aggregate, broken out per game with home/away context.
Fields131
FieldTypeReferencesDescription
idkeybigintPrimary Key
game_idbigint
e.g. 4718
team_idbigint
e.g. 22
blocked_extra_ptsinteger
e.g. 0
blocked_field_goalsinteger
e.g. 0
blocked_kick_return_tdsintegerBlocked kick return touchdowns
e.g. 0
blocked_kick_return_ydsintegerBlocked kick return yards
e.g. 0
blocked_kicksintegerTotal blocked kicks (FGs + XPs + punts) for DST fantasy scoring
e.g. 0
blocked_puntsinteger
e.g. 0
completion_percentagedecimal
e.g. 66.6667
completionsinteger
e.g. 19
defensive_interceptionsinteger
e.g. 0
defensive_sacksinteger
e.g. 1
defensive_tdsinteger
e.g. 0
defensive_team_snapsintegerTotal defensive snaps by team in game
e.g. 726
extra_pt_percentagedecimalExtra point conversion percentage
e.g. 100.0000
extra_pts_attemptedinteger
e.g. 2
extra_pts_blockedintegerExtra points that were blocked
e.g. 0
extra_pts_madeinteger
e.g. 2
field_goal_percentagedecimal
e.g. 100.0000
field_goal_return_tdsintegerField goal return touchdowns
e.g. 0
field_goal_return_ydsintegerField goal return yards (missed FGs)
e.g. 0
field_goals_attemptedinteger
e.g. 2
field_goals_blockedintegerField goals that were blocked
e.g. 0
field_goals_madeinteger
e.g. 2
first_downsinteger
e.g. 19
first_downs_passinginteger
e.g. 11
first_downs_penaltyinteger
e.g. 1
first_downs_rushinginteger
e.g. 5
forced_fumblesinteger
e.g. 0
fourth_down_attemptsinteger
e.g. 1
fourth_down_conversionsinteger
e.g. 0
fourth_down_percentagedecimal
e.g. 0.0000
fumble_return_tdsintegerFumble return touchdowns
e.g. 0
fumble_return_ydsintegerFumble return yards
e.g. 0
fumbles_lostinteger
e.g. 0
fumbles_recoveredinteger
e.g. 0
interception_percentagedecimalPercentage of passes intercepted
e.g. 0.0000
interception_return_tdsintegerInterception return touchdowns
e.g. 0
interception_return_ydsintegerInterception return yards
e.g. 0
interception_returnsintegerNumber of interception returns
e.g. 0
interceptions_throwninteger
e.g. 0
is_homebooleanTrue if team is the home team
Values:falsetrue
kick_return_avgdecimalAverage yards per kick return
e.g. 0.0000
kick_return_longintegerLongest kick return
e.g. 0
kick_return_tdsinteger
e.g. 0
kick_return_ydsinteger
e.g. 0
kick_return_yds_differentialintegerKick return yards minus opponent kick return yards
e.g. 0
kick_returnsintegerNumber of kick returns
e.g. 0
kickoff_touchbacksintegerKickoffs resulting in touchbacks
e.g. 0
kickoffsintegerNumber of kickoffs
e.g. 0
kickoffs_in_endzoneintegerKickoffs that reached the end zone
e.g. 0
lossinteger
e.g. 0
offensive_playsintegerTotal offensive plays run
e.g. 64
offensive_team_snapsintegerTotal offensive snaps by team in game
e.g. 726
offensive_ydsintegerTotal offensive yards gained
e.g. 356
pass_attemptsinteger
e.g. 34
passer_ratingdecimal
e.g. 97.9167
passes_defendedinteger
e.g. 4
passing_dropbacksintegerNumber of passing dropbacks
e.g. 34
passing_tdsinteger
e.g. 1
passing_ydsinteger
e.g. 188
penaltiesinteger
e.g. 6
penalty_ydsinteger
e.g. 45
penalty_yds_differentialintegerOpponent penalty yards minus own penalty yards
e.g. 0
point_differentialintegerPoints scored minus points allowed
e.g. 0
ptsinteger
e.g. 0
pts_allowed_defintegerPoints allowed for DEF scoring (FanDuel). Excludes return TDs against - only offensive points allowed.
e.g. 0
pts_allowed_dstintegerPoints allowed for DST scoring (DraftKings/Yahoo). Includes return TDs against - real scoreboard points.
e.g. 0
punt_averagedecimal
e.g. 44.0000
punt_net_averagedecimalNet punt average yards
e.g. 44.0000
punt_net_ydsintegerTotal net punt yards
e.g. 0
punt_return_avgdecimalAverage yards per punt return
e.g. 0.0000
punt_return_longintegerLongest punt return
e.g. 0
punt_return_tdsinteger
e.g. 0
punt_return_ydsinteger
e.g. 0
punt_return_yds_differentialintegerPunt return yards minus opponent punt return yards
e.g. 0
punt_returnsintegerNumber of punt returns
e.g. 0
punt_ydsinteger
e.g. 0
puntsinteger
e.g. 3
punts_blockedintegerNumber of punts blocked
e.g. 0
qb_hits_differentialintegerQB hits made minus QB hits allowed
e.g. 0
qb_hits_percentagedecimalPercentage of dropbacks resulting in QB hit
e.g. 0.0000
quarterback_hitsinteger
e.g. 4
receiving_tdsinteger
e.g. 1
receiving_ydsinteger
e.g. 188
receptionsinteger
e.g. 19
red_zone_attemptsinteger
e.g. 3
red_zone_conversionsinteger
e.g. 3
red_zone_percentagedecimal
e.g. 100.0000
rushing_attemptsinteger
e.g. 23
rushing_tdsinteger
e.g. 0
rushing_ydsinteger
e.g. 119
rushing_yds_per_attemptdecimalRushing yards per attempt
e.g. 3.0000
sack_ydsinteger
e.g. 0
sacked_percentagedecimalPercentage of dropbacks resulting in sack
e.g. 0.0000
sacks_allowedinteger
e.g. 1
sacks_differentialintegerSacks made minus sacks allowed
e.g. 0
safetiesinteger
e.g. 0
score_otintegerPoints scored in overtime
e.g. 0
score_q1integerPoints scored in Q1
e.g. 0
score_q2integerPoints scored in Q2
e.g. 0
score_q3integerPoints scored in Q3
e.g. 0
score_q4integerPoints scored in Q4
e.g. 0
special_teams_team_snapsintegerTotal special teams snaps by team in game
e.g. 264
tacklesinteger
e.g. 51
tackles_for_lossinteger
e.g. 1
tfl_differentialintegerTackles for loss made minus allowed
e.g. 0
tfl_percentagedecimalPercentage of plays resulting in TFL
e.g. 0.0000
third_down_attemptsinteger
e.g. 13
third_down_conversionsinteger
e.g. 5
third_down_percentagedecimal
e.g. 33.3333
tieinteger
e.g. 0
time_of_possessioninteger
e.g. 1805
total_return_ydsintegerTotal punt and kick return yards
e.g. 0
total_ydsinteger
e.g. 356
touchdownsintegerTotal touchdowns scored
e.g. 2
turnover_differentialinteger
e.g. 0
turnoversinteger
e.g. 0
two_point_conversion_attemptsinteger
e.g. 0
two_point_conversionsinteger
e.g. 0
two_pt_conversion_returnsintegerDefensive two-point conversion returns
e.g. 0
two_pt_pass_attemptsintegerTwo-point conversion pass attempts
e.g. 0
two_pt_pass_conversionsintegerTwo-point conversion pass conversions
e.g. 0
two_pt_rush_attemptsintegerTwo-point conversion rush attempts
e.g. 0
two_pt_rush_conversionsintegerTwo-point conversion rush conversions
e.g. 0
wininteger
e.g. 0
yds_per_carrydecimal
e.g. 3.0000
yds_per_completiondecimalPassing yards per completion
e.g. 10.0000
yds_per_pass_attemptdecimal
e.g. 6.0000
yds_per_playdecimalAverage yards per offensive play
e.g. 6.0000
GET/api/v1/nfl/game_team_stats
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
team_idquerybigintoptional
Filter by team.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_team_stats?game_id=1'
Responses
200game_team_stats rows matching the declared filter set, wrapped in { game_team_stats, 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
GET/api/v1/nfl/game_team_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_team_stat row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_team_stats/{pk_value}'
Responses
200Single game_team_stat row.application/jsonshow example ▸
404Row not found.
operator_player_lookupsnfl.operator_player_lookups
How each sportsbook and fantasy operator names every NFL player — the mapping from each operator's own player identifier to a unified player record.
Fields6
FieldTypeReferencesDescription
idkeybigintPrimary Key
operator_idbigintReference to main.operator entity
e.g. 5
operator_player_idstringExternal player ID from operator
e.g. 6012
player_idbigintInternal nfl.players.id reference
e.g. 2
player_namestringnullablePlayer name as provided by operator
e.g. Lamar Jackson
positionstringnullablePosition as provided by operator
Values:DBDLLBWRRBTEQBOLPKLS
GET/api/v1/nfl/operator_player_lookups
Requires one of: operator_id — requests satisfying none of these return 400.
Parameters
operator_idquerybigintoptional
Filter by sportsbook / operator.
player_idquerybigintoptional
Filter to a single player.
positionquerystringoptional
Filter by player position. Values: C, CB, DB, DE, DEF, DL, DST, DT, FB, G, ILB, K, LB, LS, NT, OL, OLB, OT, P, QB, RB, S, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/operator_player_lookups?operator_id=1'
Responses
200operator_player_lookups rows matching the declared filter set, wrapped in { operator_player_lookups, 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
GET/api/v1/nfl/operator_player_lookups/{id}
Parameters
idpathbigintrequired
Primary key (id) of the operator_player_lookup row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/operator_player_lookups/{pk_value}'
Responses
200Single operator_player_lookup row.application/jsonshow example ▸
404Row not found.
season_player_firstdown_statsnfl.season_player_firstdown_stats
Season player stats restricted to first-down plays — passing, rushing, and receiving production filtered to first-down attempts, useful for early-down efficiency analysis.
Fields52
FieldTypeReferencesDescription
idkeybigintPrimary Key
player_idbigint
e.g. 2
season_idbigint
e.g. 2025
assisted_tacklesintegerAssisted tackles on first down
e.g. 0
defensive_tdsintegerTotal defensive touchdowns on first down
e.g. 0
forced_fumblesintegerForced fumbles on first down
e.g. 0
fumble_recovery_tdsintegerFumble recovery touchdowns on first down
e.g. 0
fumble_recovery_ydsintegerFumble recovery yards on first down
e.g. 0
fumblesintegerFumbles on first down
e.g. 0
fumbles_lostintegerFumbles lost on first down
e.g. 0
fumbles_recoveredintegerFumbles recovered on first down
e.g. 0
games_playedintegerNumber of games with first down involvement
e.g. 1
games_startedintegerNumber of games started
e.g. 0
interception_tdsintegerInterception return touchdowns on first down
e.g. 0
interception_ydsintegerInterception return yards on first down
e.g. 0
interceptionsintegerInterceptions on first down
e.g. 0
offensive_snapsintegerOffensive snaps played on first down
e.g. 0
offensive_tdsintegerTotal offensive touchdowns on first down
e.g. 0
passes_defendedintegerPasses defended on first down
e.g. 0
passing_attemptsintegerPassing attempts on first down
e.g. 0
passing_completion_percentagedecimalCompletion percentage on first down
e.g. 0.0000
passing_completionsintegerCompleted passes on first down
e.g. 0
passing_interceptionsintegerInterceptions thrown on first down
e.g. 0
passing_longintegerLongest pass completion on first down
e.g. 0
passing_ratingdecimalPasser rating on first down
e.g. 0.0000
passing_sack_ydsintegerYards lost to sacks on first down
e.g. 0
passing_sacksintegerTimes sacked on first down
e.g. 0
passing_tdsintegerPassing touchdowns on first down
e.g. 0
passing_ydsintegerPassing yards on first down
e.g. 0
passing_yds_per_attemptdecimalPassing yards per attempt on first down
e.g. 0.0000
passing_yds_per_completiondecimalPassing yards per completion on first down
e.g. 0.0000
quarterback_hitsintegerQB hits on first down
e.g. 0
receiving_longintegerLongest reception on first down
e.g. 0
receiving_tdsintegerReceiving touchdowns on first down
e.g. 0
receiving_ydsintegerReceiving yards on first down
e.g. 0
receiving_yds_per_receptiondecimalYards per reception on first down
e.g. 0.0000
receiving_yds_per_targetdecimalReceiving yards per target on first down
e.g. 0.0000
reception_percentagedecimalReception percentage (receptions/targets) on first down
e.g. 0.0000
receptionsintegerReceptions on first down
e.g. 0
rushing_attemptsintegerRushing attempts on first down
e.g. 0
rushing_longintegerLongest rush on first down
e.g. 0
rushing_tdsintegerRushing touchdowns on first down
e.g. 0
rushing_ydsintegerRushing yards on first down
e.g. 0
rushing_yds_per_attemptdecimalRushing yards per attempt on first down
e.g. 0.0000
sacksdecimalSacks on first down (0.5 for half sacks)
e.g. 0.0000
solo_tacklesintegerSolo tackles on first down
e.g. 0
tackles_for_lossintegerTackles for loss on first down
e.g. 0
targetsintegerTimes targeted on first down
e.g. 0
total_tdsintegerTotal touchdowns scored on first down
e.g. 0
two_pt_pass_conversionsinteger
e.g. 0
two_pt_reception_conversionsinteger
e.g. 0
two_pt_rush_conversionsinteger
e.g. 0
GET/api/v1/nfl/season_player_firstdown_stats
Requires one of: season_id — requests satisfying none of these return 400.
Parameters
player_idquerybigintoptional
Filter to a single player.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/season_player_firstdown_stats?season_id=2025'
Responses
200season_player_firstdown_stats rows matching the declared filter set, wrapped in { season_player_firstdown_stats, 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
GET/api/v1/nfl/season_player_firstdown_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the season_player_firstdown_stat row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/season_player_firstdown_stats/{pk_value}'
Responses
200Single season_player_firstdown_stat row.application/jsonshow example ▸
404Row not found.
season_player_redzone_statsnfl.season_player_redzone_stats
Season player stats restricted to red-zone plays (inside the opponent's 20) — scoring efficiency, touchdown rate, and yardage production in the most-valuable area of the field.
Fields52
FieldTypeReferencesDescription
idkeybigintPrimary Key
player_idbigint
e.g. 2
season_idbigint
e.g. 2025
assisted_tacklesintegerAssisted tackles in red zone
e.g. 0
defensive_tdsintegerTotal defensive touchdowns in red zone
e.g. 0
forced_fumblesintegerForced fumbles in red zone
e.g. 0
fumble_recovery_tdsintegerFumble recovery touchdowns in red zone
e.g. 0
fumble_recovery_ydsintegerFumble recovery yards in red zone
e.g. 0
fumblesintegerFumbles in the red zone
e.g. 0
fumbles_lostintegerFumbles lost in the red zone
e.g. 0
fumbles_recoveredintegerFumbles recovered in red zone
e.g. 0
games_playedintegerNumber of games with red zone involvement
e.g. 1
games_startedintegerNumber of games started
e.g. 0
interception_tdsintegerInterception return touchdowns in red zone
e.g. 0
interception_ydsintegerInterception return yards in red zone
e.g. 0
interceptionsintegerInterceptions in red zone
e.g. 0
offensive_snapsintegerOffensive snaps played in red zone situations
e.g. 0
offensive_tdsintegerTotal offensive touchdowns in the red zone
e.g. 0
passes_defendedintegerPasses defended in red zone
e.g. 0
passing_attemptsintegerPassing attempts in the red zone
e.g. 0
passing_completion_percentagedecimalCompletion percentage in the red zone
e.g. 0.0000
passing_completionsintegerCompleted passes in the red zone
e.g. 0
passing_interceptionsintegerInterceptions thrown in the red zone
e.g. 0
passing_longintegerLongest pass completion in the red zone
e.g. 0
passing_ratingdecimalPasser rating in the red zone
e.g. 0.0000
passing_sack_ydsintegerYards lost to sacks in the red zone
e.g. 0
passing_sacksintegerTimes sacked in the red zone
e.g. 0
passing_tdsintegerPassing touchdowns in the red zone
e.g. 0
passing_ydsintegerPassing yards in the red zone
e.g. 0
passing_yds_per_attemptdecimalPassing yards per attempt in the red zone
e.g. 0.0000
passing_yds_per_completiondecimalPassing yards per completion in the red zone
e.g. 0.0000
quarterback_hitsintegerQB hits in red zone
e.g. 0
receiving_longintegerLongest reception in the red zone
e.g. 0
receiving_tdsintegerReceiving touchdowns in the red zone
e.g. 0
receiving_ydsintegerReceiving yards in the red zone
e.g. 0
receiving_yds_per_receptiondecimalYards per reception in the red zone
e.g. 0.0000
receiving_yds_per_targetdecimalReceiving yards per target in the red zone
e.g. 0.0000
reception_percentagedecimalReception percentage (receptions/targets) in the red zone
e.g. 0.0000
receptionsintegerReceptions in the red zone
e.g. 0
rushing_attemptsintegerRushing attempts in the red zone
e.g. 0
rushing_longintegerLongest rush in the red zone
e.g. 0
rushing_tdsintegerRushing touchdowns in the red zone
e.g. 0
rushing_ydsintegerRushing yards in the red zone
e.g. 0
rushing_yds_per_attemptdecimalRushing yards per attempt in the red zone
e.g. 0.0000
sacksdecimalSacks in red zone (0.5 for half sacks)
e.g. 0.0000
solo_tacklesintegerSolo tackles in red zone
e.g. 0
tackles_for_lossintegerTackles for loss in red zone
e.g. 0
targetsintegerTimes targeted in the red zone
e.g. 0
total_tdsintegerTotal touchdowns scored in the red zone
e.g. 0
two_pt_pass_conversionsintegerSuccessful two-point conversion passes in the red zone
e.g. 0
two_pt_reception_conversionsintegerSuccessful two-point conversion receptions in the red zone
e.g. 0
two_pt_rush_conversionsintegerSuccessful two-point conversion runs in the red zone
e.g. 0
GET/api/v1/nfl/season_player_redzone_stats
Requires one of: season_id — requests satisfying none of these return 400.
Parameters
player_idquerybigintoptional
Filter to a single player.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/season_player_redzone_stats?season_id=2025'
Responses
200season_player_redzone_stats rows matching the declared filter set, wrapped in { season_player_redzone_stats, 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
GET/api/v1/nfl/season_player_redzone_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the season_player_redzone_stat row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/season_player_redzone_stats/{pk_value}'
Responses
200Single season_player_redzone_stat row.application/jsonshow example ▸
404Row not found.
season_player_statsnfl.season_player_stats
Season totals for each NFL player — passing, rushing, receiving, defensive, special-teams, and scoring stats accumulated across the year. Regular-season games only; playoff totals are not included.
Fields89
FieldTypeReferencesDescription
idkeybigintPrimary Key
player_idbigint
e.g. 2
season_idbigint
e.g. 2025
completion_percentagedecimal
e.g. 0.0000
completionsinteger
e.g. 0
defensive_tdsinteger
e.g. 0
extra_pts_attemptedinteger
e.g. 0
extra_pts_madeinteger
e.g. 0
fair_catchesinteger
e.g. 0
field_goal_percentagedecimal
e.g. 0.0000
field_goals_attemptedinteger
e.g. 0
field_goals_madeinteger
e.g. 0
field_goals_made_0_19integer
e.g. 0
field_goals_made_20_29integer
e.g. 0
field_goals_made_30_39integer
e.g. 0
field_goals_made_40_49integer
e.g. 0
field_goals_made_50_plusinteger
e.g. 0
forced_fumblesinteger
e.g. 0
fumble_return_ydsinteger
e.g. 0
fumble_tdsinteger
e.g. 0
fumblesinteger
e.g. 0
fumbles_lostinteger
e.g. 0
fumbles_receivinginteger
e.g. 0
fumbles_recoveredinteger
e.g. 0
fumbles_rushinginteger
e.g. 0
games_playedinteger
e.g. 17
games_startedinteger
e.g. 0
interception_return_ydsinteger
e.g. 0
interception_tdsinteger
e.g. 0
interceptions_defenseinteger
e.g. 0
interceptions_throwninteger
e.g. 0
kick_return_averagedecimal
e.g. 0.0000
kick_return_tdsinteger
e.g. 0
kick_return_ydsinteger
e.g. 0
kick_returnsinteger
e.g. 0
longest_field_goalinteger
e.g. 0
longest_kick_returninteger
e.g. 0
longest_puntinteger
e.g. 0
longest_punt_returninteger
e.g. 0
longest_receptioninteger
e.g. 0
longest_rushinteger
e.g. 0
pass_attemptsinteger
e.g. 0
passer_ratingdecimal
e.g. 0.0000
passes_defendedinteger
e.g. 0
passing_air_ydsintegerTotal passing air yards
e.g. 0
passing_first_downsintegerTotal passing first downs
e.g. 0
passing_longintegerLongest pass (season max)
e.g. 0
passing_tdsinteger
e.g. 0
passing_ydsinteger
e.g. 0
passing_yds_after_catchintegerTotal YAC from passes
e.g. 0
punt_averagedecimal
e.g. 0.0000
punt_net_averagedecimal
e.g. 0.0000
punt_return_averagedecimal
e.g. 0.0000
punt_return_tdsinteger
e.g. 0
punt_return_ydsinteger
e.g. 0
punt_returnsinteger
e.g. 0
punt_touchbacksinteger
e.g. 0
punt_ydsinteger
e.g. 0
puntsinteger
e.g. 0
punts_blockedinteger
e.g. 0
punts_inside_20integer
e.g. 0
quarterback_hitsinteger
e.g. 0
receiving_air_ydsintegerTotal receiving air yards
e.g. 0
receiving_first_downsintegerTotal receiving first downs
e.g. 0
receiving_fumbles_lostintegerTotal receiving fumbles lost
e.g. 0
receiving_tdsinteger
e.g. 0
receiving_ydsinteger
e.g. 0
receiving_yds_after_catchintegerTotal receiving YAC
e.g. 0
receptionsinteger
e.g. 0
rushing_attemptsinteger
e.g. 0
rushing_first_downsintegerTotal rushing first downs
e.g. 0
rushing_fumbles_lostintegerTotal rushing fumbles lost
e.g. 0
rushing_tdsinteger
e.g. 0
rushing_ydsinteger
e.g. 0
sack_fumblesintegerTotal fumbles on sacks
e.g. 0
sack_fumbles_lostintegerTotal sack fumbles lost
e.g. 0
sack_yds_lostinteger
e.g. 0
sacksdecimal
e.g. 0.0000
sacks_takeninteger
e.g. 0
safetiesinteger
e.g. 0
special_teams_tdsintegerTotal special teams touchdowns
e.g. 0
tackles_assistedinteger
e.g. 0
tackles_for_lossinteger
e.g. 0
tackles_solointeger
e.g. 0
targetsinteger
e.g. 0
total_tacklesinteger
e.g. 0
yds_per_attemptdecimal
e.g. 0.0000
yds_per_carrydecimal
e.g. 0.0000
yds_per_receptiondecimal
e.g. 0.0000
GET/api/v1/nfl/season_player_stats
Requires one of: season_id or player_id — requests satisfying none of these return 400.
Parameters
player_idquerybigintoptional
Filter to a single player.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/season_player_stats?season_id=2025'
Responses
200season_player_stats rows matching the declared filter set, wrapped in { season_player_stats, 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
GET/api/v1/nfl/season_player_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the season_player_stat row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/season_player_stats/{pk_value}'
Responses
200Single season_player_stat row.application/jsonshow example ▸
404Row not found.
season_player_thirddown_statsnfl.season_player_thirddown_stats
Season player stats restricted to third-down plays — conversion rates and production on the down that most often decides whether a drive lives or dies.
Fields52
FieldTypeReferencesDescription
idkeybigintPrimary Key
player_idbigint
e.g. 2
season_idbigint
e.g. 2024
assisted_tacklesintegerAssisted tackles on third down
e.g. 0
defensive_tdsintegerTotal defensive touchdowns on third down
e.g. 0
forced_fumblesintegerForced fumbles on third down
e.g. 0
fumble_recovery_tdsintegerFumble recovery touchdowns on third down
e.g. 0
fumble_recovery_ydsintegerFumble recovery yards on third down
e.g. 0
fumblesintegerFumbles on third down
e.g. 0
fumbles_lostintegerFumbles lost on third down
e.g. 0
fumbles_recoveredintegerFumbles recovered on third down
e.g. 0
games_playedintegerNumber of games with third down involvement
e.g. 1
games_startedintegerNumber of games started
e.g. 0
interception_tdsintegerInterception return touchdowns on third down
e.g. 0
interception_ydsintegerInterception return yards on third down
e.g. 0
interceptionsintegerInterceptions on third down
e.g. 0
offensive_snapsintegerOffensive snaps played on third down
e.g. 0
offensive_tdsintegerTotal offensive touchdowns on third down
e.g. 0
passes_defendedintegerPasses defended on third down
e.g. 0
passing_attemptsintegerPassing attempts on third down
e.g. 0
passing_completion_percentagedecimalCompletion percentage on third down
e.g. 0.0000
passing_completionsintegerCompleted passes on third down
e.g. 0
passing_interceptionsintegerInterceptions thrown on third down
e.g. 0
passing_longintegerLongest pass completion on third down
e.g. 0
passing_ratingdecimalPasser rating on third down
e.g. 0.0000
passing_sack_ydsintegerYards lost to sacks on third down
e.g. 0
passing_sacksintegerTimes sacked on third down
e.g. 0
passing_tdsintegerPassing touchdowns on third down
e.g. 0
passing_ydsintegerPassing yards on third down
e.g. 0
passing_yds_per_attemptdecimalPassing yards per attempt on third down
e.g. 0.0000
passing_yds_per_completiondecimalPassing yards per completion on third down
e.g. 0.0000
quarterback_hitsintegerQB hits on third down
e.g. 0
receiving_longintegerLongest reception on third down
e.g. 0
receiving_tdsintegerReceiving touchdowns on third down
e.g. 0
receiving_ydsintegerReceiving yards on third down
e.g. 0
receiving_yds_per_receptiondecimalYards per reception on third down
e.g. 0.0000
receiving_yds_per_targetdecimalReceiving yards per target on third down
e.g. 0.0000
reception_percentagedecimalReception percentage (receptions/targets) on third down
e.g. 0.0000
receptionsintegerReceptions on third down
e.g. 0
rushing_attemptsintegerRushing attempts on third down
e.g. 0
rushing_longintegerLongest rush on third down
e.g. 0
rushing_tdsintegerRushing touchdowns on third down
e.g. 0
rushing_ydsintegerRushing yards on third down
e.g. 0
rushing_yds_per_attemptdecimalRushing yards per attempt on third down
e.g. 0.0000
sacksdecimalSacks on third down (0.5 for half sacks)
e.g. 0.0000
solo_tacklesintegerSolo tackles on third down
e.g. 0
tackles_for_lossintegerTackles for loss on third down
e.g. 0
targetsintegerTimes targeted on third down
e.g. 0
total_tdsintegerTotal touchdowns scored on third down
e.g. 0
two_pt_pass_conversionsinteger
e.g. 0
two_pt_reception_conversionsinteger
e.g. 0
two_pt_rush_conversionsinteger
e.g. 0
GET/api/v1/nfl/season_player_thirddown_stats
Requires one of: season_id — requests satisfying none of these return 400.
Parameters
player_idquerybigintoptional
Filter to a single player.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/season_player_thirddown_stats?season_id=2025'
Responses
200season_player_thirddown_stats rows matching the declared filter set, wrapped in { season_player_thirddown_stats, 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
GET/api/v1/nfl/season_player_thirddown_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the season_player_thirddown_stat row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/season_player_thirddown_stats/{pk_value}'
Responses
200Single season_player_thirddown_stat row.application/jsonshow example ▸
404Row not found.

Odds· 1 table

game_linesnfl.game_lines
NFL game betting lines — point spreads, moneylines, and over/under totals. Currently one consensus closing line per game (nflverse-sourced; captured_at equals kickoff time); multi-snapshot open-to-close history is not yet captured. Regular-season games only.
Fields18
FieldTypeReferencesDescription
idkeybigintPrimary Key
game_idbigint
e.g. 49
operator_idbigintData source (ESPN, DraftKings, FanDuel, nflverse, etc.)
e.g. 6
season_idbigintDenormalized for efficient season-level queries
e.g. 2024
captured_attimestamptzWhen this snapshot was captured
e.g. 2024-09-15T17:00:00.000Z
implied_away_scoredecimalnullableCalculated from spread + total
e.g. 24.5000
implied_away_win_pctdecimalnullableFrom moneyline, 0-1
e.g. 0.4348
implied_home_scoredecimalnullableCalculated from spread + total
e.g. 23.0000
implied_home_win_pctdecimalnullableFrom moneyline, 0-1
e.g. 0.6078
is_openingbooleanTrue if this is the opening line
e.g. false
moneyline_awayintegernullableAmerican odds for away team win
e.g. 130
moneyline_homeintegernullableAmerican odds for home team win
e.g. -155
over_oddsintegernullableAmerican odds for over
e.g. -110
spreaddecimalnullableHome team spread (e.g., -3.5 means home favored by 3.5)
e.g. 2.5000
spread_away_oddsintegernullableAmerican odds for away spread
e.g. -110
spread_home_oddsintegernullableAmerican odds for home spread (e.g., -110)
e.g. -110
totaldecimalnullableCombined score total line (e.g., 47.5)
e.g. 44.5000
under_oddsintegernullableAmerican odds for under
e.g. -110
GET/api/v1/nfl/game_lines
Requires one of: game_id or season_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
operator_idquerybigintoptional
Filter by sportsbook / operator.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_lines?game_id=1'
Responses
200game_lines rows matching the declared filter set, wrapped in { game_lines, 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
GET/api/v1/nfl/game_lines/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_line row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_lines/{pk_value}'
Responses
200Single game_line row.application/jsonshow example ▸
404Row not found.

Lineups & Roster· 8 tables

coaching_staff_tenuresnfl.coaching_staff_tenures
Every coaching change across NFL history with dates — when each head coach, offensive coordinator, and defensive coordinator started, when they left, and why (fired, resigned, promoted, retired).
Fields13
FieldTypeReferencesDescription
idkeybigintPrimary Key
season_idbigintReference to the season
e.g. 2024
team_idbigintReference to the team
e.g. 6
effective_datedateDate this coach started in this role
e.g. 2024-02-01T00:00:00.000Z
end_datedatenullableDate this coach ended (null if current)
e.g. 2024-11-29T00:00:00.000Z
first_namestringnullable
e.g. Mike
full_namestringCoach full name
e.g. Thomas Brown
is_interimboolean
Values:falsetrue
last_namestringnullable
e.g. Harbaugh
positionstringCoaching position (HC, OC, DC)
Values:HCOCDC
reasonstringnullableReason for change (fired, resigned, hired, promoted)
e.g. fired
sourcestringnullableData source (pfr, cbs_sports, espn, manual)
e.g. seed
source_urlstringnullable
e.g. seed:coaching-tenure-2024.yml
GET/api/v1/nfl/coaching_staff_tenures
Requires one of: team_id — requests satisfying none of these return 400.
Parameters
team_idquerybigintoptional
Filter by team.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
positionquerystringoptional
Filter by player position. Values: DC, HC, OC.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/coaching_staff_tenures?team_id=1'
Responses
200coaching_staff_tenures rows matching the declared filter set, wrapped in { coaching_staff_tenures, 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
GET/api/v1/nfl/coaching_staff_tenures/{id}
Parameters
idpathbigintrequired
Primary key (id) of the coaching_staff_tenure row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/coaching_staff_tenures/{pk_value}'
Responses
200Single coaching_staff_tenure row.application/jsonshow example ▸
404Row not found.
coaching_staffsnfl.coaching_staffs
The coaching staff for each NFL team at a given season — head coach, offensive coordinator, defensive coordinator, special teams coordinator, and position coaches.
Fields8
FieldTypeReferencesDescription
idkeybigintPrimary Key
season_idbigint
e.g. 2024
team_idbigint
e.g. 1
experienceintegernullable
e.g. — (all-null in sample)
first_namestring
e.g. Mike
full_namestring
e.g. Thomas Brown
last_namestring
e.g. Harbaugh
positionstring
Values:DCHCOC
GET/api/v1/nfl/coaching_staffs
Requires one of: season_id — requests satisfying none of these return 400.
Parameters
team_idquerybigintoptional
Filter by team.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
positionquerystringoptional
Filter by player position.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/coaching_staffs?season_id=2025'
Responses
200coaching_staffs rows matching the declared filter set, wrapped in { coaching_staffs, 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
GET/api/v1/nfl/coaching_staffs/{id}
Parameters
idpathbigintrequired
Primary key (id) of the coaching_staff row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/coaching_staffs/{pk_value}'
Responses
200Single coaching_staff row.application/jsonshow example ▸
404Row not found.
depth_chart_snapshotsnfl.depth_chart_snapshots
A team's full depth chart captured at a specific moment in the season — the season-opening baseline, plus any week the team published a fresh full chart. For the canonical per-game weekly chart use depth_charts instead; this snapshot/entry pair is the point-in-time scrape representation.
Fields8
FieldTypeReferencesDescription
idkeybigintPrimary Key
season_idbigint
e.g. 15
team_idbigint
e.g. 29
entry_countintegerNumber of entries in this snapshot
e.g. 172
is_baselinebooleanTrue if this is the season baseline snapshot
e.g. true
snapshot_attimestamptzWhen this snapshot was taken
e.g. 2026-03-14T07:32:09.000Z
sourcestringData source (nflverse, espn, etc.)
e.g. nflverse
weekintegerNFL week number (0=preseason)
e.g. 28
GET/api/v1/nfl/depth_chart_snapshots
Requires one of: team_id + season_id — requests satisfying none of these return 400.
Parameters
team_idquerybigintoptional
Filter by team.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
weekqueryintegeroptional
Filter by week of the season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/depth_chart_snapshots?team_id=1&season_id=2025'
Responses
200depth_chart_snapshots rows matching the declared filter set, wrapped in { depth_chart_snapshots, 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
GET/api/v1/nfl/depth_chart_snapshots/{id}
Parameters
idpathbigintrequired
Primary key (id) of the depth_chart_snapshot row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/depth_chart_snapshots/{pk_value}'
Responses
200Single depth_chart_snapshot row.application/jsonshow example ▸
404Row not found.
depth_chart_entriesnfl.depth_chart_entries
Where each player sits on the depth chart — position, depth order (starter, second-string, backup), and the formation grouping (offense, defense, special teams). Child rows of depth_chart_snapshots; for the canonical per-game weekly chart use depth_charts instead.
Fields8
FieldTypeReferencesDescription
idkeybigintPrimary Key
player_idbigint
e.g. 1237
snapshot_idbigint
e.g. 44
depth_orderintegerOrder within position (1=starter, 2=backup, etc.)
e.g. 2
depth_positionstringSpecific depth position (QB1, RB2, etc.)
e.g. WR
formationstringnullableFormation group (offense, defense, special_teams)
Values:DefenseOffense3WR 1TEBase 4-3 DSpecial TeamsBase 3-4 D
jersey_numberintegernullable
e.g. — (all-null in sample)
positionstringPosition abbreviation (QB, RB, WR, etc.)
e.g. WR
GET/api/v1/nfl/depth_chart_entries
Requires one of: snapshot_id — requests satisfying none of these return 400.
Parameters
snapshot_idquerybigintoptional
Filter by depth-chart snapshot.
player_idquerybigintoptional
Filter to a single player.
positionquerystringoptional
Filter by player position. Values: C, CB, DB, DE, DT, FB, FS, G, H, ILB, K, KR, LB, LCB, LDE, LDT, LG, LILB, LS, LT, MLB, NB, NT, OLB, P, PK, PR, QB, RB, RCB, RDE, RDT, RG, RILB, RT, SLB, SS, T, TE, WLB, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/depth_chart_entries?snapshot_id=1'
Responses
200depth_chart_entries rows matching the declared filter set, wrapped in { depth_chart_entries, 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
GET/api/v1/nfl/depth_chart_entries/{id}
Parameters
idpathbigintrequired
Primary key (id) of the depth_chart_entry row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/depth_chart_entries/{pk_value}'
Responses
200Single depth_chart_entry row.application/jsonshow example ▸
404Row not found.
depth_chartsnfl.depth_charts
One player's depth-chart slot for a given team in a given NFL week — position, depth order (starter, backup, …), roster status, and game-type context. One row per (game × team × player × depth-position) combination.
Fields15
FieldTypeReferencesDescription
idkeybigintPrimary key — sequential row identifier.
elias_idstringnullableElias Sports Bureau player identifier (nullable — populated only when the source feed includes Elias IDs).
e.g. — (all-null in sample)
game_idbigintFK to nfl.games — the game this depth chart is associated with.
e.g. 120
player_idbigintFK to nfl.players — the player occupying this depth-chart slot.
e.g. 19
season_idbigintFK to nfl.seasons — the season containing this game.
e.g. 1
team_idbigintFK to nfl.teams — the team whose depth chart this row belongs to.
e.g. 32
depth_orderintegernullableDepth-chart rank at this position — 1 for the starter, 2 for the primary backup, etc. NFL depth charts typically run 1–5 deep at each position.
e.g. 1
depth_positionstringPosition slot on the depth chart, which can differ from the player's primary position when they're listed at a secondary position (e.g., a player whose primary position is T may also appear on the depth chart at G).
Values:DTWRDETQBLSGTECBILBKOLBCFSPSSNTRBFBMLB
depth_teamstringnullableSub-team designation within the depth chart when present (e.g., a formation-specific team grouping). Sparse — typically NULL.
e.g. — (all-null in sample)
formationstringnullableFormation unit this slot belongs to (e.g., OFF, DEF, ST). Sparse — typically NULL.
e.g. — (all-null in sample)
game_typestringPhase of the season: REG (regular season), WC (Wild Card), DIV (Divisional), CON (Conference Championship), SB (Super Bowl).
Values:REGDIVWCCONSB
jersey_numberintegernullablePlayer's jersey number on the team for this game (nullable — populated when the depth chart includes uniform numbers).
e.g. — (all-null in sample)
positionstringPlayer's listed position abbreviation (e.g., QB, RB, WR, T, DT, CB, MLB, K, P).
Values:DTWRDETQBLSGTECBILBKOLBCFSPSSNTRBFBMLB
statusstringnullableNFL roster status code at the time of the chart: ACT (active), DEV (practice squad / developmental), INA (inactive), RES (reserve / IR), EXE (exempt), CUT (released), TRC (traded — pending), TRD (traded), RET (retired), E01 (other transactional status).
Values:ActiveReservePracticeSquadInactiveRetiredCutExempt
weekintegerNFL week number within the season (1-18 regular season; postseason weeks use higher numbers per league convention).
e.g. 15
GET/api/v1/nfl/depth_charts
Requires one of: team_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
team_idquerybigintoptional
Filter by team.
season_idquerybigintoptional
Filter to a single season.
weekqueryintegeroptional
Filter by week of the season.
player_idquerybigintoptional
Filter to a single player.
positionquerystringoptional
Filter by player position. Values: C, CB, DB, DE, DT, FB, FS, G, ILB, K, LB, LS, MLB, NT, OLB, P, QB, RB, SS, T, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/depth_charts?team_id=1'
Responses
200depth_charts rows matching the declared filter set, wrapped in { depth_charts, 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
GET/api/v1/nfl/depth_charts/{id}
Parameters
idpathbigintrequired
Primary key (id) of the depth_chart row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/depth_charts/{pk_value}'
Responses
200Single depth_chart row.application/jsonshow example ▸
404Row not found.
game_team_rostersnfl.game_team_rosters
The gameday roster for each NFL game — every player who suited up that day, who started, who was inactive, and at what position.
Fields9
FieldTypeReferencesDescription
idkeybigintPrimary Key
game_idbigint
e.g. 120
player_idbigint
e.g. 19
team_idbigint
e.g. 32
commentstringnullableOptional note from the gameday roster report (e.g., reason for inactive).
e.g. — (all-null in sample)
dayintegerDay-of-year integer (matches `game.day` for partitioning).
e.g. 20241212
positionstringnullablePosition the player suited up at for this game.
Values:DLOLDBWRLBQBLSTEKPRB
starterbooleanTrue if the player started this game.
Values:truefalse
statusstringnullableRoster status for the game, readable single-word vocabulary (`Active`, `Inactive`, `PracticeSquad`, `Reserve`, `Cut`, `Retired`, `Exempt`, `PracticeSquadReleased`).
Values:ActiveReservePracticeSquadInactiveRetiredCutExempt
GET/api/v1/nfl/game_team_rosters
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
team_idquerybigintoptional
Filter by team.
player_idquerybigintoptional
Filter to a single player.
positionquerystringoptional
Filter by player position. Values: DB, DL, K, LB, LS, OL, P, QB, RB, TE, WR.
statusquerystringoptional
Filter by game-roster status (readable single-word vocabulary; PracticeSquadReleased covers the nflverse TRC/TRD codes). Values: Active, Cut, Exempt, Inactive, PracticeSquad, PracticeSquadReleased, Reserve, Retired.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_team_rosters?game_id=1'
Responses
200game_team_rosters rows matching the declared filter set, wrapped in { game_team_rosters, 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
GET/api/v1/nfl/game_team_rosters/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_team_roster row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_team_rosters/{pk_value}'
Responses
200Single game_team_roster row.application/jsonshow example ▸
404Row not found.
game_team_staffsnfl.game_team_staffs
The coaching staff on the sideline for each NFL game — head coach, offensive coordinator, defensive coordinator, for both teams.
Fields6
FieldTypeReferencesDescription
idkeybigintPrimary Key
game_idbigintReference to the game
e.g. 49
team_idbigintReference to the team
e.g. 16
defensive_coordinatorstringnullableDefensive coordinator name
e.g. — (all-null in sample)
head_coachstringnullableHead coach name (from nflverse)
e.g. Andy Reid
offensive_coordinatorstringnullableOffensive coordinator name
e.g. — (all-null in sample)
GET/api/v1/nfl/game_team_staffs
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
team_idquerybigintoptional
Filter by team.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_team_staffs?game_id=1'
Responses
200game_team_staffs rows matching the declared filter set, wrapped in { game_team_staffs, 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
GET/api/v1/nfl/game_team_staffs/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_team_staff row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_team_staffs/{pk_value}'
Responses
200Single game_team_staff row.application/jsonshow example ▸
404Row not found.
team_player_rostersnfl.team_player_rosters
Day-by-day player-to-team affiliations across the season — who was on which roster, at what position, on every day from training camp through the Super Bowl.
Fields8
FieldTypeReferencesDescription
idkeybigintPrimary Key
player_idbigint
e.g. 765
season_idbigint
e.g. 2024
team_idbigint
e.g. 32
dayintegerDay-of-year integer; the row is valid for that single day.
e.g. 20240905
depth_orderintegernullableDepth-chart order at this position on this date (1 = starter).
e.g. — (all-null in sample)
positionstringnullablePosition assigned to the player for this season-day.
Values:DBOLDLLBWRRBTEQBKPLS
position_groupstringnullablePosition group (`OFFENSE`, `DEFENSE`, `ST`).
Values:OffenseDefenseSpecial Teams
GET/api/v1/nfl/team_player_rosters
Requires one of: team_id + season_id — requests satisfying none of these return 400.
Parameters
team_idquerybigintoptional
Filter by team.
player_idquerybigintoptional
Filter to a single player.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
positionquerystringoptional
Filter by player position. Values: DB, DL, K, LB, LS, OL, P, QB, RB, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/team_player_rosters?team_id=1&season_id=2025'
Responses
200team_player_rosters rows matching the declared filter set, wrapped in { team_player_rosters, 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
GET/api/v1/nfl/team_player_rosters/{id}
Parameters
idpathbigintrequired
Primary key (id) of the team_player_roster row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/team_player_rosters/{pk_value}'
Responses
200Single team_player_roster row.application/jsonshow example ▸
404Row not found.

Misc· 8 tables

stadiumsnfl.stadiums
Venues that have hosted NFL games — current home stadiums, neutral-site locations like international and Super Bowl venues, and historical fields no longer in use.
Fields20
FieldTypeReferencesDescription
idkeybigintPrimary Key
league_stadium_idstringnullableOfficial NFL stadium ID from API
e.g. 00081065-961a-76b2-de6a-b6da2602a129
addressstringnullableStreet address of the stadium.
e.g. 1 Patriot Pl, Foxborough, MA 02035
capacityintegernullableApproximate seating capacity for football configuration.
e.g. 65000
citystring
e.g. Santa Clara
closed_datetimestamptznullableDate the stadium closed (null if currently in use).
e.g. — (all-null in sample)
countrystringnullable
Values:USADEUGBRESPMEXBRAIRL
descriptionstringnullable
e.g. — (all-null in sample)
elevationfloatnullableElevation in feet above sea level
e.g. 256
image_urlstringnullableURL to aerial/overview image of stadium
e.g. https://upload.wikimedia.org/wikipedia/commons/thumb/7/70/G…
latitudefloatnullableLatitude of the stadium centroid (decimal degrees, WGS84).
e.g. 42.0909
longitudefloatnullableLongitude of the stadium centroid (decimal degrees, WGS84).
e.g. -71.2643
namestring
e.g. Gillette Stadium
opened_datetimestamptznullableDate the stadium opened for play.
e.g. 2002-01-01T00:00:00.000Z
orientationfloatnullableField orientation in degrees (0-360). Direction end zones face, measured from south end zone. 0/360=North, 90=East, 180=South, 270=West
e.g. 0
roof_typestringnullableRoof type (e.g., `open`, `dome`, `retractable`).
Values:OpenRetractableDome
statestringnullable
e.g. FL
surfacestringnullablePlaying surface type (e.g., `grass`, `FieldTurf`, `Astroturf`).
Values:GrassFieldTurfHybrid GrassA-Turf TitanBermuda GrassUBU Sports Speed Series…
team_namestringnullableTeam commonly associated with this stadium at the time (display string, not a foreign key).
e.g.
timezonestringnullableIANA timezone (e.g., America/New_York)
Values:America/New_YorkAmerica/ChicagoAmerica/Los_AngelesEurope/BerlinEurope/LondonEurope/MadridAmerica/Indiana/Indiana…America/DenverAmerica/DetroitAmerica/PhoenixAmerica/Mexico_CityAmerica/Sao_PauloEurope/Dublin
GET/api/v1/nfl/stadiums
Parameters
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/stadiums?limit=3'
Responses
200stadiums rows matching the declared filter set, wrapped in { stadiums, 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
GET/api/v1/nfl/stadiums/{id}
Parameters
idpathbigintrequired
Primary key (id) of the stadium row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/stadiums/{pk_value}'
Responses
200Single stadium row.application/jsonshow example ▸
404Row not found.
playoffsnfl.playoffs
The NFL postseason bracket — Wild Card weekend, the Divisional Round, the Conference Championships, and the Super Bowl, with seeds, scores, and outcomes.
Fields11
FieldTypeReferencesDescription
idkeybigintPrimary Key
away_team_idbigint
e.g. 19
home_team_idbigint
e.g. 26
season_idbigint
e.g. 2024
winner_team_idbigintnullableWinning team (FK to `teams`); null until the game completes.
e.g. 26
away_team_seedintegerPlayoff seed (1-7) of the away team for this matchup.
e.g. 0
conferencestringnullableConference the matchup is contested within (`AFC`, `NFC`); null for the Super Bowl (inter-conference).
Values:AFCNFC
game_numberintegerSequence number within the round (used to order multiple games in the same round).
e.g. 1
home_team_seedintegerPlayoff seed (1-7) of the home team for this matchup.
e.g. 0
playoff_roundstringPostseason round (`WildCard`, `Divisional`, `Conference Championship`, `Super Bowl`).
Values:Wild CardDivisionalConference ChampionshipSuper Bowl
statusstringMatchup status (`Scheduled`, `InProgress`, `Final`).
e.g. Final
GET/api/v1/nfl/playoffs
Requires one of: season_id or home_team_id or away_team_id or status — requests satisfying none of these return 400.
Parameters
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
home_team_idquerybigintoptional
Filter by home team.
away_team_idquerybigintoptional
Filter by away team.
statusquerystringoptional
Filter by row status.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/playoffs?season_id=2025'
Responses
200playoffs rows matching the declared filter set, wrapped in { playoffs, 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
GET/api/v1/nfl/playoffs/{id}
Parameters
idpathbigintrequired
Primary key (id) of the playoff row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/playoffs/{pk_value}'
Responses
200Single playoff row.application/jsonshow example ▸
404Row not found.
combine_resultsnfl.combine_results
NFL Scouting Combine results — every prospect's measurables and drill times from the annual Indianapolis combine (height, weight, 40-yard dash, vertical jump, bench press, broad jump, three-cone, shuttle).
Fields16
FieldTypeReferencesDescription
idkeybigintPrimary Key
cfb_idstringnullableCollege Football Reference player ID (external lookup).
e.g. kris-abrams-draine-1
pfr_idstringnullablePro Football Reference player ID (external lookup).
e.g. AbraKr00
player_idbigint
e.g. 2707
team_idbigintnullable
e.g. — (all-null in sample)
benchintegernullableBench press repetitions at 225 lbs.
e.g. 21
broad_jumpintegernullableBroad jump distance in inches.
e.g. 124
conedecimalnullable3-cone drill time in seconds.
e.g. 6.8200
fortydecimalnullable40-yard dash time in seconds.
e.g. 4.4600
htstringnullableHeight as reported by the Combine (e.g., `6-2` for 6 feet 2 inches).
Values:6-46-36-16-56-26-05-116-65-105-95-86-76-86-95-7
positionstringPosition the player was measured as (e.g., QB, WR, RB, CB).
Values:WRCBDTRBEDGEOTLBGTEQBCSAFKDEPCB/WR
schoolstringnullableCollege or last-affiliation school name.
e.g. Michigan
seasonintegerCalendar year of the Combine (e.g., 2024 for the February 2024 combine).
e.g. 2025
shuttledecimalnullable20-yard shuttle time in seconds.
e.g. 4.4000
verticaldecimalnullableVertical jump in inches.
e.g. 34.5000
wtintegernullableWeight in pounds.
e.g. 205
GET/api/v1/nfl/combine_results
Requires one of: player_id or season + position — requests satisfying none of these return 400.
Parameters
player_idquerybigintoptional
Filter to a single player.
seasonqueryintegeroptional
Filter by season start year.
positionquerystringoptional
Filter by player position. Values: C, CB, CB/WR, DE, DT, EDGE, G, K, LB, OT, P, QB, RB, SAF, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/combine_results?player_id=1'
Responses
200combine_results rows matching the declared filter set, wrapped in { combine_results, 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
GET/api/v1/nfl/combine_results/{id}
Parameters
idpathbigintrequired
Primary key (id) of the combine_result row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/combine_results/{pk_value}'
Responses
200Single combine_result row.application/jsonshow example ▸
404Row not found.
draft_picksnfl.draft_picks
Every NFL Draft selection from the modern draft era — round, pick number, drafting team, college, and the career stats that followed (Pro Bowls, All-Pros, Hall of Fame, total games played, career statistics by position).
Fields38
FieldTypeReferencesDescription
idkeybigintPrimary Key
cfb_player_idstringnullableCollege Football Reference player ID.
e.g. caleb-williams-3
gsis_idstringGame Statistics and Information System ID (NFL official cross-system join key).
e.g.
pfr_player_idstringPro Football Reference player ID.
e.g. WillCa03
player_idbigint
e.g. 3180
team_idbigint
e.g. 22
ageintegernullablePlayer age at the time of the draft.
e.g. 23
allpro_countintegerCareer All-Pro selections.
e.g. 0
car_avintegernullableCareer Approximate Value (Pro Football Reference, unweighted sum across seasons).
e.g. — (all-null in sample)
career_to_yearintegernullableMost recent NFL season the player appeared in (calendar year).
e.g. 2025
categorystringPosition category (e.g., `OFF`, `DEF`, `ST`).
Values:DLOLDBWRRBLBTEQBKPFSLS
collegestringCollege the player was drafted out of.
e.g. Texas
def_intsintegerCareer defensive interceptions.
e.g. 0
def_sacksdecimalCareer sacks (defensive; half-sacks supported as decimals).
e.g. 0.0000
def_solo_tacklesintegerCareer solo defensive tackles.
e.g. 0
dr_avintegernullableApproximate Value accumulated while with the drafting team.
e.g. 1
games_playedintegerTotal career regular-season games played.
e.g. 17
is_hofbooleanTrue if the player is enshrined in the Pro Football Hall of Fame.
e.g. false
pass_attemptsintegerCareer pass attempts.
e.g. 0
pass_completionsintegerCareer pass completions.
e.g. 0
pass_intsintegerCareer interceptions thrown.
e.g. 0
pass_tdsintegerCareer passing touchdowns.
e.g. 0
pass_ydsintegerCareer passing yards.
e.g. 0
pfr_player_namestringnullablePlayer name as recorded on Pro Football Reference.
e.g. Marcus Harris
pickintegerPick number within the round.
e.g. 1
positionstringPosition the player was drafted at (e.g., QB, WR, DE).
Values:OLWRRBLBDECBDBDTTEDLQBSAFOTKGCPFSOLBLS
probowl_countintegerCareer Pro Bowl selections.
e.g. 0
rec_tdsintegerCareer receiving touchdowns.
e.g. 0
rec_ydsintegerCareer receiving yards.
e.g. 0
receptionsintegerCareer receptions.
e.g. 0
roundintegerDraft round (1-7).
e.g. 6
rush_attsintegerCareer rushing attempts.
e.g. 0
rush_tdsintegerCareer rushing touchdowns.
e.g. 0
rush_ydsintegerCareer rushing yards.
e.g. 0
seasonintegerCalendar year of the draft.
e.g. 2025
seasons_startedintegerNumber of NFL seasons in which the player was a primary starter.
e.g. 0
sidestringSide of the ball (`OFF` or `DEF`).
Values:ODS
w_avintegernullableWeighted Approximate Value (Pro Football Reference career composite metric).
e.g. 1
GET/api/v1/nfl/draft_picks
Requires one of: season — requests satisfying none of these return 400.
Parameters
seasonqueryintegeroptional
Filter by season start year.
roundqueryintegeroptional
Filter by draft round.
team_idquerybigintoptional
Filter by team.
player_idquerybigintoptional
Filter to a single player.
positionquerystringoptional
Filter by player position. Values: C, CB, DB, DE, DL, DT, FS, G, K, LB, LS, OL, OLB, OT, P, QB, RB, SAF, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/draft_picks?season=1'
Responses
200draft_picks rows matching the declared filter set, wrapped in { draft_picks, 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
GET/api/v1/nfl/draft_picks/{id}
Parameters
idpathbigintrequired
Primary key (id) of the draft_pick row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/draft_picks/{pk_value}'
Responses
200Single draft_pick row.application/jsonshow example ▸
404Row not found.
game_weathersnfl.game_weathers
On-field weather throughout each NFL game — temperature, wind, humidity, and precipitation captured at fixed intervals from kickoff. Useful for outdoor-game performance analysis.
Fields18
FieldTypeReferencesDescription
idkeybigintPrimary Key
game_idbigint
e.g. 4992
stadium_idbigint
e.g. 16
feels_like_temperatureintegernullable
e.g. 72
field_conditionstringnullable
e.g. — (all-null in sample)
humidityfloatnullable
e.g. 50
is_domeboolean
Values:falsetrue
minutes_from_startintegerMinutes from game start (0, 30, 60, 90, 120, 150)
e.g. 0
precipitationfloatnullable
e.g. 0
precipitation_probabilityfloatnullable
e.g. 0
recorded_attimestamptz
e.g. 2025-09-07T19:00:00.000Z
roof_statusstringnullable
Values:OpenDomeRetractable
temperatureintegernullable
e.g. 72
weather_conditionstringnullable
Values:INDOORCLEAROVERCASTDRIZZLEMAINLY_CLEARPARTLY_CLOUDYSNOWRAIN
weather_descriptionstringnullable
Values:Indoor stadium - contro…Clear skyOvercastMainly clearLight drizzlePartly cloudyModerate drizzleSlight snowSlight rainModerate snowModerate rainDense drizzleHeavy rain
wind_directionfloatnullable
e.g. 0
wind_gustfloatnullable
e.g. 0
wind_speedfloatnullable
e.g. 0
GET/api/v1/nfl/game_weathers
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
stadium_idquerybigintoptional
Filter by stadium.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_weathers?game_id=1'
Responses
200game_weathers rows matching the declared filter set, wrapped in { game_weathers, 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
GET/api/v1/nfl/game_weathers/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_weather row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_weathers/{pk_value}'
Responses
200Single game_weather row.application/jsonshow example ▸
404Row not found.
injuriesnfl.injuries
The weekly NFL injury report — every player listed each game week with their practice participation, game-status designation (Out, Doubtful, Questionable, Probable), and the body part affected.
Fields15
FieldTypeReferencesDescription
idkeybigintPrimary Key
game_idbigint
e.g. 151
player_idbigint
e.g. 936
season_idbigint
e.g. 2024
team_idbigint
e.g. 4
date_modifiedtimestamptznullableTimestamp of the most recent NFL feed update for this report.
e.g. 2024-11-08T19:11:50.000Z
game_typestringGame classification for the upcoming game (`REG`, `WC`, `DIV`, `CON`, `SB`).
Values:REGDIVCONWCSB
positionstringPosition the player was listed at on the report.
Values:LBWRCBTDTSDETERBGQBCKFBPLSDBDL
practice_primary_injurystringnullablePrimary injury reported on the practice participation report.
e.g. Knee
practice_secondary_injurystringnullableSecondary injury reported on the practice participation report.
e.g. Knee
practice_statusstringnullablePractice participation as long-form strings — `Did Not Participate In Practice`, `Limited Participation in Practice`, `Full Participation in Practice` (occasionally `Note` or blank).
Values:Full Participation in P…Did Not Participate In …Limited Participation i… Note
report_primary_injurystringnullablePrimary injury body part listed on the official Wednesday/Thursday report (e.g., `Hamstring`, `Knee`).
e.g. Knee
report_secondary_injurystringnullableSecondary injury listed on the official injury report.
e.g. Knee
report_statusstringnullableGame-status designation (`Out`, `Doubtful`, `Questionable`; occasionally `Note` or blank when no designation was issued).
Values:QuestionableOutDoubtfulNote
weekintegerNFL week the report covers — 1-18 regular season, continuing 19 Wild Card, 20 Divisional, 21 Conference Championship, 22 Super Bowl. Note nfl.games.week restarts at 1 in the postseason instead.
e.g. 9
GET/api/v1/nfl/injuries
Requires one of: player_id or season_id — requests satisfying none of these return 400.
Parameters
player_idquerybigintoptional
Filter to a single player.
game_idquerybigintoptional
Filter to a single game.
team_idquerybigintoptional
Filter by team.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
weekqueryintegeroptional
Filter by week of the season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/injuries?player_id=1'
Responses
200injuries rows matching the declared filter set, wrapped in { injuries, 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
GET/api/v1/nfl/injuries/{id}
Parameters
idpathbigintrequired
Primary key (id) of the injury row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/injuries/{pk_value}'
Responses
200Single injury row.application/jsonshow example ▸
404Row not found.
player_contractsnfl.player_contracts
NFL player contracts — total value, average annual pay, guaranteed money, and salary cap impact for every signed deal, with cap-inflated comparisons across eras.
Fields21
FieldTypeReferencesDescription
idkeybigintPrimary Key
otc_idstringOverTheCap unique contract identifier (external).
e.g. 9466
player_idbigint
e.g. 1546
team_idbigint
e.g. 25
apybigintAverage annual value (APY) in U.S. dollars — total `value` divided by `years`.
e.g. 895000
apy_cap_pctdecimalAPY as a percentage of the league salary cap in the signing year (0.0-100.0).
e.g. 0.0040
collegestringnullable
e.g. Florida State
date_of_birthdatenullable
e.g. — (all-null in sample)
guaranteedbigintTotal guaranteed money over the life of the contract, in U.S. dollars.
e.g. 0
heightstringnullableHeight as reported by OverTheCap (e.g., `6-2`).
Values:6'3"6'2"6'4"6'5"6'0"5'11"6'1"5'9"6'6"6'7"5'10"5'8"6'8"
inflated_apybigint`apy` adjusted to the most recent salary cap.
e.g. 895000
inflated_guaranteedbigint`guaranteed` adjusted to the most recent salary cap.
e.g. 0
inflated_valuebigint`value` adjusted to the most recent salary cap, in U.S. dollars.
e.g. 895000
is_activebooleanTrue for the player's currently-active contract; false for historical contracts.
e.g. true
player_page_urlstringnullableDirect URL to the player's page on overthecap.com.
e.g. https://overthecap.com/player/zach-wilson/9466/
positionstringPlayer position at the time the contract was signed.
Values:WRCBEDIDLSLBRBTERTQBLGLTKCRGPFBLS
season_history_jsonstringnullableJSON-encoded year-by-year cap-hit breakdown for the life of the contract (stored as a string).
e.g. — (all-null in sample)
valuebigintTotal contract value in U.S. dollars as reported by OverTheCap.
e.g. 895000
weightintegernullableWeight in pounds.
e.g. 199
year_signedintegerCalendar year the contract was signed.
e.g. 2022
yearsintegerTotal contract length in years.
e.g. 4
GET/api/v1/nfl/player_contracts
Requires one of: player_id — requests satisfying none of these return 400.
Parameters
player_idquerybigintoptional
Filter to a single player.
team_idquerybigintoptional
Filter by team.
positionquerystringoptional
Filter by player position. Values: C, CB, ED, FB, IDL, K, LB, LG, LS, LT, P, QB, RB, RG, RT, S, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/player_contracts?player_id=1'
Responses
200player_contracts rows matching the declared filter set, wrapped in { player_contracts, 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
GET/api/v1/nfl/player_contracts/{id}
Parameters
idpathbigintrequired
Primary key (id) of the player_contract row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/player_contracts/{pk_value}'
Responses
200Single player_contract row.application/jsonshow example ▸
404Row not found.
player_newsnfl.player_news
News about NFL players — transactions, injuries, lineup announcements, suspensions, and general beat-reporter updates.
Fields16
FieldTypeReferencesDescription
idkeybigintPrimary Key
external_idstringnullable
e.g. sportsdata-214469
player_idbigintnullable
e.g. 925
team_idbigintnullable
e.g. 27
ai_processedboolean
e.g. false
analysisstringnullable
e.g. — (all-null in sample)
authorstringnullable
e.g. Staff
categorystringnullableinjury, transaction, lineup, general
Values:injurytransactiongenerallineup
contentstringnullable
e.g. Los Angeles Rams star wide receiver Puka Nacua has been acc…
descriptionstringnullable
e.g. Fantasy football draft rankings from Matt Bowen, Mike Clay,…
linkstringnullable
e.g. https://www.espn.com/video/clip?id=47726158
news_timetimestamptz
e.g. 2026-05-04T04:00:00.000Z
priorityinteger
e.g. 5
situational_impactjsonbnullable
e.g. {"affectedPlayers":[],"reason":"Questionable status creates…
sourcestringnullable
Values:cbs_sportssportsdataespn
titlestring
e.g. DJ Turner Questionable for Week 2 vs. Detroit (Calf)
GET/api/v1/nfl/player_news
Requires one of: player_id or team_id — requests satisfying none of these return 400.
Parameters
player_idquerybigintoptional
Filter to a single player.
team_idquerybigintoptional
Filter by team.
categoryquerystringoptional
Filter by category. Values: general, injury, lineup, transaction.
sourcequerystringoptional
Filter by source provider. Values: cbs_sports, espn, sportsdata.
news_timequerytimestamptzoptional
Filter by publication time (ISO 8601). Use news_time__gte to poll for items since your last check. Range syntax: news_time__gte=, news_time__lte=, news_time__between=.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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 \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/player_news?player_id=1'
Responses
200player_news rows matching the declared filter set, wrapped in { player_news, 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
GET/api/v1/nfl/player_news/{id}
Parameters
idpathbigintrequired
Primary key (id) of the player_new row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/player_news/{pk_value}'
Responses
200Single player_new row.application/jsonshow example ▸
404Row not found.