Skip to main content

MLB — additional Python functions — Play-by-play, schedule & rosters

espn_mlb_game_rosters​

espn_mlb_game_rosters(game_id: 'int', raw: 'bool' = False, return_as_pandas: 'bool' = False, **kwargs)

espn_mlb_game_rosters - pull the active game rosters for both teams.

Parameters

ParameterTypeDefaultDescription
game_idintESPN game id.
rawboolFalseWhen True, returns the merged competitor + roster payload dict.
return_as_pandasboolFalseWhen True, returns a pandas dataframe; otherwise polars.

Returns

One row per (game × team × athlete) with columns game_id, team_id, home_away, athlete_id, athlete_full_name, athlete_jersey, athlete_position_id, athlete_position_abbreviation, athlete_starter.

Example

from sportsdataverse.mlb import espn_mlb_game_rosters
ros = espn_mlb_game_rosters(game_id=401569461)
print(ros.shape)
ros.group_by("home_away").len()

espn_mlb_pbp​

espn_mlb_pbp(game_id: 'int', raw: 'bool' = False, **kwargs) -> 'Dict'

espn_mlb_pbp - pull the full ESPN game-summary payload for one MLB game.

Parameters

ParameterTypeDefaultDescription
game_idintESPN game id (the "event id"). Obtainable from espn_mlb_schedule.
rawboolFalseWhen True, returns the full nested payload unchanged. When False (default), the same payload is returned for now — full parsing into a tidy plays / boxscore dict is not yet implemented; see the TODO below.

Returns

The Site v2 summary payload. Top-level keys typically include header, boxscore, plays, leaders, scoringPlays, gameInfo, winprobability, pickcenter, news, videos, standings, article, seasonseries, broadcasts, predictor.

Example

from sportsdataverse.mlb import espn_mlb_pbp
game = espn_mlb_pbp(game_id=401569461, raw=True)
sorted(game.keys())
print(game.get("header", {}).get("competitions", [{}])[0].get("date"))

# Iterate the plays array

plays = game.get("plays") or []
print(f"{len(plays)} plays")
for p in plays[:3]:
print(p.get("text"))

espn_mlb_player_stats​

espn_mlb_player_stats(athlete_id: 'int', season: 'int', *, season_type: 'str' = 'regular', total: 'bool' = False, raw: 'bool' = False, return_as_pandas: 'bool' = False, **kwargs: 'Any') -> 'pl.DataFrame | pd.DataFrame | dict[str, Any]'

Pull an MLB athlete's ESPN season stat line as one wide row.

See sportsdataverse.wbb.espn_wbb_player_stats for full documentation of the wide return shape, the {category}_{stat} stat columns (for baseball: batting_*, pitching_*, fielding_*), the athlete / team metadata blocks, and the season_type / total parameters. For the richer multi-category web-v3 payload use sportsdataverse.mlb.espn_mlb_player_stats_v3.

Parameters

ParameterTypeDefaultDescription
athlete_idintESPN MLB athlete identifier (e.g. 33192 for Aaron Judge).
seasonintSeason year, used in the core-v2 path.
season_typestr'regular'"regular" (type 2) or "postseason" (type 3).
totalboolFalseForward-compat totals passthrough.
rawboolFalseIf True, returns the raw core-v2 statistics JSON dict.
return_as_pandasboolFalseIf True, returns a pandas DataFrame; else polars.

Returns

A single-row wide DataFrame (polars by default). When raw=True returns the raw statistics JSON dict.

col_nametypedescription
seasonintegerSeason year.
season_typecharacterSeason-type id.
totallogicalTotal.
athlete_idintegerUnique ESPN athlete identifier.
athlete_uidcharacterAthlete uid.
athlete_guidcharacterAthlete guid.
athlete_typecharacterAthlete type.
first_namecharacterPlayer first name.
last_namecharacterPlayer last name.
full_namecharacterPlayer's full name.
display_namecharacterDisplay name.
short_namecharacterShort display name.
weightdoubleWeight in pounds.
display_weightcharacterDisplay weight.
heightdoubleHeight (feet and inches).
display_heightcharacterDisplay height.
ageintegerPlayer age (in years).
date_of_birthcharacterDate of birth.
jerseycharacterJersey number worn by the player.
slugcharacterURL-safe identifier.
activelogicalWhether the player is currently active.
position_idintegerUnique position identifier.
position_namecharacterPosition name.
position_display_namecharacterPosition display name.
position_abbreviationcharacterPosition abbreviation.
college_namecharacterCollege name.
status_idintegerStatus id.
status_namecharacterGame status (e.g. 'STATUS_FINAL').
batting_games_playeddoubleTeam batting: batting games played.
batting_team_games_playeddoubleTeam batting: batting team games played.
batting_hit_by_pitchdoubleTeam batting: batting hit by pitch.
batting_ground_ballsdoubleTeam batting: batting ground balls.
batting_strikeoutsdoubleTeam batting: batting strikeouts.
batting_rb_isdoubleTeam batting: batting rb is.
batting_sac_hitsdoubleTeam batting: batting sac hits.
batting_hitsdoubleTeam batting: batting hits.
batting_stolen_basesdoubleTeam batting: batting stolen bases.
batting_walksdoubleTeam batting: batting walks.
batting_catcher_interferencedoubleTeam batting: batting catcher interference.
batting_runsdoubleTeam batting: batting runs.
batting_gid_psdoubleTeam batting: batting gid ps.
batting_sac_fliesdoubleTeam batting: batting sac flies.
batting_at_batsdoubleTeam batting: batting at bats.
batting_home_runsdoubleTeam batting: batting home runs.
batting_grand_slam_home_runsdoubleTeam batting: batting grand slam home runs.
batting_runners_left_on_basedoubleTeam batting: batting runners left on base.
batting_triplesdoubleTeam batting: batting triples.
batting_game_winning_rb_isdoubleTeam batting: batting game winning rb is.
batting_intentional_walksdoubleTeam batting: batting intentional walks.
batting_doublesdoubleTeam batting: batting doubles.
batting_fly_ballsdoubleTeam batting: batting fly balls.
batting_caught_stealingdoubleTeam batting: batting caught stealing.
batting_pitchesdoubleTeam batting: batting pitches.
batting_games_starteddoubleTeam batting: batting games started.
batting_pinch_at_batsdoubleTeam batting: batting pinch at bats.
batting_pinch_hitsdoubleTeam batting: batting pinch hits.
batting_player_ratingdoubleTeam batting: batting player rating.
batting_is_qualifieddoubleTeam batting: batting is qualified.
batting_is_qualified_stealsdoubleTeam batting: batting is qualified steals.
batting_total_basesdoubleTeam batting: batting total bases.
batting_plate_appearancesdoubleTeam batting: batting plate appearances.
batting_projected_home_runsdoubleTeam batting: batting projected home runs.
batting_extra_base_hitsdoubleTeam batting: batting extra base hits.
batting_runs_createddoubleTeam batting: batting runs created.
batting_avgdoubleTeam batting: batting average.
batting_pinch_avgdoubleTeam batting: batting pinch avg.
batting_slug_avgdoubleTeam batting: batting slug avg.
batting_secondary_avgdoubleTeam batting: batting secondary avg.
batting_on_base_pctdoubleTeam batting: batting on base pct.
batting_opsdoubleTeam batting: batting ops.
batting_ground_to_fly_ratiodoubleTeam batting: batting ground to fly ratio.
batting_runs_created_per27_outsdoubleBill James Runs Created per 27 outs, estimating how many runs a lineup of this batter would score per game.
batting_batter_ratingdoubleTeam batting: batting batter rating.
batting_at_bats_per_home_rundoubleTeam batting: batting at bats per home run.
batting_stolen_base_pctdoubleTeam batting: batting stolen base pct.
batting_pitches_per_plate_appearancedoubleTeam batting: batting pitches per plate appearance.
batting_isolated_powerdoubleTeam batting: batting isolated power.
batting_walk_to_strikeout_ratiodoubleTeam batting: batting walk to strikeout ratio.
batting_walks_per_plate_appearancedoubleTeam batting: batting walks per plate appearance.
batting_secondary_avg_minus_badoubleTeam batting: batting secondary avg minus ba.
batting_runs_produceddoubleTeam batting: batting runs produced.
batting_runs_ratiodoubleTeam batting: batting runs ratio.
batting_patience_ratiodoubleRatio of walks to strikeouts, measuring a batter's plate discipline and ability to work counts.
batting_bipadoubleBatting average on balls in the air (fly balls and line drives), measuring in-play success on airborne contact.
batting_mlb_ratingdoubleESPN's composite MLB rating for the batter reflecting overall offensive performance.
batting_off_warbrdoubleOffensive Wins Above Replacement (Baseball Reference methodology) attributable to the batter's hitting contributions.
batting_warbrdoubleTotal Wins Above Replacement (Baseball Reference methodology) for the batter including offense and baserunning.
fielding_games_playeddoubleNumber of games in which the player appeared defensively at their position.
fielding_team_games_playeddoubleNumber of games the player's team played while the player was on the active roster.
fielding_double_playsdoubleNumber of double plays the fielder participated in during the season.
fielding_opportunitiesdoubleTotal fielding opportunities defined as putouts plus assists plus errors for the player.
fielding_errorsdoubleNumber of fielding errors charged to the player during the season.
fielding_passed_ballsdoubleNumber of pitches ruled as passed balls charged to the catcher during the season.
fielding_assistsdoubleNumber of assists recorded by the fielder when a thrown ball contributes to an out.
fielding_outfield_assistsdoubleNumber of outfield assists, recorded when an outfielder throws out a runner.
fielding_pickoffsdoubleNumber of baserunners picked off by pitchers while this catcher was behind the plate or this fielder was at their position.
fielding_putoutsdoubleNumber of putouts recorded by the fielder where they made the final play to retire a batter or runner.
fielding_outs_on_fielddoubleTotal outs recorded across all innings the player was present on the field.
fielding_triple_playsdoubleNumber of triple plays in which the fielder participated during the season.
fielding_balls_in_zonedoubleNumber of batted balls that entered the fielder's defined defensive zone.
fielding_extra_basesdoubleExtra bases allowed by the outfielder due to errors or misplays on balls hit into their zone.
fielding_outs_madedoubleTotal outs the fielder was directly responsible for recording during the season.
fielding_hitsdoubleNumber of hits recorded while this fielder was positioned, relevant for zone-rating calculations.
fielding_total_basesdoubleTotal bases allowed by the outfielder on balls hit into their zone, used in advanced defensive metrics.
fielding_games_starteddoubleNumber of games the player started at their primary defensive position.
fielding_catcher_third_innings_playeddoubleTotal one-third innings played behind the plate by the catcher, expressed in thirds.
fielding_catcher_caught_stealingdoubleNumber of opposing baserunners thrown out attempting to steal a base by this catcher.
fielding_catcher_stolen_bases_alloweddoubleNumber of successful stolen bases allowed by the catcher during the season.
fielding_catcher_earned_runsdoubleEarned runs allowed while this catcher was behind the plate, used in catcher ERA calculations.
fielding_is_qualifieddoubleIndicator flag for whether the player meets minimum innings requirements to qualify for fielding rate stats.
fielding_is_qualified_catcherdoubleIndicator flag for whether the catcher meets the minimum innings threshold to qualify for catcher-specific rate stats.
fielding_is_qualified_pitcherdoubleIndicator flag for whether the pitcher qualifies for pitcher fielding rate statistics.
fielding_successful_chancesdoubleTotal successful fielding chances defined as putouts plus assists (errors excluded).
fielding_total_chancesdoubleTotal fielding chances (putouts + assists + errors) offered to the player during the season.
fielding_full_innings_playeddoubleNumber of complete innings (three outs per side) the player appeared in the field.
fielding_part_innings_playeddoubleNumber of fractional (partial) innings the player appeared in the field, expressed as a count of thirds.
fielding_fielding_pctdoubleFielding percentage calculated as successful chances divided by total chances (putouts + assists + errors).
fielding_range_factordoubleRange factor per nine innings (putouts + assists) / innings * 9, measuring a fielder's defensive range.
fielding_zone_ratingdoublePercentage of batted balls in the fielder's defined zone that were successfully converted into outs.
fielding_catcher_caught_stealing_pctdoublePercentage of opposing stolen base attempts that resulted in the catcher throwing out the runner.
fielding_catcher_eradoubleERA of pitchers while this specific catcher was behind the plate over the season.
fielding_def_warbrdoubleDefensive Wins Above Replacement (Baseball Reference methodology) attributable to the player's fielding.
team_idintegerUnique ESPN team identifier.
team_uidcharacterESPN universal team identifier (UID).
team_guidcharacterESPN team GUID.
team_slugcharacterURL-safe team identifier.
team_locationcharacterTeam city / location.
team_namecharacterTeam name.
team_abbreviationcharacterShort team abbreviation (e.g. 'NYY').
team_display_namecharacterFull team display name (e.g. 'New York Yankees').
team_short_display_namecharacterShort team display name.
team_colorcharacterTeam primary color (hex, no leading '#').
team_alternate_colorcharacterTeam alternate color (hex).
team_is_activelogicalTeam is active.
team_logo_hrefcharacterDefault team logo URL; team_detail = TRUE only.

Example

from sportsdataverse.mlb import espn_mlb_player_stats
df = espn_mlb_player_stats(athlete_id=33192, season=2023)
df.select(["full_name", "team_display_name", "batting_home_runs"])

espn_mlb_schedule​

espn_mlb_schedule(dates=None, season_type=None, limit=500, return_as_pandas=False, **kwargs) -> 'pl.DataFrame'

espn_mlb_schedule - look up the MLB schedule for a given date or season-year.

Parameters

ParameterTypeDefaultDescription
datesintNoneDate filter. Either a calendar date as YYYYMMDD or a season-year (e.g. 2024). When a 4-digit year is passed, the call returns the full season slate (paginated by limit).
season_typeintNoneSeason type — 1 = spring training, 2 = regular, 3 = postseason, 4 = all-star.
limitint500Number of records to return. Default 500.
return_as_pandasboolFalseIf True, returns a pandas dataframe. If False (default), returns a polars dataframe.

Returns

Polars dataframe containing the schedule. Returns None if no games.

col_nametypedescription
game_idcharacterUnique ESPN game/event identifier.
datecharacterDate in YYYY-MM-DD format.
season_yearintegerSeason year string ('YYYY-YY' format).
season_typeintegerSeason-type id.
status_type_statecharacterStatus state (pre/in/post).
status_type_completedlogicalWhether the game is complete.
status_type_descriptioncharacterStatus type description.
venue_idcharacterMLBAM venue ID.
venue_full_namecharacterVenue full name.
venue_citycharacterVenue city.
venue_statecharacterVenue state / province.
home_idcharacterUnique identifier for home.
home_namecharacterHome team display name.
home_abbreviationcharacterHome team's abbreviation.
home_display_namecharacterHome team display name.
home_scorecharacterHome team run total after the play.
home_winnerlogicalWhether the home team won.
away_idcharacterUnique identifier for away.
away_namecharacterAway team display name.
away_abbreviationcharacterAway team's abbreviation.
away_display_namecharacterAway team display name.
away_scorecharacterAway team run total after the play.
away_winnerlogicalWhether the away team won.

Example

from sportsdataverse.mlb import espn_mlb_schedule
sched = espn_mlb_schedule(dates=20240328)
print(sched.shape)
sched.select(["game_id", "home_name", "away_name", "status_type_description"]).head()

# Pull a regular-season slate from a season-year

reg = espn_mlb_schedule(dates=2024, season_type=2, limit=500)
reg.group_by("status_type_description").len().sort("len", descending=True)

# Pandas round-trip for one date

espn_mlb_schedule(dates=20240328, return_as_pandas=True).head()