NFL
40 tablesEvery 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
seasons
nfl.seasonsEach 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| short_id | string | — | Short identifier used by the NFL feed (e.g., `2024REG` for the 2024 regular season). e.g. 2024 |
| description | stringnullable | — | — Values:2024-2025 NFL Season2025-2026 NFL Season |
| end_date | timestamptznullable | — | Last day of the season (Super Bowl date or shortly after). e.g. 2025-02-09T00:00:00.000Z |
| post_season_start_date | timestamptznullable | — | First day of the postseason (Wild Card weekend). e.g. 2025-01-11T00:00:00.000Z |
| regular_season_start_date | timestamptznullable | — | First day of regular-season play (typically the Thursday after Labor Day). e.g. 2024-09-05T00:00:00.000Z |
| regular_season_weeks | integer | — | Number of regular-season weeks (18 since 2021; 17 in 2020 and earlier). e.g. 18 |
| start_date | timestamptz | — | First day of the season (typically the start of preseason in early August). e.g. 2024-09-05T00:00:00.000Z |
| start_year | integer | — | Calendar year in which the season starts (e.g., 2025 = the 2025-26 season). e.g. 2024 |
| super_bowl_date | timestamptznullable | — | Date of the Super Bowl for this season. e.g. 2025-02-09T00:00:00.000Z |
GET/api/v1/nfl/seasonsList seasons for NFL
Parameters
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/seasons/{id}Get a single season by id
Parameters
idpathbigintrequiredPrimary 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.
teams
nfl.teamsThe 32 NFL franchises plus historical predecessors — teams that have since relocated, renamed, or merged into the current league.
▸Fields13
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| league_team_id | string | Official NFL team UUID from api.nfl.com e.g. 10403800-517c-7b8c-65a3-c61b95d86123 | |
| stadium_id | bigint | Primary home stadium (FK to `stadiums`); null if unknown or shared. e.g. 16 | |
| abbreviation | string | — | Three-letter team code (e.g., KC, NE, GB). e.g. ARI |
| active | boolean | — | True for currently-active franchises; false for relocated or defunct teams retained for historical references. e.g. true |
| city | string | — | — e.g. Los Angeles |
| conference | string | — | Conference assignment (AFC or NFC). Values:NFCAFC |
| division | string | — | Division within the conference (e.g., AFC East, NFC West). Values:WestSouthNorthEast |
| full_name | string | — | — e.g. Arizona Cardinals |
| logo_url | stringnullable | — | URL to team logo image e.g. https://a.espncdn.com/i/teamlogos/nfl/500/ari.png |
| name | string | — | — e.g. Cardinals |
| primary_color | stringnullable | — | Hex color code for the team's primary uniform color (e.g., `#A71930`). e.g. #002244 |
| secondary_color | stringnullable | — | Hex 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/teamsList teams for NFL
Parameters
activequerybooleanoptionalFilter by active status (defaults to true to show only currently-active rows; pass active=false to include inactive).
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/teams/{id}Get a single team by id
Parameters
idpathbigintrequiredPrimary 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.
players
nfl.playersEvery individual who has played in the NFL — current rosters, free agents, retired veterans — plus team-defense entries used for fantasy and DST scoring.
▸Fields28
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| gsis_id | string | — | Game Statistics and Information System ID (e.g. 00-0028830) e.g. 00-0022531 |
| league_player_id | string | Official NFL player ID (UUID) from nfl.com e.g. 00-0022531 | |
| team_id | bigintnullable | Current NFL team (FK to `teams`); null for free agents and retired players. e.g. 27 | |
| birth_city | stringnullable | — | — e.g. — (all-null in sample) |
| birth_country | stringnullable | — | — e.g. — (all-null in sample) |
| birth_date | datenullable | — | — e.g. 1997-02-14T05:00:00.000Z |
| birth_state | stringnullable | — | — e.g. — (all-null in sample) |
| college | stringnullable | — | College or last football affiliation before turning pro. e.g. Ohio State |
| draft_number | stringnullable | — | Pick number within the round; null or `UDFA` if undrafted. e.g. 1 |
| draft_round | stringnullable | — | Draft round (1-7); null or `UDFA` if undrafted. e.g. 3 |
| draft_year | stringnullable | — | Calendar year the player was drafted; null or `UDFA` if undrafted. e.g. 2023 |
| experience | integernullable | — | Years of NFL experience (rookies = 0). e.g. 0 |
| first_name | string | — | — e.g. Michael |
| full_name | string | — | — e.g. Aaron Brewer |
| full_position_list | stringnullable | — | All positions the player is eligible at (semicolon-joined when multiple, e.g., `RB;WR`). e.g. — (all-null in sample) |
| height | integernullable | — | Height in inches. e.g. 75 |
| is_team | boolean | — | True for synthetic team-level entities (DST, team defense). Used to distinguish team defense 'players' from individual players. Values:falsetrue |
| jersey | stringnullable | — | Jersey number with the player's current team (string to preserve leading zeros and special codes). e.g. 35 |
| last_name | string | — | — e.g. Johnson |
| nfl_slug | stringnullable | — | URL slug used on nfl.com (e.g., `patrick-mahomes`). e.g. — (all-null in sample) |
| overall_pick | integernullable | — | Overall pick number across all rounds (1-262); null if undrafted. e.g. 230 |
| position_group | stringnullable | — | Broad position group classification used by nflverse (e.g., `OFFENSE`, `DEFENSE`, `ST`). Values:OffenseDefenseSpecial Teams |
| primary_position | string | — | Primary roster position (e.g., QB, WR, RB, CB). Values:DBOLDLWRLBRBTEQBKPLSDST |
| profile_pic_url | stringnullable | — | URL to player profile picture image e.g. https://static.www.nfl.com/image/upload/f_auto,q_auto/leagu… |
| roster_status | stringnullable | — | Active roster status code from the NFL feed (separate from `status`; e.g., `A` = active, `P` = practice squad). e.g. A01 |
| status | stringnullable | — | Roster status, readable single-word vocabulary (`Active`, `Cut`, `PracticeSquad`, `Reserve`, `Inactive`, `Retired`, `PracticeSquadReleased`, `Exempt`). Values:ActiveCutPracticeSquadReserveInactiveRetiredPracticeSquadReleased |
| weight | integernullable | — | Weight in pounds. e.g. 200 |
GET/api/v1/nfl/playersList players for NFL
Requires one of:
team_id or status or gsis_id or primary_position — requests satisfying none of these return 400.Parameters
team_idquerybigintoptionalFilter by team.
statusquerystringoptionalFilter by roster status (readable single-word vocabulary; PracticeSquadReleased covers the nflverse TRC/TRD codes). Values: Active, Cut, Exempt, Inactive, PracticeSquad, PracticeSquadReleased, Reserve, Retired.
gsis_idquerystringoptionalFilter by GSIS external player id.
primary_positionquerystringoptionalFilter by player primary position (e.g. QB, WR, RB). Values: DB, DL, DST, K, LB, LS, OL, P, QB, RB, TE, WR.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/players/{id}Get a single player by id
Parameters
idpathbigintrequiredPrimary 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.
games
nfl.gamesEvery scheduled and played NFL game — preseason exhibitions, the 18-week regular season, the playoffs from Wild Card weekend through the Super Bowl.
▸Fields31
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| away_team_id | bigint | — e.g. 19 | |
| home_team_id | bigint | — e.g. 26 | |
| league_game_id | string | Official NFL game ID from league source e.g. c7ce9df0-2459-11ef-afd1-646009f18b2e | |
| season_id | bigint | — e.g. 2024 | |
| stadium_id | integer | Stadium hosting the game (FK to `stadiums`). e.g. 4 | |
| attendance | integernullable | — | Reported attendance count; null when not published. e.g. — (all-null in sample) |
| away_rotation_number | integernullable | — | Sportsbook rotation number for the away team (3-4 digit cross-book reference). e.g. — (all-null in sample) |
| away_team | string | — | Denormalized team abbreviation for the away side at game time (snapshot copy of `teams.abbreviation`). e.g. LAR |
| away_team_score | integer | — | Final away-team score; 0 (not null) until the game completes. e.g. 0 |
| channel | stringnullable | — | Primary broadcast network/channel (e.g., `CBS`, `FOX`, `Prime Video`). e.g. — (all-null in sample) |
| day | integer | — | Calendar day as a YYYYMMDD integer (e.g. 20240915), US Eastern. e.g. 20240915 |
| end_time | timestamptznullable | — | Actual game end timestamp; null until the game completes. e.g. — (all-null in sample) |
| game_label | stringnullable | — | Display label for special games (e.g., `Thanksgiving Day`, `Monday Night Football`). Values:AFC Wild CardNFC Wild CardAFC DivisionalNFC DivisionalNFC ChampionshipAFC ChampionshipSuper Bowl |
| game_sub_label | stringnullable | — | Secondary label or sub-category for the game. e.g. — (all-null in sample) |
| game_time | timestamptz | — | Scheduled kickoff time (timezone-aware). e.g. 2024-09-15T17:00:00.000Z |
| home_rotation_number | integernullable | — | Sportsbook rotation number for the home team (3-4 digit cross-book reference). e.g. — (all-null in sample) |
| home_team | string | — | Denormalized team abbreviation for the home side at game time (snapshot copy of `teams.abbreviation`). e.g. PHI |
| home_team_score | integer | — | Final home-team score; 0 (not null) until the game completes. e.g. 0 |
| neutral_venue | boolean | — | True if the game is played at a neutral site (Super Bowl, international games, etc.). Values:falsetrue |
| overtime | boolean | — | True if the game went to overtime. Values:falsetrue |
| overtime_periods | integernullable | — | Number of overtime periods played (1+ when `overtime` is true). e.g. — (all-null in sample) |
| playoff_round | stringnullable | — | Postseason round (`WildCard`, `Divisional`, `Conference Championship`, `Super Bowl`); null outside the postseason. Values:Wild CardDivisionalConference ChampionshipSuper Bowl |
| playoff_seed_away | integernullable | — | Away-team playoff seed (1-7); null outside the postseason. e.g. — (all-null in sample) |
| playoff_seed_home | integernullable | — | Home-team playoff seed (1-7); null outside the postseason. e.g. — (all-null in sample) |
| postponed_status | stringnullable | — | Reason for postponement (e.g., `Weather`, `COVID`); null for games played as scheduled. e.g. — (all-null in sample) |
| season_type | string | — | Stage within the season (`Regular Season`, `Preseason`, `Playoff` = Wild Card round, `Divisional`, `Conference Championship`, `Super Bowl`). Values:Regular SeasonPreseasonPlayoffDivisionalConference ChampionshipSuper Bowl |
| start_time | timestamptz | — | Actual kickoff timestamp; null before the game starts. e.g. 2024-09-15T17:00:00.000Z |
| status | string | — | Game status. Currently always `Scheduled` (status reconciliation is pending) — detect completed games via populated scores, not this field. e.g. Scheduled |
| type | string | — | Game classification (`Regular`, `Playoff`, `Super Bowl`, `Preseason`). Values:RegularPreseasonPlayoff |
| week | integer | — | Week 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/gamesList games for NFL
Requires one of:
season_id — requests satisfying none of these return 400.Parameters
season_idquerybigintoptionalFilter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
weekqueryintegeroptionalFilter by week of the season. Range syntax: week__gte=, week__lte=, week__between=.
season_typequerystringoptionalFilter 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_idquerybigintoptionalFilter by home team.
away_team_idquerybigintoptionalFilter by away team.
statusquerystringoptionalFilter by row status.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/games/{id}Get a single game by id
Parameters
idpathbigintrequiredPrimary 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_drives
nfl.game_drivesEach 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| first_play_id | bigint | — | play_id of first play in drive e.g. 40 |
| game_id | bigint | — e.g. 222 | |
| last_play_id | bigint | — | play_id of last play in drive e.g. 131 |
| possession_team_id | bigint | Team with possession (FK to teams) e.g. 13 | |
| drive_number | integer | — | Drive sequence number in game (1-indexed) e.g. 2 |
| end_transition | stringnullable | — | How possession ended (PUNT, TOUCHDOWN, TURNOVER, etc.) Values:PUNTTOUCHDOWNFIELD_GOALINTERCEPTIONDOWNSFUMBLEEND_GAMEEND_HALFMISSED_FGSAFETYBLOCKED_PUNTBLOCKED_FGBLOCKED_PUNT,_DOWNSFUMBLE,_SAFETYBLOCKED_FG,_DOWNS |
| end_yard_line | stringnullable | — | Ending field position (e.g., "OPP 10") e.g. 50 |
| ended_with_score | boolean | — | Drive resulted in points Values:falsetrue |
| first_downs | integernullable | — | First downs gained e.g. 0 |
| fixed_drive | integer | — | Corrected drive number from nflverse e.g. 2 |
| game_clock_end | stringnullable | — | Game clock at drive end (mm:ss) e.g. 00:00 |
| game_clock_start | stringnullable | — | Game clock at drive start (mm:ss) e.g. 15:00 |
| inside_20 | boolean | — | Drive reached red zone Values:falsetrue |
| play_count | integernullable | — | Number of plays in drive e.g. 3 |
| quarter_end | integernullable | — | Quarter when drive ended e.g. 2 |
| quarter_start | integernullable | — | Quarter when drive started e.g. 2 |
| result | stringnullable | — | Drive outcome (Touchdown, Field goal, Punt, Turnover, etc.) Values:PuntTouchdownField goalTurnoverEnd of halfTurnover on downsMissed field goalOpp touchdownSafety |
| start_transition | stringnullable | — | How possession was gained (KICKOFF, PUNT, TURNOVER, etc.) Values:KICKOFFPUNTINTERCEPTIONDOWNSFUMBLEMISSED_FGMUFFED_PUNTBLOCKED_PUNTONSIDE_KICKBLOCKED_PUNT,_DOWNSBLOCKED_FG,_DOWNSBLOCKED_FGMUFFED_KICKOFF |
| start_yard_line | stringnullable | — | Starting field position (e.g., "KC 25") e.g. LV 30 |
| time_of_possession | stringnullable | — | Drive duration (mm:ss format) e.g. 1:30 |
| yds_penalized | integernullable | — | Penalty yards on drive e.g. 0 |
GET/api/v1/nfl/game_drivesList game_drives for NFL
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
possession_team_idquerybigintoptionalFilter by team in possession.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/game_drives/{id}Get a single game_drive by id
Parameters
idpathbigintrequiredPrimary 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_plays
nfl.play_by_playsEvery 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| assist_tackle_1_player_id | stringnullable | Assist tackler 1 GSIS ID e.g. 00-0037616 | |
| assist_tackle_2_player_id | stringnullable | Assist tackler 2 GSIS ID e.g. 00-0036294 | |
| assist_tackle_3_player_id | stringnullable | Assist tackler 3 GSIS ID e.g. — (all-null in sample) | |
| assist_tackle_4_player_id | stringnullable | Assist tackler 4 GSIS ID e.g. — (all-null in sample) | |
| blocked_player_id | stringnullable | Blocked kick player GSIS ID Values:00-003752700-003784300-003698200-0037156 | |
| defensive_team_id | bigintnullable | FK to teams table for defensive team e.g. 14 | |
| drive_id | bigintnullable | — | FK to game_drives table e.g. — (all-null in sample) |
| fantasy_id | stringnullable | — | Fantasy identifier e.g. 00-0035700 |
| fantasy_player_id | stringnullable | Fantasy designation player ID e.g. 00-0034844 | |
| forced_fumble_player_1_player_id | stringnullable | Forced fumble player 1 GSIS ID e.g. 00-0033868 | |
| forced_fumble_player_2_player_id | stringnullable | Forced fumble player 2 GSIS ID e.g. — (all-null in sample) | |
| fumble_recovery_1_player_id | stringnullable | Recovery player 1 GSIS ID e.g. 00-0037666 | |
| fumble_recovery_2_player_id | stringnullable | Recovery player 2 GSIS ID e.g. — (all-null in sample) | |
| fumbled_1_player_id | stringnullable | First fumbler GSIS ID e.g. 00-0036442 | |
| fumbled_2_player_id | stringnullable | Second fumbler GSIS ID e.g. — (all-null in sample) | |
| game_id | bigint | FK to games table e.g. 50 | |
| half_sack_1_player_id | stringnullable | Half-sack player 1 GSIS ID Values:00-003914800-003850400-003237800-003695400-003267100-003241500-003910800-003589000-003760300-003694000-0035402 | |
| half_sack_2_player_id | stringnullable | Half-sack player 2 GSIS ID Values:00-003613000-003648000-003434400-003104000-003438500-003158300-003156500-003637800-003853500-003257400-003632100-0034251 | |
| interception_player_id | stringnullable | Interceptor GSIS ID e.g. 00-0036388 | |
| kicker_player_id | stringnullable | Kicker GSIS ID e.g. 00-0038905 | |
| kickoff_returner_player_id | stringnullable | Kickoff returner GSIS ID e.g. 00-0037429 | |
| lateral_interception_player_id | stringnullable | Lateral after INT GSIS ID e.g. — (all-null in sample) | |
| lateral_kickoff_returner_player_id | stringnullable | Lateral kickoff returner GSIS ID e.g. — (all-null in sample) | |
| lateral_punt_returner_player_id | stringnullable | Lateral punt returner GSIS ID e.g. — (all-null in sample) | |
| lateral_receiver_player_id | stringnullable | Lateral receiver GSIS ID (pass) e.g. 00-0038976 | |
| lateral_rusher_player_id | stringnullable | Lateral receiver GSIS ID (rush) e.g. 00-0034975 | |
| lateral_sack_player_id | stringnullable | Lateral after sack GSIS ID e.g. — (all-null in sample) | |
| nfl_api_id | stringnullable | — | UUID from NFL API e.g. 7d4019ca-1312-11ef-afd1-646009f18b2e |
| nflverse_game_id | stringnullable | Ten digit identifier for NFL game (nflverse format) e.g. — (all-null in sample) | |
| old_game_id | stringnullable | Legacy NFL game ID format e.g. 2024090600 | |
| own_kickoff_recovery_player_id | stringnullable | Own kickoff recovery player GSIS ID e.g. — (all-null in sample) | |
| pass_defense_1_player_id | stringnullable | Pass defense player 1 GSIS ID e.g. 00-0034856 | |
| pass_defense_2_player_id | stringnullable | Pass defense player 2 GSIS ID Values:00-003155400-003724600-003423400-003982900-003502000-003725000-0034720 | |
| passer_id | bigintnullable | — | FK to players table e.g. 358 |
| passer_player_id | stringnullable | Passer GSIS ID e.g. 00-0033537 | |
| penalty_player_id | stringnullable | Penalized player GSIS ID e.g. 00-0036874 | |
| play_id | string | — | Numeric play identifier unique to game e.g. 1 |
| possession_team_id | bigintnullable | FK to teams table for possession team e.g. 8 | |
| primary_player_gsis_id | stringnullable | — | Primary player GSIS ID e.g. — (all-null in sample) |
| punt_returner_player_id | stringnullable | Punt returner GSIS ID e.g. 00-0039392 | |
| punter_player_id | stringnullable | Punter GSIS ID e.g. 00-0032943 | |
| qb_hit_1_player_id | stringnullable | QB hitter GSIS ID e.g. 00-0036932 | |
| qb_hit_2_player_id | stringnullable | Second QB hitter GSIS ID Values:00-003613000-003648000-003434400-003104000-003438500-003158300-003156500-003257400-003632100-0034251 | |
| receiver_id | bigintnullable | — | FK to players table e.g. 438 |
| receiver_player_id | stringnullable | Receiver GSIS ID e.g. 00-0033908 | |
| rusher_id | bigintnullable | — | FK to players table e.g. 943 |
| rusher_player_id | stringnullable | Rusher GSIS ID e.g. 00-0035700 | |
| sack_player_id | stringnullable | Sacker GSIS ID e.g. 00-0036914 | |
| safety_player_id | stringnullable | Safety scorer GSIS ID Values:00-003524800-0037251 | |
| solo_tackle_1_player_id | stringnullable | Solo tackler 1 GSIS ID e.g. 00-0034987 | |
| solo_tackle_2_player_id | stringnullable | Solo tackler 2 GSIS ID Values:00-003975300-0039032 | |
| stadium_id | integernullable | Stadium ID e.g. — (all-null in sample) | |
| tackle_for_loss_1_player_id | stringnullable | TFL player 1 GSIS ID e.g. 00-0034973 | |
| tackle_for_loss_2_player_id | stringnullable | TFL player 2 GSIS ID e.g. — (all-null in sample) | |
| tackle_with_assist_1_player_id | stringnullable | Tackle-assist player 1 GSIS ID e.g. 00-0031898 | |
| tackle_with_assist_2_player_id | stringnullable | Tackle-assist player 2 GSIS ID e.g. — (all-null in sample) | |
| td_player_id | stringnullable | TD scorer GSIS ID e.g. 00-0033906 | |
| aborted_play | boolean | — | Play was aborted Values:falsetrue |
| air_epa | decimalnullable | — | EPA from air yards e.g. -0.1479 |
| air_wpa | decimalnullable | — | WPA from air yards e.g. 0.0000 |
| air_yds | integernullable | — | Yards in air (perpendicular to LOS) e.g. 5 |
| assist_tackle | boolean | — | Assist tackle on play Values:falsetrue |
| assist_tackle_1_player_name | stringnullable | — | Assist tackler 1 name e.g. J.Jones |
| assist_tackle_1_team | stringnullable | — | Assist tackler 1 team e.g. IND |
| assist_tackle_2_player_name | stringnullable | — | Assist tackler 2 name e.g. L.Wilson |
| assist_tackle_2_team | stringnullable | — | Assist tackler 2 team e.g. LA |
| assist_tackle_3_player_name | stringnullable | — | Assist tackler 3 name e.g. — (all-null in sample) |
| assist_tackle_3_team | stringnullable | — | Assist tackler 3 team e.g. — (all-null in sample) |
| assist_tackle_4_player_name | stringnullable | — | Assist tackler 4 name e.g. — (all-null in sample) |
| assist_tackle_4_team | stringnullable | — | Assist tackler 4 team e.g. — (all-null in sample) |
| away_coach | stringnullable | — | Away team head coach e.g. Antonio Pierce |
| away_score | integernullable | — | Total away points e.g. 20 |
| away_team | stringnullable | — | Away team abbreviation e.g. LV |
| away_timeouts_remaining | integernullable | — | Away timeouts remaining e.g. 3 |
| away_wp | decimalnullable | — | Away team win probability e.g. 0.0001 |
| away_wp_post | decimalnullable | — | Away WP after play e.g. 0.0001 |
| blocked_player_name | stringnullable | — | Blocked kick player name Values:S.OlubiD.HardyC.GolstonI.Charles |
| comp_air_epa | decimalnullable | — | Completion air EPA e.g. 0.0000 |
| comp_air_wpa | decimalnullable | — | Completion air WPA e.g. 0.0000 |
| comp_yac_epa | decimalnullable | — | Completion YAC EPA e.g. 0.0000 |
| comp_yac_wpa | decimalnullable | — | Completion YAC WPA e.g. 0.0000 |
| complete_pass | boolean | — | Pass completed Values:falsetrue |
| cp | decimalnullable | — | Completion probability e.g. 0.8676 |
| cpoe | decimalnullable | — | Completion percentage over expected e.g. 13.2417 |
| def_wp | decimalnullable | — | Win probability for defense e.g. 0.4537 |
| defensive_extra_point_attempt | boolean | — | Defense extra point attempt e.g. false |
| defensive_extra_point_conv | boolean | — | Defense extra point success e.g. false |
| defensive_two_point_attempt | boolean | — | Defense two-point attempt e.g. false |
| defensive_two_point_conv | boolean | — | Defense two-point conversion success e.g. false |
| defteam | stringnullable | — | Defensive team abbreviation e.g. IND |
| defteam_score | integernullable | — | Defense team score at start e.g. 0 |
| defteam_score_post | integernullable | — | Defense team score at end e.g. 0 |
| defteam_timeouts_remaining | integernullable | — | Defensive team timeouts e.g. 3 |
| desc | stringnullable | — | Full play description text e.g. GAME |
| div_game | boolean | — | Division game Values:falsetrue |
| down | integernullable | — | Down (1-4) e.g. 1 |
| drive | integernullable | — | Drive number in game e.g. 6 |
| drive_end_transition | stringnullable | — | How drive ended Values:FIELD_GOALPUNTTOUCHDOWNDOWNSINTERCEPTIONEND_GAMEFUMBLEMISSED_FGEND_HALFBLOCKED_PUNTSAFETY |
| drive_end_yard_line | stringnullable | — | Yard line at drive end e.g. 50 |
| drive_ended_with_score | boolean | — | Drive resulted in score Values:truefalse |
| drive_first_downs | integernullable | — | First downs gained in drive e.g. 0 |
| drive_game_clock_end | stringnullable | — | Game clock at drive end e.g. 00:00 |
| drive_game_clock_start | stringnullable | — | Game clock at drive start e.g. 15:00 |
| drive_inside20 | boolean | — | Drive reached red zone Values:falsetrue |
| drive_play_count | integernullable | — | Number of plays in drive e.g. 3 |
| drive_play_id_ended | stringnullable | — | Last play_id of drive e.g. 4175 |
| drive_play_id_started | stringnullable | — | First play_id of drive e.g. 40 |
| drive_quarter_end | integernullable | — | Quarter when drive ended e.g. 2 |
| drive_quarter_start | integernullable | — | Quarter when drive started e.g. 3 |
| drive_real_start_time | stringnullable | — | Drive start time (real clock) e.g. 2024-09-07T03:15:55.057Z |
| drive_start_transition | stringnullable | — | How possession was obtained Values:KICKOFFPUNTINTERCEPTIONDOWNSFUMBLEMISSED_FGMUFFED_PUNTBLOCKED_PUNTMUFFED_KICKOFF |
| drive_start_yard_line | stringnullable | — | Yard line at drive start e.g. PHI 30 |
| drive_time_of_possession | stringnullable | — | Drive time of possession (mm:ss) e.g. 2:28 |
| drive_yds_penalized | integernullable | — | Penalty yards during drive e.g. 0 |
| end_clock_time | stringnullable | — | Game clock at play end e.g. 2024-09-15T17:30:53.207Z |
| end_yard_line | stringnullable | — | Yard line at play end e.g. — (all-null in sample) |
| ep | decimalnullable | — | Expected points before play e.g. 0.9324 |
| epa | decimalnullable | — | Expected points added e.g. 0.0000 |
| extra_point_attempt | boolean | — | Extra point attempt Values:falsetrue |
| extra_point_prob | decimalnullable | — | Extra point probability e.g. 0.0000 |
| extra_point_result | stringnullable | — | good, failed, blocked, safety, aborted Values:goodfailedblocked |
| fantasy | stringnullable | — | Fantasy designation e.g. B.Robinson |
| fantasy_player_name | stringnullable | — | Fantasy designation player name e.g. B.Robinson |
| fg_prob | decimalnullable | — | FG probability e.g. 0.0000 |
| field_goal_attempt | boolean | — | Field goal attempt Values:falsetrue |
| field_goal_result | stringnullable | — | made, missed, or blocked Values:mademissed |
| first_down | boolean | — | First down achieved Values:falsetrue |
| first_down_pass | boolean | — | Passing first down Values:falsetrue |
| first_down_penalty | boolean | — | First down via penalty Values:falsetrue |
| first_down_rush | boolean | — | Rushing first down Values:falsetrue |
| fixed_drive | integernullable | — | Manual drive number correction e.g. 1 |
| fixed_drive_result | stringnullable | — | Manual drive result correction Values:Field goalPuntTouchdownTurnoverTurnover on downsEnd of halfMissed field goalOpp touchdownSafety |
| forced_fumble_player_1_player_name | stringnullable | — | Forced fumble player 1 name e.g. M.Garrett |
| forced_fumble_player_1_team | stringnullable | — | Forced fumble team 1 e.g. KC |
| forced_fumble_player_2_player_name | stringnullable | — | Forced fumble player 2 name e.g. — (all-null in sample) |
| forced_fumble_player_2_team | stringnullable | — | Forced fumble team 2 e.g. — (all-null in sample) |
| fourth_down_converted | boolean | — | Fourth down conversion Values:falsetrue |
| fourth_down_failed | boolean | — | Fourth down failure Values:falsetrue |
| fumble | boolean | — | Fumble occurred Values:falsetrue |
| fumble_forced | boolean | — | Fumble was forced Values:falsetrue |
| fumble_lost | boolean | — | Fumble was lost Values:falsetrue |
| fumble_not_forced | boolean | — | Fumble was not forced Values:falsetrue |
| fumble_out_of_bounds | boolean | — | Fumble went OOB Values:falsetrue |
| fumble_recovery_1_player_name | stringnullable | — | Recovery player 1 name e.g. J.Tolbert |
| fumble_recovery_1_team | stringnullable | — | Recovery team 1 e.g. CHI |
| fumble_recovery_1_yds | integernullable | — | Recovery yards 1 e.g. 0 |
| fumble_recovery_2_player_name | stringnullable | — | Recovery player 2 name e.g. — (all-null in sample) |
| fumble_recovery_2_team | stringnullable | — | Recovery team 2 e.g. — (all-null in sample) |
| fumble_recovery_2_yds | integernullable | — | Recovery yards 2 e.g. — (all-null in sample) |
| fumbled_1_player_name | stringnullable | — | First fumbler name e.g. J.Burrow |
| fumbled_1_team | stringnullable | — | First fumbler team e.g. CIN |
| fumbled_2_player_name | stringnullable | — | Second fumbler name e.g. — (all-null in sample) |
| fumbled_2_team | stringnullable | — | Second fumbler team e.g. — (all-null in sample) |
| game_half | stringnullable | — | Half1, Half2, or Overtime Values:Half1Half2Overtime |
| game_seconds_remaining | integer | — | Seconds remaining in game e.g. 1800 |
| game_stadium | stringnullable | — | Game stadium name e.g. GEHA Field at Arrowhead Stadium |
| goal_to_go | boolean | — | Goal-to-go situation Values:falsetrue |
| half_sack_1_player_name | stringnullable | — | Half-sack player 1 name Values:K.WhiteT.SimpsonD.BucknerL.OnwuzurikeM.FoxM.JudonW.AndersonT.WhartonJ.PeevyO.OwehC.Granderson |
| half_sack_2_player_name | stringnullable | — | Half-sack player 2 name Values:J.MadubuikeD.OdeyingboM.DavenportK.MackJ.BentleyG.JarrettD.HunterM.DannaDj.JohnsonM.PierceC.YoungD.Ekuale |
| half_seconds_remaining | integer | — | Seconds remaining in half e.g. 1800 |
| home_coach | stringnullable | — | Home team head coach e.g. Nick Sirianni |
| home_opening_kickoff | boolean | — | Home team had opening kickoff Values:truefalse |
| home_score | integernullable | — | Total home points e.g. 26 |
| home_team | stringnullable | — | Home team abbreviation e.g. PHI |
| home_timeouts_remaining | integernullable | — | Home timeouts remaining e.g. 3 |
| home_wp | decimalnullable | — | Home team win probability e.g. 0.9999 |
| home_wp_post | decimalnullable | — | Home WP after play e.g. 0.9999 |
| incomplete_pass | boolean | — | Pass incomplete Values:falsetrue |
| interception | boolean | — | Interception indicator Values:falsetrue |
| interception_player_name | stringnullable | — | Interceptor name e.g. X.McKinney |
| jersey_number | integernullable | — | Primary player jersey e.g. 8 |
| kick_distance | integernullable | — | Kick distance in yards e.g. 65 |
| kicker_player_name | stringnullable | — | Kicker name e.g. B.Grupe |
| kickoff_attempt | boolean | — | Kickoff attempt Values:falsetrue |
| kickoff_downed | boolean | — | Kickoff downed e.g. false |
| kickoff_fair_catch | boolean | — | Kickoff fair catch Values:falsetrue |
| kickoff_in_endzone | boolean | — | Kickoff in endzone Values:falsetrue |
| kickoff_inside_twenty | boolean | — | Kickoff inside 20 Values:falsetrue |
| kickoff_out_of_bounds | boolean | — | Kickoff OOB Values:falsetrue |
| kickoff_returner_player_name | stringnullable | — | Kickoff returner name e.g. R.Blackshear |
| lateral_interception_player_name | stringnullable | — | Lateral after INT name e.g. — (all-null in sample) |
| lateral_kickoff_returner_player_name | stringnullable | — | Lateral kickoff returner name e.g. — (all-null in sample) |
| lateral_punt_returner_player_name | stringnullable | — | Lateral punt returner name e.g. — (all-null in sample) |
| lateral_receiver_player_name | stringnullable | — | Lateral receiver name (pass) e.g. M.Mims |
| lateral_receiving_yds | integernullable | — | Yards after lateral (pass) e.g. 2 |
| lateral_reception | boolean | — | Lateral on pass play Values:falsetrue |
| lateral_return | boolean | — | Lateral on return e.g. false |
| lateral_rush | boolean | — | Lateral on rush play Values:falsetrue |
| lateral_rusher_player_name | stringnullable | — | Lateral receiver name (rush) e.g. J.Hill |
| lateral_rushing_yds | integernullable | — | Yards after lateral (rush) e.g. 5 |
| lateral_sack_player_name | stringnullable | — | Lateral after sack name e.g. — (all-null in sample) |
| location | stringnullable | — | Home or Neutral Values:HomeNeutral |
| name | stringnullable | — | Primary player name (passer or rusher) e.g. L.Jackson |
| no_huddle | boolean | — | No-huddle offense Values:falsetrue |
| no_score_prob | decimalnullable | — | Probability of no score e.g. 0.0000 |
| opp_fg_prob | decimalnullable | — | Opponent FG probability e.g. 0.0000 |
| opp_safety_prob | decimalnullable | — | Opponent safety probability e.g. 0.0000 |
| opp_td_prob | decimalnullable | — | Opponent TD probability e.g. 0.0000 |
| order_sequence | decimalnullable | — | NFL play-ordering column e.g. 1.0000 |
| out_of_bounds | boolean | — | Ran/pushed/sacked out of bounds Values:falsetrue |
| own_kickoff_recovery | boolean | — | Own kickoff recovery e.g. false |
| own_kickoff_recovery_player_name | stringnullable | — | Own kickoff recovery player name e.g. — (all-null in sample) |
| own_kickoff_recovery_td | boolean | — | Own kickoff recovery TD e.g. false |
| pass | boolean | — | Pass play indicator Values:falsetrue |
| pass_attempt | boolean | — | Pass attempt (includes sacks) Values:falsetrue |
| pass_defense_1_player_name | stringnullable | — | Pass defense player 1 name e.g. D.Ward |
| pass_defense_2_player_name | stringnullable | — | Pass defense player 2 name Values:E.KendricksJ.PitreP.FordD.MuasauD.Flannigan-FowlesM.EmersonR.Spillane |
| pass_length | stringnullable | — | short or deep Values:shortdeep |
| pass_location | stringnullable | — | left, middle, or right Values:rightleftmiddle |
| pass_oe | decimalnullable | — | Dropback percent over expected e.g. 37.7849 |
| pass_touchdown | boolean | — | Passing touchdown Values:falsetrue |
| passer | stringnullable | — | Dropback player name (includes scrambles) e.g. D.Watson |
| passer_jersey_number | integernullable | — | Passer jersey number e.g. 8 |
| passer_player_name | stringnullable | — | Passer name e.g. D.Watson |
| passing_yds | integernullable | — | Official passing yards e.g. 5 |
| penalty | boolean | — | Penalty on play Values:falsetrue |
| penalty_player_name | stringnullable | — | Penalized player name e.g. P.Surtain |
| penalty_team | stringnullable | — | Penalized team e.g. CLE |
| penalty_type | stringnullable | — | Type of penalty e.g. Offensive Holding |
| penalty_yds | integernullable | — | Penalty yards e.g. 5 |
| play | boolean | — | Regular play (1) vs special event (0) Values:truefalse |
| play_clock | integernullable | — | Play clock at snap e.g. 0 |
| play_deleted | boolean | — | Play was deleted e.g. false |
| play_type | stringnullable | — | pass, run, punt, field_goal, kickoff, extra_point, qb_kneel, qb_spike, no_play Values:passrunno_playkickoffpuntfield_goalextra_pointqb_kneelqb_spike |
| play_type_nfl | stringnullable | — | NFL source play type Values:PASSRUSHKICK_OFFPENALTYTIMEOUTPUNTSACKFIELD_GOALXP_KICKEND_QUARTERINTERCEPTIONGAME_STARTEND_GAMEPAT2UNSPECIFIED |
| posteam | stringnullable | — | Possession team abbreviation e.g. CLE |
| posteam_score | integernullable | — | Possession team score at start e.g. 0 |
| posteam_score_post | integernullable | — | Possession team score at end e.g. 0 |
| posteam_timeouts_remaining | integernullable | — | Possession team timeouts e.g. 3 |
| posteam_type | stringnullable | — | home or away Values:homeaway |
| punt_attempt | boolean | — | Punt attempt Values:falsetrue |
| punt_blocked | boolean | — | Punt blocked Values:falsetrue |
| punt_downed | boolean | — | Punt downed Values:falsetrue |
| punt_fair_catch | boolean | — | Punt fair catch Values:falsetrue |
| punt_in_endzone | boolean | — | Punt in endzone e.g. false |
| punt_inside_twenty | boolean | — | Punt inside 20 Values:falsetrue |
| punt_out_of_bounds | boolean | — | Punt OOB Values:falsetrue |
| punt_returner_player_name | stringnullable | — | Punt returner name e.g. J.Jackson |
| punter_player_name | stringnullable | — | Punter name e.g. R.Dixon |
| qb_dropback | boolean | — | QB dropback (pass or scramble) Values:falsetrue |
| qb_epa | decimalnullable | — | QB EPA credit e.g. 0.0000 |
| qb_hit | boolean | — | QB was hit Values:falsetrue |
| qb_hit_1_player_name | stringnullable | — | QB hitter name e.g. K.White |
| qb_hit_2_player_name | stringnullable | — | Second QB hitter name Values:J.MadubuikeD.OdeyingboM.DavenportK.MackJ.BentleyG.JarrettD.HunterM.PierceC.YoungD.Ekuale |
| qb_kneel | boolean | — | QB kneel Values:falsetrue |
| qb_scramble | boolean | — | QB scramble Values:falsetrue |
| qb_spike | boolean | — | QB spike Values:falsetrue |
| quarter | integer | — | Quarter (1-4, 5=OT) e.g. 2 |
| quarter_end | boolean | — | Binary quarter-end marker Values:falsetrue |
| quarter_seconds_remaining | integer | — | Seconds remaining in quarter e.g. 900 |
| receiver | stringnullable | — | Targeted receiver name e.g. C.Kupp |
| receiver_jersey_number | integernullable | — | Receiver jersey number e.g. 1 |
| receiver_player_name | stringnullable | — | Receiver name e.g. C.Kupp |
| receiving_yds | integernullable | — | Official receiving yards e.g. 5 |
| replay_or_challenge | boolean | — | Replay/challenge occurred Values:falsetrue |
| replay_or_challenge_result | stringnullable | — | Replay result Values:reversedupheld |
| result | integernullable | — | Home score - Away score e.g. 6 |
| return_team | stringnullable | — | Returning team e.g. DEN |
| return_touchdown | boolean | — | Return touchdown Values:falsetrue |
| return_yds | integernullable | — | Return yards e.g. 0 |
| roof | stringnullable | — | dome, outdoors, closed, open Values:outdoorscloseddome |
| run_gap | stringnullable | — | end, guard, or tackle Values:endguardtackle |
| run_location | stringnullable | — | left, middle, or right Values:leftrightmiddle |
| rush | boolean | — | Rush play (no scrambles) Values:falsetrue |
| rush_attempt | boolean | — | Rushing play indicator Values:falsetrue |
| rush_touchdown | boolean | — | Rushing touchdown Values:falsetrue |
| rusher_jersey_number | integernullable | — | Rusher jersey number e.g. 4 |
| rusher_player_name | stringnullable | — | Rusher name e.g. B.Robinson |
| rushing_yds | integernullable | — | Official rushing yards e.g. 2 |
| sack | boolean | — | Sack indicator Values:falsetrue |
| sack_player_name | stringnullable | — | Sacker name e.g. G.Rousseau |
| safety | boolean | — | Safety scored Values:falsetrue |
| safety_player_name | stringnullable | — | Safety scorer name Values:Z.AllenA.Wright |
| safety_prob | decimalnullable | — | Safety probability e.g. 0.0000 |
| score_differential | integernullable | — | Score gap at play start e.g. 0 |
| score_differential_post | integernullable | — | Score gap at play end e.g. 0 |
| series | integernullable | — | Series counter within game e.g. 1 |
| series_result | stringnullable | — | First down, Touchdown, Punt, etc. Values:First downPuntField goalTouchdownTurnover on downsTurnoverQB kneelEnd of halfMissed field goalOpp touchdownSafety |
| series_success | boolean | — | Series resulted in first down or TD Values:truefalse |
| shotgun | boolean | — | Shotgun formation Values:truefalse |
| side_of_field | stringnullable | — | Team abbreviation whose side of field e.g. CAR |
| solo_tackle | boolean | — | Solo tackle on play Values:falsetrue |
| solo_tackle_1_player_name | stringnullable | — | Solo tackler 1 name e.g. J.Jones |
| solo_tackle_1_team | stringnullable | — | Solo tackler 1 team e.g. ATL |
| solo_tackle_2_player_name | stringnullable | — | Solo tackler 2 name Values:B.LimmerT.Spears |
| solo_tackle_2_team | stringnullable | — | Solo tackler 2 team Values:LATEN |
| sp | boolean | — | Scoring play indicator Values:falsetrue |
| special | boolean | — | Special teams indicator Values:falsetrue |
| special_teams_play | boolean | — | Special teams play indicator Values:falsetrue |
| spread_line | decimalnullable | — | Vegas spread line e.g. 6.5000 |
| st_play_type | stringnullable | — | Type of special teams play e.g. — (all-null in sample) |
| stadium | stringnullable | — | Stadium name e.g. GEHA Field at Arrowhead Stadium |
| start_time | stringnullable | — | Kickoff time (eastern) e.g. 9/8/24, 13:03:08 |
| success | booleannullable | — | Play success (based on down/distance) Values:falsetrue |
| surface | stringnullable | — | Playing surface type Values:grassfieldturfmatrixturfastroturfsportturfa_turf |
| tackle_for_loss_1_player_name | stringnullable | — | TFL player 1 name e.g. M.Crosby |
| tackle_for_loss_2_player_name | stringnullable | — | TFL player 2 name e.g. — (all-null in sample) |
| tackle_with_assist | boolean | — | Tackle with assistance Values:falsetrue |
| tackle_with_assist_1_player_name | stringnullable | — | Tackle-assist player 1 name e.g. A.Singleton |
| tackle_with_assist_1_team | stringnullable | — | Tackle-assist player 1 team e.g. IND |
| tackle_with_assist_2_player_name | stringnullable | — | Tackle-assist player 2 name e.g. — (all-null in sample) |
| tackle_with_assist_2_team | stringnullable | — | Tackle-assist player 2 team e.g. — (all-null in sample) |
| tackled_for_loss | boolean | — | Tackle for loss Values:falsetrue |
| td_player_name | stringnullable | — | TD scorer name e.g. A.Kamara |
| td_prob | decimalnullable | — | TD probability e.g. 0.0000 |
| td_team | stringnullable | — | Team scoring TD e.g. NO |
| temp | integernullable | — | Temperature e.g. 67 |
| third_down_converted | boolean | — | Third down conversion Values:falsetrue |
| third_down_failed | boolean | — | Third down failure Values:falsetrue |
| time | stringnullable | — | Game clock at play start (mm:ss) e.g. 15:00 |
| time_of_day | stringnullable | — | Play time in UTC e.g. 2024-09-08T19:40:41Z |
| timeout | boolean | — | Timeout called Values:falsetrue |
| timeout_team | stringnullable | — | Team calling timeout e.g. BAL |
| total | integernullable | — | Home score + Away score e.g. 41 |
| total_away_comp_air_epa | decimalnullable | — | Cumulative away completion air EPA e.g. 0.0000 |
| total_away_comp_air_wpa | decimalnullable | — | Cumulative away completion air WPA e.g. 0.0000 |
| total_away_comp_yac_epa | decimalnullable | — | Cumulative away completion YAC EPA e.g. 0.0000 |
| total_away_comp_yac_wpa | decimalnullable | — | Cumulative away completion YAC WPA e.g. 0.0000 |
| total_away_epa | decimalnullable | — | Cumulative away EPA e.g. 0.0000 |
| total_away_pass_epa | decimalnullable | — | Cumulative away passing EPA e.g. 0.0000 |
| total_away_pass_wpa | decimalnullable | — | Cumulative away passing WPA e.g. 0.0000 |
| total_away_raw_air_epa | decimalnullable | — | Cumulative away raw air EPA e.g. 0.0000 |
| total_away_raw_air_wpa | decimalnullable | — | Cumulative away raw air WPA e.g. 0.0000 |
| total_away_raw_yac_epa | decimalnullable | — | Cumulative away raw YAC EPA e.g. 0.0000 |
| total_away_raw_yac_wpa | decimalnullable | — | Cumulative away raw YAC WPA e.g. 0.0000 |
| total_away_rush_epa | decimalnullable | — | Cumulative away rushing EPA e.g. 0.0000 |
| total_away_rush_wpa | decimalnullable | — | Cumulative away rushing WPA e.g. 0.0000 |
| total_away_score | integernullable | — | Away score at play start e.g. 0 |
| total_home_comp_air_epa | decimalnullable | — | Cumulative home completion air EPA e.g. 0.0000 |
| total_home_comp_air_wpa | decimalnullable | — | Cumulative home completion air WPA e.g. 0.0000 |
| total_home_comp_yac_epa | decimalnullable | — | Cumulative home completion YAC EPA e.g. 0.0000 |
| total_home_comp_yac_wpa | decimalnullable | — | Cumulative home completion YAC WPA e.g. 0.0000 |
| total_home_epa | decimalnullable | — | Cumulative home EPA e.g. 0.0000 |
| total_home_pass_epa | decimalnullable | — | Cumulative home passing EPA e.g. 0.0000 |
| total_home_pass_wpa | decimalnullable | — | Cumulative home passing WPA e.g. 0.0000 |
| total_home_raw_air_epa | decimalnullable | — | Cumulative home raw air EPA e.g. 0.0000 |
| total_home_raw_air_wpa | decimalnullable | — | Cumulative home raw air WPA e.g. 0.0000 |
| total_home_raw_yac_epa | decimalnullable | — | Cumulative home raw YAC EPA e.g. 0.0000 |
| total_home_raw_yac_wpa | decimalnullable | — | Cumulative home raw YAC WPA e.g. 0.0000 |
| total_home_rush_epa | decimalnullable | — | Cumulative home rushing EPA e.g. 0.0000 |
| total_home_rush_wpa | decimalnullable | — | Cumulative home rushing WPA e.g. 0.0000 |
| total_home_score | integernullable | — | Home score at play start e.g. 0 |
| total_line | decimalnullable | — | Vegas total line e.g. 41.5000 |
| touchback | boolean | — | Touchback Values:falsetrue |
| touchdown | boolean | — | Touchdown scored Values:falsetrue |
| two_point_attempt | boolean | — | Two-point conversion attempt Values:falsetrue |
| two_point_conv_result | stringnullable | — | success, failure, safety, return Values:failuresuccess |
| two_point_conversion_prob | decimalnullable | — | Two-point conversion probability e.g. 0.0000 |
| vegas_home_wp | decimalnullable | — | Vegas home win probability e.g. 1.0000 |
| vegas_home_wpa | decimalnullable | — | Vegas home WPA e.g. 0.0000 |
| vegas_wp | decimalnullable | — | Vegas win probability e.g. 0.9999 |
| vegas_wpa | decimalnullable | — | Vegas-adjusted WPA e.g. 0.0000 |
| weather | stringnullable | — | Weather conditions description e.g. Temp: 63° F, Humidity: 87%, Wind: SE 4 mph |
| wind | integernullable | — | Wind speed (mph) e.g. 10 |
| wp | decimalnullable | — | Win probability for possession team e.g. 0.5463 |
| wpa | decimalnullable | — | Win probability added e.g. 0.0000 |
| xpass | decimalnullable | — | Dropback probability e.g. 0.9759 |
| xyac_epa | decimalnullable | — | Expected EPA after catch e.g. 0.2981 |
| xyac_fd | decimalnullable | — | First down probability (xYAC) e.g. 1.0000 |
| xyac_mean_yardage | decimalnullable | — | Average expected YAC e.g. 3.9685 |
| xyac_median_yardage | decimalnullable | — | Median expected YAC e.g. 2.0000 |
| xyac_success | decimalnullable | — | Positive EPA probability e.g. 1.0000 |
| yac_epa | decimalnullable | — | EPA from yards after catch e.g. 0.0000 |
| yac_wpa | decimalnullable | — | WPA from yards after catch e.g. 0.0000 |
| yard_line | integernullable | — | Yard line number (0-50) e.g. — (all-null in sample) |
| yardline_100 | integernullable | — | Yards from opponent endzone (0-100) e.g. 35 |
| yds_after_catch | integernullable | — | YAC yards e.g. 0 |
| yds_gained | integernullable | — | Yards gained on play e.g. 0 |
| ydsnet | integernullable | — | Total net yards on drive e.g. 70 |
| ydstogo | integernullable | — | Yards to first down/goal e.g. 10 |
| yrdln | stringnullable | — | Yard line string (e.g., "KC 25") e.g. MID 50 |
GET/api/v1/nfl/play_by_playsList play_by_plays for NFL
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game. Required — querying NFL play-by-play across all games is impractical (millions of rows).
possession_team_idquerybigintoptionalFilter by team in possession.
defensive_team_idquerybigintoptionalFilter by team on defense.
drive_idquerybigintoptionalFilter by drive.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/play_by_plays/{id}Get a single play_by_play by id
Parameters
idpathbigintrequiredPrimary 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_participations
nfl.play_participationsThe 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| game_id | bigint | — e.g. 61 | |
| play_id | string | — | Play identifier matching `play_by_plays.play_id` for the same game. e.g. 40 |
| possession_team_id | bigint | Team in possession on this play (FK to `teams`). e.g. 26 | |
| defenders_in_box | integernullable | — | Number of defenders within ~8 yards of the line of scrimmage at the snap. e.g. 6 |
| defense_coverage_type | stringnullable | — | Specific coverage scheme (e.g., `COVER_1`, `COVER_2_MAN`, `COVER_3`, `COVER_4`). Values:COVER_1COVER_2COVER_32_MANCOVER_4COVER_0COVER_6COMBOCOVER_9BLOWN |
| defense_man_zone_type | stringnullable | — | Man- vs. zone-coverage classification (`MAN`, `ZONE`). Values:MAN_COVERAGEZONE_COVERAGE |
| defense_personnel | stringnullable | — | Defensive personnel grouping (e.g., `4 DL, 2 LB, 5 DB`). e.g. 3 CB, 2 DE, 2 DT, 1 FS, 2 ILB, 1 SS |
| defense_players_gsis_ids | stringnullable | — | GSIS IDs of defensive players on the field for this play. e.g. 00-0033393,00-0039156,00-0038407,00-0034359,00-0036479,00-0… |
| n_defense | integernullable | — | Count of defensive players on the field (typically 11). e.g. 11 |
| n_offense | integernullable | — | Count of offensive players on the field (typically 11). e.g. 11 |
| ngs_air_yds | decimalnullable | — | Air yards traveled by the pass from the line of scrimmage to where the receiver caught/dropped it (Next Gen Stats). e.g. — (all-null in sample) |
| number_of_pass_rushers | integernullable | — | Number of defenders who rushed the passer on this play (Next Gen Stats). e.g. 0 |
| offense_formation | stringnullable | — | Offensive formation alignment (e.g., `SHOTGUN`, `SINGLEBACK`, `I_FORM`, `PISTOL`). Values:SHOTGUNUNDER CENTERPISTOL |
| offense_personnel | stringnullable | — | Offensive personnel grouping in `RB-TE-WR` shorthand (e.g., `1 RB, 2 TE, 2 WR` → `12 personnel`). e.g. 1 C, 2 G, 1 QB, 1 RB, 2 T, 1 TE, 3 WR |
| offense_players_gsis_ids | stringnullable | — | GSIS IDs of offensive players on the field for this play. e.g. 00-0036325,00-0036417,00-0036968,00-0037297,00-0039150,00-0… |
| players_on_play_gsis_ids | stringnullable | — | GSIS IDs of every player on the field for this play (comma-separated or JSON-encoded depending on source vintage). e.g. 00-0037758,00-0039000,00-0039821,00-0036552,00-0036325,00-0… |
| route | stringnullable | — | Route the targeted receiver ran (e.g., `GO`, `SLANT`, `OUT`, `POST`). Values:QUICK OUTHITCH/CURLSCREENIN/DIGGODEEP OUTSHALLOW CROSS/DRAGSLANTCORNERSWINGPOSTTEXAS/ANGLEWHEEL |
| time_to_throw | decimalnullable | — | Time from snap to pass release in seconds (Next Gen Stats). e.g. 2.3000 |
| was_pressure | booleannullable | — | True if the quarterback faced pass-rush pressure on this play. Values:falsetrue |
GET/api/v1/nfl/play_participationsList play_participations for NFL
Requires one of:
play_id or game_id — requests satisfying none of these return 400.Parameters
play_idquerystringoptionalFilter by play.
game_idquerybigintoptionalFilter to a single game.
possession_team_idquerybigintoptionalFilter by team in possession.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/play_participations/{id}Get a single play_participation by id
Parameters
idpathbigintrequiredPrimary 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_lookups
nfl.operator_team_lookupsHow 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| operator_id | bigint | Reference to main.operator entity e.g. 4 | |
| operator_team_id | string | External team ID from operator e.g. 28 | |
| team_id | bigint | Internal nfl.teams.id reference e.g. 32 | |
| abbreviation | stringnullable | — | Team abbreviation for reconciliation e.g. — (all-null in sample) |
| team_name | stringnullable | — | Team name for reconciliation e.g. Washington Commanders |
GET/api/v1/nfl/operator_team_lookupsList operator_team_lookups for NFL
Requires one of:
operator_id — requests satisfying none of these return 400.Parameters
operator_idquerybigintoptionalFilter by sportsbook / operator.
team_idquerybigintoptionalFilter by team.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/operator_team_lookups/{id}Get a single operator_team_lookup by id
Parameters
idpathbigintrequiredPrimary 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_stats
nfl.season_team_statsSeason 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| season_id | bigint | — e.g. 2025 | |
| team_id | bigint | — e.g. 1 | |
| completions | integer | — | — e.g. 0 |
| defensive_interceptions | integer | — | — e.g. 10 |
| defensive_sacks | decimal | — | Sacks recorded by this team's defense (half-sacks supported as decimals). e.g. 42.0000 |
| defensive_tds | integer | — | Touchdowns scored by the defense (interception return + fumble recovery TD); excludes special-teams returns. e.g. 1 |
| extra_pts_attempted | integer | — | — e.g. 40 |
| extra_pts_made | integer | — | — e.g. 33 |
| field_goals_attempted | integer | — | — e.g. 31 |
| field_goals_made | integer | — | — e.g. 34 |
| first_downs | integer | — | — e.g. 410 |
| fourth_down_attempts | integer | — | Total fourth-down plays attempted (excludes punts and field-goal attempts). e.g. 35 |
| fourth_down_conversions | integer | — | Fourth-down attempts converted to a first down or touchdown. e.g. 15 |
| fumbles_recovered | integer | — | — e.g. 7 |
| games_played | integer | — | — e.g. 20 |
| losses | integer | — | — e.g. 9 |
| pass_attempts | integer | — | — e.g. 0 |
| passing_tds | integer | — | — e.g. 0 |
| passing_yds | integer | — | — e.g. 4737 |
| pts_allowed | integer | — | — e.g. 439 |
| pts_scored | integer | — | — e.g. 481 |
| red_zone_attempts | integer | — | Possessions reaching the red zone (inside the opponent's 20-yard line). e.g. 0 |
| red_zone_conversions | integer | — | Red-zone trips that ended in a touchdown. e.g. 0 |
| rushing_tds | integer | — | — e.g. 0 |
| rushing_yds | integer | — | — e.g. 2136 |
| third_down_attempts | integer | — | Total third-down plays attempted. e.g. 264 |
| third_down_conversions | integer | — | Third-down attempts converted to a first down or touchdown. e.g. 99 |
| ties | integer | — | — e.g. 3 |
| total_yds | integer | — | — e.g. 5759 |
| turnovers | integer | — | Possessions lost via interception or fumble. e.g. 22 |
| wins | integer | — | — e.g. 8 |
GET/api/v1/nfl/season_team_statsList season_team_stats for NFL
Requires one of:
season_id — requests satisfying none of these return 400.Parameters
team_idquerybigintoptionalFilter by team.
season_idquerybigintoptionalFilter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/season_team_stats/{id}Get a single season_team_stat by id
Parameters
idpathbigintrequiredPrimary 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_stats
nfl.game_player_firstdown_statsPer-game player stats restricted to first-down plays — the same first-down production breakouts as the season aggregate, for each individual game.
▸Fields54
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| game_id | bigint | — e.g. 61 | |
| opponent_team_id | bigint | — e.g. 10 | |
| player_id | bigint | — e.g. 657 | |
| team_id | bigint | — e.g. 9 | |
| assisted_tackles | integer | — | Assisted tackles on first down e.g. 0 |
| defensive_tds | integer | — | Total defensive touchdowns on first down e.g. 0 |
| forced_fumbles | integer | — | Forced fumbles on first down e.g. 0 |
| fumble_recovery_tds | integer | — | Fumble recovery touchdowns on first down e.g. 0 |
| fumble_recovery_yds | integer | — | Fumble recovery yards on first down e.g. 0 |
| fumbles | integer | — | Fumbles on first down e.g. 0 |
| fumbles_lost | integer | — | Fumbles lost on first down e.g. 0 |
| fumbles_recovered | integer | — | Fumbles recovered on first down e.g. 0 |
| interception_tds | integer | — | Interception return touchdowns on first down e.g. 0 |
| interception_yds | integer | — | Interception return yards on first down e.g. 0 |
| interceptions | integer | — | Interceptions on first down e.g. 0 |
| is_home | boolean | — | True if player's team is the home team Values:truefalse |
| offensive_snaps | integer | — | Offensive snaps played on first down e.g. 0 |
| offensive_tds | integer | — | Total offensive touchdowns on first down e.g. 0 |
| passes_defended | integer | — | Passes defended on first down e.g. 0 |
| passing_attempts | integer | — | Passing attempts on first down e.g. 0 |
| passing_completion_percentage | decimal | — | Completion percentage on first down e.g. 0.0000 |
| passing_completions | integer | — | Completed passes on first down e.g. 0 |
| passing_interceptions | integer | — | Interceptions thrown on first down e.g. 0 |
| passing_long | integer | — | Longest pass completion on first down e.g. 0 |
| passing_rating | decimal | — | Passer rating on first down e.g. 0.0000 |
| passing_sack_yds | integer | — | Yards lost to sacks on first down e.g. 0 |
| passing_sacks | integer | — | Times sacked on first down e.g. 0 |
| passing_tds | integer | — | Passing touchdowns on first down e.g. 0 |
| passing_yds | integer | — | Passing yards on first down e.g. 0 |
| passing_yds_per_attempt | decimal | — | Passing yards per attempt on first down e.g. 0.0000 |
| passing_yds_per_completion | decimal | — | Passing yards per completion on first down e.g. 0.0000 |
| position | string | — | Player position at time of game Values:WRRBDEFTEQBOLLB |
| quarterback_hits | integer | — | QB hits on first down e.g. 0 |
| receiving_long | integer | — | Longest reception on first down e.g. 0 |
| receiving_tds | integer | — | Receiving touchdowns on first down e.g. 0 |
| receiving_yds | integer | — | Receiving yards on first down e.g. 0 |
| receiving_yds_per_reception | decimal | — | Yards per reception on first down e.g. 0.0000 |
| receiving_yds_per_target | decimal | — | Receiving yards per target on first down e.g. 0.0000 |
| reception_percentage | decimal | — | Reception percentage (receptions/targets) on first down e.g. 0.0000 |
| receptions | integer | — | Receptions on first down e.g. 0 |
| rushing_attempts | integer | — | Rushing attempts on first down e.g. 0 |
| rushing_long | integer | — | Longest rush on first down e.g. 0 |
| rushing_tds | integer | — | Rushing touchdowns on first down e.g. 0 |
| rushing_yds | integer | — | Rushing yards on first down e.g. 0 |
| rushing_yds_per_attempt | decimal | — | Rushing yards per attempt on first down e.g. 0.0000 |
| sacks | decimal | — | Sacks on first down (0.5 for half sacks) e.g. 0.0000 |
| solo_tackles | integer | — | Solo tackles on first down e.g. 0 |
| tackles_for_loss | integer | — | Tackles for loss on first down e.g. 0 |
| targets | integer | — | Times targeted on first down e.g. 0 |
| total_tds | integer | — | Total touchdowns scored on first down e.g. 0 |
| two_pt_pass_conversions | integer | — | — e.g. 0 |
| two_pt_reception_conversions | integer | — | — e.g. 0 |
| two_pt_rush_conversions | integer | — | — e.g. 0 |
GET/api/v1/nfl/game_player_firstdown_statsList game_player_firstdown_stats for NFL
Requires one of:
game_id or player_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
player_idquerybigintoptionalFilter to a single player.
team_idquerybigintoptionalFilter by team.
opponent_team_idquerybigintoptionalFilter by opponent team.
positionquerystringoptionalFilter by player position. Values: DB, DEF, DL, LB, OL, QB, RB, TE, WR.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/game_player_firstdown_stats/{id}Get a single game_player_firstdown_stat by id
Parameters
idpathbigintrequiredPrimary 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_passings
nfl.game_player_ngs_passingsNFL 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| game_id | bigint | — e.g. 121 | |
| player_gsis_id | string | — | GSIS ID for cross-reference e.g. 00-0039732 |
| player_id | bigint | — e.g. 2999 | |
| team_id | bigint | — e.g. 17 | |
| aggressiveness | decimalnullable | — | Percentage of throws into tight windows (defender within 1 yard) e.g. 20.0000 |
| attempts | integernullable | — | — e.g. 30 |
| avg_air_distance | decimalnullable | — | Average ball travel distance on all attempts e.g. 22.4754 |
| avg_air_yds_differential | decimalnullable | — | Difference between intended and completed air yards e.g. -0.8631 |
| avg_air_yds_to_sticks | decimalnullable | — | Average air yards relative to first down marker e.g. -5.2445 |
| avg_completed_air_yds | decimalnullable | — | Average air yards on completed passes e.g. 3.7511 |
| avg_intended_air_yds | decimalnullable | — | Average air yards on all pass attempts e.g. 6.0133 |
| avg_time_to_throw | decimalnullable | — | Average time from snap to throw (seconds) e.g. 2.6513 |
| completion_percentage | decimalnullable | — | — e.g. 66.6667 |
| completion_percentage_above_expectation | decimalnullable | — | CPOE - Actual completion % minus expected (positive = better than expected) e.g. -2.0683 |
| completions | integernullable | — | — e.g. 19 |
| expected_completion_percentage | decimalnullable | — | Model-predicted completion percentage based on throw difficulty e.g. 65.3373 |
| interceptions | integernullable | — | — e.g. 0 |
| max_air_distance | decimalnullable | — | Maximum ball travel distance e.g. 45.0275 |
| max_completed_air_distance | decimalnullable | — | Longest completed pass distance (ball travel) e.g. 35.6106 |
| pass_tds | integernullable | — | — e.g. 1 |
| pass_yds | integernullable | — | — e.g. 212 |
| passer_rating | decimalnullable | — | — e.g. 81.2500 |
| season | integer | — | — e.g. 2024 |
| season_type | string | — | REG, POST, etc. e.g. REG |
| week | integer | — | — e.g. 3 |
GET/api/v1/nfl/game_player_ngs_passingsList game_player_ngs_passings for NFL
Requires one of:
game_id or player_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
player_idquerybigintoptionalFilter to a single player.
team_idquerybigintoptionalFilter by team.
seasonqueryintegeroptionalFilter by season start year.
weekqueryintegeroptionalFilter by week of the season.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/game_player_ngs_passings/{id}Get a single game_player_ngs_passing by id
Parameters
idpathbigintrequiredPrimary 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_receivings
nfl.game_player_ngs_receivingsNFL 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| game_id | bigint | — e.g. 157 | |
| player_gsis_id | string | — | GSIS ID for cross-reference e.g. 00-0036900 |
| player_id | bigint | — e.g. 1446 | |
| team_id | bigint | — e.g. 9 | |
| avg_cushion | decimalnullable | — | Average distance from nearest defender at snap (yards) e.g. 5.5500 |
| avg_expected_yac | decimalnullable | — | Model-predicted YAC based on catch location/defenders e.g. 3.9326 |
| avg_intended_air_yds | decimalnullable | — | Average depth of targets e.g. 7.1300 |
| avg_separation | decimalnullable | — | Average distance from nearest defender at catch point (yards) e.g. 3.3793 |
| avg_yac | decimalnullable | — | Average yards after catch e.g. 0.8400 |
| avg_yac_above_expectation | decimalnullable | — | Actual YAC minus expected (positive = creates extra yards) e.g. 1.0087 |
| catch_percentage | decimalnullable | — | — e.g. 66.6667 |
| percent_share_of_intended_air_yds | decimalnullable | — | Percentage of team total intended air yards (deep target share) e.g. 23.4320 |
| rec_tds | integernullable | — | — e.g. 0 |
| receptions | integernullable | — | — e.g. 4 |
| season | integer | — | — e.g. 2024 |
| season_type | string | — | REG, POST, etc. e.g. REG |
| targets | integernullable | — | — e.g. 5 |
| week | integer | — | — e.g. 3 |
| yards | integernullable | — | — e.g. 30 |
GET/api/v1/nfl/game_player_ngs_receivingsList game_player_ngs_receivings for NFL
Requires one of:
game_id or player_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
player_idquerybigintoptionalFilter to a single player.
team_idquerybigintoptionalFilter by team.
seasonqueryintegeroptionalFilter by season start year.
weekqueryintegeroptionalFilter by week of the season.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/game_player_ngs_receivings/{id}Get a single game_player_ngs_receiving by id
Parameters
idpathbigintrequiredPrimary 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_rushings
nfl.game_player_ngs_rushingsNFL 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| game_id | bigint | — e.g. 4904 | |
| player_gsis_id | string | — | GSIS ID for cross-reference e.g. 00-0037840 |
| player_id | bigint | — e.g. 1927 | |
| team_id | bigint | — e.g. 11 | |
| avg_rush_yds | decimalnullable | — | — e.g. 4.0000 |
| avg_time_to_los | decimalnullable | — | Average time to reach line of scrimmage (seconds) e.g. 2.8227 |
| efficiency | decimalnullable | — | Distance traveled per rushing yard gained (lower = more efficient) e.g. 3.4002 |
| expected_rush_yds | decimalnullable | — | Model-predicted rushing yards based on blocking/defense e.g. 47.4790 |
| percent_attempts_gte_eight_defenders | decimalnullable | — | Percentage of rushes facing 8+ defenders in box e.g. 0.0000 |
| rush_attempts | integernullable | — | — e.g. 12 |
| rush_pct_over_expected | decimalnullable | — | RYOE as percentage over expected e.g. 0.5000 |
| rush_tds | integernullable | — | — e.g. 0 |
| rush_yds | integernullable | — | — e.g. 44 |
| rush_yds_over_expected | decimalnullable | — | RYOE - Actual yards minus expected (positive = better) e.g. 35.5210 |
| rush_yds_over_expected_per_att | decimalnullable | — | RYOE per attempt e.g. 0.0416 |
| season | integer | — | — e.g. 2025 |
| season_type | string | — | REG, POST, etc. e.g. REG |
| week | integer | — | — e.g. 4 |
GET/api/v1/nfl/game_player_ngs_rushingsList game_player_ngs_rushings for NFL
Requires one of:
game_id or player_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
player_idquerybigintoptionalFilter to a single player.
team_idquerybigintoptionalFilter by team.
seasonqueryintegeroptionalFilter by season start year.
weekqueryintegeroptionalFilter by week of the season.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/game_player_ngs_rushings/{id}Get a single game_player_ngs_rushing by id
Parameters
idpathbigintrequiredPrimary 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_advstats
nfl.game_player_pfr_advstatsPer-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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| game_id | bigint | — e.g. 57 | |
| opponent_team_id | bigint | Opposing team in this matchup (FK to `teams`). e.g. 10 | |
| player_id | bigint | — e.g. 657 | |
| team_id | bigint | — e.g. 10 | |
| carries | integernullable | — | Rushing attempts. e.g. 0 |
| def_adot | decimalnullable | — | Average depth of target (yards) when this defender was in coverage. e.g. 0.0000 |
| def_air_yds_completed | integernullable | — | Air yards completed on receptions allowed. e.g. 0 |
| def_completion_pct | decimalnullable | — | Completion percentage allowed (0.0-100.0). e.g. 0.0000 |
| def_completions_allowed | integernullable | — | Receptions allowed in coverage. e.g. 0 |
| def_ints | integernullable | — | Interceptions made by this defender in coverage. e.g. 0 |
| def_missed_tackle_pct | decimalnullable | — | Missed-tackle rate on tackle opportunities (0.0-100.0). e.g. 0.0000 |
| def_missed_tackles | integernullable | — | Tackle attempts missed by this defender. e.g. 0 |
| def_passer_rating_allowed | decimalnullable | — | Passer rating allowed when targeted (0-158.3). e.g. 0.0000 |
| def_pressures | integernullable | — | Total pressures generated (hurries + hits + sacks). e.g. 0 |
| def_receiving_td_allowed | integernullable | — | Receiving touchdowns allowed in coverage. e.g. 0 |
| def_sacks | decimalnullable | — | Sacks recorded (half-sacks supported as decimals). e.g. 0.0000 |
| def_tackles_combined | integernullable | — | Combined tackles (solo + assisted). e.g. 0 |
| def_targets | integernullable | — | Pass targets thrown at this defender's coverage assignment. e.g. 0 |
| def_times_blitzed | integernullable | — | Pass-rushing snaps as a blitzer. e.g. 0 |
| def_times_hitqb | integernullable | — | QB hits generated as a pass rusher. e.g. 0 |
| def_times_hurried | integernullable | — | Hurries generated as a pass rusher. e.g. 0 |
| def_yds_after_catch | integernullable | — | Yards-after-catch allowed in coverage. e.g. 0 |
| def_yds_allowed | integernullable | — | Receiving yards allowed in coverage. e.g. 0 |
| def_yds_allowed_per_cmp | decimalnullable | — | Yards allowed per reception. e.g. 0.0000 |
| def_yds_allowed_per_tgt | decimalnullable | — | Yards allowed per target. e.g. 0.0000 |
| passing_bad_throw_pct | decimalnullable | — | Bad-throw rate on pass attempts (0.0-100.0). e.g. 0.0000 |
| passing_bad_throws | integernullable | — | Pass attempts charged as bad throws by PFR scoring. e.g. 0 |
| passing_drop_pct | decimalnullable | — | Drop rate on catchable passes (0.0-100.0). e.g. 0.0000 |
| passing_drops | integernullable | — | Pass attempts dropped by the receiver (charged to the QB's catchable-target count). e.g. 0 |
| receiving_broken_tackles | integernullable | — | Tackles the receiver broke on receiving plays. e.g. 0 |
| receiving_drop | integernullable | — | Drops charged to this receiver. e.g. 0 |
| receiving_drop_pct | decimalnullable | — | Receiver drop rate on catchable targets (0.0-100.0). e.g. 0.0000 |
| receiving_int | integernullable | — | Interceptions thrown when this player was the target. e.g. 0 |
| receiving_rat | decimalnullable | — | Passer rating generated when targeted (0-158.3). e.g. 0.0000 |
| rushing_broken_tackles | integernullable | — | Tackles the runner broke on rushing plays. e.g. 0 |
| rushing_yds_after_contact | integernullable | — | Total rushing yards gained after first contact. e.g. 0 |
| rushing_yds_after_contact_avg | decimalnullable | — | Yards after contact averaged per rush. e.g. 0.0000 |
| rushing_yds_before_contact | integernullable | — | Total rushing yards gained before first contact. e.g. 0 |
| rushing_yds_before_contact_avg | decimalnullable | — | Yards before contact averaged per rush. e.g. 0.0000 |
| times_blitzed | integernullable | — | Dropbacks the QB faced a blitz. e.g. 0 |
| times_hit | integernullable | — | QB hits (defender contacted the QB on the throw). e.g. 0 |
| times_hurried | integernullable | — | Dropbacks the QB was hurried but not pressured. e.g. 0 |
| times_pressured | integernullable | — | Total pressures faced (sum of hurries/hits/sacks-allowed indicators). e.g. 0 |
| times_pressured_pct | decimalnullable | — | Pressure rate per dropback (0.0-100.0). e.g. 0.0000 |
| times_sacked | integernullable | — | Sacks taken by this QB. e.g. 0 |
GET/api/v1/nfl/game_player_pfr_advstatsList game_player_pfr_advstats for NFL
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
player_idquerybigintoptionalFilter to a single player.
team_idquerybigintoptionalFilter by team.
opponent_team_idquerybigintoptionalFilter by opponent team.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/game_player_pfr_advstats/{id}Get a single game_player_pfr_advstat by id
Parameters
idpathbigintrequiredPrimary 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_stats
nfl.game_player_redzone_statsPer-game player stats restricted to red-zone plays — the same red-zone breakouts as the season aggregate, for each individual game.
▸Fields54
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| game_id | bigint | — e.g. 95 | |
| opponent_team_id | bigint | — e.g. 16 | |
| player_id | bigint | — e.g. 657 | |
| team_id | bigint | — e.g. 16 | |
| assisted_tackles | integer | — | Assisted tackles in red zone e.g. 0 |
| defensive_tds | integer | — | Total defensive touchdowns in red zone e.g. 0 |
| forced_fumbles | integer | — | Forced fumbles in red zone e.g. 0 |
| fumble_recovery_tds | integer | — | Fumble recovery touchdowns in red zone e.g. 0 |
| fumble_recovery_yds | integer | — | Fumble recovery yards in red zone e.g. 0 |
| fumbles | integer | — | Fumbles in the red zone e.g. 0 |
| fumbles_lost | integer | — | Fumbles lost in the red zone e.g. 0 |
| fumbles_recovered | integer | — | Fumbles recovered in red zone e.g. 0 |
| interception_tds | integer | — | Interception return touchdowns in red zone e.g. 0 |
| interception_yds | integer | — | Interception return yards in red zone e.g. 0 |
| interceptions | integer | — | Interceptions in red zone e.g. 0 |
| is_home | boolean | — | True if player's team is the home team Values:falsetrue |
| offensive_snaps | integer | — | Offensive snaps played in red zone situations e.g. 0 |
| offensive_tds | integer | — | Total offensive touchdowns in the red zone e.g. 0 |
| passes_defended | integer | — | Passes defended in red zone e.g. 0 |
| passing_attempts | integer | — | Passing attempts in the red zone e.g. 0 |
| passing_completion_percentage | decimal | — | Completion percentage in the red zone e.g. 0.0000 |
| passing_completions | integer | — | Completed passes in the red zone e.g. 0 |
| passing_interceptions | integer | — | Interceptions thrown in the red zone e.g. 0 |
| passing_long | integer | — | Longest pass completion in the red zone e.g. 0 |
| passing_rating | decimal | — | Passer rating in the red zone e.g. 0.0000 |
| passing_sack_yds | integer | — | Yards lost to sacks in the red zone e.g. 0 |
| passing_sacks | integer | — | Times sacked in the red zone e.g. 0 |
| passing_tds | integer | — | Passing touchdowns in the red zone e.g. 0 |
| passing_yds | integer | — | Passing yards in the red zone e.g. 0 |
| passing_yds_per_attempt | decimal | — | Passing yards per attempt in the red zone e.g. 0.0000 |
| passing_yds_per_completion | decimal | — | Passing yards per completion in the red zone e.g. 0.0000 |
| position | string | — | Player position at time of game Values:DEFWRRBQBTEOLPLBDL |
| quarterback_hits | integer | — | QB hits in red zone e.g. 0 |
| receiving_long | integer | — | Longest reception in the red zone e.g. 0 |
| receiving_tds | integer | — | Receiving touchdowns in the red zone e.g. 0 |
| receiving_yds | integer | — | Receiving yards in the red zone e.g. 0 |
| receiving_yds_per_reception | decimal | — | Yards per reception in the red zone e.g. 0.0000 |
| receiving_yds_per_target | decimal | — | Receiving yards per target in the red zone e.g. 0.0000 |
| reception_percentage | decimal | — | Reception percentage (receptions/targets) in the red zone e.g. 0.0000 |
| receptions | integer | — | Receptions in the red zone e.g. 0 |
| rushing_attempts | integer | — | Rushing attempts in the red zone e.g. 0 |
| rushing_long | integer | — | Longest rush in the red zone e.g. 0 |
| rushing_tds | integer | — | Rushing touchdowns in the red zone e.g. 0 |
| rushing_yds | integer | — | Rushing yards in the red zone e.g. 0 |
| rushing_yds_per_attempt | decimal | — | Rushing yards per attempt in the red zone e.g. 0.0000 |
| sacks | decimal | — | Sacks in red zone (0.5 for half sacks) e.g. 0.0000 |
| solo_tackles | integer | — | Solo tackles in red zone e.g. 0 |
| tackles_for_loss | integer | — | Tackles for loss in red zone e.g. 0 |
| targets | integer | — | Times targeted in the red zone e.g. 0 |
| total_tds | integer | — | Total touchdowns scored in the red zone e.g. 0 |
| two_pt_pass_conversions | integer | — | Successful two-point conversion passes in the red zone e.g. 0 |
| two_pt_reception_conversions | integer | — | Successful two-point conversion receptions in the red zone e.g. 0 |
| two_pt_rush_conversions | integer | — | Successful two-point conversion runs in the red zone e.g. 0 |
GET/api/v1/nfl/game_player_redzone_statsList game_player_redzone_stats for NFL
Requires one of:
game_id or player_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
player_idquerybigintoptionalFilter to a single player.
team_idquerybigintoptionalFilter by team.
opponent_team_idquerybigintoptionalFilter by opponent team.
positionquerystringoptionalFilter by player position. Values: DB, DEF, DL, K, LB, OL, P, QB, RB, TE, WR.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/game_player_redzone_stats/{id}Get a single game_player_redzone_stat by id
Parameters
idpathbigintrequiredPrimary 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_stats
nfl.game_player_statsEach NFL player's stat line for each game — every passing, rushing, receiving, defensive, special-teams, and scoring statistic recorded that day.
▸Fields142
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| game_id | bigint | — e.g. 90 | |
| opponent_team_id | bigint | — e.g. 10 | |
| player_id | bigint | — e.g. 298 | |
| team_id | bigint | — e.g. 10 | |
| air_yds_share | decimal | — | Percentage of team air yards e.g. 0.0000 |
| assisted_tackles | integernullable | — | Assisted tackles e.g. 0 |
| blocked_kick_return_tds | integernullable | — | Blocked kick return touchdowns e.g. 0 |
| blocked_kick_return_yds | integernullable | — | Blocked kick return yards e.g. 0 |
| blocked_kicks | integernullable | — | Blocked kicks (FG, XP, punts) e.g. 0 |
| completions | integer | — | — e.g. 0 |
| dakota | decimalnullable | — | DAKOTA: adjusted completion % + EPA metric e.g. 0.1798 |
| data_source | stringnullable | — | Data source (nflverse, nfl_api, sportsdata) Values:nflversepbp_only |
| defensive_interceptions | integernullable | — | Defensive interceptions e.g. 0 |
| defensive_sack_yds | integernullable | — | Yards lost on defensive sacks e.g. 0 |
| defensive_sacks | decimalnullable | — | Defensive sacks (can be half sacks) e.g. 0.0000 |
| defensive_snaps | integernullable | — | Defensive snaps played e.g. 0 |
| defensive_tds | integernullable | — | Total defensive touchdowns (INT + fumble return TDs) e.g. 0 |
| defensive_team_snaps | integernullable | — | Total team defensive snaps (for calculating snap %) e.g. 1 |
| depth_order | integernullable | — | Depth order within position (1=starter, 2=backup, etc.) - joined from depth charts e.g. 1 |
| depth_position | stringnullable | — | Depth chart position (QB1, RB2, etc.) - joined from depth charts e.g. WR |
| extra_pts_attempted | integernullable | — | Extra points attempted e.g. 0 |
| extra_pts_had_blocked | integernullable | — | Extra points blocked by opponent e.g. 0 |
| extra_pts_made | integernullable | — | Extra points made e.g. 0 |
| fantasy_pts | decimal | — | Standard fantasy points (nflverse calculation) e.g. 0.0000 |
| fantasy_pts_ppr | decimal | — | PPR fantasy points (nflverse calculation) e.g. 0.0000 |
| field_goal_percentage | decimalnullable | — | Field goal percentage e.g. — (all-null in sample) |
| field_goal_return_tds | integernullable | — | Field goal return touchdowns e.g. — (all-null in sample) |
| field_goal_return_yds | integernullable | — | Field goal return yards (missed FG returns) e.g. — (all-null in sample) |
| field_goals_attempted | integernullable | — | Field goals attempted e.g. 0 |
| field_goals_had_blocked | integernullable | — | Field goals blocked by opponent e.g. 0 |
| field_goals_longest | integernullable | — | Longest field goal made (yards) e.g. — (all-null in sample) |
| field_goals_made | integernullable | — | Field goals made e.g. 0 |
| field_goals_made_0_19 | integernullable | — | Field goals made 0-19 yards e.g. 0 |
| field_goals_made_20_29 | integernullable | — | Field goals made 20-29 yards e.g. 0 |
| field_goals_made_30_39 | integernullable | — | Field goals made 30-39 yards e.g. 0 |
| field_goals_made_40_49 | integernullable | — | Field goals made 40-49 yards e.g. 0 |
| field_goals_made_50_plus | integernullable | — | Field goals made 50+ yards e.g. 0 |
| forced_fumbles | integernullable | — | Forced fumbles e.g. 0 |
| fumble_return_tds | integernullable | — | Fumble return touchdowns e.g. 0 |
| fumble_return_yds | integernullable | — | Fumble return yards e.g. 0 |
| fumbles_out_of_bounds | integernullable | — | Fumbles out of bounds e.g. 1 |
| fumbles_own_recoveries | integernullable | — | Own fumbles recovered e.g. 1 |
| fumbles_recovered | integernullable | — | Fumbles recovered e.g. 0 |
| humidity | integernullable | — | Humidity percentage e.g. — (all-null in sample) |
| interception_return_tds | integernullable | — | Interception return touchdowns e.g. 0 |
| interception_return_yds | integernullable | — | Interception return yards e.g. 0 |
| interceptions_thrown | integer | — | — e.g. 0 |
| is_home | boolean | — | True if player's team is the home team Values:falsetrue |
| kick_return_avg | floatnullable | — | Kick return average (yards per return) e.g. 280 |
| kick_return_fair_catches | integernullable | — | Fair catches on kick returns e.g. 0 |
| kick_return_fumbles | integernullable | — | Fumbles on kick returns e.g. 0 |
| kick_return_fumbles_lost | integernullable | — | Fumbles lost on kick returns e.g. 0 |
| kick_return_long | integernullable | — | Longest kick return (yards) e.g. 29 |
| kick_return_tds | integernullable | — | Kick return touchdowns e.g. 0 |
| kick_return_yds | integernullable | — | Total kick return yards e.g. 0 |
| kick_returns | integernullable | — | Number of kick returns e.g. 0 |
| misc_assisted_tackles | integernullable | — | Miscellaneous assisted tackles e.g. — (all-null in sample) |
| misc_fumbles_forced | integernullable | — | Miscellaneous fumbles forced e.g. — (all-null in sample) |
| misc_fumbles_recovered | integernullable | — | Miscellaneous fumbles recovered e.g. — (all-null in sample) |
| misc_solo_tackles | integernullable | — | Miscellaneous solo tackles e.g. — (all-null in sample) |
| offensive_snaps | integernullable | — | Offensive snaps played e.g. 14 |
| offensive_team_snaps | integernullable | — | Total team offensive snaps (for calculating snap %) e.g. 64 |
| pacr | decimalnullable | — | Passer air conversion ratio e.g. 0.0000 |
| pass_attempts | integer | — | — e.g. 0 |
| passes_defended | integernullable | — | Passes defended e.g. 0 |
| passing_2pt_conversions | integer | — | — e.g. 0 |
| passing_air_yds | integer | — | — e.g. 0 |
| passing_completion_percentage | decimalnullable | — | Completion percentage e.g. 10.0000 |
| passing_epa | decimal | — | Expected points added from passing e.g. 0.0000 |
| passing_first_downs | integer | — | — e.g. 0 |
| passing_long | integernullable | — | Longest pass completion (yards) e.g. 25 |
| passing_rating | decimalnullable | — | Passer rating e.g. 39.5833 |
| passing_tds | integer | — | — e.g. 0 |
| passing_yds | integer | — | — e.g. 0 |
| passing_yds_after_catch | integer | — | — e.g. 0 |
| playing_surface | stringnullable | — | Playing surface type (grass, turf, etc.) e.g. — (all-null in sample) |
| position | string | — | Player position at time of game Values:WRRBTEQBDBPOLDEFLBDL |
| position_group | string | — | Position group (QB, RB, WR, TE, etc.) Values:WRRBTEQBDBSPECOLDEFLBDL |
| punt_average | decimalnullable | — | Punt average (yards) e.g. 510.0000 |
| punt_inside_20 | integernullable | — | Punts inside 20 yard line e.g. 0 |
| punt_long | integernullable | — | Longest punt (yards) e.g. 60 |
| punt_net_average | floatnullable | — | Net punt average (gross - return yards) e.g. — (all-null in sample) |
| punt_net_yds | integernullable | — | Net punt yards (gross - return yards) e.g. — (all-null in sample) |
| punt_return_avg | floatnullable | — | Punt return average (yards per return) e.g. 100 |
| punt_return_fair_catches | integernullable | — | Fair catches on punt returns e.g. 0 |
| punt_return_fumbles | integernullable | — | Fumbles on punt returns (includes muffs) e.g. 0 |
| punt_return_fumbles_lost | integernullable | — | Fumbles lost on punt returns e.g. 0 |
| punt_return_long | integernullable | — | Longest punt return (yards) e.g. 10 |
| punt_return_tds | integernullable | — | Punt return touchdowns e.g. 0 |
| punt_return_yds | integernullable | — | Total punt return yards e.g. 0 |
| punt_returns | integernullable | — | Number of punt returns e.g. 0 |
| punt_touchbacks | integernullable | — | Punt touchbacks e.g. 0 |
| punt_yds | integernullable | — | Total punt yards e.g. 0 |
| punts | integernullable | — | Number of punts e.g. 0 |
| punts_had_blocked | integernullable | — | Punts blocked by opponent e.g. 0 |
| quarterback_hits | integernullable | — | Quarterback hits e.g. 0 |
| racr | decimalnullable | — | Receiver air conversion ratio e.g. 0.0000 |
| receiving_2pt_conversions | integer | — | — e.g. 0 |
| receiving_air_yds | integer | — | — e.g. 0 |
| receiving_epa | decimal | — | Expected points added from receiving e.g. 0.0000 |
| receiving_first_downs | integer | — | — e.g. 0 |
| receiving_fumbles | integer | — | — e.g. 0 |
| receiving_fumbles_lost | integer | — | — e.g. 0 |
| receiving_long | integernullable | — | Longest reception (yards) e.g. 9 |
| receiving_tds | integer | — | — e.g. 0 |
| receiving_yds | integer | — | — e.g. 0 |
| receiving_yds_after_catch | integer | — | — e.g. 0 |
| receiving_yds_per_reception | decimalnullable | — | Yards per reception e.g. 50.0000 |
| reception_percentage | decimalnullable | — | Reception percentage (receptions/targets) e.g. 10.0000 |
| receptions | integer | — | — e.g. 0 |
| rushing_2pt_conversions | integer | — | — e.g. 0 |
| rushing_attempts | integer | — | — e.g. 0 |
| rushing_epa | decimal | — | Expected points added from rushing e.g. 0.0000 |
| rushing_first_downs | integer | — | — e.g. 0 |
| rushing_fumbles | integer | — | — e.g. 0 |
| rushing_fumbles_lost | integer | — | — e.g. 0 |
| rushing_long | integernullable | — | Longest rush (yards) e.g. 6 |
| rushing_tds | integer | — | — e.g. 0 |
| rushing_yds | integer | — | — e.g. 0 |
| rushing_yds_per_attempt | decimalnullable | — | Rushing yards per attempt e.g. 30.0000 |
| sack_fumbles | integer | — | — e.g. 0 |
| sack_fumbles_lost | integer | — | — e.g. 0 |
| sack_yds | integer | — | — e.g. 0 |
| sacks_allowed | integer | — | — e.g. 0 |
| safeties | integernullable | — | Safeties e.g. 0 |
| solo_tackles | integernullable | — | Solo tackles e.g. 0 |
| special_teams_assisted_tackles | integernullable | — | Assisted tackles on special teams e.g. 0 |
| special_teams_fumbles_forced | integernullable | — | Fumbles forced on special teams e.g. 0 |
| special_teams_fumbles_recovered | integernullable | — | Fumbles recovered on special teams e.g. 0 |
| special_teams_snaps | integernullable | — | Special teams snaps played e.g. 0 |
| special_teams_solo_tackles | integernullable | — | Solo tackles on special teams e.g. 0 |
| special_teams_tds | integer | — | — e.g. 0 |
| special_teams_team_snaps | integernullable | — | Total team special teams snaps (for calculating snap %) e.g. 13 |
| stadium | stringnullable | — | Stadium name e.g. — (all-null in sample) |
| tackles_for_loss | integernullable | — | Tackles for loss e.g. 0 |
| target_share | decimal | — | Percentage of team targets e.g. 0.0000 |
| targets | integer | — | — e.g. 0 |
| temperature | integernullable | — | Game temperature (Fahrenheit) e.g. — (all-null in sample) |
| two_pt_returns | integernullable | — | Two-point conversion returns (defensive) e.g. — (all-null in sample) |
| wind_speed | integernullable | — | Wind speed (mph) e.g. — (all-null in sample) |
| wopr | decimalnullable | — | Weighted opportunity rating e.g. 0.0787 |
GET/api/v1/nfl/game_player_statsList game_player_stats for NFL
Requires one of:
game_id or player_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
player_idquerybigintoptionalFilter to a single player.
team_idquerybigintoptionalFilter by team.
opponent_team_idquerybigintoptionalFilter by opponent team.
positionquerystringoptionalFilter by player position. Values: DB, DEF, DL, K, LB, LS, OL, P, QB, RB, TE, WR.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/game_player_stats/{id}Get a single game_player_stat by id
Parameters
idpathbigintrequiredPrimary 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_stats
nfl.game_player_thirddown_statsPer-game player stats restricted to third-down plays — the same third-down breakouts as the season aggregate, for each individual game.
▸Fields54
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| game_id | bigint | — e.g. 60 | |
| opponent_team_id | bigint | — e.g. 8 | |
| player_id | bigint | — e.g. 657 | |
| team_id | bigint | — e.g. 10 | |
| assisted_tackles | integer | — | Assisted tackles on third down e.g. 0 |
| defensive_tds | integer | — | Total defensive touchdowns on third down e.g. 0 |
| forced_fumbles | integer | — | Forced fumbles on third down e.g. 0 |
| fumble_recovery_tds | integer | — | Fumble recovery touchdowns on third down e.g. 0 |
| fumble_recovery_yds | integer | — | Fumble recovery yards on third down e.g. 0 |
| fumbles | integer | — | Fumbles on third down e.g. 0 |
| fumbles_lost | integer | — | Fumbles lost on third down e.g. 0 |
| fumbles_recovered | integer | — | Fumbles recovered on third down e.g. 0 |
| interception_tds | integer | — | Interception return touchdowns on third down e.g. 0 |
| interception_yds | integer | — | Interception return yards on third down e.g. 0 |
| interceptions | integer | — | Interceptions on third down e.g. 0 |
| is_home | boolean | — | True if player's team is the home team Values:falsetrue |
| offensive_snaps | integer | — | Offensive snaps played on third down e.g. 0 |
| offensive_tds | integer | — | Total offensive touchdowns on third down e.g. 0 |
| passes_defended | integer | — | Passes defended on third down e.g. 0 |
| passing_attempts | integer | — | Passing attempts on third down e.g. 0 |
| passing_completion_percentage | decimal | — | Completion percentage on third down e.g. 0.0000 |
| passing_completions | integer | — | Completed passes on third down e.g. 0 |
| passing_interceptions | integer | — | Interceptions thrown on third down e.g. 0 |
| passing_long | integer | — | Longest pass completion on third down e.g. 0 |
| passing_rating | decimal | — | Passer rating on third down e.g. 0.0000 |
| passing_sack_yds | integer | — | Yards lost to sacks on third down e.g. 0 |
| passing_sacks | integer | — | Times sacked on third down e.g. 0 |
| passing_tds | integer | — | Passing touchdowns on third down e.g. 0 |
| passing_yds | integer | — | Passing yards on third down e.g. 0 |
| passing_yds_per_attempt | decimal | — | Passing yards per attempt on third down e.g. 0.0000 |
| passing_yds_per_completion | decimal | — | Passing yards per completion on third down e.g. 0.0000 |
| position | string | — | Player position at time of game Values:DEFWRRBQBTEOLDL |
| quarterback_hits | integer | — | QB hits on third down e.g. 0 |
| receiving_long | integer | — | Longest reception on third down e.g. 0 |
| receiving_tds | integer | — | Receiving touchdowns on third down e.g. 0 |
| receiving_yds | integer | — | Receiving yards on third down e.g. 0 |
| receiving_yds_per_reception | decimal | — | Yards per reception on third down e.g. 0.0000 |
| receiving_yds_per_target | decimal | — | Receiving yards per target on third down e.g. 0.0000 |
| reception_percentage | decimal | — | Reception percentage (receptions/targets) on third down e.g. 0.0000 |
| receptions | integer | — | Receptions on third down e.g. 0 |
| rushing_attempts | integer | — | Rushing attempts on third down e.g. 0 |
| rushing_long | integer | — | Longest rush on third down e.g. 0 |
| rushing_tds | integer | — | Rushing touchdowns on third down e.g. 0 |
| rushing_yds | integer | — | Rushing yards on third down e.g. 0 |
| rushing_yds_per_attempt | decimal | — | Rushing yards per attempt on third down e.g. 0.0000 |
| sacks | decimal | — | Sacks on third down (0.5 for half sacks) e.g. 0.0000 |
| solo_tackles | integer | — | Solo tackles on third down e.g. 0 |
| tackles_for_loss | integer | — | Tackles for loss on third down e.g. 0 |
| targets | integer | — | Times targeted on third down e.g. 0 |
| total_tds | integer | — | Total touchdowns scored on third down e.g. 0 |
| two_pt_pass_conversions | integer | — | — e.g. 0 |
| two_pt_reception_conversions | integer | — | — e.g. 0 |
| two_pt_rush_conversions | integer | — | — e.g. 0 |
GET/api/v1/nfl/game_player_thirddown_statsList game_player_thirddown_stats for NFL
Requires one of:
game_id or player_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
player_idquerybigintoptionalFilter to a single player.
team_idquerybigintoptionalFilter by team.
opponent_team_idquerybigintoptionalFilter by opponent team.
positionquerystringoptionalFilter by player position. Values: DB, DEF, DL, LB, OL, QB, RB, TE, WR.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/game_player_thirddown_stats/{id}Get a single game_player_thirddown_stat by id
Parameters
idpathbigintrequiredPrimary 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_stats
nfl.game_team_statsEach 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| game_id | bigint | — e.g. 4718 | |
| team_id | bigint | — e.g. 22 | |
| blocked_extra_pts | integer | — | — e.g. 0 |
| blocked_field_goals | integer | — | — e.g. 0 |
| blocked_kick_return_tds | integer | — | Blocked kick return touchdowns e.g. 0 |
| blocked_kick_return_yds | integer | — | Blocked kick return yards e.g. 0 |
| blocked_kicks | integer | — | Total blocked kicks (FGs + XPs + punts) for DST fantasy scoring e.g. 0 |
| blocked_punts | integer | — | — e.g. 0 |
| completion_percentage | decimal | — | — e.g. 66.6667 |
| completions | integer | — | — e.g. 19 |
| defensive_interceptions | integer | — | — e.g. 0 |
| defensive_sacks | integer | — | — e.g. 1 |
| defensive_tds | integer | — | — e.g. 0 |
| defensive_team_snaps | integer | — | Total defensive snaps by team in game e.g. 726 |
| extra_pt_percentage | decimal | — | Extra point conversion percentage e.g. 100.0000 |
| extra_pts_attempted | integer | — | — e.g. 2 |
| extra_pts_blocked | integer | — | Extra points that were blocked e.g. 0 |
| extra_pts_made | integer | — | — e.g. 2 |
| field_goal_percentage | decimal | — | — e.g. 100.0000 |
| field_goal_return_tds | integer | — | Field goal return touchdowns e.g. 0 |
| field_goal_return_yds | integer | — | Field goal return yards (missed FGs) e.g. 0 |
| field_goals_attempted | integer | — | — e.g. 2 |
| field_goals_blocked | integer | — | Field goals that were blocked e.g. 0 |
| field_goals_made | integer | — | — e.g. 2 |
| first_downs | integer | — | — e.g. 19 |
| first_downs_passing | integer | — | — e.g. 11 |
| first_downs_penalty | integer | — | — e.g. 1 |
| first_downs_rushing | integer | — | — e.g. 5 |
| forced_fumbles | integer | — | — e.g. 0 |
| fourth_down_attempts | integer | — | — e.g. 1 |
| fourth_down_conversions | integer | — | — e.g. 0 |
| fourth_down_percentage | decimal | — | — e.g. 0.0000 |
| fumble_return_tds | integer | — | Fumble return touchdowns e.g. 0 |
| fumble_return_yds | integer | — | Fumble return yards e.g. 0 |
| fumbles_lost | integer | — | — e.g. 0 |
| fumbles_recovered | integer | — | — e.g. 0 |
| interception_percentage | decimal | — | Percentage of passes intercepted e.g. 0.0000 |
| interception_return_tds | integer | — | Interception return touchdowns e.g. 0 |
| interception_return_yds | integer | — | Interception return yards e.g. 0 |
| interception_returns | integer | — | Number of interception returns e.g. 0 |
| interceptions_thrown | integer | — | — e.g. 0 |
| is_home | boolean | — | True if team is the home team Values:falsetrue |
| kick_return_avg | decimal | — | Average yards per kick return e.g. 0.0000 |
| kick_return_long | integer | — | Longest kick return e.g. 0 |
| kick_return_tds | integer | — | — e.g. 0 |
| kick_return_yds | integer | — | — e.g. 0 |
| kick_return_yds_differential | integer | — | Kick return yards minus opponent kick return yards e.g. 0 |
| kick_returns | integer | — | Number of kick returns e.g. 0 |
| kickoff_touchbacks | integer | — | Kickoffs resulting in touchbacks e.g. 0 |
| kickoffs | integer | — | Number of kickoffs e.g. 0 |
| kickoffs_in_endzone | integer | — | Kickoffs that reached the end zone e.g. 0 |
| loss | integer | — | — e.g. 0 |
| offensive_plays | integer | — | Total offensive plays run e.g. 64 |
| offensive_team_snaps | integer | — | Total offensive snaps by team in game e.g. 726 |
| offensive_yds | integer | — | Total offensive yards gained e.g. 356 |
| pass_attempts | integer | — | — e.g. 34 |
| passer_rating | decimal | — | — e.g. 97.9167 |
| passes_defended | integer | — | — e.g. 4 |
| passing_dropbacks | integer | — | Number of passing dropbacks e.g. 34 |
| passing_tds | integer | — | — e.g. 1 |
| passing_yds | integer | — | — e.g. 188 |
| penalties | integer | — | — e.g. 6 |
| penalty_yds | integer | — | — e.g. 45 |
| penalty_yds_differential | integer | — | Opponent penalty yards minus own penalty yards e.g. 0 |
| point_differential | integer | — | Points scored minus points allowed e.g. 0 |
| pts | integer | — | — e.g. 0 |
| pts_allowed_def | integer | — | Points allowed for DEF scoring (FanDuel). Excludes return TDs against - only offensive points allowed. e.g. 0 |
| pts_allowed_dst | integer | — | Points allowed for DST scoring (DraftKings/Yahoo). Includes return TDs against - real scoreboard points. e.g. 0 |
| punt_average | decimal | — | — e.g. 44.0000 |
| punt_net_average | decimal | — | Net punt average yards e.g. 44.0000 |
| punt_net_yds | integer | — | Total net punt yards e.g. 0 |
| punt_return_avg | decimal | — | Average yards per punt return e.g. 0.0000 |
| punt_return_long | integer | — | Longest punt return e.g. 0 |
| punt_return_tds | integer | — | — e.g. 0 |
| punt_return_yds | integer | — | — e.g. 0 |
| punt_return_yds_differential | integer | — | Punt return yards minus opponent punt return yards e.g. 0 |
| punt_returns | integer | — | Number of punt returns e.g. 0 |
| punt_yds | integer | — | — e.g. 0 |
| punts | integer | — | — e.g. 3 |
| punts_blocked | integer | — | Number of punts blocked e.g. 0 |
| qb_hits_differential | integer | — | QB hits made minus QB hits allowed e.g. 0 |
| qb_hits_percentage | decimal | — | Percentage of dropbacks resulting in QB hit e.g. 0.0000 |
| quarterback_hits | integer | — | — e.g. 4 |
| receiving_tds | integer | — | — e.g. 1 |
| receiving_yds | integer | — | — e.g. 188 |
| receptions | integer | — | — e.g. 19 |
| red_zone_attempts | integer | — | — e.g. 3 |
| red_zone_conversions | integer | — | — e.g. 3 |
| red_zone_percentage | decimal | — | — e.g. 100.0000 |
| rushing_attempts | integer | — | — e.g. 23 |
| rushing_tds | integer | — | — e.g. 0 |
| rushing_yds | integer | — | — e.g. 119 |
| rushing_yds_per_attempt | decimal | — | Rushing yards per attempt e.g. 3.0000 |
| sack_yds | integer | — | — e.g. 0 |
| sacked_percentage | decimal | — | Percentage of dropbacks resulting in sack e.g. 0.0000 |
| sacks_allowed | integer | — | — e.g. 1 |
| sacks_differential | integer | — | Sacks made minus sacks allowed e.g. 0 |
| safeties | integer | — | — e.g. 0 |
| score_ot | integer | — | Points scored in overtime e.g. 0 |
| score_q1 | integer | — | Points scored in Q1 e.g. 0 |
| score_q2 | integer | — | Points scored in Q2 e.g. 0 |
| score_q3 | integer | — | Points scored in Q3 e.g. 0 |
| score_q4 | integer | — | Points scored in Q4 e.g. 0 |
| special_teams_team_snaps | integer | — | Total special teams snaps by team in game e.g. 264 |
| tackles | integer | — | — e.g. 51 |
| tackles_for_loss | integer | — | — e.g. 1 |
| tfl_differential | integer | — | Tackles for loss made minus allowed e.g. 0 |
| tfl_percentage | decimal | — | Percentage of plays resulting in TFL e.g. 0.0000 |
| third_down_attempts | integer | — | — e.g. 13 |
| third_down_conversions | integer | — | — e.g. 5 |
| third_down_percentage | decimal | — | — e.g. 33.3333 |
| tie | integer | — | — e.g. 0 |
| time_of_possession | integer | — | — e.g. 1805 |
| total_return_yds | integer | — | Total punt and kick return yards e.g. 0 |
| total_yds | integer | — | — e.g. 356 |
| touchdowns | integer | — | Total touchdowns scored e.g. 2 |
| turnover_differential | integer | — | — e.g. 0 |
| turnovers | integer | — | — e.g. 0 |
| two_point_conversion_attempts | integer | — | — e.g. 0 |
| two_point_conversions | integer | — | — e.g. 0 |
| two_pt_conversion_returns | integer | — | Defensive two-point conversion returns e.g. 0 |
| two_pt_pass_attempts | integer | — | Two-point conversion pass attempts e.g. 0 |
| two_pt_pass_conversions | integer | — | Two-point conversion pass conversions e.g. 0 |
| two_pt_rush_attempts | integer | — | Two-point conversion rush attempts e.g. 0 |
| two_pt_rush_conversions | integer | — | Two-point conversion rush conversions e.g. 0 |
| win | integer | — | — e.g. 0 |
| yds_per_carry | decimal | — | — e.g. 3.0000 |
| yds_per_completion | decimal | — | Passing yards per completion e.g. 10.0000 |
| yds_per_pass_attempt | decimal | — | — e.g. 6.0000 |
| yds_per_play | decimal | — | Average yards per offensive play e.g. 6.0000 |
GET/api/v1/nfl/game_team_statsList game_team_stats for NFL
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
team_idquerybigintoptionalFilter by team.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/game_team_stats/{id}Get a single game_team_stat by id
Parameters
idpathbigintrequiredPrimary 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_lookups
nfl.operator_player_lookupsHow each sportsbook and fantasy operator names every NFL player — the mapping from each operator's own player identifier to a unified player record.
▸Fields6
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| operator_id | bigint | Reference to main.operator entity e.g. 5 | |
| operator_player_id | string | External player ID from operator e.g. 6012 | |
| player_id | bigint | Internal nfl.players.id reference e.g. 2 | |
| player_name | stringnullable | — | Player name as provided by operator e.g. Lamar Jackson |
| position | stringnullable | — | Position as provided by operator Values:DBDLLBWRRBTEQBOLPKLS |
GET/api/v1/nfl/operator_player_lookupsList operator_player_lookups for NFL
Requires one of:
operator_id — requests satisfying none of these return 400.Parameters
operator_idquerybigintoptionalFilter by sportsbook / operator.
player_idquerybigintoptionalFilter to a single player.
positionquerystringoptionalFilter 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 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/operator_player_lookups/{id}Get a single operator_player_lookup by id
Parameters
idpathbigintrequiredPrimary 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_stats
nfl.season_player_firstdown_statsSeason player stats restricted to first-down plays — passing, rushing, and receiving production filtered to first-down attempts, useful for early-down efficiency analysis.
▸Fields52
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| player_id | bigint | — e.g. 2 | |
| season_id | bigint | — e.g. 2025 | |
| assisted_tackles | integer | — | Assisted tackles on first down e.g. 0 |
| defensive_tds | integer | — | Total defensive touchdowns on first down e.g. 0 |
| forced_fumbles | integer | — | Forced fumbles on first down e.g. 0 |
| fumble_recovery_tds | integer | — | Fumble recovery touchdowns on first down e.g. 0 |
| fumble_recovery_yds | integer | — | Fumble recovery yards on first down e.g. 0 |
| fumbles | integer | — | Fumbles on first down e.g. 0 |
| fumbles_lost | integer | — | Fumbles lost on first down e.g. 0 |
| fumbles_recovered | integer | — | Fumbles recovered on first down e.g. 0 |
| games_played | integer | — | Number of games with first down involvement e.g. 1 |
| games_started | integer | — | Number of games started e.g. 0 |
| interception_tds | integer | — | Interception return touchdowns on first down e.g. 0 |
| interception_yds | integer | — | Interception return yards on first down e.g. 0 |
| interceptions | integer | — | Interceptions on first down e.g. 0 |
| offensive_snaps | integer | — | Offensive snaps played on first down e.g. 0 |
| offensive_tds | integer | — | Total offensive touchdowns on first down e.g. 0 |
| passes_defended | integer | — | Passes defended on first down e.g. 0 |
| passing_attempts | integer | — | Passing attempts on first down e.g. 0 |
| passing_completion_percentage | decimal | — | Completion percentage on first down e.g. 0.0000 |
| passing_completions | integer | — | Completed passes on first down e.g. 0 |
| passing_interceptions | integer | — | Interceptions thrown on first down e.g. 0 |
| passing_long | integer | — | Longest pass completion on first down e.g. 0 |
| passing_rating | decimal | — | Passer rating on first down e.g. 0.0000 |
| passing_sack_yds | integer | — | Yards lost to sacks on first down e.g. 0 |
| passing_sacks | integer | — | Times sacked on first down e.g. 0 |
| passing_tds | integer | — | Passing touchdowns on first down e.g. 0 |
| passing_yds | integer | — | Passing yards on first down e.g. 0 |
| passing_yds_per_attempt | decimal | — | Passing yards per attempt on first down e.g. 0.0000 |
| passing_yds_per_completion | decimal | — | Passing yards per completion on first down e.g. 0.0000 |
| quarterback_hits | integer | — | QB hits on first down e.g. 0 |
| receiving_long | integer | — | Longest reception on first down e.g. 0 |
| receiving_tds | integer | — | Receiving touchdowns on first down e.g. 0 |
| receiving_yds | integer | — | Receiving yards on first down e.g. 0 |
| receiving_yds_per_reception | decimal | — | Yards per reception on first down e.g. 0.0000 |
| receiving_yds_per_target | decimal | — | Receiving yards per target on first down e.g. 0.0000 |
| reception_percentage | decimal | — | Reception percentage (receptions/targets) on first down e.g. 0.0000 |
| receptions | integer | — | Receptions on first down e.g. 0 |
| rushing_attempts | integer | — | Rushing attempts on first down e.g. 0 |
| rushing_long | integer | — | Longest rush on first down e.g. 0 |
| rushing_tds | integer | — | Rushing touchdowns on first down e.g. 0 |
| rushing_yds | integer | — | Rushing yards on first down e.g. 0 |
| rushing_yds_per_attempt | decimal | — | Rushing yards per attempt on first down e.g. 0.0000 |
| sacks | decimal | — | Sacks on first down (0.5 for half sacks) e.g. 0.0000 |
| solo_tackles | integer | — | Solo tackles on first down e.g. 0 |
| tackles_for_loss | integer | — | Tackles for loss on first down e.g. 0 |
| targets | integer | — | Times targeted on first down e.g. 0 |
| total_tds | integer | — | Total touchdowns scored on first down e.g. 0 |
| two_pt_pass_conversions | integer | — | — e.g. 0 |
| two_pt_reception_conversions | integer | — | — e.g. 0 |
| two_pt_rush_conversions | integer | — | — e.g. 0 |
GET/api/v1/nfl/season_player_firstdown_statsList season_player_firstdown_stats for NFL
Requires one of:
season_id — requests satisfying none of these return 400.Parameters
player_idquerybigintoptionalFilter to a single player.
season_idquerybigintoptionalFilter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/season_player_firstdown_stats/{id}Get a single season_player_firstdown_stat by id
Parameters
idpathbigintrequiredPrimary 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_stats
nfl.season_player_redzone_statsSeason 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| player_id | bigint | — e.g. 2 | |
| season_id | bigint | — e.g. 2025 | |
| assisted_tackles | integer | — | Assisted tackles in red zone e.g. 0 |
| defensive_tds | integer | — | Total defensive touchdowns in red zone e.g. 0 |
| forced_fumbles | integer | — | Forced fumbles in red zone e.g. 0 |
| fumble_recovery_tds | integer | — | Fumble recovery touchdowns in red zone e.g. 0 |
| fumble_recovery_yds | integer | — | Fumble recovery yards in red zone e.g. 0 |
| fumbles | integer | — | Fumbles in the red zone e.g. 0 |
| fumbles_lost | integer | — | Fumbles lost in the red zone e.g. 0 |
| fumbles_recovered | integer | — | Fumbles recovered in red zone e.g. 0 |
| games_played | integer | — | Number of games with red zone involvement e.g. 1 |
| games_started | integer | — | Number of games started e.g. 0 |
| interception_tds | integer | — | Interception return touchdowns in red zone e.g. 0 |
| interception_yds | integer | — | Interception return yards in red zone e.g. 0 |
| interceptions | integer | — | Interceptions in red zone e.g. 0 |
| offensive_snaps | integer | — | Offensive snaps played in red zone situations e.g. 0 |
| offensive_tds | integer | — | Total offensive touchdowns in the red zone e.g. 0 |
| passes_defended | integer | — | Passes defended in red zone e.g. 0 |
| passing_attempts | integer | — | Passing attempts in the red zone e.g. 0 |
| passing_completion_percentage | decimal | — | Completion percentage in the red zone e.g. 0.0000 |
| passing_completions | integer | — | Completed passes in the red zone e.g. 0 |
| passing_interceptions | integer | — | Interceptions thrown in the red zone e.g. 0 |
| passing_long | integer | — | Longest pass completion in the red zone e.g. 0 |
| passing_rating | decimal | — | Passer rating in the red zone e.g. 0.0000 |
| passing_sack_yds | integer | — | Yards lost to sacks in the red zone e.g. 0 |
| passing_sacks | integer | — | Times sacked in the red zone e.g. 0 |
| passing_tds | integer | — | Passing touchdowns in the red zone e.g. 0 |
| passing_yds | integer | — | Passing yards in the red zone e.g. 0 |
| passing_yds_per_attempt | decimal | — | Passing yards per attempt in the red zone e.g. 0.0000 |
| passing_yds_per_completion | decimal | — | Passing yards per completion in the red zone e.g. 0.0000 |
| quarterback_hits | integer | — | QB hits in red zone e.g. 0 |
| receiving_long | integer | — | Longest reception in the red zone e.g. 0 |
| receiving_tds | integer | — | Receiving touchdowns in the red zone e.g. 0 |
| receiving_yds | integer | — | Receiving yards in the red zone e.g. 0 |
| receiving_yds_per_reception | decimal | — | Yards per reception in the red zone e.g. 0.0000 |
| receiving_yds_per_target | decimal | — | Receiving yards per target in the red zone e.g. 0.0000 |
| reception_percentage | decimal | — | Reception percentage (receptions/targets) in the red zone e.g. 0.0000 |
| receptions | integer | — | Receptions in the red zone e.g. 0 |
| rushing_attempts | integer | — | Rushing attempts in the red zone e.g. 0 |
| rushing_long | integer | — | Longest rush in the red zone e.g. 0 |
| rushing_tds | integer | — | Rushing touchdowns in the red zone e.g. 0 |
| rushing_yds | integer | — | Rushing yards in the red zone e.g. 0 |
| rushing_yds_per_attempt | decimal | — | Rushing yards per attempt in the red zone e.g. 0.0000 |
| sacks | decimal | — | Sacks in red zone (0.5 for half sacks) e.g. 0.0000 |
| solo_tackles | integer | — | Solo tackles in red zone e.g. 0 |
| tackles_for_loss | integer | — | Tackles for loss in red zone e.g. 0 |
| targets | integer | — | Times targeted in the red zone e.g. 0 |
| total_tds | integer | — | Total touchdowns scored in the red zone e.g. 0 |
| two_pt_pass_conversions | integer | — | Successful two-point conversion passes in the red zone e.g. 0 |
| two_pt_reception_conversions | integer | — | Successful two-point conversion receptions in the red zone e.g. 0 |
| two_pt_rush_conversions | integer | — | Successful two-point conversion runs in the red zone e.g. 0 |
GET/api/v1/nfl/season_player_redzone_statsList season_player_redzone_stats for NFL
Requires one of:
season_id — requests satisfying none of these return 400.Parameters
player_idquerybigintoptionalFilter to a single player.
season_idquerybigintoptionalFilter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/season_player_redzone_stats/{id}Get a single season_player_redzone_stat by id
Parameters
idpathbigintrequiredPrimary 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_stats
nfl.season_player_statsSeason 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| player_id | bigint | — e.g. 2 | |
| season_id | bigint | — e.g. 2025 | |
| completion_percentage | decimal | — | — e.g. 0.0000 |
| completions | integer | — | — e.g. 0 |
| defensive_tds | integer | — | — e.g. 0 |
| extra_pts_attempted | integer | — | — e.g. 0 |
| extra_pts_made | integer | — | — e.g. 0 |
| fair_catches | integer | — | — e.g. 0 |
| field_goal_percentage | decimal | — | — e.g. 0.0000 |
| field_goals_attempted | integer | — | — e.g. 0 |
| field_goals_made | integer | — | — e.g. 0 |
| field_goals_made_0_19 | integer | — | — e.g. 0 |
| field_goals_made_20_29 | integer | — | — e.g. 0 |
| field_goals_made_30_39 | integer | — | — e.g. 0 |
| field_goals_made_40_49 | integer | — | — e.g. 0 |
| field_goals_made_50_plus | integer | — | — e.g. 0 |
| forced_fumbles | integer | — | — e.g. 0 |
| fumble_return_yds | integer | — | — e.g. 0 |
| fumble_tds | integer | — | — e.g. 0 |
| fumbles | integer | — | — e.g. 0 |
| fumbles_lost | integer | — | — e.g. 0 |
| fumbles_receiving | integer | — | — e.g. 0 |
| fumbles_recovered | integer | — | — e.g. 0 |
| fumbles_rushing | integer | — | — e.g. 0 |
| games_played | integer | — | — e.g. 17 |
| games_started | integer | — | — e.g. 0 |
| interception_return_yds | integer | — | — e.g. 0 |
| interception_tds | integer | — | — e.g. 0 |
| interceptions_defense | integer | — | — e.g. 0 |
| interceptions_thrown | integer | — | — e.g. 0 |
| kick_return_average | decimal | — | — e.g. 0.0000 |
| kick_return_tds | integer | — | — e.g. 0 |
| kick_return_yds | integer | — | — e.g. 0 |
| kick_returns | integer | — | — e.g. 0 |
| longest_field_goal | integer | — | — e.g. 0 |
| longest_kick_return | integer | — | — e.g. 0 |
| longest_punt | integer | — | — e.g. 0 |
| longest_punt_return | integer | — | — e.g. 0 |
| longest_reception | integer | — | — e.g. 0 |
| longest_rush | integer | — | — e.g. 0 |
| pass_attempts | integer | — | — e.g. 0 |
| passer_rating | decimal | — | — e.g. 0.0000 |
| passes_defended | integer | — | — e.g. 0 |
| passing_air_yds | integer | — | Total passing air yards e.g. 0 |
| passing_first_downs | integer | — | Total passing first downs e.g. 0 |
| passing_long | integer | — | Longest pass (season max) e.g. 0 |
| passing_tds | integer | — | — e.g. 0 |
| passing_yds | integer | — | — e.g. 0 |
| passing_yds_after_catch | integer | — | Total YAC from passes e.g. 0 |
| punt_average | decimal | — | — e.g. 0.0000 |
| punt_net_average | decimal | — | — e.g. 0.0000 |
| punt_return_average | decimal | — | — e.g. 0.0000 |
| punt_return_tds | integer | — | — e.g. 0 |
| punt_return_yds | integer | — | — e.g. 0 |
| punt_returns | integer | — | — e.g. 0 |
| punt_touchbacks | integer | — | — e.g. 0 |
| punt_yds | integer | — | — e.g. 0 |
| punts | integer | — | — e.g. 0 |
| punts_blocked | integer | — | — e.g. 0 |
| punts_inside_20 | integer | — | — e.g. 0 |
| quarterback_hits | integer | — | — e.g. 0 |
| receiving_air_yds | integer | — | Total receiving air yards e.g. 0 |
| receiving_first_downs | integer | — | Total receiving first downs e.g. 0 |
| receiving_fumbles_lost | integer | — | Total receiving fumbles lost e.g. 0 |
| receiving_tds | integer | — | — e.g. 0 |
| receiving_yds | integer | — | — e.g. 0 |
| receiving_yds_after_catch | integer | — | Total receiving YAC e.g. 0 |
| receptions | integer | — | — e.g. 0 |
| rushing_attempts | integer | — | — e.g. 0 |
| rushing_first_downs | integer | — | Total rushing first downs e.g. 0 |
| rushing_fumbles_lost | integer | — | Total rushing fumbles lost e.g. 0 |
| rushing_tds | integer | — | — e.g. 0 |
| rushing_yds | integer | — | — e.g. 0 |
| sack_fumbles | integer | — | Total fumbles on sacks e.g. 0 |
| sack_fumbles_lost | integer | — | Total sack fumbles lost e.g. 0 |
| sack_yds_lost | integer | — | — e.g. 0 |
| sacks | decimal | — | — e.g. 0.0000 |
| sacks_taken | integer | — | — e.g. 0 |
| safeties | integer | — | — e.g. 0 |
| special_teams_tds | integer | — | Total special teams touchdowns e.g. 0 |
| tackles_assisted | integer | — | — e.g. 0 |
| tackles_for_loss | integer | — | — e.g. 0 |
| tackles_solo | integer | — | — e.g. 0 |
| targets | integer | — | — e.g. 0 |
| total_tackles | integer | — | — e.g. 0 |
| yds_per_attempt | decimal | — | — e.g. 0.0000 |
| yds_per_carry | decimal | — | — e.g. 0.0000 |
| yds_per_reception | decimal | — | — e.g. 0.0000 |
GET/api/v1/nfl/season_player_statsList season_player_stats for NFL
Requires one of:
season_id or player_id — requests satisfying none of these return 400.Parameters
player_idquerybigintoptionalFilter to a single player.
season_idquerybigintoptionalFilter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/season_player_stats/{id}Get a single season_player_stat by id
Parameters
idpathbigintrequiredPrimary 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_stats
nfl.season_player_thirddown_statsSeason 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| player_id | bigint | — e.g. 2 | |
| season_id | bigint | — e.g. 2024 | |
| assisted_tackles | integer | — | Assisted tackles on third down e.g. 0 |
| defensive_tds | integer | — | Total defensive touchdowns on third down e.g. 0 |
| forced_fumbles | integer | — | Forced fumbles on third down e.g. 0 |
| fumble_recovery_tds | integer | — | Fumble recovery touchdowns on third down e.g. 0 |
| fumble_recovery_yds | integer | — | Fumble recovery yards on third down e.g. 0 |
| fumbles | integer | — | Fumbles on third down e.g. 0 |
| fumbles_lost | integer | — | Fumbles lost on third down e.g. 0 |
| fumbles_recovered | integer | — | Fumbles recovered on third down e.g. 0 |
| games_played | integer | — | Number of games with third down involvement e.g. 1 |
| games_started | integer | — | Number of games started e.g. 0 |
| interception_tds | integer | — | Interception return touchdowns on third down e.g. 0 |
| interception_yds | integer | — | Interception return yards on third down e.g. 0 |
| interceptions | integer | — | Interceptions on third down e.g. 0 |
| offensive_snaps | integer | — | Offensive snaps played on third down e.g. 0 |
| offensive_tds | integer | — | Total offensive touchdowns on third down e.g. 0 |
| passes_defended | integer | — | Passes defended on third down e.g. 0 |
| passing_attempts | integer | — | Passing attempts on third down e.g. 0 |
| passing_completion_percentage | decimal | — | Completion percentage on third down e.g. 0.0000 |
| passing_completions | integer | — | Completed passes on third down e.g. 0 |
| passing_interceptions | integer | — | Interceptions thrown on third down e.g. 0 |
| passing_long | integer | — | Longest pass completion on third down e.g. 0 |
| passing_rating | decimal | — | Passer rating on third down e.g. 0.0000 |
| passing_sack_yds | integer | — | Yards lost to sacks on third down e.g. 0 |
| passing_sacks | integer | — | Times sacked on third down e.g. 0 |
| passing_tds | integer | — | Passing touchdowns on third down e.g. 0 |
| passing_yds | integer | — | Passing yards on third down e.g. 0 |
| passing_yds_per_attempt | decimal | — | Passing yards per attempt on third down e.g. 0.0000 |
| passing_yds_per_completion | decimal | — | Passing yards per completion on third down e.g. 0.0000 |
| quarterback_hits | integer | — | QB hits on third down e.g. 0 |
| receiving_long | integer | — | Longest reception on third down e.g. 0 |
| receiving_tds | integer | — | Receiving touchdowns on third down e.g. 0 |
| receiving_yds | integer | — | Receiving yards on third down e.g. 0 |
| receiving_yds_per_reception | decimal | — | Yards per reception on third down e.g. 0.0000 |
| receiving_yds_per_target | decimal | — | Receiving yards per target on third down e.g. 0.0000 |
| reception_percentage | decimal | — | Reception percentage (receptions/targets) on third down e.g. 0.0000 |
| receptions | integer | — | Receptions on third down e.g. 0 |
| rushing_attempts | integer | — | Rushing attempts on third down e.g. 0 |
| rushing_long | integer | — | Longest rush on third down e.g. 0 |
| rushing_tds | integer | — | Rushing touchdowns on third down e.g. 0 |
| rushing_yds | integer | — | Rushing yards on third down e.g. 0 |
| rushing_yds_per_attempt | decimal | — | Rushing yards per attempt on third down e.g. 0.0000 |
| sacks | decimal | — | Sacks on third down (0.5 for half sacks) e.g. 0.0000 |
| solo_tackles | integer | — | Solo tackles on third down e.g. 0 |
| tackles_for_loss | integer | — | Tackles for loss on third down e.g. 0 |
| targets | integer | — | Times targeted on third down e.g. 0 |
| total_tds | integer | — | Total touchdowns scored on third down e.g. 0 |
| two_pt_pass_conversions | integer | — | — e.g. 0 |
| two_pt_reception_conversions | integer | — | — e.g. 0 |
| two_pt_rush_conversions | integer | — | — e.g. 0 |
GET/api/v1/nfl/season_player_thirddown_statsList season_player_thirddown_stats for NFL
Requires one of:
season_id — requests satisfying none of these return 400.Parameters
player_idquerybigintoptionalFilter to a single player.
season_idquerybigintoptionalFilter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/season_player_thirddown_stats/{id}Get a single season_player_thirddown_stat by id
Parameters
idpathbigintrequiredPrimary 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_lines
nfl.game_linesNFL 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| game_id | bigint | — e.g. 49 | |
| operator_id | bigint | Data source (ESPN, DraftKings, FanDuel, nflverse, etc.) e.g. 6 | |
| season_id | bigint | Denormalized for efficient season-level queries e.g. 2024 | |
| captured_at | timestamptz | — | When this snapshot was captured e.g. 2024-09-15T17:00:00.000Z |
| implied_away_score | decimalnullable | — | Calculated from spread + total e.g. 24.5000 |
| implied_away_win_pct | decimalnullable | — | From moneyline, 0-1 e.g. 0.4348 |
| implied_home_score | decimalnullable | — | Calculated from spread + total e.g. 23.0000 |
| implied_home_win_pct | decimalnullable | — | From moneyline, 0-1 e.g. 0.6078 |
| is_opening | boolean | — | True if this is the opening line e.g. false |
| moneyline_away | integernullable | — | American odds for away team win e.g. 130 |
| moneyline_home | integernullable | — | American odds for home team win e.g. -155 |
| over_odds | integernullable | — | American odds for over e.g. -110 |
| spread | decimalnullable | — | Home team spread (e.g., -3.5 means home favored by 3.5) e.g. 2.5000 |
| spread_away_odds | integernullable | — | American odds for away spread e.g. -110 |
| spread_home_odds | integernullable | — | American odds for home spread (e.g., -110) e.g. -110 |
| total | decimalnullable | — | Combined score total line (e.g., 47.5) e.g. 44.5000 |
| under_odds | integernullable | — | American odds for under e.g. -110 |
GET/api/v1/nfl/game_linesList game_lines for NFL
Requires one of:
game_id or season_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
season_idquerybigintoptionalFilter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
operator_idquerybigintoptionalFilter by sportsbook / operator.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/game_lines/{id}Get a single game_line by id
Parameters
idpathbigintrequiredPrimary 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_tenures
nfl.coaching_staff_tenuresEvery 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| season_id | bigint | Reference to the season e.g. 2024 | |
| team_id | bigint | Reference to the team e.g. 6 | |
| effective_date | date | — | Date this coach started in this role e.g. 2024-02-01T00:00:00.000Z |
| end_date | datenullable | — | Date this coach ended (null if current) e.g. 2024-11-29T00:00:00.000Z |
| first_name | stringnullable | — | — e.g. Mike |
| full_name | string | — | Coach full name e.g. Thomas Brown |
| is_interim | boolean | — | — Values:falsetrue |
| last_name | stringnullable | — | — e.g. Harbaugh |
| position | string | — | Coaching position (HC, OC, DC) Values:HCOCDC |
| reason | stringnullable | — | Reason for change (fired, resigned, hired, promoted) e.g. fired |
| source | stringnullable | — | Data source (pfr, cbs_sports, espn, manual) e.g. seed |
| source_url | stringnullable | — | — e.g. seed:coaching-tenure-2024.yml |
GET/api/v1/nfl/coaching_staff_tenuresList coaching_staff_tenures for NFL
Requires one of:
team_id — requests satisfying none of these return 400.Parameters
team_idquerybigintoptionalFilter by team.
season_idquerybigintoptionalFilter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
positionquerystringoptionalFilter by player position. Values: DC, HC, OC.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/coaching_staff_tenures/{id}Get a single coaching_staff_tenure by id
Parameters
idpathbigintrequiredPrimary 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_staffs
nfl.coaching_staffsThe coaching staff for each NFL team at a given season — head coach, offensive coordinator, defensive coordinator, special teams coordinator, and position coaches.
▸Fields8
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| season_id | bigint | — e.g. 2024 | |
| team_id | bigint | — e.g. 1 | |
| experience | integernullable | — | — e.g. — (all-null in sample) |
| first_name | string | — | — e.g. Mike |
| full_name | string | — | — e.g. Thomas Brown |
| last_name | string | — | — e.g. Harbaugh |
| position | string | — | — Values:DCHCOC |
GET/api/v1/nfl/coaching_staffsList coaching_staffs for NFL
Requires one of:
season_id — requests satisfying none of these return 400.Parameters
team_idquerybigintoptionalFilter by team.
season_idquerybigintoptionalFilter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
positionquerystringoptionalFilter by player position.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/coaching_staffs/{id}Get a single coaching_staff by id
Parameters
idpathbigintrequiredPrimary 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_snapshots
nfl.depth_chart_snapshotsA 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| season_id | bigint | — e.g. 15 | |
| team_id | bigint | — e.g. 29 | |
| entry_count | integer | — | Number of entries in this snapshot e.g. 172 |
| is_baseline | boolean | — | True if this is the season baseline snapshot e.g. true |
| snapshot_at | timestamptz | — | When this snapshot was taken e.g. 2026-03-14T07:32:09.000Z |
| source | string | — | Data source (nflverse, espn, etc.) e.g. nflverse |
| week | integer | — | NFL week number (0=preseason) e.g. 28 |
GET/api/v1/nfl/depth_chart_snapshotsList depth_chart_snapshots for NFL
Requires one of:
team_id + season_id — requests satisfying none of these return 400.Parameters
team_idquerybigintoptionalFilter by team.
season_idquerybigintoptionalFilter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
weekqueryintegeroptionalFilter by week of the season.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/depth_chart_snapshots/{id}Get a single depth_chart_snapshot by id
Parameters
idpathbigintrequiredPrimary 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_entries
nfl.depth_chart_entriesWhere 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| player_id | bigint | — e.g. 1237 | |
| snapshot_id | bigint | — | — e.g. 44 |
| depth_order | integer | — | Order within position (1=starter, 2=backup, etc.) e.g. 2 |
| depth_position | string | — | Specific depth position (QB1, RB2, etc.) e.g. WR |
| formation | stringnullable | — | Formation group (offense, defense, special_teams) Values:DefenseOffense3WR 1TEBase 4-3 DSpecial TeamsBase 3-4 D |
| jersey_number | integernullable | — | — e.g. — (all-null in sample) |
| position | string | — | Position abbreviation (QB, RB, WR, etc.) e.g. WR |
GET/api/v1/nfl/depth_chart_entriesList depth_chart_entries for NFL
Requires one of:
snapshot_id — requests satisfying none of these return 400.Parameters
snapshot_idquerybigintoptionalFilter by depth-chart snapshot.
player_idquerybigintoptionalFilter to a single player.
positionquerystringoptionalFilter 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 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/depth_chart_entries/{id}Get a single depth_chart_entry by id
Parameters
idpathbigintrequiredPrimary 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_charts
nfl.depth_chartsOne 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary key — sequential row identifier. |
| elias_id | stringnullable | — | Elias Sports Bureau player identifier (nullable — populated only when the source feed includes Elias IDs). e.g. — (all-null in sample) |
| game_id | bigint | FK to nfl.games — the game this depth chart is associated with. e.g. 120 | |
| player_id | bigint | FK to nfl.players — the player occupying this depth-chart slot. e.g. 19 | |
| season_id | bigint | FK to nfl.seasons — the season containing this game. e.g. 1 | |
| team_id | bigint | FK to nfl.teams — the team whose depth chart this row belongs to. e.g. 32 | |
| depth_order | integernullable | — | Depth-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_position | string | — | Position 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_team | stringnullable | — | Sub-team designation within the depth chart when present (e.g., a formation-specific team grouping). Sparse — typically NULL. e.g. — (all-null in sample) |
| formation | stringnullable | — | Formation unit this slot belongs to (e.g., OFF, DEF, ST). Sparse — typically NULL. e.g. — (all-null in sample) |
| game_type | string | — | Phase of the season: REG (regular season), WC (Wild Card), DIV (Divisional), CON (Conference Championship), SB (Super Bowl). Values:REGDIVWCCONSB |
| jersey_number | integernullable | — | Player's jersey number on the team for this game (nullable — populated when the depth chart includes uniform numbers). e.g. — (all-null in sample) |
| position | string | — | Player's listed position abbreviation (e.g., QB, RB, WR, T, DT, CB, MLB, K, P). Values:DTWRDETQBLSGTECBILBKOLBCFSPSSNTRBFBMLB |
| status | stringnullable | — | NFL 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 |
| week | integer | — | NFL 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_chartsList depth_charts for NFL
Requires one of:
team_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
team_idquerybigintoptionalFilter by team.
season_idquerybigintoptionalFilter to a single season.
weekqueryintegeroptionalFilter by week of the season.
player_idquerybigintoptionalFilter to a single player.
positionquerystringoptionalFilter 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 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/depth_charts/{id}Get a single depth_chart by id
Parameters
idpathbigintrequiredPrimary 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_rosters
nfl.game_team_rostersThe gameday roster for each NFL game — every player who suited up that day, who started, who was inactive, and at what position.
▸Fields9
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| game_id | bigint | — e.g. 120 | |
| player_id | bigint | — e.g. 19 | |
| team_id | bigint | — e.g. 32 | |
| comment | stringnullable | — | Optional note from the gameday roster report (e.g., reason for inactive). e.g. — (all-null in sample) |
| day | integer | — | Day-of-year integer (matches `game.day` for partitioning). e.g. 20241212 |
| position | stringnullable | — | Position the player suited up at for this game. Values:DLOLDBWRLBQBLSTEKPRB |
| starter | boolean | — | True if the player started this game. Values:truefalse |
| status | stringnullable | — | Roster status for the game, readable single-word vocabulary (`Active`, `Inactive`, `PracticeSquad`, `Reserve`, `Cut`, `Retired`, `Exempt`, `PracticeSquadReleased`). Values:ActiveReservePracticeSquadInactiveRetiredCutExempt |
GET/api/v1/nfl/game_team_rostersList game_team_rosters for NFL
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
team_idquerybigintoptionalFilter by team.
player_idquerybigintoptionalFilter to a single player.
positionquerystringoptionalFilter by player position. Values: DB, DL, K, LB, LS, OL, P, QB, RB, TE, WR.
statusquerystringoptionalFilter 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 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/game_team_rosters/{id}Get a single game_team_roster by id
Parameters
idpathbigintrequiredPrimary 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_staffs
nfl.game_team_staffsThe coaching staff on the sideline for each NFL game — head coach, offensive coordinator, defensive coordinator, for both teams.
▸Fields6
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| game_id | bigint | Reference to the game e.g. 49 | |
| team_id | bigint | Reference to the team e.g. 16 | |
| defensive_coordinator | stringnullable | — | Defensive coordinator name e.g. — (all-null in sample) |
| head_coach | stringnullable | — | Head coach name (from nflverse) e.g. Andy Reid |
| offensive_coordinator | stringnullable | — | Offensive coordinator name e.g. — (all-null in sample) |
GET/api/v1/nfl/game_team_staffsList game_team_staffs for NFL
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
team_idquerybigintoptionalFilter by team.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/game_team_staffs/{id}Get a single game_team_staff by id
Parameters
idpathbigintrequiredPrimary 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_rosters
nfl.team_player_rostersDay-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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| player_id | bigint | — e.g. 765 | |
| season_id | bigint | — e.g. 2024 | |
| team_id | bigint | — e.g. 32 | |
| day | integer | — | Day-of-year integer; the row is valid for that single day. e.g. 20240905 |
| depth_order | integernullable | — | Depth-chart order at this position on this date (1 = starter). e.g. — (all-null in sample) |
| position | stringnullable | — | Position assigned to the player for this season-day. Values:DBOLDLLBWRRBTEQBKPLS |
| position_group | stringnullable | — | Position group (`OFFENSE`, `DEFENSE`, `ST`). Values:OffenseDefenseSpecial Teams |
GET/api/v1/nfl/team_player_rostersList team_player_rosters for NFL
Requires one of:
team_id + season_id — requests satisfying none of these return 400.Parameters
team_idquerybigintoptionalFilter by team.
player_idquerybigintoptionalFilter to a single player.
season_idquerybigintoptionalFilter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
positionquerystringoptionalFilter by player position. Values: DB, DL, K, LB, LS, OL, P, QB, RB, TE, WR.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/team_player_rosters/{id}Get a single team_player_roster by id
Parameters
idpathbigintrequiredPrimary 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
stadiums
nfl.stadiumsVenues 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| league_stadium_id | stringnullable | Official NFL stadium ID from API e.g. 00081065-961a-76b2-de6a-b6da2602a129 | |
| address | stringnullable | — | Street address of the stadium. e.g. 1 Patriot Pl, Foxborough, MA 02035 |
| capacity | integernullable | — | Approximate seating capacity for football configuration. e.g. 65000 |
| city | string | — | — e.g. Santa Clara |
| closed_date | timestamptznullable | — | Date the stadium closed (null if currently in use). e.g. — (all-null in sample) |
| country | stringnullable | — | — Values:USADEUGBRESPMEXBRAIRL |
| description | stringnullable | — | — e.g. — (all-null in sample) |
| elevation | floatnullable | — | Elevation in feet above sea level e.g. 256 |
| image_url | stringnullable | — | URL to aerial/overview image of stadium e.g. https://upload.wikimedia.org/wikipedia/commons/thumb/7/70/G… |
| latitude | floatnullable | — | Latitude of the stadium centroid (decimal degrees, WGS84). e.g. 42.0909 |
| longitude | floatnullable | — | Longitude of the stadium centroid (decimal degrees, WGS84). e.g. -71.2643 |
| name | string | — | — e.g. Gillette Stadium |
| opened_date | timestamptznullable | — | Date the stadium opened for play. e.g. 2002-01-01T00:00:00.000Z |
| orientation | floatnullable | — | Field 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_type | stringnullable | — | Roof type (e.g., `open`, `dome`, `retractable`). Values:OpenRetractableDome |
| state | stringnullable | — | — e.g. FL |
| surface | stringnullable | — | Playing surface type (e.g., `grass`, `FieldTurf`, `Astroturf`). Values:GrassFieldTurfHybrid GrassA-Turf TitanBermuda GrassUBU Sports Speed Series… |
| team_name | stringnullable | — | Team commonly associated with this stadium at the time (display string, not a foreign key). e.g. |
| timezone | stringnullable | — | IANA 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/stadiumsList stadiums for NFL
Parameters
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/stadiums/{id}Get a single stadium by id
Parameters
idpathbigintrequiredPrimary 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.
playoffs
nfl.playoffsThe NFL postseason bracket — Wild Card weekend, the Divisional Round, the Conference Championships, and the Super Bowl, with seeds, scores, and outcomes.
▸Fields11
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| away_team_id | bigint | — e.g. 19 | |
| home_team_id | bigint | — e.g. 26 | |
| season_id | bigint | — e.g. 2024 | |
| winner_team_id | bigintnullable | Winning team (FK to `teams`); null until the game completes. e.g. 26 | |
| away_team_seed | integer | — | Playoff seed (1-7) of the away team for this matchup. e.g. 0 |
| conference | stringnullable | — | Conference the matchup is contested within (`AFC`, `NFC`); null for the Super Bowl (inter-conference). Values:AFCNFC |
| game_number | integer | — | Sequence number within the round (used to order multiple games in the same round). e.g. 1 |
| home_team_seed | integer | — | Playoff seed (1-7) of the home team for this matchup. e.g. 0 |
| playoff_round | string | — | Postseason round (`WildCard`, `Divisional`, `Conference Championship`, `Super Bowl`). Values:Wild CardDivisionalConference ChampionshipSuper Bowl |
| status | string | — | Matchup status (`Scheduled`, `InProgress`, `Final`). e.g. Final |
GET/api/v1/nfl/playoffsList playoffs for NFL
Requires one of:
season_id or home_team_id or away_team_id or status — requests satisfying none of these return 400.Parameters
season_idquerybigintoptionalFilter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
home_team_idquerybigintoptionalFilter by home team.
away_team_idquerybigintoptionalFilter by away team.
statusquerystringoptionalFilter by row status.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/playoffs/{id}Get a single playoff by id
Parameters
idpathbigintrequiredPrimary 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_results
nfl.combine_resultsNFL 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| cfb_id | stringnullable | — | College Football Reference player ID (external lookup). e.g. kris-abrams-draine-1 |
| pfr_id | stringnullable | — | Pro Football Reference player ID (external lookup). e.g. AbraKr00 |
| player_id | bigint | — e.g. 2707 | |
| team_id | bigintnullable | — e.g. — (all-null in sample) | |
| bench | integernullable | — | Bench press repetitions at 225 lbs. e.g. 21 |
| broad_jump | integernullable | — | Broad jump distance in inches. e.g. 124 |
| cone | decimalnullable | — | 3-cone drill time in seconds. e.g. 6.8200 |
| forty | decimalnullable | — | 40-yard dash time in seconds. e.g. 4.4600 |
| ht | stringnullable | — | Height 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 |
| position | string | — | Position the player was measured as (e.g., QB, WR, RB, CB). Values:WRCBDTRBEDGEOTLBGTEQBCSAFKDEPCB/WR |
| school | stringnullable | — | College or last-affiliation school name. e.g. Michigan |
| season | integer | — | Calendar year of the Combine (e.g., 2024 for the February 2024 combine). e.g. 2025 |
| shuttle | decimalnullable | — | 20-yard shuttle time in seconds. e.g. 4.4000 |
| vertical | decimalnullable | — | Vertical jump in inches. e.g. 34.5000 |
| wt | integernullable | — | Weight in pounds. e.g. 205 |
GET/api/v1/nfl/combine_resultsList combine_results for NFL
Requires one of:
player_id or season + position — requests satisfying none of these return 400.Parameters
player_idquerybigintoptionalFilter to a single player.
seasonqueryintegeroptionalFilter by season start year.
positionquerystringoptionalFilter by player position. Values: C, CB, CB/WR, DE, DT, EDGE, G, K, LB, OT, P, QB, RB, SAF, TE, WR.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/combine_results/{id}Get a single combine_result by id
Parameters
idpathbigintrequiredPrimary 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_picks
nfl.draft_picksEvery 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| cfb_player_id | stringnullable | College Football Reference player ID. e.g. caleb-williams-3 | |
| gsis_id | string | — | Game Statistics and Information System ID (NFL official cross-system join key). e.g. |
| pfr_player_id | string | Pro Football Reference player ID. e.g. WillCa03 | |
| player_id | bigint | — e.g. 3180 | |
| team_id | bigint | — e.g. 22 | |
| age | integernullable | — | Player age at the time of the draft. e.g. 23 |
| allpro_count | integer | — | Career All-Pro selections. e.g. 0 |
| car_av | integernullable | — | Career Approximate Value (Pro Football Reference, unweighted sum across seasons). e.g. — (all-null in sample) |
| career_to_year | integernullable | — | Most recent NFL season the player appeared in (calendar year). e.g. 2025 |
| category | string | — | Position category (e.g., `OFF`, `DEF`, `ST`). Values:DLOLDBWRRBLBTEQBKPFSLS |
| college | string | — | College the player was drafted out of. e.g. Texas |
| def_ints | integer | — | Career defensive interceptions. e.g. 0 |
| def_sacks | decimal | — | Career sacks (defensive; half-sacks supported as decimals). e.g. 0.0000 |
| def_solo_tackles | integer | — | Career solo defensive tackles. e.g. 0 |
| dr_av | integernullable | — | Approximate Value accumulated while with the drafting team. e.g. 1 |
| games_played | integer | — | Total career regular-season games played. e.g. 17 |
| is_hof | boolean | — | True if the player is enshrined in the Pro Football Hall of Fame. e.g. false |
| pass_attempts | integer | — | Career pass attempts. e.g. 0 |
| pass_completions | integer | — | Career pass completions. e.g. 0 |
| pass_ints | integer | — | Career interceptions thrown. e.g. 0 |
| pass_tds | integer | — | Career passing touchdowns. e.g. 0 |
| pass_yds | integer | — | Career passing yards. e.g. 0 |
| pfr_player_name | stringnullable | — | Player name as recorded on Pro Football Reference. e.g. Marcus Harris |
| pick | integer | — | Pick number within the round. e.g. 1 |
| position | string | — | Position the player was drafted at (e.g., QB, WR, DE). Values:OLWRRBLBDECBDBDTTEDLQBSAFOTKGCPFSOLBLS |
| probowl_count | integer | — | Career Pro Bowl selections. e.g. 0 |
| rec_tds | integer | — | Career receiving touchdowns. e.g. 0 |
| rec_yds | integer | — | Career receiving yards. e.g. 0 |
| receptions | integer | — | Career receptions. e.g. 0 |
| round | integer | — | Draft round (1-7). e.g. 6 |
| rush_atts | integer | — | Career rushing attempts. e.g. 0 |
| rush_tds | integer | — | Career rushing touchdowns. e.g. 0 |
| rush_yds | integer | — | Career rushing yards. e.g. 0 |
| season | integer | — | Calendar year of the draft. e.g. 2025 |
| seasons_started | integer | — | Number of NFL seasons in which the player was a primary starter. e.g. 0 |
| side | string | — | Side of the ball (`OFF` or `DEF`). Values:ODS |
| w_av | integernullable | — | Weighted Approximate Value (Pro Football Reference career composite metric). e.g. 1 |
GET/api/v1/nfl/draft_picksList draft_picks for NFL
Requires one of:
season — requests satisfying none of these return 400.Parameters
seasonqueryintegeroptionalFilter by season start year.
roundqueryintegeroptionalFilter by draft round.
team_idquerybigintoptionalFilter by team.
player_idquerybigintoptionalFilter to a single player.
positionquerystringoptionalFilter 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 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/draft_picks/{id}Get a single draft_pick by id
Parameters
idpathbigintrequiredPrimary 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_weathers
nfl.game_weathersOn-field weather throughout each NFL game — temperature, wind, humidity, and precipitation captured at fixed intervals from kickoff. Useful for outdoor-game performance analysis.
▸Fields18
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| game_id | bigint | — e.g. 4992 | |
| stadium_id | bigint | — e.g. 16 | |
| feels_like_temperature | integernullable | — | — e.g. 72 |
| field_condition | stringnullable | — | — e.g. — (all-null in sample) |
| humidity | floatnullable | — | — e.g. 50 |
| is_dome | boolean | — | — Values:falsetrue |
| minutes_from_start | integer | — | Minutes from game start (0, 30, 60, 90, 120, 150) e.g. 0 |
| precipitation | floatnullable | — | — e.g. 0 |
| precipitation_probability | floatnullable | — | — e.g. 0 |
| recorded_at | timestamptz | — | — e.g. 2025-09-07T19:00:00.000Z |
| roof_status | stringnullable | — | — Values:OpenDomeRetractable |
| temperature | integernullable | — | — e.g. 72 |
| weather_condition | stringnullable | — | — Values:INDOORCLEAROVERCASTDRIZZLEMAINLY_CLEARPARTLY_CLOUDYSNOWRAIN |
| weather_description | stringnullable | — | — Values:Indoor stadium - contro…Clear skyOvercastMainly clearLight drizzlePartly cloudyModerate drizzleSlight snowSlight rainModerate snowModerate rainDense drizzleHeavy rain |
| wind_direction | floatnullable | — | — e.g. 0 |
| wind_gust | floatnullable | — | — e.g. 0 |
| wind_speed | floatnullable | — | — e.g. 0 |
GET/api/v1/nfl/game_weathersList game_weathers for NFL
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
stadium_idquerybigintoptionalFilter by stadium.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/game_weathers/{id}Get a single game_weather by id
Parameters
idpathbigintrequiredPrimary 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.
injuries
nfl.injuriesThe 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
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| game_id | bigint | — e.g. 151 | |
| player_id | bigint | — e.g. 936 | |
| season_id | bigint | — e.g. 2024 | |
| team_id | bigint | — e.g. 4 | |
| date_modified | timestamptznullable | — | Timestamp of the most recent NFL feed update for this report. e.g. 2024-11-08T19:11:50.000Z |
| game_type | string | — | Game classification for the upcoming game (`REG`, `WC`, `DIV`, `CON`, `SB`). Values:REGDIVCONWCSB |
| position | string | — | Position the player was listed at on the report. Values:LBWRCBTDTSDETERBGQBCKFBPLSDBDL |
| practice_primary_injury | stringnullable | — | Primary injury reported on the practice participation report. e.g. Knee |
| practice_secondary_injury | stringnullable | — | Secondary injury reported on the practice participation report. e.g. Knee |
| practice_status | stringnullable | — | Practice 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_injury | stringnullable | — | Primary injury body part listed on the official Wednesday/Thursday report (e.g., `Hamstring`, `Knee`). e.g. Knee |
| report_secondary_injury | stringnullable | — | Secondary injury listed on the official injury report. e.g. Knee |
| report_status | stringnullable | — | Game-status designation (`Out`, `Doubtful`, `Questionable`; occasionally `Note` or blank when no designation was issued). Values:QuestionableOutDoubtfulNote |
| week | integer | — | NFL 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/injuriesList injuries for NFL
Requires one of:
player_id or season_id — requests satisfying none of these return 400.Parameters
player_idquerybigintoptionalFilter to a single player.
game_idquerybigintoptionalFilter to a single game.
team_idquerybigintoptionalFilter by team.
season_idquerybigintoptionalFilter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
weekqueryintegeroptionalFilter by week of the season.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/injuries/{id}Get a single injury by id
Parameters
idpathbigintrequiredPrimary 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_contracts
nfl.player_contractsNFL player contracts — total value, average annual pay, guaranteed money, and salary cap impact for every signed deal, with cap-inflated comparisons across eras.
▸Fields21
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| otc_id | string | — | OverTheCap unique contract identifier (external). e.g. 9466 |
| player_id | bigint | — e.g. 1546 | |
| team_id | bigint | — e.g. 25 | |
| apy | bigint | — | Average annual value (APY) in U.S. dollars — total `value` divided by `years`. e.g. 895000 |
| apy_cap_pct | decimal | — | APY as a percentage of the league salary cap in the signing year (0.0-100.0). e.g. 0.0040 |
| college | stringnullable | — | — e.g. Florida State |
| date_of_birth | datenullable | — | — e.g. — (all-null in sample) |
| guaranteed | bigint | — | Total guaranteed money over the life of the contract, in U.S. dollars. e.g. 0 |
| height | stringnullable | — | Height 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_apy | bigint | — | `apy` adjusted to the most recent salary cap. e.g. 895000 |
| inflated_guaranteed | bigint | — | `guaranteed` adjusted to the most recent salary cap. e.g. 0 |
| inflated_value | bigint | — | `value` adjusted to the most recent salary cap, in U.S. dollars. e.g. 895000 |
| is_active | boolean | — | True for the player's currently-active contract; false for historical contracts. e.g. true |
| player_page_url | stringnullable | — | Direct URL to the player's page on overthecap.com. e.g. https://overthecap.com/player/zach-wilson/9466/ |
| position | string | — | Player position at the time the contract was signed. Values:WRCBEDIDLSLBRBTERTQBLGLTKCRGPFBLS |
| season_history_json | stringnullable | — | JSON-encoded year-by-year cap-hit breakdown for the life of the contract (stored as a string). e.g. — (all-null in sample) |
| value | bigint | — | Total contract value in U.S. dollars as reported by OverTheCap. e.g. 895000 |
| weight | integernullable | — | Weight in pounds. e.g. 199 |
| year_signed | integer | — | Calendar year the contract was signed. e.g. 2022 |
| years | integer | — | Total contract length in years. e.g. 4 |
GET/api/v1/nfl/player_contractsList player_contracts for NFL
Requires one of:
player_id — requests satisfying none of these return 400.Parameters
player_idquerybigintoptionalFilter to a single player.
team_idquerybigintoptionalFilter by team.
positionquerystringoptionalFilter by player position. Values: C, CB, ED, FB, IDL, K, LB, LG, LS, LT, P, QB, RB, RG, RT, S, TE, WR.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/player_contracts/{id}Get a single player_contract by id
Parameters
idpathbigintrequiredPrimary 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_news
nfl.player_newsNews about NFL players — transactions, injuries, lineup announcements, suspensions, and general beat-reporter updates.
▸Fields16
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| external_id | stringnullable | — | — e.g. sportsdata-214469 |
| player_id | bigintnullable | — e.g. 925 | |
| team_id | bigintnullable | — e.g. 27 | |
| ai_processed | boolean | — | — e.g. false |
| analysis | stringnullable | — | — e.g. — (all-null in sample) |
| author | stringnullable | — | — e.g. Staff |
| category | stringnullable | — | injury, transaction, lineup, general Values:injurytransactiongenerallineup |
| content | stringnullable | — | — e.g. Los Angeles Rams star wide receiver Puka Nacua has been acc… |
| description | stringnullable | — | — e.g. Fantasy football draft rankings from Matt Bowen, Mike Clay,… |
| link | stringnullable | — | — e.g. https://www.espn.com/video/clip?id=47726158 |
| news_time | timestamptz | — | — e.g. 2026-05-04T04:00:00.000Z |
| priority | integer | — | — e.g. 5 |
| situational_impact | jsonbnullable | — | — e.g. {"affectedPlayers":[],"reason":"Questionable status creates… |
| source | stringnullable | — | — Values:cbs_sportssportsdataespn |
| title | string | — | — e.g. DJ Turner Questionable for Week 2 vs. Detroit (Calf) |
GET/api/v1/nfl/player_newsList player_news for NFL
Requires one of:
player_id or team_id — requests satisfying none of these return 400.Parameters
player_idquerybigintoptionalFilter to a single player.
team_idquerybigintoptionalFilter by team.
categoryquerystringoptionalFilter by category. Values: general, injury, lineup, transaction.
sourcequerystringoptionalFilter by source provider. Values: cbs_sports, espn, sportsdata.
news_timequerytimestamptzoptionalFilter 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 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nfl/player_news/{id}Get a single player_new by id
Parameters
idpathbigintrequiredPrimary 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.