STAT-API

MLB API Reference

Every MLB game from spring training through the World Series — the 162-game regular season, the postseason bracket, plus the players, ballparks, umpires, weather, Statcast metrics, and pitch-by-pitch detail.

Main

seasonsmlb.seasons
Each MLB season — spring training, the 162-game regular season, the Wild Card Series, the Division Series, the League Championship Series, and the World Series.
GET/api/v1/mlb/seasons
Parameters
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/seasons?limit=3'
Responses
200seasons rows matching the declared filter set, wrapped in { seasons, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(7 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
league_id
stringnullable—Official MLB season identifier
e.g. — (all-null in sample)
end_date
timestamptznullable——
e.g. 2018-10-28T04:00:00.000Z
post_season_start_date
timestamptznullable——
e.g. 2018-10-02T04:00:00.000Z
regular_season_start_date
timestamptznullable——
e.g. 2018-03-29T04:00:00.000Z
start_date
timestamptz——
e.g. 2018-02-21T05:00:00.000Z
start_year
integer——
e.g. 2018
GET/api/v1/mlb/seasons/{id}
Parameters
idpathbigintrequired
Primary key (id) of the season row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/seasons/{pk_value}'
Responses
200Single season row.application/jsonshow example ▸
404Row not found.
Response Schema(7 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
league_id
stringnullable—Official MLB season identifier
e.g. — (all-null in sample)
end_date
timestamptznullable——
e.g. 2018-10-28T04:00:00.000Z
post_season_start_date
timestamptznullable——
e.g. 2018-10-02T04:00:00.000Z
regular_season_start_date
timestamptznullable——
e.g. 2018-03-29T04:00:00.000Z
start_date
timestamptz——
e.g. 2018-02-21T05:00:00.000Z
start_year
integer——
e.g. 2018
teamsmlb.teams
The 30 MLB franchises, organized into the American and National Leagues with three divisions in each.
GET/api/v1/mlb/teams
Parameters
activequerybooleanoptional
Filter by active status (defaults to true to show only currently-active rows; pass active=false to include inactive).
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/teams?limit=3'
Responses
200teams rows matching the declared filter set, wrapped in { teams, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(11 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
league_team_id
integernullable—Official MLB team ID from statsapi.mlb.com
e.g. 108
venue_id
bigintnullable—
e.g. 2
abbreviation
string——
e.g. LAA
active
boolean——
e.g. true
city
string——
e.g. Los Angeles
division
string——
Values:WestEastCentral
full_name
string——
e.g. Los Angeles Angels
league
string——
Values:American LeagueNational League
logo_url
stringnullable—URL to team logo image
e.g. — (all-null in sample)
name
string——
e.g. Angels
GET/api/v1/mlb/teams/{id}
Parameters
idpathbigintrequired
Primary key (id) of the team row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/teams/{pk_value}'
Responses
200Single team row.application/jsonshow example ▸
404Row not found.
Response Schema(11 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
league_team_id
integernullable—Official MLB team ID from statsapi.mlb.com
e.g. 108
venue_id
bigintnullable—
e.g. 2
abbreviation
string——
e.g. LAA
active
boolean——
e.g. true
city
string——
e.g. Los Angeles
division
string——
Values:WestEastCentral
full_name
string——
e.g. Los Angeles Angels
league
string——
Values:American LeagueNational League
logo_url
stringnullable—URL to team logo image
e.g. — (all-null in sample)
name
string——
e.g. Angels
playersmlb.players
Every individual who has played in Major League Baseball — current 26-man and 40-man rosters, minor-league call-ups, players on the injured list, free agents, and retired players.
GET/api/v1/mlb/players
Requires one of: team_id or roster_status — requests satisfying none of these return 400.
Parameters
team_idquerybigintoptional
Filter to players whose current team_id matches. Null team_id rows (free agents, retired) are excluded when this filter is applied.
roster_statusquerystringoptional
Filter by canonical roster status. The "on a team now" set is {active, injured_reserve, non_roster} (active 26-man, injured list, and 40-man-but-optioned); free_agent/retired/inactive are off-roster. Values: active, injured_reserve, non_roster, free_agent, retired, inactive.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/players?team_id=1'
Responses
200players rows matching the declared filter set, wrapped in { players, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(29 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
league_id
stringnullable—Official MLB player identifier
e.g. — (all-null in sample)
league_player_id
integer—Official MLB player ID from statsapi.mlb.com
e.g. 613534
team_id
bigintnullable—
e.g. 16
bats
stringnullable——
Values:RLS
birth_city
stringnullable——
e.g. Santo Domingo
birth_country
stringnullable——
e.g. USA
birth_date
datenullable——
e.g. 1994-07-14
birth_state
stringnullable——
e.g. CA
debut_date
timestamptznullable——
e.g. 2023-03-30T00:00:00.000Z
display_fi_last
stringnullable——
e.g. J. Rodríguez
display_last_comma_first
stringnullable——
e.g. Davis, Jonathan
draft_number
stringnullable——
e.g. — (all-null in sample)
draft_round
stringnullable——
e.g. — (all-null in sample)
draft_year
stringnullable——
e.g. 2019
first_name
string——
e.g. Ryan
full_name
string——
e.g. Luis Ortiz
full_position_list
stringnullable——
Values:PitcherOutfielderCatcherSecond BaseThird BaseFirst BaseShortstopOutfieldDesignated HitterInfieldTwo-Way Player
height
integernullable——
e.g. 74
jersey
stringnullable——
e.g. 52
last_name
string——
e.g. Rodriguez
league_slug
stringnullable——
e.g. austin-adams-613534
position_category
stringnullable——
Values:PitcherInfielderOutfielderCatcherUtility
primary_position
string——
e.g. P
profile_pic_url
stringnullable—URL to player profile picture image
e.g. — (all-null in sample)
roster_status
stringnullable—Canonical roster status, shared across leagues. Derived from team_player_rosters: "active" (26-man), "non_roster" (on the 40-man but optioned), "injured_reserve" (IL); "inactive"/"free_agent" off-roster. The "on a team now" set is {active, injured_reserve, non_roster}.
Values:inactiveactivenon_rosterinjured_reserve
school
stringnullable——
e.g. — (all-null in sample)
throws
stringnullable——
Values:RLS
weight
integernullable——
e.g. 215
GET/api/v1/mlb/players/{id}
Parameters
idpathbigintrequired
Primary key (id) of the player row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/players/{pk_value}'
Responses
200Single player row.application/jsonshow example ▸
404Row not found.
Response Schema(29 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
league_id
stringnullable—Official MLB player identifier
e.g. — (all-null in sample)
league_player_id
integer—Official MLB player ID from statsapi.mlb.com
e.g. 613534
team_id
bigintnullable—
e.g. 16
bats
stringnullable——
Values:RLS
birth_city
stringnullable——
e.g. Santo Domingo
birth_country
stringnullable——
e.g. USA
birth_date
datenullable——
e.g. 1994-07-14
birth_state
stringnullable——
e.g. CA
debut_date
timestamptznullable——
e.g. 2023-03-30T00:00:00.000Z
display_fi_last
stringnullable——
e.g. J. Rodríguez
display_last_comma_first
stringnullable——
e.g. Davis, Jonathan
draft_number
stringnullable——
e.g. — (all-null in sample)
draft_round
stringnullable——
e.g. — (all-null in sample)
draft_year
stringnullable——
e.g. 2019
first_name
string——
e.g. Ryan
full_name
string——
e.g. Luis Ortiz
full_position_list
stringnullable——
Values:PitcherOutfielderCatcherSecond BaseThird BaseFirst BaseShortstopOutfieldDesignated HitterInfieldTwo-Way Player
height
integernullable——
e.g. 74
jersey
stringnullable——
e.g. 52
last_name
string——
e.g. Rodriguez
league_slug
stringnullable——
e.g. austin-adams-613534
position_category
stringnullable——
Values:PitcherInfielderOutfielderCatcherUtility
primary_position
string——
e.g. P
profile_pic_url
stringnullable—URL to player profile picture image
e.g. — (all-null in sample)
roster_status
stringnullable—Canonical roster status, shared across leagues. Derived from team_player_rosters: "active" (26-man), "non_roster" (on the 40-man but optioned), "injured_reserve" (IL); "inactive"/"free_agent" off-roster. The "on a team now" set is {active, injured_reserve, non_roster}.
Values:inactiveactivenon_rosterinjured_reserve
school
stringnullable——
e.g. — (all-null in sample)
throws
stringnullable——
Values:RLS
weight
integernullable——
e.g. 215
gamesmlb.games
Every scheduled and played MLB game — spring training exhibitions, the 162-game regular season, the Wild Card Series, the Division and Championship Series, and the World Series.
GET/api/v1/mlb/games
Requires one of: season_id — requests satisfying none of these return 400.
Parameters
season_idquerybigintoptional
Filter to a season. Defaults to the current season.
home_team_idquerybigintoptional
Filter by home team.
away_team_idquerybigintoptional
Filter by away team.
statusquerystringoptional
Filter by game status.
dayqueryintegeroptional
Filter by calendar day (YYYYMMDD integer, US Eastern) — e.g. day=20260609 for today's slate. season_id defaults to the current season; pass it explicitly for past-season days. Range syntax: day__gte=, day__lte=, day__between=.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/games?season_id=2027'
Responses
200games rows matching the declared filter set, wrapped in { games, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(31 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
away_team_id
bigint—
e.g. 38
home_team_id
bigint—
e.g. 33
league_game_id
integernullable—Official MLB gamePk from statsapi.mlb.com
e.g. 745080
league_id
stringnullable—Official MLB game identifier
e.g. — (all-null in sample)
losing_pitcher_id
bigintnullableLosing pitcher of record
e.g. 1177
save_pitcher_id
bigintnullableSave pitcher (if any)
e.g. 1415
season_id
bigint—
e.g. 2025
venue_id
bigintnullable—
e.g. 16
winning_pitcher_id
bigintnullableWinning pitcher of record
e.g. 272
attendance
integernullable——
e.g. — (all-null in sample)
away_team_score
integer——
e.g. 3
channel
stringnullable——
e.g. MLBN (out-of-market only)
day
integer——
e.g. 20180317
day_night
stringnullable—D=Day, N=Night
e.g. — (all-null in sample)
doubleheader
boolean——
Values:falsetrue
duration_minutes
integernullable—Total game duration in minutes
e.g. — (all-null in sample)
end_time
timestamptznullable——
e.g. — (all-null in sample)
game_label
stringnullable——
e.g. Regular Season Game 1
game_number
integer—For doubleheaders: 1 or 2
e.g. 1
game_time
timestamptz—Canonical game start time. The ONLY one on any games table — nba and nfl carried a duplicate `start_time` until 2026-08-27 and nhl carried `date_time` and `date_time_utc`; all four sports now expose `game_time` alone.
e.g. 2018-03-17T17:05:00.000Z
game_type
string—R=Regular, S=Spring, F=Wild Card, D=Division, L=League, W=World Series, E=Exhibition, A=All-Star
Values:RSDFLW
home_team_score
integer——
e.g. 4
if_necessary
booleannullable——
e.g. false
neutral_venue
boolean——
e.g. false
postponed_status
stringnullable——
e.g. — (all-null in sample)
season_type
string—Canonical season phase. Postseason round detail (Wild Card/Division/LCS/World Series) is in the league-native `game_type` code.
Values:regular_seasonspring_trainingpostseason
series_game_number
stringnullable——
e.g. 1
series_name
stringnullable——
Values:Regular SeasonSpring TrainingNL Division SeriesAL Division SeriesAL Championship SeriesWorld SeriesAL Wild Card SeriesNL Wild Card SeriesNL Championship Series
series_text
stringnullable——
Values:1-02-12-01-13-03-12-24-00-03-23-34-34-15-04-2
status
string—Final, Live, Scheduled, Postponed, Suspended, Cancelled
Values:FinalCompleted EarlyCancelled
GET/api/v1/mlb/games/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/games/{pk_value}'
Responses
200Single game row.application/jsonshow example ▸
404Row not found.
Response Schema(31 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
away_team_id
bigint—
e.g. 38
home_team_id
bigint—
e.g. 33
league_game_id
integernullable—Official MLB gamePk from statsapi.mlb.com
e.g. 745080
league_id
stringnullable—Official MLB game identifier
e.g. — (all-null in sample)
losing_pitcher_id
bigintnullableLosing pitcher of record
e.g. 1177
save_pitcher_id
bigintnullableSave pitcher (if any)
e.g. 1415
season_id
bigint—
e.g. 2025
venue_id
bigintnullable—
e.g. 16
winning_pitcher_id
bigintnullableWinning pitcher of record
e.g. 272
attendance
integernullable——
e.g. — (all-null in sample)
away_team_score
integer——
e.g. 3
channel
stringnullable——
e.g. MLBN (out-of-market only)
day
integer——
e.g. 20180317
day_night
stringnullable—D=Day, N=Night
e.g. — (all-null in sample)
doubleheader
boolean——
Values:falsetrue
duration_minutes
integernullable—Total game duration in minutes
e.g. — (all-null in sample)
end_time
timestamptznullable——
e.g. — (all-null in sample)
game_label
stringnullable——
e.g. Regular Season Game 1
game_number
integer—For doubleheaders: 1 or 2
e.g. 1
game_time
timestamptz—Canonical game start time. The ONLY one on any games table — nba and nfl carried a duplicate `start_time` until 2026-08-27 and nhl carried `date_time` and `date_time_utc`; all four sports now expose `game_time` alone.
e.g. 2018-03-17T17:05:00.000Z
game_type
string—R=Regular, S=Spring, F=Wild Card, D=Division, L=League, W=World Series, E=Exhibition, A=All-Star
Values:RSDFLW
home_team_score
integer——
e.g. 4
if_necessary
booleannullable——
e.g. false
neutral_venue
boolean——
e.g. false
postponed_status
stringnullable——
e.g. — (all-null in sample)
season_type
string—Canonical season phase. Postseason round detail (Wild Card/Division/LCS/World Series) is in the league-native `game_type` code.
Values:regular_seasonspring_trainingpostseason
series_game_number
stringnullable——
e.g. 1
series_name
stringnullable——
Values:Regular SeasonSpring TrainingNL Division SeriesAL Division SeriesAL Championship SeriesWorld SeriesAL Wild Card SeriesNL Wild Card SeriesNL Championship Series
series_text
stringnullable——
Values:1-02-12-01-13-03-12-24-00-03-23-34-34-15-04-2
status
string—Final, Live, Scheduled, Postponed, Suspended, Cancelled
Values:FinalCompleted EarlyCancelled

Plays

inningsmlb.innings
Each half-inning of every MLB game — runs scored, hits, errors, base traffic, plate appearances, who pitched, and how the offense ended each frame.
GET/api/v1/mlb/innings
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/innings?game_id=1'
Responses
200innings rows matching the declared filter set, wrapped in { innings, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(10 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 357
away_team_errors
integer——
e.g. 0
away_team_hits
integer——
e.g. 0
away_team_runs
integer——
e.g. 0
home_team_errors
integer——
e.g. 0
home_team_hits
integer——
e.g. 0
home_team_runs
integer——
e.g. 0
inning_half
string——
Values:TOPBOTTOM
inning_number
integer——
e.g. 1
GET/api/v1/mlb/innings/{id}
Parameters
idpathbigintrequired
Primary key (id) of the inning row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/innings/{pk_value}'
Responses
200Single inning row.application/jsonshow example ▸
404Row not found.
Response Schema(10 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 357
away_team_errors
integer——
e.g. 0
away_team_hits
integer——
e.g. 0
away_team_runs
integer——
e.g. 0
home_team_errors
integer——
e.g. 0
home_team_hits
integer——
e.g. 0
home_team_runs
integer——
e.g. 0
inning_half
string——
Values:TOPBOTTOM
inning_number
integer——
e.g. 1
at_batsmlb.at_bats
Every plate appearance in every MLB game — the batter, the pitcher, the count, the pitch sequence, and the outcome (single, double, home run, strikeout, walk, hit-by-pitch, etc.).
GET/api/v1/mlb/at_bats
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/at_bats?game_id=1'
Responses
200at_bats rows matching the declared filter set, wrapped in { at_bats, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(39 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
batter_id
bigint—
e.g. 996
game_id
bigint—
e.g. 69
inning_id
bigint—
e.g. 908
pitcher_id
bigint—
e.g. 174
at_bat_number
integer——
e.g. 0
balls
integer——
e.g. 0
bat_side
stringnullable—Batter side for this matchup (L/R) — per-PA truth, resolves switch hitters (statsapi matchup.batSide.code)
e.g. — (all-null in sample)
end_outs
integer——
e.g. 2
end_runners
integer——
e.g. 0
end_time
timestamptznullable—Wall-clock end of the plate appearance (statsapi about.endTime)
e.g. — (all-null in sample)
expected_batting_avg
decimalnullable——
e.g. 0.0050
expected_woba
decimalnullable——
e.g. 0.0000
hit_coord_x
floatnullable——
e.g. 104.05
hit_coord_y
floatnullable——
e.g. 149.88
hit_distance
integernullable——
e.g. 4
hit_exit_velocity
floatnullable——
e.g. 98.4
hit_launch_angle
floatnullable——
e.g. 5
hit_location
stringnullable——
Values:ground_ballfly_ballline_drivepopupbunt_grounderbunt_popup
hit_type
stringnullable——
Values:ground_ballfly_ballline_drivepopupbunt_grounderbunt_popup
is_barrel
booleannullable——
Values:falsetrue
is_flare_burner
booleannullable—Launch angle 10-25 AND exit velocity < 95
Values:falsetrue
is_hard_hit
booleannullable——
Values:falsetrue
is_solid_contact
booleannullable—Launch angle 20-25 AND exit velocity 95-100
Values:falsetrue
is_sweet_spot
booleannullable—Launch angle between 8-32 degrees
Values:falsetrue
is_topped
booleannullable—Launch angle < 10 AND exit velocity < 90
Values:falsetrue
is_under
booleannullable—Launch angle less than 10 degrees
Values:falsetrue
launch_speed_angle_zone
integernullable——
e.g. 3
pitch_count
integer——
e.g. 4
pitch_hand
stringnullable—Pitcher hand for this matchup (L/R) (statsapi matchup.pitchHand.code)
e.g. — (all-null in sample)
result
string——
e.g. Strikeout
runs_scored
integer——
e.g. 0
spray_angle
floatnullable—Horizontal angle from center field (degrees)
e.g. -6
start_outs
integer——
e.g. 1
start_runners
integer——
e.g. 0
start_time
timestamptznullable—Wall-clock start of the plate appearance (statsapi about.startTime)
e.g. — (all-null in sample)
statcast_quality_score
decimalnullable—Statcast data quality score (0.0-1.0)
e.g. 1.0000
strikes
integer——
e.g. 2
tracking_confidence
decimalnullable—Confidence in tracking data accuracy
e.g. — (all-null in sample)
GET/api/v1/mlb/at_bats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the at_bat row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/at_bats/{pk_value}'
Responses
200Single at_bat row.application/jsonshow example ▸
404Row not found.
Response Schema(39 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
batter_id
bigint—
e.g. 996
game_id
bigint—
e.g. 69
inning_id
bigint—
e.g. 908
pitcher_id
bigint—
e.g. 174
at_bat_number
integer——
e.g. 0
balls
integer——
e.g. 0
bat_side
stringnullable—Batter side for this matchup (L/R) — per-PA truth, resolves switch hitters (statsapi matchup.batSide.code)
e.g. — (all-null in sample)
end_outs
integer——
e.g. 2
end_runners
integer——
e.g. 0
end_time
timestamptznullable—Wall-clock end of the plate appearance (statsapi about.endTime)
e.g. — (all-null in sample)
expected_batting_avg
decimalnullable——
e.g. 0.0050
expected_woba
decimalnullable——
e.g. 0.0000
hit_coord_x
floatnullable——
e.g. 104.05
hit_coord_y
floatnullable——
e.g. 149.88
hit_distance
integernullable——
e.g. 4
hit_exit_velocity
floatnullable——
e.g. 98.4
hit_launch_angle
floatnullable——
e.g. 5
hit_location
stringnullable——
Values:ground_ballfly_ballline_drivepopupbunt_grounderbunt_popup
hit_type
stringnullable——
Values:ground_ballfly_ballline_drivepopupbunt_grounderbunt_popup
is_barrel
booleannullable——
Values:falsetrue
is_flare_burner
booleannullable—Launch angle 10-25 AND exit velocity < 95
Values:falsetrue
is_hard_hit
booleannullable——
Values:falsetrue
is_solid_contact
booleannullable—Launch angle 20-25 AND exit velocity 95-100
Values:falsetrue
is_sweet_spot
booleannullable—Launch angle between 8-32 degrees
Values:falsetrue
is_topped
booleannullable—Launch angle < 10 AND exit velocity < 90
Values:falsetrue
is_under
booleannullable—Launch angle less than 10 degrees
Values:falsetrue
launch_speed_angle_zone
integernullable——
e.g. 3
pitch_count
integer——
e.g. 4
pitch_hand
stringnullable—Pitcher hand for this matchup (L/R) (statsapi matchup.pitchHand.code)
e.g. — (all-null in sample)
result
string——
e.g. Strikeout
runs_scored
integer——
e.g. 0
spray_angle
floatnullable—Horizontal angle from center field (degrees)
e.g. -6
start_outs
integer——
e.g. 1
start_runners
integer——
e.g. 0
start_time
timestamptznullable—Wall-clock start of the plate appearance (statsapi about.startTime)
e.g. — (all-null in sample)
statcast_quality_score
decimalnullable—Statcast data quality score (0.0-1.0)
e.g. 1.0000
strikes
integer——
e.g. 2
tracking_confidence
decimalnullable—Confidence in tracking data accuracy
e.g. — (all-null in sample)
pitchesmlb.pitches
Every individual pitch thrown in every MLB game — the pitch type, velocity, location, movement, spin, and the result (called strike, swinging strike, foul, ball, hit, walk).
GET/api/v1/mlb/pitches
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/pitches?game_id=1'
Responses
200pitches rows matching the declared filter set, wrapped in { pitches, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(73 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
at_bat_id
bigint—
e.g. 1494
batter_id
bigint—
e.g. 306
game_id
bigint—
e.g. 84
pitcher_id
bigint—
e.g. 267
play_id
bigint——
e.g. 12
air_out
boolean—Whether this pitch resulted in an air out
e.g. false
ball
boolean——
Values:falsetrue
barrel
booleannullable—Optimal combination of exit velocity and launch angle
Values:falsetrue
break_angle
floatnullable——
e.g. 1.2
break_length
floatnullable——
e.g. 3.6
break_y
floatnullable——
e.g. 24
breaking_ball
booleannullable—Breaking ball (curveball, slider, knuckleball)
Values:falsetrue
call
string——
Values:BallFoulCalled StrikeIn play, out(s)Swinging StrikeIn play, no outIn play, run(s)Ball In DirtFoul TipSwinging Strike (Blocke…Hit By PitchFoul BuntPitchoutMissed Bunt
catchers_interference
boolean—Whether this pitch resulted in catchers interference
e.g. false
chase
booleannullable—Whether batter swung at pitch outside zone
e.g. true
double
boolean—Whether this pitch resulted in a double
Values:falsetrue
effective_speed
floatnullable—Perceived speed to batter (mph)
e.g. 85.3
expected_batting_avg
decimalnullable—xBA based on exit velocity and launch angle
e.g. — (all-null in sample)
expected_woba
decimalnullable—xwOBA based on exit velocity and launch angle
e.g. — (all-null in sample)
extension
floatnullable——
e.g. 7.015639833312882
fastball
booleannullable—Fastball variant (4-seam, 2-seam, sinker, cutter)
Values:truefalse
flare_burner
booleannullable—Launch angle 10-25 AND exit velocity < 95
Values:falsetrue
fly_out
boolean—Whether this pitch resulted in a fly out
Values:falsetrue
ground_into_double_play
boolean—Whether this pitch resulted in grounding into double play
e.g. false
ground_into_triple_play
boolean—Whether this pitch resulted in grounding into triple play
e.g. false
ground_out
boolean—Whether this pitch resulted in a ground out
Values:falsetrue
hard_hit
booleannullable—Exit velocity >= 95 MPH
Values:falsetrue
hit_by_pitch
boolean—Whether this pitch resulted in hit by pitch
Values:falsetrue
hit_coord_x
floatnullable—Hit coordinate X (feet from home plate)
e.g. 153.39
hit_coord_y
floatnullable—Hit coordinate Y (feet from home plate)
e.g. 167.3
hit_distance
integernullable—Distance of batted ball (feet)
e.g. 4
hit_exit_velocity
floatnullable—Exit velocity of batted ball (mph)
e.g. 103.4
hit_launch_angle
floatnullable—Launch angle of batted ball (degrees)
e.g. 5
home_run
boolean—Whether this pitch resulted in a home run
Values:falsetrue
in_play
boolean——
Values:falsetrue
in_strike_zone
booleannullable—Whether pitch was in the strike zone
Values:falsetrue
intentional_walk
boolean—Whether this pitch resulted in an intentional walk
e.g. false
launch_speed_angle_zone
integernullable—1=Weak, 2=Topped, 3=Under, 4=Flare/Burner, 5=Solid, 6=Barrel
e.g. 3
line_out
boolean—Whether this pitch resulted in a line out
Values:falsetrue
offspeed
booleannullable—Offspeed pitch (changeup, splitter, forkball)
Values:falsetrue
pitch_number
integer——
e.g. 1
pitch_speed
floatnullable——
e.g. 92.6
pitch_type
stringnullable——
Values:FFSISLCHFCSTCUFSKCSVFA
pitch_x
floatnullable——
e.g. 0.36271081581727094
pitch_y
floatnullable——
e.g. 155.85
pitch_z
floatnullable——
e.g. 3.5469804155056193
pitch_zone
integernullable——
e.g. 14
plate_x
floatnullable——
e.g. 125.18
plate_z
floatnullable——
e.g. 155.85
pop_out
boolean—Whether this pitch resulted in a pop out
Values:falsetrue
release_speed
floatnullable—Speed at release point (mph)
e.g. 92.6
result
string——
Values:BallFoulCalled StrikeIn play, out(s)Swinging StrikeIn play, no outIn play, run(s)Ball In DirtFoul TipSwinging Strike (Blocke…Hit By PitchFoul BuntPitchoutMissed Bunt
sacrifice_fly
boolean—Whether this pitch resulted in a sacrifice fly
Values:falsetrue
sacrifice_hit
boolean—Whether this pitch resulted in a sacrifice bunt
Values:falsetrue
single
boolean—Whether this pitch resulted in a single
Values:falsetrue
solid_contact
booleannullable—Launch angle 20-25 AND exit velocity 95-100
Values:falsetrue
spin_axis
floatnullable—Spin axis (degrees)
e.g. — (all-null in sample)
spin_direction
floatnullable——
e.g. 211
spin_rate
floatnullable——
e.g. 2190
spray_angle
floatnullable—Horizontal angle from center field (degrees)
e.g. -6.1
start_time
timestamptznullable—Wall-clock time of the pitch (statsapi playEvents startTime)
e.g. — (all-null in sample)
statcast_quality_score
decimalnullable—Statcast data quality score (0.0-1.0)
e.g. — (all-null in sample)
strike
boolean——
Values:falsetrue
strike_zone_bottom
floatnullable——
e.g. 1.63
strike_zone_top
floatnullable——
e.g. 3.51
strikeout
boolean—Whether this pitch resulted in a strikeout
Values:falsetrue
sweet_spot
booleannullable—Launch angle between 8-32 degrees
Values:falsetrue
topped
booleannullable—Launch angle < 10 AND exit velocity < 90
Values:falsetrue
tracking_confidence
decimalnullable—Confidence in tracking data accuracy
e.g. — (all-null in sample)
triple
boolean—Whether this pitch resulted in a triple
Values:falsetrue
under
booleannullable—Launch angle less than 10 degrees
Values:falsetrue
walk
boolean—Whether this pitch resulted in a walk
Values:falsetrue
GET/api/v1/mlb/pitches/{id}
Parameters
idpathbigintrequired
Primary key (id) of the pitche row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/pitches/{pk_value}'
Responses
200Single pitche row.application/jsonshow example ▸
404Row not found.
Response Schema(73 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
at_bat_id
bigint—
e.g. 1494
batter_id
bigint—
e.g. 306
game_id
bigint—
e.g. 84
pitcher_id
bigint—
e.g. 267
play_id
bigint——
e.g. 12
air_out
boolean—Whether this pitch resulted in an air out
e.g. false
ball
boolean——
Values:falsetrue
barrel
booleannullable—Optimal combination of exit velocity and launch angle
Values:falsetrue
break_angle
floatnullable——
e.g. 1.2
break_length
floatnullable——
e.g. 3.6
break_y
floatnullable——
e.g. 24
breaking_ball
booleannullable—Breaking ball (curveball, slider, knuckleball)
Values:falsetrue
call
string——
Values:BallFoulCalled StrikeIn play, out(s)Swinging StrikeIn play, no outIn play, run(s)Ball In DirtFoul TipSwinging Strike (Blocke…Hit By PitchFoul BuntPitchoutMissed Bunt
catchers_interference
boolean—Whether this pitch resulted in catchers interference
e.g. false
chase
booleannullable—Whether batter swung at pitch outside zone
e.g. true
double
boolean—Whether this pitch resulted in a double
Values:falsetrue
effective_speed
floatnullable—Perceived speed to batter (mph)
e.g. 85.3
expected_batting_avg
decimalnullable—xBA based on exit velocity and launch angle
e.g. — (all-null in sample)
expected_woba
decimalnullable—xwOBA based on exit velocity and launch angle
e.g. — (all-null in sample)
extension
floatnullable——
e.g. 7.015639833312882
fastball
booleannullable—Fastball variant (4-seam, 2-seam, sinker, cutter)
Values:truefalse
flare_burner
booleannullable—Launch angle 10-25 AND exit velocity < 95
Values:falsetrue
fly_out
boolean—Whether this pitch resulted in a fly out
Values:falsetrue
ground_into_double_play
boolean—Whether this pitch resulted in grounding into double play
e.g. false
ground_into_triple_play
boolean—Whether this pitch resulted in grounding into triple play
e.g. false
ground_out
boolean—Whether this pitch resulted in a ground out
Values:falsetrue
hard_hit
booleannullable—Exit velocity >= 95 MPH
Values:falsetrue
hit_by_pitch
boolean—Whether this pitch resulted in hit by pitch
Values:falsetrue
hit_coord_x
floatnullable—Hit coordinate X (feet from home plate)
e.g. 153.39
hit_coord_y
floatnullable—Hit coordinate Y (feet from home plate)
e.g. 167.3
hit_distance
integernullable—Distance of batted ball (feet)
e.g. 4
hit_exit_velocity
floatnullable—Exit velocity of batted ball (mph)
e.g. 103.4
hit_launch_angle
floatnullable—Launch angle of batted ball (degrees)
e.g. 5
home_run
boolean—Whether this pitch resulted in a home run
Values:falsetrue
in_play
boolean——
Values:falsetrue
in_strike_zone
booleannullable—Whether pitch was in the strike zone
Values:falsetrue
intentional_walk
boolean—Whether this pitch resulted in an intentional walk
e.g. false
launch_speed_angle_zone
integernullable—1=Weak, 2=Topped, 3=Under, 4=Flare/Burner, 5=Solid, 6=Barrel
e.g. 3
line_out
boolean—Whether this pitch resulted in a line out
Values:falsetrue
offspeed
booleannullable—Offspeed pitch (changeup, splitter, forkball)
Values:falsetrue
pitch_number
integer——
e.g. 1
pitch_speed
floatnullable——
e.g. 92.6
pitch_type
stringnullable——
Values:FFSISLCHFCSTCUFSKCSVFA
pitch_x
floatnullable——
e.g. 0.36271081581727094
pitch_y
floatnullable——
e.g. 155.85
pitch_z
floatnullable——
e.g. 3.5469804155056193
pitch_zone
integernullable——
e.g. 14
plate_x
floatnullable——
e.g. 125.18
plate_z
floatnullable——
e.g. 155.85
pop_out
boolean—Whether this pitch resulted in a pop out
Values:falsetrue
release_speed
floatnullable—Speed at release point (mph)
e.g. 92.6
result
string——
Values:BallFoulCalled StrikeIn play, out(s)Swinging StrikeIn play, no outIn play, run(s)Ball In DirtFoul TipSwinging Strike (Blocke…Hit By PitchFoul BuntPitchoutMissed Bunt
sacrifice_fly
boolean—Whether this pitch resulted in a sacrifice fly
Values:falsetrue
sacrifice_hit
boolean—Whether this pitch resulted in a sacrifice bunt
Values:falsetrue
single
boolean—Whether this pitch resulted in a single
Values:falsetrue
solid_contact
booleannullable—Launch angle 20-25 AND exit velocity 95-100
Values:falsetrue
spin_axis
floatnullable—Spin axis (degrees)
e.g. — (all-null in sample)
spin_direction
floatnullable——
e.g. 211
spin_rate
floatnullable——
e.g. 2190
spray_angle
floatnullable—Horizontal angle from center field (degrees)
e.g. -6.1
start_time
timestamptznullable—Wall-clock time of the pitch (statsapi playEvents startTime)
e.g. — (all-null in sample)
statcast_quality_score
decimalnullable—Statcast data quality score (0.0-1.0)
e.g. — (all-null in sample)
strike
boolean——
Values:falsetrue
strike_zone_bottom
floatnullable——
e.g. 1.63
strike_zone_top
floatnullable——
e.g. 3.51
strikeout
boolean—Whether this pitch resulted in a strikeout
Values:falsetrue
sweet_spot
booleannullable—Launch angle between 8-32 degrees
Values:falsetrue
topped
booleannullable—Launch angle < 10 AND exit velocity < 90
Values:falsetrue
tracking_confidence
decimalnullable—Confidence in tracking data accuracy
e.g. — (all-null in sample)
triple
boolean—Whether this pitch resulted in a triple
Values:falsetrue
under
booleannullable—Launch angle less than 10 degrees
Values:falsetrue
walk
boolean—Whether this pitch resulted in a walk
Values:falsetrue
play_by_playsmlb.play_by_plays
Every individual play of every MLB game — every plate appearance, baserunning event, defensive play, and substitution with the inning, outs, base state, and score at the moment.
GET/api/v1/mlb/play_by_plays
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/play_by_plays?game_id=1'
Responses
200play_by_plays rows matching the declared filter set, wrapped in { play_by_plays, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(26 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
at_bat_id
bigintnullable—
e.g. 1
batter_id
bigintnullable—
e.g. 996
catcher_id
bigintnullable—
e.g. — (all-null in sample)
first_base_runner_id
bigintnullable—
e.g. 996
game_id
bigint—
e.g. 69
inning_id
bigint—
e.g. 908
pitcher_id
bigintnullable—
e.g. 174
play_id
bigint——
e.g. 0
player_id
bigintnullable—
e.g. 996
second_base_runner_id
bigintnullable—
e.g. 996
team_id
bigint—
e.g. 19
third_base_runner_id
bigintnullable—
e.g. 996
away_score
integernullable——
e.g. — (all-null in sample)
count_balls
integer——
e.g. 0
count_strikes
integer——
e.g. 2
end_time
timestamptznullable—Wall-clock end of the play (statsapi about.endTime)
e.g. — (all-null in sample)
event_sub_type
integer——
e.g. 0
event_type
integer——
e.g. 8
hit_location
stringnullable——
Values:ground_ballfly_ballline_drivepopupbunt_grounderbunt_popup
hit_type
stringnullable——
Values:ground_ballfly_ballline_drivepopupbunt_grounderbunt_popup
home_score
integernullable——
e.g. — (all-null in sample)
mlb_event_num
integer——
e.g. 0
outs
integer——
e.g. 1
runners_on_base
integer——
e.g. 0
start_time
timestamptznullable—Wall-clock start of the play (statsapi about.startTime)
e.g. — (all-null in sample)
GET/api/v1/mlb/play_by_plays/{id}
Parameters
idpathbigintrequired
Primary key (id) of the play_by_play row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/play_by_plays/{pk_value}'
Responses
200Single play_by_play row.application/jsonshow example ▸
404Row not found.
Response Schema(26 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
at_bat_id
bigintnullable—
e.g. 1
batter_id
bigintnullable—
e.g. 996
catcher_id
bigintnullable—
e.g. — (all-null in sample)
first_base_runner_id
bigintnullable—
e.g. 996
game_id
bigint—
e.g. 69
inning_id
bigint—
e.g. 908
pitcher_id
bigintnullable—
e.g. 174
play_id
bigint——
e.g. 0
player_id
bigintnullable—
e.g. 996
second_base_runner_id
bigintnullable—
e.g. 996
team_id
bigint—
e.g. 19
third_base_runner_id
bigintnullable—
e.g. 996
away_score
integernullable——
e.g. — (all-null in sample)
count_balls
integer——
e.g. 0
count_strikes
integer——
e.g. 2
end_time
timestamptznullable—Wall-clock end of the play (statsapi about.endTime)
e.g. — (all-null in sample)
event_sub_type
integer——
e.g. 0
event_type
integer——
e.g. 8
hit_location
stringnullable——
Values:ground_ballfly_ballline_drivepopupbunt_grounderbunt_popup
hit_type
stringnullable——
Values:ground_ballfly_ballline_drivepopupbunt_grounderbunt_popup
home_score
integernullable——
e.g. — (all-null in sample)
mlb_event_num
integer——
e.g. 0
outs
integer——
e.g. 1
runners_on_base
integer——
e.g. 0
start_time
timestamptznullable—Wall-clock start of the play (statsapi about.startTime)
e.g. — (all-null in sample)

Stats

season_team_statsmlb.season_team_stats
Season totals for each MLB team — wins and losses, runs scored and allowed, batting and pitching aggregates, fielding stats, and advanced team metrics (BaseRuns, pythagorean expectation, run differential).
GET/api/v1/mlb/season_team_stats
Requires one of: season_id — requests satisfying none of these return 400.
Parameters
season_idquerybigintoptional
Filter to a season. Defaults to the current season.
team_idquerybigintoptional
Filter by team.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/season_team_stats?season_id=2027'
Responses
200season_team_stats rows matching the declared filter set, wrapped in { season_team_stats, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(36 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
season_id
bigint—
e.g. 2024
team_id
bigint—
e.g. 16
at_bats
integer——
e.g. 5522
batting_average
decimal——
e.g. 0.2440
blown_saves
integer——
e.g. 22
caught_stealing
integer——
e.g. 30
complete_games
integer——
e.g. 1
double_plays
integer——
e.g. 125
doubles
integer——
e.g. 245
earned_run_average
decimal——
e.g. 3.7400
earned_runs
integer——
e.g. 596
errors
integer——
e.g. 97
fielding_percentage
decimal——
e.g. 0.9840
games_played
integer——
e.g. 162
hits
integer——
e.g. 1423
holds
integer——
e.g. 83
home_runs
integer——
e.g. 190
innings_pitched
decimal—Innings pitched in MLB notation (6.2 = 6 and 2/3 innings)
e.g. 1442.0000
losses
integer——
e.g. 84
on_base_percentage
decimal——
e.g. 0.3150
on_base_plus_slugging
decimal——
e.g. 0.7500
runs_allowed
integer——
e.g. 697
runs_batted_in
integer——
e.g. 670
runs_scored
integer——
e.g. 716
save_opportunities
integer——
e.g. 64
saves
integer——
e.g. 44
shutouts
integer——
e.g. 8
slugging_percentage
decimal——
e.g. 0.3970
stolen_bases
integer——
e.g. 88
strikeouts
integer——
e.g. 1461
ties
integer——
e.g. 0
triples
integer——
e.g. 18
walks
integer——
e.g. 478
whip
decimal——
e.g. 1.2400
wins
integer——
e.g. 90
GET/api/v1/mlb/season_team_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the season_team_stat row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/season_team_stats/{pk_value}'
Responses
200Single season_team_stat row.application/jsonshow example ▸
404Row not found.
Response Schema(36 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
season_id
bigint—
e.g. 2024
team_id
bigint—
e.g. 16
at_bats
integer——
e.g. 5522
batting_average
decimal——
e.g. 0.2440
blown_saves
integer——
e.g. 22
caught_stealing
integer——
e.g. 30
complete_games
integer——
e.g. 1
double_plays
integer——
e.g. 125
doubles
integer——
e.g. 245
earned_run_average
decimal——
e.g. 3.7400
earned_runs
integer——
e.g. 596
errors
integer——
e.g. 97
fielding_percentage
decimal——
e.g. 0.9840
games_played
integer——
e.g. 162
hits
integer——
e.g. 1423
holds
integer——
e.g. 83
home_runs
integer——
e.g. 190
innings_pitched
decimal—Innings pitched in MLB notation (6.2 = 6 and 2/3 innings)
e.g. 1442.0000
losses
integer——
e.g. 84
on_base_percentage
decimal——
e.g. 0.3150
on_base_plus_slugging
decimal——
e.g. 0.7500
runs_allowed
integer——
e.g. 697
runs_batted_in
integer——
e.g. 670
runs_scored
integer——
e.g. 716
save_opportunities
integer——
e.g. 64
saves
integer——
e.g. 44
shutouts
integer——
e.g. 8
slugging_percentage
decimal——
e.g. 0.3970
stolen_bases
integer——
e.g. 88
strikeouts
integer——
e.g. 1461
ties
integer——
e.g. 0
triples
integer——
e.g. 18
walks
integer——
e.g. 478
whip
decimal——
e.g. 1.2400
wins
integer——
e.g. 90
season_player_statsmlb.season_player_stats
Season totals for each MLB player — the full batting line (AVG, OBP, SLG, OPS), counting stats (HR, RBI, SB, R), and pitching line (W, L, ERA, WHIP, K, BB). Advanced run-value metrics (wRC+, FIP, WAR) are not carried here. Scope is not split by season type.
GET/api/v1/mlb/season_player_stats
Requires one of: season_id or player_id — requests satisfying none of these return 400.
Parameters
season_idquerybigintoptional
Filter to a season. Defaults to the current season.
player_idquerybigintoptional
Filter to a single player.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/season_player_stats?season_id=2027'
Responses
200season_player_stats rows matching the declared filter set, wrapped in { season_player_stats, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(69 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
player_id
bigint—
e.g. 1439
season_id
bigint—
e.g. 2024
assists
integer——
e.g. 0
at_bats
integer——
e.g. 0
balls
integernullable——
e.g. 0
batters_faced
integer——
e.g. 0
batting_average
decimal——
e.g. 0.0000
blown_saves
integer——
e.g. 0
caught_stealing
integer——
e.g. 0
caught_stealing_by
integer——
e.g. 0
complete_games
integer——
e.g. 0
double_plays
integer——
e.g. 0
doubles
integer——
e.g. 0
earned_run_average
decimal——
e.g. 0.0000
earned_runs
integer——
e.g. 0
errors
integer——
e.g. 0
fielding_games
integer——
e.g. 0
fielding_games_started
integer——
e.g. 0
fielding_percentage
decimal——
e.g. 0.0000
fielding_position
string——
Values:PC2BLFRFCF3B1BSSXDH
games_pitched
integer——
e.g. 0
games_played
integer——
e.g. 0
games_started
integer——
e.g. 0
games_started_pitching
integer——
e.g. 0
grounded_into_double_play
integer——
e.g. 0
hit_by_pitch
integer——
e.g. 0
hits
integer——
e.g. 0
hits_allowed
integer——
e.g. 0
hits_per_nine
decimal——
e.g. 0.0000
holds
integer——
e.g. 0
home_runs
integer——
e.g. 0
home_runs_allowed
integer——
e.g. 0
home_runs_per_nine
decimal——
e.g. 0.0000
innings_pitched
decimal—Innings pitched in MLB notation (6.2 = 6 and 2/3 innings)
e.g. 0.0000
intentional_walks
integernullable——
e.g. 0
left_on_base
integernullable——
e.g. 0
losses
integer——
e.g. 0
on_base_percentage
decimal——
e.g. 0.0000
on_base_plus_slugging
decimal——
e.g. 0.0000
passed_balls
integer——
e.g. 0
pitches_thrown
integernullable——
e.g. 0
plate_appearances
integer——
e.g. 0
putouts
integer——
e.g. 0
quality_starts
integernullable——
e.g. 0
runs
integer——
e.g. 0
runs_allowed
integer——
e.g. 0
runs_batted_in
integer——
e.g. 0
sacrifice_flies
integer——
e.g. 0
sacrifice_hits
integer——
e.g. 0
save_opportunities
integer——
e.g. 0
saves
integer——
e.g. 0
shutouts
integer——
e.g. 0
singles
integernullable—Derivable from hits - doubles - triples - home_runs
e.g. 0
slugging_percentage
decimal——
e.g. 0.0000
stolen_bases
integer——
e.g. 0
stolen_bases_allowed
integer——
e.g. 0
strikeouts
integer——
e.g. 0
strikeouts_per_nine
decimal——
e.g. 0.0000
strikeouts_pitched
integer——
e.g. 0
strikes
integernullable——
e.g. 0
total_bases
integernullable—Derivable: 1B + 2*2B + 3*3B + 4*HR
e.g. 0
total_chances
integer——
e.g. 0
triples
integer——
e.g. 0
walks
integer——
e.g. 0
walks_allowed
integer——
e.g. 0
walks_per_nine
decimal——
e.g. 0.0000
whip
decimal——
e.g. 0.0000
wins
integer——
e.g. 0
GET/api/v1/mlb/season_player_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the season_player_stat row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/season_player_stats/{pk_value}'
Responses
200Single season_player_stat row.application/jsonshow example ▸
404Row not found.
Response Schema(69 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
player_id
bigint—
e.g. 1439
season_id
bigint—
e.g. 2024
assists
integer——
e.g. 0
at_bats
integer——
e.g. 0
balls
integernullable——
e.g. 0
batters_faced
integer——
e.g. 0
batting_average
decimal——
e.g. 0.0000
blown_saves
integer——
e.g. 0
caught_stealing
integer——
e.g. 0
caught_stealing_by
integer——
e.g. 0
complete_games
integer——
e.g. 0
double_plays
integer——
e.g. 0
doubles
integer——
e.g. 0
earned_run_average
decimal——
e.g. 0.0000
earned_runs
integer——
e.g. 0
errors
integer——
e.g. 0
fielding_games
integer——
e.g. 0
fielding_games_started
integer——
e.g. 0
fielding_percentage
decimal——
e.g. 0.0000
fielding_position
string——
Values:PC2BLFRFCF3B1BSSXDH
games_pitched
integer——
e.g. 0
games_played
integer——
e.g. 0
games_started
integer——
e.g. 0
games_started_pitching
integer——
e.g. 0
grounded_into_double_play
integer——
e.g. 0
hit_by_pitch
integer——
e.g. 0
hits
integer——
e.g. 0
hits_allowed
integer——
e.g. 0
hits_per_nine
decimal——
e.g. 0.0000
holds
integer——
e.g. 0
home_runs
integer——
e.g. 0
home_runs_allowed
integer——
e.g. 0
home_runs_per_nine
decimal——
e.g. 0.0000
innings_pitched
decimal—Innings pitched in MLB notation (6.2 = 6 and 2/3 innings)
e.g. 0.0000
intentional_walks
integernullable——
e.g. 0
left_on_base
integernullable——
e.g. 0
losses
integer——
e.g. 0
on_base_percentage
decimal——
e.g. 0.0000
on_base_plus_slugging
decimal——
e.g. 0.0000
passed_balls
integer——
e.g. 0
pitches_thrown
integernullable——
e.g. 0
plate_appearances
integer——
e.g. 0
putouts
integer——
e.g. 0
quality_starts
integernullable——
e.g. 0
runs
integer——
e.g. 0
runs_allowed
integer——
e.g. 0
runs_batted_in
integer——
e.g. 0
sacrifice_flies
integer——
e.g. 0
sacrifice_hits
integer——
e.g. 0
save_opportunities
integer——
e.g. 0
saves
integer——
e.g. 0
shutouts
integer——
e.g. 0
singles
integernullable—Derivable from hits - doubles - triples - home_runs
e.g. 0
slugging_percentage
decimal——
e.g. 0.0000
stolen_bases
integer——
e.g. 0
stolen_bases_allowed
integer——
e.g. 0
strikeouts
integer——
e.g. 0
strikeouts_per_nine
decimal——
e.g. 0.0000
strikeouts_pitched
integer——
e.g. 0
strikes
integernullable——
e.g. 0
total_bases
integernullable—Derivable: 1B + 2*2B + 3*3B + 4*HR
e.g. 0
total_chances
integer——
e.g. 0
triples
integer——
e.g. 0
walks
integer——
e.g. 0
walks_allowed
integer——
e.g. 0
walks_per_nine
decimal——
e.g. 0.0000
whip
decimal——
e.g. 0.0000
wins
integer——
e.g. 0
game_player_batter_statsmlb.game_player_batter_stats
Each batter's box-score stat line for each MLB game — at-bats, hits, doubles, triples, home runs, RBIs, walks, strikeouts, stolen bases, and runs scored.
GET/api/v1/mlb/game_player_batter_stats
Requires one of: game_id or player_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
player_idquerybigintoptional
Filter to a single player.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_player_batter_stats?game_id=1'
Responses
200game_player_batter_stats rows matching the declared filter set, wrapped in { game_player_batter_stats, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(42 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 64
player_id
bigint—
e.g. 604
team_id
bigint—
e.g. 41
air_outs
integer——
e.g. 0
at_bats
integer——
e.g. 3
at_bats_per_home_run
decimal——
e.g. 0.0000
babip
decimal——
e.g. 0.0000
balls_in_play
integer——
e.g. 0
batting_average
decimal——
e.g. 0.0000
catchers_interference
integer——
e.g. 0
caught_stealing
integer——
e.g. 0
double_plays
integer——
e.g. 0
doubles
integer——
e.g. 0
fly_outs
integer——
e.g. 0
ground_into_double_play
integer——
e.g. 0
ground_into_triple_play
integer——
e.g. 0
ground_outs
integer——
e.g. 0
hit_by_pitch
integer——
e.g. 0
hits
integer——
e.g. 0
home_runs
integer——
e.g. 0
intentional_walks
integer——
e.g. 0
isolated_power
decimal——
e.g. 0.0000
left_on_base
integer——
e.g. 0
line_outs
integer——
e.g. 0
on_base_percentage
decimal——
e.g. 0.0000
on_base_plus_slugging
decimal——
e.g. 0.0000
pickoffs
integer——
e.g. 0
plate_appearances
integer——
e.g. 4
pop_outs
integer——
e.g. 0
runs
integer——
e.g. 0
runs_batted_in
integer——
e.g. 0
sacrifice_flies
integer——
e.g. 0
sacrifices
integer——
e.g. 0
singles
integer——
e.g. 0
slugging_percentage
decimal——
e.g. 0.0000
stolen_bases
integer——
e.g. 0
strikeouts
integer——
e.g. 0
total_bases
integer——
e.g. 0
triples
integer——
e.g. 0
walks
integer——
e.g. 0
woba
decimal——
e.g. 0.0000
GET/api/v1/mlb/game_player_batter_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_player_batter_stat row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_player_batter_stats/{pk_value}'
Responses
200Single game_player_batter_stat row.application/jsonshow example ▸
404Row not found.
Response Schema(42 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 64
player_id
bigint—
e.g. 604
team_id
bigint—
e.g. 41
air_outs
integer——
e.g. 0
at_bats
integer——
e.g. 3
at_bats_per_home_run
decimal——
e.g. 0.0000
babip
decimal——
e.g. 0.0000
balls_in_play
integer——
e.g. 0
batting_average
decimal——
e.g. 0.0000
catchers_interference
integer——
e.g. 0
caught_stealing
integer——
e.g. 0
double_plays
integer——
e.g. 0
doubles
integer——
e.g. 0
fly_outs
integer——
e.g. 0
ground_into_double_play
integer——
e.g. 0
ground_into_triple_play
integer——
e.g. 0
ground_outs
integer——
e.g. 0
hit_by_pitch
integer——
e.g. 0
hits
integer——
e.g. 0
home_runs
integer——
e.g. 0
intentional_walks
integer——
e.g. 0
isolated_power
decimal——
e.g. 0.0000
left_on_base
integer——
e.g. 0
line_outs
integer——
e.g. 0
on_base_percentage
decimal——
e.g. 0.0000
on_base_plus_slugging
decimal——
e.g. 0.0000
pickoffs
integer——
e.g. 0
plate_appearances
integer——
e.g. 4
pop_outs
integer——
e.g. 0
runs
integer——
e.g. 0
runs_batted_in
integer——
e.g. 0
sacrifice_flies
integer——
e.g. 0
sacrifices
integer——
e.g. 0
singles
integer——
e.g. 0
slugging_percentage
decimal——
e.g. 0.0000
stolen_bases
integer——
e.g. 0
strikeouts
integer——
e.g. 0
total_bases
integer——
e.g. 0
triples
integer——
e.g. 0
walks
integer——
e.g. 0
woba
decimal——
e.g. 0.0000
game_player_pitching_statsmlb.game_player_pitching_stats
Each pitcher's box-score stat line for each MLB game — innings pitched, hits and runs allowed, earned runs, walks, strikeouts, home runs allowed, and pitches thrown.
GET/api/v1/mlb/game_player_pitching_stats
Requires one of: game_id or player_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
player_idquerybigintoptional
Filter to a single player.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_player_pitching_stats?game_id=1'
Responses
200game_player_pitching_stats rows matching the declared filter set, wrapped in { game_player_pitching_stats, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(68 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 64
player_id
bigint—
e.g. 1382
team_id
bigint—
e.g. 33
air_outs
integer——
e.g. 0
babip
decimal——
e.g. 0.0000
balks
integer——
e.g. 0
balls
integer——
e.g. 0
balls_in_play
integer——
e.g. 0
batters_faced
integer——
e.g. 3
blown_save
integer——
e.g. 0
catchers_interference
integer——
e.g. 0
complete_games
integer——
e.g. 0
double_plays
integer——
e.g. 0
doubles_allowed
integer——
e.g. 0
earned_run_average
decimal——
e.g. 0.0000
earned_runs
integer——
e.g. 0
fip
decimal——
e.g. 3.1000
fly_outs
integer——
e.g. 0
games_finished
integer——
e.g. 0
games_pitched
integer——
e.g. 1
games_started
integer——
e.g. 0
grand_slams_allowed
integer——
e.g. 0
ground_into_double_play
integer——
e.g. 0
ground_outs
integer——
e.g. 0
hit_by_pitch
integer——
e.g. 0
hits_allowed
integer——
e.g. 0
hold
integer——
e.g. 0
home_runs_allowed
integer——
e.g. 0
home_runs_per_nine
decimal——
e.g. 0.0000
inherited_runners
integer——
e.g. 0
inherited_runners_scored
integer——
e.g. 0
inning_started
integer——
e.g. 0
innings_pitched
decimal—Innings pitched in MLB notation (6.2 = 6 and 2/3 innings)
e.g. 1.0000
intentional_walks
integer——
e.g. 0
left_on_base
decimal——
e.g. 0.0000
line_outs
integer——
e.g. 0
loss
integer——
e.g. 0
no_hitters
integer——
e.g. 0
on_base_percentage
decimal——
e.g. 0.0000
on_base_plus_slugging
decimal——
e.g. 0.0000
outs
integer——
e.g. 3
perfect_games
integer——
e.g. 0
pickoffs
integer——
e.g. 0
pitches_thrown
integer——
e.g. 0
plate_appearances
integer——
e.g. 0
pop_outs
integer——
e.g. 0
quality_starts
integer——
e.g. 0
runs_allowed
integer——
e.g. 0
runs_scored_per_nine
decimal——
e.g. 0.0000
sacrifice_flies_allowed
integer——
e.g. 0
sacrifices_allowed
integer——
e.g. 0
save
integer——
e.g. 0
shutouts
integer——
e.g. 0
singles_allowed
integer——
e.g. 0
slugging_percentage
decimal——
e.g. 0.0000
strike_percentage
decimal——
e.g. 0.0000
strikeouts_per_nine
decimal——
e.g. 0.0000
strikeouts_pitched
integer——
e.g. 0
strikes
integer——
e.g. 0
total_bases_allowed
integer——
e.g. 0
triples_allowed
integer——
e.g. 0
walks_allowed
integer——
e.g. 0
walks_per_nine
decimal——
e.g. 0.0000
whip
decimal——
e.g. 0.0000
wild_pitches
integer——
e.g. 0
win
integer——
e.g. 0
woba
decimal——
e.g. 0.0000
GET/api/v1/mlb/game_player_pitching_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_player_pitching_stat row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_player_pitching_stats/{pk_value}'
Responses
200Single game_player_pitching_stat row.application/jsonshow example ▸
404Row not found.
Response Schema(68 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 64
player_id
bigint—
e.g. 1382
team_id
bigint—
e.g. 33
air_outs
integer——
e.g. 0
babip
decimal——
e.g. 0.0000
balks
integer——
e.g. 0
balls
integer——
e.g. 0
balls_in_play
integer——
e.g. 0
batters_faced
integer——
e.g. 3
blown_save
integer——
e.g. 0
catchers_interference
integer——
e.g. 0
complete_games
integer——
e.g. 0
double_plays
integer——
e.g. 0
doubles_allowed
integer——
e.g. 0
earned_run_average
decimal——
e.g. 0.0000
earned_runs
integer——
e.g. 0
fip
decimal——
e.g. 3.1000
fly_outs
integer——
e.g. 0
games_finished
integer——
e.g. 0
games_pitched
integer——
e.g. 1
games_started
integer——
e.g. 0
grand_slams_allowed
integer——
e.g. 0
ground_into_double_play
integer——
e.g. 0
ground_outs
integer——
e.g. 0
hit_by_pitch
integer——
e.g. 0
hits_allowed
integer——
e.g. 0
hold
integer——
e.g. 0
home_runs_allowed
integer——
e.g. 0
home_runs_per_nine
decimal——
e.g. 0.0000
inherited_runners
integer——
e.g. 0
inherited_runners_scored
integer——
e.g. 0
inning_started
integer——
e.g. 0
innings_pitched
decimal—Innings pitched in MLB notation (6.2 = 6 and 2/3 innings)
e.g. 1.0000
intentional_walks
integer——
e.g. 0
left_on_base
decimal——
e.g. 0.0000
line_outs
integer——
e.g. 0
loss
integer——
e.g. 0
no_hitters
integer——
e.g. 0
on_base_percentage
decimal——
e.g. 0.0000
on_base_plus_slugging
decimal——
e.g. 0.0000
outs
integer——
e.g. 3
perfect_games
integer——
e.g. 0
pickoffs
integer——
e.g. 0
pitches_thrown
integer——
e.g. 0
plate_appearances
integer——
e.g. 0
pop_outs
integer——
e.g. 0
quality_starts
integer——
e.g. 0
runs_allowed
integer——
e.g. 0
runs_scored_per_nine
decimal——
e.g. 0.0000
sacrifice_flies_allowed
integer——
e.g. 0
sacrifices_allowed
integer——
e.g. 0
save
integer——
e.g. 0
shutouts
integer——
e.g. 0
singles_allowed
integer——
e.g. 0
slugging_percentage
decimal——
e.g. 0.0000
strike_percentage
decimal——
e.g. 0.0000
strikeouts_per_nine
decimal——
e.g. 0.0000
strikeouts_pitched
integer——
e.g. 0
strikes
integer——
e.g. 0
total_bases_allowed
integer——
e.g. 0
triples_allowed
integer——
e.g. 0
walks_allowed
integer——
e.g. 0
walks_per_nine
decimal——
e.g. 0.0000
whip
decimal——
e.g. 0.0000
wild_pitches
integer——
e.g. 0
win
integer——
e.g. 0
woba
decimal——
e.g. 0.0000
game_team_statsmlb.game_team_stats
Each MLB team's stat line for each game — runs, hits, errors, batting averages, pitching lines, broken out per game with home/away context.
GET/api/v1/mlb/game_team_stats
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
team_idquerybigintoptional
Filter by team.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_team_stats?game_id=1'
Responses
200game_team_stats rows matching the declared filter set, wrapped in { game_team_stats, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(37 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 1454
team_id
bigint—
e.g. 27
assists
integer——
e.g. 9
balks
integer——
e.g. 0
batters_faced
integer——
e.g. 36
batting_average
decimal——
e.g. 0.2440
caught_stealing
integer——
e.g. 0
double_plays_turned
integer——
e.g. 0
doubles
integer——
e.g. 1
earned_run_average
decimal——
e.g. 3.7700
earned_runs
integer——
e.g. 2
errors
integer——
e.g. 0
grounded_into_double_play
integer——
e.g. 0
hit_by_pitch
integer——
e.g. 0
hits
integer——
e.g. 7
home_runs
integer——
e.g. 1
innings_pitched
decimal—Innings pitched in MLB notation (6.2 = 6 and 2/3 innings)
e.g. 9.0000
left_on_base
integer——
e.g. 6
loss
integer——
e.g. 0
on_base_percentage
decimal——
e.g. 0.3150
on_base_plus_slugging
decimal——
e.g. 0.7240
passed_balls
integer——
e.g. 0
pitches_thrown
integer——
e.g. 143
putouts
integer——
e.g. 27
runs
integer——
e.g. 3
runs_batted_in
integer——
e.g. 2
sacrifice_flies
integer——
e.g. 0
sacrifice_hits
integer——
e.g. 0
slugging_percentage
decimal——
e.g. 0.4070
stolen_bases
integer——
e.g. 0
strikeouts
integer——
e.g. 8
strikes
integer——
e.g. 93
triples
integer——
e.g. 0
walks
integer——
e.g. 2
wild_pitches
integer——
e.g. 0
win
integer——
e.g. 0
GET/api/v1/mlb/game_team_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_team_stat row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_team_stats/{pk_value}'
Responses
200Single game_team_stat row.application/jsonshow example ▸
404Row not found.
Response Schema(37 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 1454
team_id
bigint—
e.g. 27
assists
integer——
e.g. 9
balks
integer——
e.g. 0
batters_faced
integer——
e.g. 36
batting_average
decimal——
e.g. 0.2440
caught_stealing
integer——
e.g. 0
double_plays_turned
integer——
e.g. 0
doubles
integer——
e.g. 1
earned_run_average
decimal——
e.g. 3.7700
earned_runs
integer——
e.g. 2
errors
integer——
e.g. 0
grounded_into_double_play
integer——
e.g. 0
hit_by_pitch
integer——
e.g. 0
hits
integer——
e.g. 7
home_runs
integer——
e.g. 1
innings_pitched
decimal—Innings pitched in MLB notation (6.2 = 6 and 2/3 innings)
e.g. 9.0000
left_on_base
integer——
e.g. 6
loss
integer——
e.g. 0
on_base_percentage
decimal——
e.g. 0.3150
on_base_plus_slugging
decimal——
e.g. 0.7240
passed_balls
integer——
e.g. 0
pitches_thrown
integer——
e.g. 143
putouts
integer——
e.g. 27
runs
integer——
e.g. 3
runs_batted_in
integer——
e.g. 2
sacrifice_flies
integer——
e.g. 0
sacrifice_hits
integer——
e.g. 0
slugging_percentage
decimal——
e.g. 0.4070
stolen_bases
integer——
e.g. 0
strikeouts
integer——
e.g. 8
strikes
integer——
e.g. 93
triples
integer——
e.g. 0
walks
integer——
e.g. 2
wild_pitches
integer——
e.g. 0
win
integer——
e.g. 0

Advanced Stats

park_factorsmlb.park_factors
How each MLB ballpark inflates or suppresses run-scoring categories — runs, home runs, doubles, triples, and batting average relative to a neutral park, computed per season.
GET/api/v1/mlb/park_factors
Requires one of: venue_id — requests satisfying none of these return 400.
Parameters
venue_idquerybigintoptional
Filter by venue.
season_idquerybigintoptional
Filter to a season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/park_factors?venue_id=1'
Responses
200park_factors rows matching the declared filter set, wrapped in { park_factors, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(18 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
season_id
bigint—
e.g. 2024
venue_id
bigint—
e.g. 12
basic_park_factor
decimal—Overall park factor for runs (1.0 = neutral)
e.g. 1.2200
double_factor
decimal—Park factor for doubles
e.g. 1.2600
fly_ball_factor
decimalnullable—Park factor for fly balls
e.g. — (all-null in sample)
ground_ball_factor
decimalnullable—Park factor for ground balls
e.g. — (all-null in sample)
handedness_factor
decimal—Park effect on handedness advantage
e.g. 1.1600
home_run_factor
decimal—Park factor for home runs (1.0 = neutral)
e.g. 1.3300
left_handed_factor
decimal—Park factor for left-handed batters
e.g. 1.1400
right_handed_factor
decimal—Park factor for right-handed batters
e.g. 1.1800
run_factor
decimalnullable—Park factor for total runs
e.g. — (all-null in sample)
single_factor
decimal—Park factor for singles
e.g. 1.1100
strikeout_factor
decimal—Park factor for strikeouts
e.g. 0.8900
triple_factor
decimal—Park factor for triples
e.g. 1.4200
updated_date
timestamptz——
e.g. 2026-04-12T02:04:46.363Z
walk_factor
decimal—Park factor for walks
e.g. 1.0100
years_of_data
integer—Number of years used to calculate factors
e.g. 3
GET/api/v1/mlb/park_factors/{id}
Parameters
idpathbigintrequired
Primary key (id) of the park_factor row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/park_factors/{pk_value}'
Responses
200Single park_factor row.application/jsonshow example ▸
404Row not found.
Response Schema(18 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
season_id
bigint—
e.g. 2024
venue_id
bigint—
e.g. 12
basic_park_factor
decimal—Overall park factor for runs (1.0 = neutral)
e.g. 1.2200
double_factor
decimal—Park factor for doubles
e.g. 1.2600
fly_ball_factor
decimalnullable—Park factor for fly balls
e.g. — (all-null in sample)
ground_ball_factor
decimalnullable—Park factor for ground balls
e.g. — (all-null in sample)
handedness_factor
decimal—Park effect on handedness advantage
e.g. 1.1600
home_run_factor
decimal—Park factor for home runs (1.0 = neutral)
e.g. 1.3300
left_handed_factor
decimal—Park factor for left-handed batters
e.g. 1.1400
right_handed_factor
decimal—Park factor for right-handed batters
e.g. 1.1800
run_factor
decimalnullable—Park factor for total runs
e.g. — (all-null in sample)
single_factor
decimal—Park factor for singles
e.g. 1.1100
strikeout_factor
decimal—Park factor for strikeouts
e.g. 0.8900
triple_factor
decimal—Park factor for triples
e.g. 1.4200
updated_date
timestamptz——
e.g. 2026-04-12T02:04:46.363Z
walk_factor
decimal—Park factor for walks
e.g. 1.0100
years_of_data
integer—Number of years used to calculate factors
e.g. 3
season_run_environmentsmlb.season_run_environments
League-wide offensive context per MLB season — average runs per game, league batting line, ERA, and the offensive baseline used to normalize player and team stats across eras.
GET/api/v1/mlb/season_run_environments
Requires one of: season_id — requests satisfying none of these return 400.
Parameters
season_idquerybigintoptional
Filter to a season. Defaults to the current season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/season_run_environments?season_id=2027'
Responses
200season_run_environments rows matching the declared filter set, wrapped in { season_run_environments, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(10 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
season_id
bigint—
e.g. 2021
batting_average_on_balls_in_play
decimal—League average BABIP
e.g. 0.2930
fip_constant
decimal—FIP constant to scale FIP to ERA
e.g. 3.1340
home_run_per_fly_ball
decimal—League average HR/FB rate
e.g. 0.1390
runs_per_out
decimal—League average runs per out made
e.g. 0.2810
runs_per_plate_appearance
decimal—League average runs per plate appearance
e.g. 0.1250
strikeout_rate
decimal—League average strikeout rate
e.g. 0.2440
updated_date
timestamptz——
e.g. 2026-04-12T02:04:46.337Z
walk_rate
decimal—League average walk rate
e.g. 0.0890
GET/api/v1/mlb/season_run_environments/{id}
Parameters
idpathbigintrequired
Primary key (id) of the season_run_environment row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/season_run_environments/{pk_value}'
Responses
200Single season_run_environment row.application/jsonshow example ▸
404Row not found.
Response Schema(10 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
season_id
bigint—
e.g. 2021
batting_average_on_balls_in_play
decimal—League average BABIP
e.g. 0.2930
fip_constant
decimal—FIP constant to scale FIP to ERA
e.g. 3.1340
home_run_per_fly_ball
decimal—League average HR/FB rate
e.g. 0.1390
runs_per_out
decimal—League average runs per out made
e.g. 0.2810
runs_per_plate_appearance
decimal—League average runs per plate appearance
e.g. 0.1250
strikeout_rate
decimal—League average strikeout rate
e.g. 0.2440
updated_date
timestamptz——
e.g. 2026-04-12T02:04:46.337Z
walk_rate
decimal—League average walk rate
e.g. 0.0890
woba_weightsmlb.woba_weights
The weighted on-base average coefficients for each MLB season — the run values assigned to walks, singles, doubles, triples, and home runs, used to compute wOBA and wRC+.
GET/api/v1/mlb/woba_weights
Parameters
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/woba_weights?limit=3'
Responses
200woba_weights rows matching the declared filter set, wrapped in { woba_weights, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(12 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
season_id
bigint—
e.g. 2021
double_weight
decimal—Weight for doubles (w2B)
e.g. 1.2710
hit_by_pitch_weight
decimal—Weight for hit by pitch (wHBP)
e.g. 0.7230
home_run_weight
decimal—Weight for home runs (wHR)
e.g. 2.1010
league_obp
decimal—League average OBP for calibration
e.g. 0.3180
league_woba
decimal—League average wOBA for the season
e.g. 0.3180
single_weight
decimal—Weight for singles (w1B)
e.g. 0.8950
triple_weight
decimal—Weight for triples (w3B)
e.g. 1.5520
updated_date
timestamptz—When these weights were last updated
e.g. 2026-04-12T02:04:46.328Z
walk_weight
decimal—Weight for unintentional walks (wBB)
e.g. 0.6920
woba_scale
decimal—Scale factor to convert wOBA to runs
e.g. 1.2160
GET/api/v1/mlb/woba_weights/{id}
Parameters
idpathbigintrequired
Primary key (id) of the woba_weight row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/woba_weights/{pk_value}'
Responses
200Single woba_weight row.application/jsonshow example ▸
404Row not found.
Response Schema(12 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
season_id
bigint—
e.g. 2021
double_weight
decimal—Weight for doubles (w2B)
e.g. 1.2710
hit_by_pitch_weight
decimal—Weight for hit by pitch (wHBP)
e.g. 0.7230
home_run_weight
decimal—Weight for home runs (wHR)
e.g. 2.1010
league_obp
decimal—League average OBP for calibration
e.g. 0.3180
league_woba
decimal—League average wOBA for the season
e.g. 0.3180
single_weight
decimal—Weight for singles (w1B)
e.g. 0.8950
triple_weight
decimal—Weight for triples (w3B)
e.g. 1.5520
updated_date
timestamptz—When these weights were last updated
e.g. 2026-04-12T02:04:46.328Z
walk_weight
decimal—Weight for unintentional walks (wBB)
e.g. 0.6920
woba_scale
decimal—Scale factor to convert wOBA to runs
e.g. 1.2160

Odds

series_oddsmlb.series_odds
Series-level odds for postseason MLB matchups — who wins each series and how many games it goes, with the price updating game by game as the series unfolds. MLB playoff series are best-of-5 (LDS/WC) or best-of-7 (LCS/WS).
⚠️ This endpoint is documented but not yet live. Calls return 503 until data is wired in.
GET/api/v1/mlb/series_odds
Requires one of: season_id — requests satisfying none of these return 400.
Parameters
season_idquerybigintoptional
Filter to a season. Defaults to the current season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/series_odds?season_id=2027'
Responses
200series_odds rows matching the declared filter set, wrapped in { series_odds, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
503Coming soon — handler returns 503 until data is wired in.
Response Schema(11 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
away_team_id
bigint—
home_team_id
bigint—
operator_id
bigint—
season_id
bigint—
away_odds
integer—American odds for away team to win series
captured_at
timestamptz——
games_played
integernullable——
home_odds
integer—American odds for home team to win series
series_name
string—ALDS, NLDS, ALCS, NLCS, World Series, Wild Card
series_score
stringnullable—Current series score (e.g., "3-2" home-away)
GET/api/v1/mlb/series_odds/{id}
Parameters
idpathbigintrequired
Primary key (id) of the series_odd row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/series_odds/{pk_value}'
Responses
200Single series_odd row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(11 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
away_team_id
bigint—
home_team_id
bigint—
operator_id
bigint—
season_id
bigint—
away_odds
integer—American odds for away team to win series
captured_at
timestamptz——
games_played
integernullable——
home_odds
integer—American odds for home team to win series
series_name
string—ALDS, NLDS, ALCS, NLCS, World Series, Wild Card
series_score
stringnullable—Current series score (e.g., "3-2" home-away)
game_alt_linesmlb.game_alt_lines
Alternate MLB game lines — the full ladder of run-line and total offerings at non-standard prices that sportsbooks publish alongside the headline line.
⚠️ This endpoint is documented but not yet live. Calls return 503 until data is wired in.
GET/api/v1/mlb/game_alt_lines
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_alt_lines?game_id=1'
Responses
200game_alt_lines rows matching the declared filter set, wrapped in { game_alt_lines, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
503Coming soon — handler returns 503 until data is wired in.
Response Schema(6 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
operator_id
bigint—
alt_spreads
jsonbnullable—Array of {line, home_odds, away_odds}
alt_totals
jsonbnullable—Array of {line, over_odds, under_odds}
captured_at
timestamptz——
GET/api/v1/mlb/game_alt_lines/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_alt_line row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_alt_lines/{pk_value}'
Responses
200Single game_alt_line row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(6 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
operator_id
bigint—
alt_spreads
jsonbnullable—Array of {line, home_odds, away_odds}
alt_totals
jsonbnullable—Array of {line, over_odds, under_odds}
captured_at
timestamptz——
game_linesmlb.game_lines
MLB game betting lines — moneylines, run lines (the baseball point-spread equivalent), and over/under totals from sportsbooks, captured over time as the lines move from opening to closing. In MLB, spread = run line (typically +/- 1.5).
GET/api/v1/mlb/game_lines
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_lines?game_id=1'
Responses
200game_lines rows matching the declared filter set, wrapped in { game_lines, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(18 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 168105
operator_id
bigintData source (consensus, DraftKings, FanDuel, etc.)
e.g. 6
season_id
bigintDenormalized for efficient season-level queries
e.g. 2026
captured_at
timestamptz—When this snapshot was captured
e.g. 2026-06-21T16:09:37.291Z
implied_away_score
decimalnullable——
e.g. 5.0000
implied_away_win_pct
decimalnullable——
e.g. 0.4785
implied_home_score
decimalnullable—Calculated from spread + total
e.g. 3.5000
implied_home_win_pct
decimalnullable—From moneyline, 0-1
e.g. 0.5671
is_opening
boolean—True if this is the opening line
Values:falsetrue
moneyline_away
integernullable—American odds for away team win
e.g. 109
moneyline_home
integernullable—American odds for home team win
e.g. -131
over_odds
integernullable—American odds for over
e.g. -110
spread
decimalnullable—Home team run line (e.g., -1.5 means home favored by 1.5 runs)
e.g. 1.5000
spread_away_odds
integernullable—American odds for away run line
e.g. -110
spread_home_odds
integernullable—American odds for home run line (e.g., -130)
e.g. -110
total
decimalnullable—Combined run total line (e.g., 8.5)
e.g. 8.5000
under_odds
integernullable—American odds for under
e.g. -110
GET/api/v1/mlb/game_lines/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_line row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_lines/{pk_value}'
Responses
200Single game_line row.application/jsonshow example ▸
404Row not found.
Response Schema(18 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 168105
operator_id
bigintData source (consensus, DraftKings, FanDuel, etc.)
e.g. 6
season_id
bigintDenormalized for efficient season-level queries
e.g. 2026
captured_at
timestamptz—When this snapshot was captured
e.g. 2026-06-21T16:09:37.291Z
implied_away_score
decimalnullable——
e.g. 5.0000
implied_away_win_pct
decimalnullable——
e.g. 0.4785
implied_home_score
decimalnullable—Calculated from spread + total
e.g. 3.5000
implied_home_win_pct
decimalnullable—From moneyline, 0-1
e.g. 0.5671
is_opening
boolean—True if this is the opening line
Values:falsetrue
moneyline_away
integernullable—American odds for away team win
e.g. 109
moneyline_home
integernullable—American odds for home team win
e.g. -131
over_odds
integernullable—American odds for over
e.g. -110
spread
decimalnullable—Home team run line (e.g., -1.5 means home favored by 1.5 runs)
e.g. 1.5000
spread_away_odds
integernullable—American odds for away run line
e.g. -110
spread_home_odds
integernullable—American odds for home run line (e.g., -130)
e.g. -110
total
decimalnullable—Combined run total line (e.g., 8.5)
e.g. 8.5000
under_odds
integernullable—American odds for under
e.g. -110
game_period_linesmlb.game_period_lines
Period-specific MLB betting lines — first-five-innings markets (F5), individual-inning bets, and other partial-game spreads, moneylines, and totals. Each row is a time-series snapshot - only captured when values change.
⚠️ This endpoint is documented but not yet live. Calls return 503 until data is wired in.
GET/api/v1/mlb/game_period_lines
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_period_lines?game_id=1'
Responses
200game_period_lines rows matching the declared filter set, wrapped in { game_period_lines, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
503Coming soon — handler returns 503 until data is wired in.
Response Schema(17 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
operator_id
bigintData source (consensus, DraftKings, FanDuel, etc.)
season_id
bigintDenormalized for efficient season-level queries
captured_at
timestamptz——
implied_away_win_pct
decimalnullable——
implied_home_win_pct
decimalnullable——
is_opening
boolean——
moneyline_away
integernullable——
moneyline_home
integernullable——
over_odds
integernullable——
period_code
string—Market period code (F5 = first 5 innings, F3, F7)
spread
decimalnullable—Home team run line for this period
spread_away_odds
integernullable——
spread_home_odds
integernullable——
total
decimalnullable—Combined run total line for this period
under_odds
integernullable——
GET/api/v1/mlb/game_period_lines/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_period_line row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_period_lines/{pk_value}'
Responses
200Single game_period_line row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(17 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
operator_id
bigintData source (consensus, DraftKings, FanDuel, etc.)
season_id
bigintDenormalized for efficient season-level queries
captured_at
timestamptz——
implied_away_win_pct
decimalnullable——
implied_home_win_pct
decimalnullable——
is_opening
boolean——
moneyline_away
integernullable——
moneyline_home
integernullable——
over_odds
integernullable——
period_code
string—Market period code (F5 = first 5 innings, F3, F7)
spread
decimalnullable—Home team run line for this period
spread_away_odds
integernullable——
spread_home_odds
integernullable——
total
decimalnullable—Combined run total line for this period
under_odds
integernullable——
game_player_propsmlb.game_player_props
MLB player prop bets for each game — hits, runs, RBIs, total bases, home runs, strikeouts (for pitchers), and other player-statistic markets offered by sportsbooks.
⚠️ This endpoint is documented but not yet live. Calls return 503 until data is wired in.
GET/api/v1/mlb/game_player_props
Requires one of: game_id or player_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
player_idquerybigintoptional
Filter to a single player.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_player_props?game_id=1'
Responses
200game_player_props rows matching the declared filter set, wrapped in { game_player_props, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
503Coming soon — handler returns 503 until data is wired in.
Response Schema(18 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
operator_id
bigint—
player_id
bigint—
season_id
bigintDenormalized for efficient season-level queries
book_count
integer—Number of curated books contributing to this consensus value
captured_at
timestamptz——
category
string—Canonical category. Pitcher props: - strikeouts_pitcher, hits_allowed, walks_allowed, - earned_runs, outs_recorded, pitching_outs, win, quality_start Batter props: - hits, home_runs, rbis, total_bases, runs, walks, - stolen_bases, strikeouts_batter, hits_runs_rbis
is_opening
boolean——
line
decimalnullable—Prop line for over/under markets (e.g., 5.5 strikeouts)
market_key
string—Raw market key from source API (e.g., pitcher_strikeouts)
no_odds
integernullable——
outcome_type
string—ou | yes_no
over_odds
integernullable——
period_code
stringnullable—Optional period code (F5)
subcategory
stringnullable—Optional subtype (alternate, boosted, etc.)
under_odds
integernullable——
yes_odds
integernullable——
GET/api/v1/mlb/game_player_props/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_player_prop row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_player_props/{pk_value}'
Responses
200Single game_player_prop row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(18 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
operator_id
bigint—
player_id
bigint—
season_id
bigintDenormalized for efficient season-level queries
book_count
integer—Number of curated books contributing to this consensus value
captured_at
timestamptz——
category
string—Canonical category. Pitcher props: - strikeouts_pitcher, hits_allowed, walks_allowed, - earned_runs, outs_recorded, pitching_outs, win, quality_start Batter props: - hits, home_runs, rbis, total_bases, runs, walks, - stolen_bases, strikeouts_batter, hits_runs_rbis
is_opening
boolean——
line
decimalnullable—Prop line for over/under markets (e.g., 5.5 strikeouts)
market_key
string—Raw market key from source API (e.g., pitcher_strikeouts)
no_odds
integernullable——
outcome_type
string—ou | yes_no
over_odds
integernullable——
period_code
stringnullable—Optional period code (F5)
subcategory
stringnullable—Optional subtype (alternate, boosted, etc.)
under_odds
integernullable——
yes_odds
integernullable——

Lineups & Roster

team_player_rostersmlb.team_player_rosters
Day-by-day player-to-team affiliations across the MLB season — who was on each 40-man roster, who was on the IL, who was optioned to the minors, and who was designated for assignment.
GET/api/v1/mlb/team_player_rosters
Requires one of: team_id — requests satisfying none of these return 400.
Parameters
team_idquerybigintoptional
Filter by team.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/team_player_rosters?team_id=1'
Responses
200team_player_rosters rows matching the declared filter set, wrapped in { team_player_rosters, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(9 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
player_id
bigint—
e.g. 165
season_id
bigint—
e.g. 2024
team_id
bigint—
e.g. 30
day
integer——
e.g. 20260621
position
stringnullable——
Values:PCRF3BLF2B1BCFSSDHOFIFTWP
position_depth
integernullable——
e.g. 1
position_group
stringnullable——
Values:PitcherInfielderOutfielderCatcherHitterTwo-Way Player
roster_type
string——
Values:40ManactivefullSeason
GET/api/v1/mlb/team_player_rosters/{id}
Parameters
idpathbigintrequired
Primary key (id) of the team_player_roster row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/team_player_rosters/{pk_value}'
Responses
200Single team_player_roster row.application/jsonshow example ▸
404Row not found.
Response Schema(9 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
player_id
bigint—
e.g. 165
season_id
bigint—
e.g. 2024
team_id
bigint—
e.g. 30
day
integer——
e.g. 20260621
position
stringnullable——
Values:PCRF3BLF2B1BCFSSDHOFIFTWP
position_depth
integernullable——
e.g. 1
position_group
stringnullable——
Values:PitcherInfielderOutfielderCatcherHitterTwo-Way Player
roster_type
string——
Values:40ManactivefullSeason
team_starting_lineupsmlb.team_starting_lineups
Each MLB team's starting lineup for each game — the nine batters in batting order plus the starting pitcher (and DH where applicable).
GET/api/v1/mlb/team_starting_lineups
Requires one of: team_id or game_id — requests satisfying none of these return 400.
Parameters
team_idquerybigintoptional
Filter by team.
game_idquerybigintoptional
Filter to a single game.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/team_starting_lineups?team_id=1'
Responses
200team_starting_lineups rows matching the declared filter set, wrapped in { team_starting_lineups, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(6 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 64
pitcher_id
bigintnullable—
e.g. 50028
team_id
bigint—
e.g. 27
batter_status
integer——
e.g. 1
pitcher_status
integer——
e.g. 1
GET/api/v1/mlb/team_starting_lineups/{id}
Parameters
idpathbigintrequired
Primary key (id) of the team_starting_lineup row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/team_starting_lineups/{pk_value}'
Responses
200Single team_starting_lineup row.application/jsonshow example ▸
404Row not found.
Response Schema(6 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 64
pitcher_id
bigintnullable—
e.g. 50028
team_id
bigint—
e.g. 27
batter_status
integer——
e.g. 1
pitcher_status
integer——
e.g. 1
game_team_rostersmlb.game_team_rosters
The active gameday roster for each MLB team in each game — the 26 players in uniform that day, with positions and any pre-game lineup designations.
GET/api/v1/mlb/game_team_rosters
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_team_rosters?game_id=1'
Responses
200game_team_rosters rows matching the declared filter set, wrapped in { game_team_rosters, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(9 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 14259
player_id
bigint—
e.g. 1365
team_id
bigint—
e.g. 27
batting_order
integernullable——
e.g. 9
comment
stringnullable——
e.g. — (all-null in sample)
position
stringnullable——
Values:PC2BLF1BCF3BRFSSPHDHPR
starter
boolean——
Values:falsetrue
status
stringnullable——
e.g. Active
GET/api/v1/mlb/game_team_rosters/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_team_roster row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_team_rosters/{pk_value}'
Responses
200Single game_team_roster row.application/jsonshow example ▸
404Row not found.
Response Schema(9 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 14259
player_id
bigint—
e.g. 1365
team_id
bigint—
e.g. 27
batting_order
integernullable——
e.g. 9
comment
stringnullable——
e.g. — (all-null in sample)
position
stringnullable——
Values:PC2BLF1BCF3BRFSSPHDHPR
starter
boolean——
Values:falsetrue
status
stringnullable——
e.g. Active
team_starting_lineup_battersmlb.team_starting_lineup_batters
Each batter in each MLB starting lineup — position in the order (1 through 9), defensive position, and batting handedness for the day.
GET/api/v1/mlb/team_starting_lineup_batters
Requires one of: team_starting_lineup_id — requests satisfying none of these return 400.
Parameters
team_starting_lineup_idquerybigintoptional
Filter to a single starting lineup.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/team_starting_lineup_batters?team_starting_lineup_id=1'
Responses
200team_starting_lineup_batters rows matching the declared filter set, wrapped in { team_starting_lineup_batters, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(5 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
player_id
bigint—
e.g. 1040
team_starting_lineup_id
bigint—
e.g. 1
batting_order
string——
e.g. 1
position
string——
Values:SS3BRF2BCF1BLFCDHPPHPR
GET/api/v1/mlb/team_starting_lineup_batters/{id}
Parameters
idpathbigintrequired
Primary key (id) of the team_starting_lineup_batter row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/team_starting_lineup_batters/{pk_value}'
Responses
200Single team_starting_lineup_batter row.application/jsonshow example ▸
404Row not found.
Response Schema(5 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
player_id
bigint—
e.g. 1040
team_starting_lineup_id
bigint—
e.g. 1
batting_order
string——
e.g. 1
position
string——
Values:SS3BRF2BCF1BLFCDHPPHPR

Misc

venuesmlb.venues
MLB ballparks — current home stadiums and historical venues, with dimensions, surface, capacity, and roof type.
GET/api/v1/mlb/venues
Parameters
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/venues?limit=3'
Responses
200venues rows matching the declared filter set, wrapped in { venues, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(21 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
league_venue_id
integernullable—Official MLB venue ID from statsapi.mlb.com
e.g. 2523
address
stringnullable——
e.g. — (all-null in sample)
capacity
integernullable——
e.g. 14014
city
string——
e.g. West Sacramento
closed_date
timestamptznullable——
e.g. — (all-null in sample)
country
stringnullable——
Values:USACAN
description
stringnullable——
e.g. — (all-null in sample)
elevation
floatnullable—Elevation in feet above sea level
e.g. 596
hr_factor
decimalnullable—Historical home run park factor (1.0 = neutral)
e.g. — (all-null in sample)
image_url
stringnullable—URL to aerial/overview image of ballpark
e.g. — (all-null in sample)
latitude
floatnullable——
e.g. 27.9778
longitude
floatnullable——
e.g. -82.5055
name
string——
e.g. Sutter Health Park
opened_date
timestamptznullable——
e.g. 2000-05-15T04:00:00.000Z
orientation
floatnullable—Field orientation in degrees (0-360). Direction home plate faces. 0/360=North, 90=East, 180=South, 270=West
e.g. 45
roof_type
stringnullable—Open, Dome, Retractable
Values:OpenRetractableClosed
state
stringnullable——
Values:CAFLILOHTXMONYPAAZGAMDMACOMIWIMNWAONDC
surface
stringnullable——
Values:GrassArtificial TurfNatural Grass
team_name
stringnullable——
e.g. Tampa Bay Rays
timezone
stringnullable—IANA timezone (e.g., America/New_York)
e.g. — (all-null in sample)
GET/api/v1/mlb/venues/{id}
Parameters
idpathbigintrequired
Primary key (id) of the venue row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/venues/{pk_value}'
Responses
200Single venue row.application/jsonshow example ▸
404Row not found.
Response Schema(21 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
league_venue_id
integernullable—Official MLB venue ID from statsapi.mlb.com
e.g. 2523
address
stringnullable——
e.g. — (all-null in sample)
capacity
integernullable——
e.g. 14014
city
string——
e.g. West Sacramento
closed_date
timestamptznullable——
e.g. — (all-null in sample)
country
stringnullable——
Values:USACAN
description
stringnullable——
e.g. — (all-null in sample)
elevation
floatnullable—Elevation in feet above sea level
e.g. 596
hr_factor
decimalnullable—Historical home run park factor (1.0 = neutral)
e.g. — (all-null in sample)
image_url
stringnullable—URL to aerial/overview image of ballpark
e.g. — (all-null in sample)
latitude
floatnullable——
e.g. 27.9778
longitude
floatnullable——
e.g. -82.5055
name
string——
e.g. Sutter Health Park
opened_date
timestamptznullable——
e.g. 2000-05-15T04:00:00.000Z
orientation
floatnullable—Field orientation in degrees (0-360). Direction home plate faces. 0/360=North, 90=East, 180=South, 270=West
e.g. 45
roof_type
stringnullable—Open, Dome, Retractable
Values:OpenRetractableClosed
state
stringnullable——
Values:CAFLILOHTXMONYPAAZGAMDMACOMIWIMNWAONDC
surface
stringnullable——
Values:GrassArtificial TurfNatural Grass
team_name
stringnullable——
e.g. Tampa Bay Rays
timezone
stringnullable—IANA timezone (e.g., America/New_York)
e.g. — (all-null in sample)
broadcastersmlb.broadcasters
Networks, regional sports networks, and streaming services that air MLB games — Apple TV+, ESPN, FOX, TBS, MLB Network, MLB.TV, plus team-local RSNs.
⚠️ This endpoint is documented but not yet live. Calls return 503 until data is wired in.
GET/api/v1/mlb/broadcasters
Parameters
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/broadcasters?limit=3'
Responses
200broadcasters rows matching the declared filter set, wrapped in { broadcasters, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
503Coming soon — handler returns 503 until data is wired in.
Response Schema(11 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
broadcaster_team_id
integer——
region_id
integer——
broadcaster_abbreviation
string——
broadcaster_description
stringnullable——
broadcaster_display
string——
broadcaster_media
string——
broadcaster_ranking
integer——
broadcaster_scope
string——
broadcaster_video_link
stringnullable——
tape_delay_comments
stringnullable——
GET/api/v1/mlb/broadcasters/{id}
Parameters
idpathbigintrequired
Primary key (id) of the broadcaster row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/broadcasters/{pk_value}'
Responses
200Single broadcaster row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(11 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
broadcaster_team_id
integer——
region_id
integer——
broadcaster_abbreviation
string——
broadcaster_description
stringnullable——
broadcaster_display
string——
broadcaster_media
string——
broadcaster_ranking
integer——
broadcaster_scope
string——
broadcaster_video_link
stringnullable——
tape_delay_comments
stringnullable——
umpiresmlb.umpires
MLB umpires — the four-person crew of home-plate, first-base, second-base, and third-base umpires who work each game (six in the postseason with outfield umpires added).
GET/api/v1/mlb/umpires
Parameters
activequerybooleanoptional
Filter by active status (defaults to true to show only currently-active rows; pass active=false to include inactive).
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/umpires?limit=3'
Responses
200umpires rows matching the declared filter set, wrapped in { umpires, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(11 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
mlb_umpire_id
integer——
e.g. 427044
active
boolean——
e.g. true
birth_city
stringnullable——
e.g. — (all-null in sample)
birth_country
stringnullable——
e.g. — (all-null in sample)
birth_date
datenullable——
e.g. — (all-null in sample)
birth_state
stringnullable——
e.g. — (all-null in sample)
experience
integernullable——
e.g. — (all-null in sample)
first_name
string——
e.g. Mike
full_name
string——
e.g. CB Bucknor
last_name
string——
e.g. Jimenez
GET/api/v1/mlb/umpires/{id}
Parameters
idpathbigintrequired
Primary key (id) of the umpire row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/umpires/{pk_value}'
Responses
200Single umpire row.application/jsonshow example ▸
404Row not found.
Response Schema(11 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
mlb_umpire_id
integer——
e.g. 427044
active
boolean——
e.g. true
birth_city
stringnullable——
e.g. — (all-null in sample)
birth_country
stringnullable——
e.g. — (all-null in sample)
birth_date
datenullable——
e.g. — (all-null in sample)
birth_state
stringnullable——
e.g. — (all-null in sample)
experience
integernullable——
e.g. — (all-null in sample)
first_name
string——
e.g. Mike
full_name
string——
e.g. CB Bucknor
last_name
string——
e.g. Jimenez
venue_dimensionsmlb.venue_dimensions
Outfield dimensions and wall heights for each MLB ballpark — distances to left field, center field, right field, and the power alleys, plus the height of the outfield walls.
GET/api/v1/mlb/venue_dimensions
Requires one of: venue_id — requests satisfying none of these return 400.
Parameters
venue_idquerybigintoptional
Filter by venue.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/venue_dimensions?venue_id=1'
Responses
200venue_dimensions rows matching the declared filter set, wrapped in { venue_dimensions, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(21 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
mlb_venue_id
integer——
e.g. 1
venue_id
bigint—
e.g. 2
altitude_ft
floatnullable—Venue altitude in feet (denormalized from venue for query convenience)
e.g. — (all-null in sample)
backstop_distance
floatnullable—Distance from home plate to backstop (feet)
e.g. — (all-null in sample)
center_field
float——
e.g. 400
center_field_fence_height
float——
e.g. 8
description
stringnullable——
e.g. — (all-null in sample)
fair_territory_sq_ft
floatnullable——
e.g. 113800
foul_territory_rating
decimalnullable—Relative foul territory size (1.0 = average, >1 = large)
e.g. — (all-null in sample)
foul_territory_sq_ft
floatnullable——
e.g. 21500
left_center_field
floatnullable——
e.g. 385
left_field
float——
e.g. 330
left_field_fence_height
float——
e.g. 8
orientation
float——
e.g. 45
right_center_field
floatnullable——
e.g. 375
right_field
float——
e.g. 330
right_field_fence_height
float——
e.g. 8
total_territory_sq_ft
floatnullable——
e.g. 137000
venue_name
stringnullable——
e.g. Angel Stadium
year
integer——
e.g. 2000
GET/api/v1/mlb/venue_dimensions/{id}
Parameters
idpathbigintrequired
Primary key (id) of the venue_dimension row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/venue_dimensions/{pk_value}'
Responses
200Single venue_dimension row.application/jsonshow example ▸
404Row not found.
Response Schema(21 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
mlb_venue_id
integer——
e.g. 1
venue_id
bigint—
e.g. 2
altitude_ft
floatnullable—Venue altitude in feet (denormalized from venue for query convenience)
e.g. — (all-null in sample)
backstop_distance
floatnullable—Distance from home plate to backstop (feet)
e.g. — (all-null in sample)
center_field
float——
e.g. 400
center_field_fence_height
float——
e.g. 8
description
stringnullable——
e.g. — (all-null in sample)
fair_territory_sq_ft
floatnullable——
e.g. 113800
foul_territory_rating
decimalnullable—Relative foul territory size (1.0 = average, >1 = large)
e.g. — (all-null in sample)
foul_territory_sq_ft
floatnullable——
e.g. 21500
left_center_field
floatnullable——
e.g. 385
left_field
float——
e.g. 330
left_field_fence_height
float——
e.g. 8
orientation
float——
e.g. 45
right_center_field
floatnullable——
e.g. 375
right_field
float——
e.g. 330
right_field_fence_height
float——
e.g. 8
total_territory_sq_ft
floatnullable——
e.g. 137000
venue_name
stringnullable——
e.g. Angel Stadium
year
integer——
e.g. 2000
operator_team_lookupsmlb.operator_team_lookups
How each sportsbook and fantasy operator names every MLB team — the mapping from each operator's team code to the unified franchise record.
⚠️ This endpoint is documented but not yet live. Calls return 503 until data is wired in.
GET/api/v1/mlb/operator_team_lookups
Requires one of: operator_id — requests satisfying none of these return 400.
Parameters
operator_idquerybigintoptional
Filter by operator.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/operator_team_lookups?operator_id=1'
Responses
200operator_team_lookups rows matching the declared filter set, wrapped in { operator_team_lookups, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
503Coming soon — handler returns 503 until data is wired in.
Response Schema(6 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
operator_id
bigintOperator id: 1 DraftKings, 2 FanDuel, 3 Yahoo, 13 sportsdata.io.
operator_team_id
string—External team ID from operator
team_id
bigintInternal mlb.teams.id reference
abbreviation
stringnullable—Team abbreviation for reconciliation
team_name
stringnullable—Team name for reconciliation
GET/api/v1/mlb/operator_team_lookups/{id}
Parameters
idpathbigintrequired
Primary key (id) of the operator_team_lookup row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/operator_team_lookups/{pk_value}'
Responses
200Single operator_team_lookup row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(6 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
operator_id
bigintOperator id: 1 DraftKings, 2 FanDuel, 3 Yahoo, 13 sportsdata.io.
operator_team_id
string—External team ID from operator
team_id
bigintInternal mlb.teams.id reference
abbreviation
stringnullable—Team abbreviation for reconciliation
team_name
stringnullable—Team name for reconciliation
playoffsmlb.playoffs
The MLB postseason bracket — Wild Card Series, Division Series, League Championship Series, and the World Series, tracked as the seeded matchups and outcomes.
GET/api/v1/mlb/playoffs
Parameters
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/playoffs?limit=3'
Responses
200playoffs rows matching the declared filter set, wrapped in { playoffs, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(12 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
away_team_id
bigint—
e.g. 44
home_team_id
bigint—
e.g. 27
season_id
bigint—
e.g. 2020
series_id
bigint——
e.g. 401
away_team_wins
integer——
e.g. 2
games_played
integer——
e.g. 5
home_team_wins
integer——
e.g. 3
max_games
integer——
e.g. 5
series_name
string——
Values:AL Division SeriesNL Division SeriesAL Wild Card SeriesNL Wild Card SeriesWorld SeriesNL Championship SeriesAL Championship SeriesNL Wild Card GameAL Wild Card Game
series_text
string——
e.g. LAD won 4-3
status
string——
e.g. Completed
GET/api/v1/mlb/playoffs/{id}
Parameters
idpathbigintrequired
Primary key (id) of the playoff row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/playoffs/{pk_value}'
Responses
200Single playoff row.application/jsonshow example ▸
404Row not found.
Response Schema(12 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
away_team_id
bigint—
e.g. 44
home_team_id
bigint—
e.g. 27
season_id
bigint—
e.g. 2020
series_id
bigint——
e.g. 401
away_team_wins
integer——
e.g. 2
games_played
integer——
e.g. 5
home_team_wins
integer——
e.g. 3
max_games
integer——
e.g. 5
series_name
string——
Values:AL Division SeriesNL Division SeriesAL Wild Card SeriesNL Wild Card SeriesWorld SeriesNL Championship SeriesAL Championship SeriesNL Wild Card GameAL Wild Card Game
series_text
string——
e.g. LAD won 4-3
status
string——
e.g. Completed
operator_player_lookupsmlb.operator_player_lookups
How each sportsbook and fantasy operator names every MLB player — the mapping from each operator's player identifier to a unified player record.
GET/api/v1/mlb/operator_player_lookups
Requires one of: operator_id — requests satisfying none of these return 400.
Parameters
operator_idquerybigintoptional
Filter by operator.
limitqueryintegeroptionaldefault 100
Page size. Defaults to 100; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/operator_player_lookups?operator_id=1'
Responses
200operator_player_lookups rows matching the declared filter set, wrapped in { operator_player_lookups, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(9 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
operator_id
bigintOperator id: 1 DraftKings, 2 FanDuel, 3 Yahoo, 13 sportsdata.io.
e.g. 2240
operator_player_id
string—External player ID from operator
e.g. 598286
player_id
bigintnullableInternal mlb.players.id reference
e.g. 1589
decided_at
timestamptznullable—When the pin or block was decided.
e.g. — (all-null in sample)
decided_reason
stringnullable—Evidence behind a pinned or blocked decision.
e.g. — (all-null in sample)
decision
stringnullable—How this mapping was decided: 'derived' (finder answer, overwritable), 'pinned' (decided on evidence, trigger-protected), 'blocked' (no player we hold is this id; player_id NULL, never retried). DB default 'derived'; a BEFORE UPDATE trigger preserves non-derived rows.
e.g. derived
player_name
stringnullable—Player name for reconciliation
e.g. Max Muncy
position
stringnullable—Position for reconciliation
e.g. P
GET/api/v1/mlb/operator_player_lookups/{id}
Parameters
idpathbigintrequired
Primary key (id) of the operator_player_lookup row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/operator_player_lookups/{pk_value}'
Responses
200Single operator_player_lookup row.application/jsonshow example ▸
404Row not found.
Response Schema(9 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
operator_id
bigintOperator id: 1 DraftKings, 2 FanDuel, 3 Yahoo, 13 sportsdata.io.
e.g. 2240
operator_player_id
string—External player ID from operator
e.g. 598286
player_id
bigintnullableInternal mlb.players.id reference
e.g. 1589
decided_at
timestamptznullable—When the pin or block was decided.
e.g. — (all-null in sample)
decided_reason
stringnullable—Evidence behind a pinned or blocked decision.
e.g. — (all-null in sample)
decision
stringnullable—How this mapping was decided: 'derived' (finder answer, overwritable), 'pinned' (decided on evidence, trigger-protected), 'blocked' (no player we hold is this id; player_id NULL, never retried). DB default 'derived'; a BEFORE UPDATE trigger preserves non-derived rows.
e.g. derived
player_name
stringnullable—Player name for reconciliation
e.g. Max Muncy
position
stringnullable—Position for reconciliation
e.g. P
player_awardsmlb.player_awards
MLB player awards — MVP, Cy Young, Rookie of the Year, Gold Gloves, Silver Sluggers, All-Star selections, and other end-of-season honors.
GET/api/v1/mlb/player_awards
Requires one of: player_id — requests satisfying none of these return 400.
Parameters
player_idquerybigintoptional
Filter to a single player.
season_idquerybigintoptional
Filter to a season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/player_awards?player_id=1'
Responses
200player_awards rows matching the declared filter set, wrapped in { player_awards, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(8 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
player_id
bigint—
e.g. 1369
season_id
bigint—
e.g. 2019
team_id
bigintnullable—
e.g. 41
award_date
datenullable—Date the award was announced
e.g. 2025-11-13
award_name
string——
e.g. All-MLB First Team
award_type
string——
e.g. MLBAFIRST
is_winner
boolean—statsapi publishes recipients (winners) only — always true
e.g. true
GET/api/v1/mlb/player_awards/{id}
Parameters
idpathbigintrequired
Primary key (id) of the player_award row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/player_awards/{pk_value}'
Responses
200Single player_award row.application/jsonshow example ▸
404Row not found.
Response Schema(8 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
player_id
bigint—
e.g. 1369
season_id
bigint—
e.g. 2019
team_id
bigintnullable—
e.g. 41
award_date
datenullable—Date the award was announced
e.g. 2025-11-13
award_name
string——
e.g. All-MLB First Team
award_type
string——
e.g. MLBAFIRST
is_winner
boolean—statsapi publishes recipients (winners) only — always true
e.g. true
player_injuriesmlb.player_injuries
The ongoing injury record for each MLB player — body part, severity, IL designation (10-day, 15-day, 60-day), and expected return timeline.
GET/api/v1/mlb/player_injuries
Requires one of: player_id — requests satisfying none of these return 400.
Parameters
player_idquerybigintoptional
Filter to a single player.
team_idquerybigintoptional
Filter by team.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/player_injuries?player_id=1'
Responses
200player_injuries rows matching the declared filter set, wrapped in { player_injuries, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(16 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
player_id
bigint—
e.g. 636
season_id
bigint—
e.g. 2026
team_id
bigint—
e.g. 42
body_part
string——
e.g. Elbow
description
stringnullable——
e.g. no
end_date
timestamptznullable——
e.g. — (all-null in sample)
expected_return_date
timestamptznullable——
e.g. 2027-02-01T05:00:00.000Z
games_missed
integernullable——
e.g. — (all-null in sample)
injury_type
string——
Values:SurgeryStrainInflammationNot SpecifiedSorenessFracturePinched NerveUnknownSprainBruiseConcussionTendinitisSpasmsPlantar FasciitisCrampsBone SpurAbrasionLacerationInfectionDislocated
is_surgery_required
booleannullable——
e.g. — (all-null in sample)
side
stringnullable——
Values:RightLeftNot Specified
source
stringnullable——
e.g. espn
start_date
timestamptz——
e.g. 2026-05-08T11:02:00.000Z
status
string——
Values:60-Day-ILDay-To-Day15-Day-IL10-Day-ILOut7-Day ILdevelopmental listsuspension7-day ilpaternitybereavementBereavementPaternitySuspension
updated_date
timestamptz——
e.g. 2026-08-04T11:19:23.925Z
GET/api/v1/mlb/player_injuries/{id}
Parameters
idpathbigintrequired
Primary key (id) of the player_injury row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/player_injuries/{pk_value}'
Responses
200Single player_injury row.application/jsonshow example ▸
404Row not found.
Response Schema(16 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
player_id
bigint—
e.g. 636
season_id
bigint—
e.g. 2026
team_id
bigint—
e.g. 42
body_part
string——
e.g. Elbow
description
stringnullable——
e.g. no
end_date
timestamptznullable——
e.g. — (all-null in sample)
expected_return_date
timestamptznullable——
e.g. 2027-02-01T05:00:00.000Z
games_missed
integernullable——
e.g. — (all-null in sample)
injury_type
string——
Values:SurgeryStrainInflammationNot SpecifiedSorenessFracturePinched NerveUnknownSprainBruiseConcussionTendinitisSpasmsPlantar FasciitisCrampsBone SpurAbrasionLacerationInfectionDislocated
is_surgery_required
booleannullable——
e.g. — (all-null in sample)
side
stringnullable——
Values:RightLeftNot Specified
source
stringnullable——
e.g. espn
start_date
timestamptz——
e.g. 2026-05-08T11:02:00.000Z
status
string——
Values:60-Day-ILDay-To-Day15-Day-IL10-Day-ILOut7-Day ILdevelopmental listsuspension7-day ilpaternitybereavementBereavementPaternitySuspension
updated_date
timestamptz——
e.g. 2026-08-04T11:19:23.925Z
game_broadcastersmlb.game_broadcasters
Which networks broadcast each MLB game — the national TV partner, regional carriers, radio calls, and streaming providers.
⚠️ This endpoint is documented but not yet live. Calls return 503 until data is wired in.
GET/api/v1/mlb/game_broadcasters
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_broadcasters?game_id=1'
Responses
200game_broadcasters rows matching the declared filter set, wrapped in { game_broadcasters, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
503Coming soon — handler returns 503 until data is wired in.
Response Schema(4 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
broadcaster_id
bigint—
game_id
bigint—
broadcaster_type
string——
GET/api/v1/mlb/game_broadcasters/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_broadcaster row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_broadcasters/{pk_value}'
Responses
200Single game_broadcaster row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(4 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
broadcaster_id
bigint—
game_id
bigint—
broadcaster_type
string——
game_umpiresmlb.game_umpires
The umpiring crew assigned to each MLB game — who worked home plate, who worked each base.
GET/api/v1/mlb/game_umpires
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_umpires?game_id=1'
Responses
200game_umpires rows matching the declared filter set, wrapped in { game_umpires, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(4 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 1454
umpire_id
bigint—
e.g. 46
position
stringnullable——
Values:Home PlateFirst BaseSecond BaseThird Base
GET/api/v1/mlb/game_umpires/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_umpire row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_umpires/{pk_value}'
Responses
200Single game_umpire row.application/jsonshow example ▸
404Row not found.
Response Schema(4 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 1454
umpire_id
bigint—
e.g. 46
position
stringnullable——
Values:Home PlateFirst BaseSecond BaseThird Base
game_weathersmlb.game_weathers
On-field weather throughout each MLB game — temperature, wind direction and speed, humidity, and precipitation captured at fixed intervals from first pitch.
GET/api/v1/mlb/game_weathers
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
venue_idquerybigintoptional
Filter by venue.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_weathers?game_id=1'
Responses
200game_weathers rows matching the declared filter set, wrapped in { game_weathers, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(27 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 1454
venue_id
bigint—
e.g. 14
air_density
floatnullable—Calculated air density (lb/ft³)
e.g. — (all-null in sample)
ball_carry_factor
decimalnullable—Estimated ball carry factor (1.0 = neutral, >1 = carries more)
e.g. — (all-null in sample)
cloud_cover
floatnullable——
e.g. — (all-null in sample)
dew_point
floatnullable——
e.g. — (all-null in sample)
feels_like_temperature
floatnullable——
e.g. — (all-null in sample)
humidity
floatnullable——
e.g. — (all-null in sample)
is_dome
booleannullable——
Values:falsetrue
precipitation
floatnullable——
e.g. — (all-null in sample)
precipitation_probability
floatnullable——
e.g. — (all-null in sample)
pressure
floatnullable——
e.g. — (all-null in sample)
recorded_at
timestamptznullable——
e.g. 2018-09-30T19:10:00.000Z
roof_status
stringnullable—open, closed, retractable_open, retractable_closed
Values:ClosedOpen
temperature
floatnullable——
e.g. 72
time_minutes
integer—Minutes from game start (0, 30, 60, 90, 120, 150, 180 for 3-hour game)
e.g. 0
uv_index
floatnullable——
e.g. — (all-null in sample)
visibility
floatnullable——
e.g. — (all-null in sample)
weather_condition
stringnullable——
Values:Partly CloudyClearCloudyRoof ClosedSunnyOvercastDomeRainDrizzleSnow
weather_description
stringnullable——
Values:NoneOut To CFL To RR To LOut To LFOut To RFIn From RFIn From CFIn From LFVariesCalm
wind_blowing_out
booleannullable—True if wind is blowing from home plate toward outfield
Values:truefalse
wind_component_out
floatnullable—Wind speed component blowing out to CF (mph, negative = blowing in)
e.g. — (all-null in sample)
wind_direction
floatnullable——
e.g. — (all-null in sample)
wind_direction_relative
floatnullable—Wind direction relative to batter's box (degrees)
e.g. — (all-null in sample)
wind_gust
floatnullable——
e.g. — (all-null in sample)
wind_speed
floatnullable——
e.g. 0
GET/api/v1/mlb/game_weathers/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_weather row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/game_weathers/{pk_value}'
Responses
200Single game_weather row.application/jsonshow example ▸
404Row not found.
Response Schema(27 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 1454
venue_id
bigint—
e.g. 14
air_density
floatnullable—Calculated air density (lb/ft³)
e.g. — (all-null in sample)
ball_carry_factor
decimalnullable—Estimated ball carry factor (1.0 = neutral, >1 = carries more)
e.g. — (all-null in sample)
cloud_cover
floatnullable——
e.g. — (all-null in sample)
dew_point
floatnullable——
e.g. — (all-null in sample)
feels_like_temperature
floatnullable——
e.g. — (all-null in sample)
humidity
floatnullable——
e.g. — (all-null in sample)
is_dome
booleannullable——
Values:falsetrue
precipitation
floatnullable——
e.g. — (all-null in sample)
precipitation_probability
floatnullable——
e.g. — (all-null in sample)
pressure
floatnullable——
e.g. — (all-null in sample)
recorded_at
timestamptznullable——
e.g. 2018-09-30T19:10:00.000Z
roof_status
stringnullable—open, closed, retractable_open, retractable_closed
Values:ClosedOpen
temperature
floatnullable——
e.g. 72
time_minutes
integer—Minutes from game start (0, 30, 60, 90, 120, 150, 180 for 3-hour game)
e.g. 0
uv_index
floatnullable——
e.g. — (all-null in sample)
visibility
floatnullable——
e.g. — (all-null in sample)
weather_condition
stringnullable——
Values:Partly CloudyClearCloudyRoof ClosedSunnyOvercastDomeRainDrizzleSnow
weather_description
stringnullable——
Values:NoneOut To CFL To RR To LOut To LFOut To RFIn From RFIn From CFIn From LFVariesCalm
wind_blowing_out
booleannullable—True if wind is blowing from home plate toward outfield
Values:truefalse
wind_component_out
floatnullable—Wind speed component blowing out to CF (mph, negative = blowing in)
e.g. — (all-null in sample)
wind_direction
floatnullable——
e.g. — (all-null in sample)
wind_direction_relative
floatnullable—Wind direction relative to batter's box (degrees)
e.g. — (all-null in sample)
wind_gust
floatnullable——
e.g. — (all-null in sample)
wind_speed
floatnullable——
e.g. 0
player_newsmlb.player_news
News about MLB players — trades, IL placements, lineup decisions, suspensions, and general beat-reporter updates, unified from beat-writer scrapers, operator feeds, and AI summarization.
GET/api/v1/mlb/player_news
Requires one of: player_id or team_id — requests satisfying none of these return 400.
Parameters
player_idquerybigintoptional
Filter to a single player.
team_idquerybigintoptional
Filter by team.
categoryquerystringoptional
Filter by news category (injury, transaction, lineup, general, depth_chart, suspension, contract, performance). Values: general, injury, lineup, transaction, depth_chart, suspension, contract, performance.
status_enumquerystringoptional
Filter by player status designation. Values: RULED_OUT, DOUBTFUL, QUESTIONABLE, PROBABLE, CLEARED, MINUTES_LIMIT, MINUTES_LIFTED, STARTING, BENCHED, INACTIVE, ACTIVE, IR_PLACED, IR_ACTIVATED, OUT_SEASON, TRADED, RELEASED, SIGNED, ROUTINE, UNSIGNED.
urgencyquerystringoptional
Filter by news urgency. Values: BREAKING_GAME_TIME, HIGH, MEDIUM, ROUTINE.
news_timequerytimestamptzoptional
Filter by publication time (ISO 8601). Use news_time__gte to poll for items since your last check. Range syntax: news_time__gte=, news_time__lte=, news_time__between=.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/player_news?player_id=1'
Responses
200player_news rows matching the declared filter set, wrapped in { player_news, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(23 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
external_id
string—Source-specific unique identifier
e.g. sportsdata-197163
game_id
bigintnullableAssociated game ID when this news item relates to a specific game.
e.g. 169744
opponent_team_id
bigintnullableOpponent team ID when this news item relates to an upcoming or active game matchup.
e.g. 16
player_id
bigintnullablePlayer ID associated with the news report.
e.g. 1369
team_id
bigintnullableTeam ID of the player at the time of publication.
e.g. 27
ai_processed
boolean—Whether this story was generated or enriched via LLM summarization.
Values:falsetrue
analysis
stringnullable—Fantasy and tactical analysis of the news.
e.g. — (all-null in sample)
author
stringnullable—Reporter or author of the article.
e.g. Staff
category
stringnullable—injury, transaction, lineup, general
Values:injurygeneraltransactionlineupdepth_chartcontractsuspensionperformanceworkload
content
stringnullable—Full text content of the news report.
e.g. Milwaukee Brewers first baseman/outfielder Jake Bauers is p…
description
stringnullable—Brief synopsis or summary of the news event.
e.g. San Francisco pitcher Sam Hentges is sidelined with a forea…
first_reported_at
timestamptznullable—Timestamp when this story was first reported before multi-source compaction.
e.g. 2026-09-07T01:25:32.000Z
link
stringnullable—URL link to the original article or source video.
e.g. https://www.rotoballer.com/player-news/jake-bauers-is-becom…
news_time
timestamptz—Publication timestamp of the news story.
e.g. 2026-09-01T04:00:00.000Z
priority
integer—Display priority score (1-10).
e.g. 10
processed_at
timestamptznullable—Timestamp when the story was processed.
e.g. — (all-null in sample)
situational_impact
jsonbnullable—Structured situational impact assessment and fantasy implications for the player.
e.g. {"affected_player_ids":[],"affected_players":[]}
↳type
situational_impact.type
stringnullable—Impact direction: positive, negative, or neutral.
↳impact_enum
situational_impact.impact_enum
stringnullable—Standardized impact state (ACTIVE, CLEARED, QUESTIONABLE, etc.).
↳reason
situational_impact.reason
stringnullable—Narrative explaining the fantasy and playing-time impact.
↳ripple_effect
situational_impact.ripple_effect
stringnullable—Downstream tactical or fantasy consequences.
↳affected_players
situational_impact.affected_players
listnullable—Teammates whose opportunity or role is impacted.
↳affected_player_ids
situational_impact.affected_player_ids
listnullable—IDs of impacted teammates.
source
string—News source identifier (cbs, espn, rotoworld, sportsdata, etc.)
Values:cbs_sportssportsdatarotoworldespnrotoql_sportsdata
sources
jsonbnullable—Source citations with source name, URL, author, and published timestamp.
e.g. [{"published_at":"2026-06-07T01:57:06.000Z","source":"sport…
↳url
sources.url
stringnullable—Source article or media link.
↳source
sources.source
stringnullable—Publisher or feed identifier.
↳author
sources.author
stringnullable—Reporting journalist or source author.
↳published_at
sources.published_at
timestamptznullable—Source publication timestamp.
status_enum
stringnullable—Standardized player status designation (RULED_OUT, DOUBTFUL, QUESTIONABLE, PROBABLE, CLEARED, MINUTES_LIMIT, MINUTES_LIFTED, STARTING, BENCHED, INACTIVE, ACTIVE, IR_PLACED, IR_ACTIVATED, TRADED, RELEASED, SIGNED, ROUTINE).
Values:ACTIVEROUTINEIR_PLACEDBENCHEDINACTIVESTARTINGQUESTIONABLEIR_ACTIVATEDCLEAREDSIGNEDRULED_OUTRELEASEDPROBABLEMINUTES_LIMITTRADEDDOUBTFUL
title
string—Headline of the news report.
e.g. Robby Snelling Out Until at Least June 1 with Elbow Injury
urgency
stringnullable—Urgency level of the news event (BREAKING_GAME_TIME, HIGH, MEDIUM, ROUTINE).
Values:ROUTINEHIGHMEDIUMBREAKING_GAME_TIME
GET/api/v1/mlb/player_news/{id}
Parameters
idpathbigintrequired
Primary key (id) of the player_new row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/player_news/{pk_value}'
Responses
200Single player_new row.application/jsonshow example ▸
404Row not found.
Response Schema(23 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
external_id
string—Source-specific unique identifier
e.g. sportsdata-197163
game_id
bigintnullableAssociated game ID when this news item relates to a specific game.
e.g. 169744
opponent_team_id
bigintnullableOpponent team ID when this news item relates to an upcoming or active game matchup.
e.g. 16
player_id
bigintnullablePlayer ID associated with the news report.
e.g. 1369
team_id
bigintnullableTeam ID of the player at the time of publication.
e.g. 27
ai_processed
boolean—Whether this story was generated or enriched via LLM summarization.
Values:falsetrue
analysis
stringnullable—Fantasy and tactical analysis of the news.
e.g. — (all-null in sample)
author
stringnullable—Reporter or author of the article.
e.g. Staff
category
stringnullable—injury, transaction, lineup, general
Values:injurygeneraltransactionlineupdepth_chartcontractsuspensionperformanceworkload
content
stringnullable—Full text content of the news report.
e.g. Milwaukee Brewers first baseman/outfielder Jake Bauers is p…
description
stringnullable—Brief synopsis or summary of the news event.
e.g. San Francisco pitcher Sam Hentges is sidelined with a forea…
first_reported_at
timestamptznullable—Timestamp when this story was first reported before multi-source compaction.
e.g. 2026-09-07T01:25:32.000Z
link
stringnullable—URL link to the original article or source video.
e.g. https://www.rotoballer.com/player-news/jake-bauers-is-becom…
news_time
timestamptz—Publication timestamp of the news story.
e.g. 2026-09-01T04:00:00.000Z
priority
integer—Display priority score (1-10).
e.g. 10
processed_at
timestamptznullable—Timestamp when the story was processed.
e.g. — (all-null in sample)
situational_impact
jsonbnullable—Structured situational impact assessment and fantasy implications for the player.
e.g. {"affected_player_ids":[],"affected_players":[]}
↳type
situational_impact.type
stringnullable—Impact direction: positive, negative, or neutral.
↳impact_enum
situational_impact.impact_enum
stringnullable—Standardized impact state (ACTIVE, CLEARED, QUESTIONABLE, etc.).
↳reason
situational_impact.reason
stringnullable—Narrative explaining the fantasy and playing-time impact.
↳ripple_effect
situational_impact.ripple_effect
stringnullable—Downstream tactical or fantasy consequences.
↳affected_players
situational_impact.affected_players
listnullable—Teammates whose opportunity or role is impacted.
↳affected_player_ids
situational_impact.affected_player_ids
listnullable—IDs of impacted teammates.
source
string—News source identifier (cbs, espn, rotoworld, sportsdata, etc.)
Values:cbs_sportssportsdatarotoworldespnrotoql_sportsdata
sources
jsonbnullable—Source citations with source name, URL, author, and published timestamp.
e.g. [{"published_at":"2026-06-07T01:57:06.000Z","source":"sport…
↳url
sources.url
stringnullable—Source article or media link.
↳source
sources.source
stringnullable—Publisher or feed identifier.
↳author
sources.author
stringnullable—Reporting journalist or source author.
↳published_at
sources.published_at
timestamptznullable—Source publication timestamp.
status_enum
stringnullable—Standardized player status designation (RULED_OUT, DOUBTFUL, QUESTIONABLE, PROBABLE, CLEARED, MINUTES_LIMIT, MINUTES_LIFTED, STARTING, BENCHED, INACTIVE, ACTIVE, IR_PLACED, IR_ACTIVATED, TRADED, RELEASED, SIGNED, ROUTINE).
Values:ACTIVEROUTINEIR_PLACEDBENCHEDINACTIVESTARTINGQUESTIONABLEIR_ACTIVATEDCLEAREDSIGNEDRULED_OUTRELEASEDPROBABLEMINUTES_LIMITTRADEDDOUBTFUL
title
string—Headline of the news report.
e.g. Robby Snelling Out Until at Least June 1 with Elbow Injury
urgency
stringnullable—Urgency level of the news event (BREAKING_GAME_TIME, HIGH, MEDIUM, ROUTINE).
Values:ROUTINEHIGHMEDIUMBREAKING_GAME_TIME
team_newsmlb.team_news
News and updates about MLB teams — game previews, managerial changes, front-office moves, and beat reports.
⚠️ This endpoint is documented but not yet live. Calls return 503 until data is wired in.
GET/api/v1/mlb/team_news
Requires one of: team_id — requests satisfying none of these return 400.
Parameters
team_idquerybigintoptional
Filter by team.
categoryquerystringoptional
Filter by category (game_preview, coaching, transaction, general, draft, depth_chart). Values: game_preview, coaching, transaction, general, draft, depth_chart.
urgencyquerystringoptional
Filter by news urgency. Values: BREAKING_GAME_TIME, HIGH, MEDIUM, ROUTINE.
news_timequerytimestamptzoptional
Filter by publication time (ISO 8601). Use news_time__gte to poll for items since your last check. Range syntax: news_time__gte=, news_time__lte=, news_time__between=.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/team_news?team_id=1'
Responses
200team_news rows matching the declared filter set, wrapped in { team_news, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
503Coming soon — handler returns 503 until data is wired in.
Response Schema(12 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
external_id
stringnullable—Canonical external identifier for deduplication.
e.g. espn-mlb-2026-09-07-White Sox bullpen throws gem in 10-1 win
game_id
bigintnullableAssociated game ID when news relates to a specific game.
e.g. — (all-null in sample)
opponent_team_id
bigintnullableOpponent team ID when news relates to an upcoming or completed game matchup.
e.g. — (all-null in sample)
team_id
bigintTeam ID that this news event pertains to.
e.g. 42
ai_processed
booleannullable—Whether this story was generated or enriched via LLM summarization.
e.g. true
category
stringnullable—game_preview, coaching, transaction, general
e.g. game_preview
news_time
timestamptz—Publication timestamp of the team story.
e.g. 2026-09-07T01:48:29.000Z
sources
jsonbnullable—Source citations with publisher name, URL, author, and published timestamp.
e.g. [{"published_at":"2026-09-07T01:48:29.000Z","source":"espn"…
↳url
sources.url
stringnullable—Source article or media link.
↳source
sources.source
stringnullable—Publisher or feed identifier.
↳author
sources.author
stringnullable—Reporting journalist or source author.
↳published_at
sources.published_at
timestamptznullable—Source publication timestamp.
summary
string—Concise journalistic summary of the team news event.
e.g. The White Sox defeated the Minnesota Twins 10-1 behind a do…
title
string—Headline of the team news story.
e.g. White Sox Bullpen Dominates in 10-1 Win Over Twins
urgency
stringnullable—ROUTINE, MEDIUM, HIGH, BREAKING_GAME_TIME
e.g. ROUTINE
GET/api/v1/mlb/team_news/{id}
Parameters
idpathbigintrequired
Primary key (id) of the team_new row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/mlb/team_news/{pk_value}'
Responses
200Single team_new row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(12 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
external_id
stringnullable—Canonical external identifier for deduplication.
e.g. espn-mlb-2026-09-07-White Sox bullpen throws gem in 10-1 win
game_id
bigintnullableAssociated game ID when news relates to a specific game.
e.g. — (all-null in sample)
opponent_team_id
bigintnullableOpponent team ID when news relates to an upcoming or completed game matchup.
e.g. — (all-null in sample)
team_id
bigintTeam ID that this news event pertains to.
e.g. 42
ai_processed
booleannullable—Whether this story was generated or enriched via LLM summarization.
e.g. true
category
stringnullable—game_preview, coaching, transaction, general
e.g. game_preview
news_time
timestamptz—Publication timestamp of the team story.
e.g. 2026-09-07T01:48:29.000Z
sources
jsonbnullable—Source citations with publisher name, URL, author, and published timestamp.
e.g. [{"published_at":"2026-09-07T01:48:29.000Z","source":"espn"…
↳url
sources.url
stringnullable—Source article or media link.
↳source
sources.source
stringnullable—Publisher or feed identifier.
↳author
sources.author
stringnullable—Reporting journalist or source author.
↳published_at
sources.published_at
timestamptznullable—Source publication timestamp.
summary
string—Concise journalistic summary of the team news event.
e.g. The White Sox defeated the Minnesota Twins 10-1 behind a do…
title
string—Headline of the team news story.
e.g. White Sox Bullpen Dominates in 10-1 Win Over Twins
urgency
stringnullable—ROUTINE, MEDIUM, HIGH, BREAKING_GAME_TIME
e.g. ROUTINE