Package: python-mlb-statsapi
Python MLB Stats APIThe Unofficial Python Wrapper for the MLB Stats APICopyright NoticeThis package and its authors are not affiliated with MLB or any MLB team. This API wrapper interfaces with MLB's Stats API. Use of MLB data is subject to the notice posted athttp://gdx.mlb.com/components/copyright.txt.This is an educational project - Not for commercial use.Getting StartedPython-mlb-statsapiis a Python library that provides developers with access to the MLB Stats API which allows developers to retrieve information related to MLB teams, players, stats, and more.Python-mlb-statsapiwritten in python 3.10+.To get started with the library, refer to the information provided in this README. For a more detailed explanation, check out the documentation and the Wiki section. The Wiki contains information on return objects, endpoint structure, usage examples, and more. It is a valuable resource for getting started, working with the library, and finding the information you need.Examples|Wiki|APIInstallationpython3-mpipinstallpython-mlb-statsapiUsagepython3>>>importmlbstatsapi>>>mlb=mlbstatsapi.Mlb()>>>mlb.get_people_id("Ty France")[664034]>>>stats=['season','seasonAdvanced']>>>groups=['hitting']>>>params={'season':2022}>>>mlb.get_player_stats(664034,stats,groups,**params){'hitting':{'season':Stat,'seasonadvanced':Stat}}>>>mlb.get_team_id("Oakland Athletics")[133]>>>stats=['season','seasonAdvanced']>>>groups=['pitching']>>>params={'season':2022}>>>mlb.get_team_stats(133,stats,groups,**params){'pitching':{'season':Stat,'seasonadvanced':Stat}}DocumentationPeople, Person, Players, CoachesMlb.get_people_id(self, fullname: str, sport_id: int = 1, search_key: str = 'fullname', **params)- Return Person Id(s) from fullnameMlb.get_person(self, player_id: int, **params)- Return Person Object from IdMlb.get_people(self, sport_id: int = 1, **params)- Return all Players from SportDraftMlb.get_draft(self, year_id: int, **params)- Return a draft for a given yearAwardsMlb.get_awards(self, award_id: int, **params)- Return rewards recipinets for a given awardTeamsMlb.get_team_id(self, team_name: str, search_key: str = 'name', **params)- Return Team Id(s) from nameMlb.get_team(self, team_id: int, **params)- Return Team Object from Team IdMlb.get_teams(self, sport_id: int = 1, **params)- Return all Teams for SportMlb.get_team_coaches(self, team_id: int, **params)- Return coaching roster for team for current or specified seasonMlb.get_team_roster(self, team_id: int, **params)- Return player roster for team for current or specified seasonStatsMlb.get_player_stats(self, person_id: int, stats: list, groups: list, **params)- Return stats by player id, stat type and groupsMlb.get_team_stats(self, team_id: int, stats: list, groups: list, **params)- Return stats by team id, stat types and groupsMlb.get_stats(self, stats: list, groups: list, **params: dict)- Return stats by stat type and group argsMlb.get_players_stats_for_game(self, person_id: int, game_id: int, **params)- Return player stats for a gameGamepaceMlb.get_gamepace(self, season: str, sport_id=1, **params)- Return pace of game metrics for specific sport, league or team.VenuesMlb.get_venue_id(self, venue_name: str, search_key: str = 'name', **params)- Return Venue Id(s)Mlb.get_venue(self, venue_id: int, **params)- Return Venue Object from venue IdMlb.get_venues(self, **params)- Return all VenuesSportsMlb.get_sport(self, sport_id: int, **params)- Return a Sport object from IdMlb.get_sports(self, **params)- Return all teams for Sport IdMlb.get_sport_id(self, sport_name: str, search_key: str = 'name', **params)- Return Sport Id from nameSchedulesMlb.get_schedule(self, date: str, start_date: str, end_date: str, sport_id: int, team_id: int, **params)- Return a ScheduleDivisionsMlb.get_division(self, division_id: int, **params)- Return a DivisonMlb.get_divisions(self, **params)- Return all DivisionsMlb.get_division_id(self, division_name: str, search_key: str = 'name', **params)- Return Division Id(s) from nameLeaguesMlb.get_league(self, league_id: int, **params)- Return a League from IdMlb.get_leagues(self, **params)- Return all LeaguesMlb.get_league_id(self, league_name: str, search_key: str = 'name', **params)- Return League Id(s)SeasonsMlb.get_season(self, season_id: str, sport_id: int = None, **params)- Return a seasonMlb.get_seasons(self, sportid: int = None, **params)- Return all seasonsStandingsMlb.get_standings(self, league_id: int, season: str, **params)- Return standingsSchedulesMlb.get_schedule(self, date: str = None, start_date: str = None, end_date: str = None, sport_id: int = 1, team_id: int = None, **params)- Return a Schedule from datesMlb.get_scheduled_games_by_date(self, date: str = None,start_date: str = None, end_date: str = None, sport_id: int = 1, **params)- Return game ids from datesGamesMlb.get_game(self, game_id: int, **params)- Return the Game for a specific Game IdMlb.get_game_play_by_play(self, game_id: int, **params)- Return Play by play data for a gameMlb.get_game_line_score(self, game_id: int, **params)- Return a Linescore for a gameMlb.get_game_box_score(self, game_id: int, **params)- Return a Boxscore for a gameExamplesLet's show some examples of getting stat objects from the API. What is baseball with out stats right?MLB StatsPlayer StatsGet the Id(s) of the players you want stats for and set stat types and groups.>>>mlb=mlbstatsapi.Mlb()>>>player_id=mlb.get_people_id("Ty France")[0]>>>stats=['season','career']>>>groups=['hitting','pitching']>>>params={'season':2022}Use player.id and stat types and groups to return a stats dictionary>>>stat_dict=mlb.get_player_stats(player_id,stats=stats,groups=groups,**params)>>>season_hitting_stat=stat_dict['hitting']['season']>>>career_pitching_stat=stat_dict['pitching']['career']Print season hitting stats>>>forsplitinseason_hitting_stat.splits:...fork,vinsplit.stat.__dict__.items():...print(k,v)gamesplayed140groundouts163airouts148runs65doubles27triples1homeruns20strikeouts94baseonballs35...>>>forsplitincareer_pitching_stat.splits:...fork,vinsplit.stat.__dict__.items():...print(k,v)gamesplayed2gamesstarted0groundouts2airouts4runs1doubles0triples0homeruns1strikeouts0baseonballs0intentionalwalks0hits2hitbypitch0...Team statsGet the Team Id(s)python3>>>mlb=mlbstatsapi.Mlb()>>>team_id=mlb.get_team_id('Seattle Mariners')[0]Set the stat types and groups.>>>stats=['season','seasonAdvanced']>>>groups=['hitting']>>>params={'season':2022}Use team.id and the stat types and groups to return season hitting statsstats=mlb.get_team_stats(team_id,stats=stats,groups=groups,**params)season_hitting=stats['hitting']['season']advanced_hitting=stats['hitting']['seasonadvanced']Print season and seasonadvanced stats>>>forsplitinseason_hitting.splits:...fork,vinsplit.stat.__dict__.items():...print(k,v)gamesplayed162groundouts1273airouts1523runs690doubles229triples19>>>>>>forsplitinadvanced_hitting.splits:...fork,vinsplit.stat.__dict__.items():...print(k,v)...plateappearances6117totalbases2094leftonbase1129sacbunts9sacflies45More stats examplesExpected StatsGet player Id's>>>player_id=mlb.get_people_id('Ty France')[0]Set the stat type and group>>>stats=['expectedStatistics']>>>group=['hitting']>>>params={'season':2022}Get Stats>>>stats=mlb.get_player_stats(player_id,stats=stats,groups=group,**params)>>>expectedstats=stats['hitting']['expectedstatistics']>>>forsplitinexpectedstats.splits:...fork,vinsplit.stat.__dict__.items():...print(k,v)avg.259slg.394woba.317wobacon.338vsPlayerGet pitcher and batter player Ids>>>ty_france_id=mlb.get_people_id('Ty France')[0]>>>shohei_ohtani_id=mlb.get_people_id('Shohei Ohtani')[0]Set stat type, stat groups, and params>>>stats=['vsPlayer']>>>group=['hitting']>>>params={'opposingPlayerId':shohei_ohtani_id,'season':2022}Get stats>>>stats=mlb.get_player_stats(ty_france_id,stats=stats,groups=group,**params)>>>vs_player_total=stats['hitting']['vsplayertotal']>>>forsplitinvs_player_total.splits:...fork,vinsplit.stat.__dict__.items():...print(k,v)gamesplayed4groundouts3airouts4runsNonedoubles1triples0homeruns0...>>>vs_player=stats['hitting']['vsplayer']>>>forsplitinvs_player.splits:...fork,vinsplit.stat.__dict__.items():...print(k,v)gamesplayed2groundouts1airouts2runsNonedoubles1triples0homeruns0hotColdZonesGet player Id's>>>ty_france_id=mlb.get_people_id('Ty France')[0]>>>shohei_ohtani_id=mlb.get_people_id('Shohei Ohtani')[0]Set the stat types and groups>>>stats=['hotColdZones']>>>hitting_group=['hitting']>>>pitching_group=['pitching']>>>params={'season':2022}The stat groups pitching and hitting both return hotColdZones for a pitcher and hitter. hotColdZones are not assigned to a
stat group because of issues related to the REST API. So hotColdZones will be assigned to the stat key in stats return dict.>>>hitting_hotcoldzones=mlb.get_player_stats(ty_france_idstats=stats,groups=hitting_group,**params)>>>pitching_hotcoldzones=mlb.get_player_stats(shohei_ohtani_id,stats=stats,groups=pitching_group,**params)hotColdZones returns a list of the HotColdZones>>>ty_france_hotcoldzones=hitting_hotcoldzones['stats']['hotcoldzones']>>>shohei_ohtani_hotcoldzones=pitching_hotcoldzones['stats']['hotcoldzones']Loop through hotColdZone objects for Ty France>>>forsplitinty_france_hotcoldzones.splits:...print(split.stat.name)...onBasePercentageonBasePlusSluggingsluggingPercentageexitVelocitybattingAverageLoop through hotColdZone objects for Shoei Ohtani>>>forsplitinshohei_ohtani_hotcoldzones.splits:...print(split.stat.name)...onBasePercentageonBasePlusSluggingsluggingPercentageexitVelocitybattingAveragePrint zone information for obp>>>forsplitinty_france_hotcoldzones.splits:...ifsplit.stat.name=='onBasePercentage':...forzoneinsplit.stat.zones:...print('zone: ',zone.zone)...print('value: ',zone.value)zone:01value:.226zone:02value:.400zone:03value:.375zone:04Passing paramsGet Team Idspython3>>>mlb=mlbstatsapi.Mlb()>>>team_id=mlb.get_team_id('Seattle Mariners')[0]Set the stat types and groups.>>>stats=['season','seasonAdvanced']>>>groups=['hitting']>>>params={'season':2022}Pass season to get_team_stats()stats=mlb.get_team_stats(team_id,stats=stats,groups=groups,**params)season_hitting=stats['hitting']['season']advanced_hitting=stats['hitting']['seasonadvanced']season should be 2018>>>forsplitinseason_hitting.splits:...print('Season: ',split.season)...fork,vinsplit.stat.__dict__.items():...print(k,v)...Season:2018gamesplayed162groundouts1535airouts1425runs677...>>>forsplitinadvanced_hitting.splits:...print('Season: ',split.season)...fork,vinsplit.stat.__dict__.items():...print(k,v)...Season:2018plateappearances6087totalbases2250leftonbase1084sacbunts29sacflies41...Gamepace examplesGet pace of game metrics for specific sport, league or team.>>>mlb=mlbstatsapi.Mlb()>>>season=2021>>>gamepace=mlb.get_gamepace(season)Schedule ExamplesGet a schedule for given date>>>mlb=mlbstatsapi.Mlb()>>>schedule=mlb.get_schedule_date('2022-10-13')Get ScheduleDates from Scheduledates=schedule.datesPrint Game status and Home and Away Teams>>>fordateindates:...forgameindate.games:...print(game.status)...print(game.teams.home)...print(game.teams.away)Game ExamplesGet a Game for a given game id>>>mlb=mlbstatsapi.Mlb()>>>game=mlb.get_game(662242)Get the weather for a game for a given game id>>>mlb=mlbstatsapi.Mlb()>>>game=mlb.get_game(662242)>>>weather=game.gamedata.weather>>>>>>print(weather.condition)>>>print(weather.temp)>>>print(weather.wind)Get the current status of a game for a given game id>>>mlb=mlbstatsapi.mlb()>>>game=mlb.get_game(662242)>>>>>>linescore=game.livedata.linescore>>>hometeaminfo=game.gamedata.teams.home>>>awayteaminfo=game.gamedata.teams.away>>>hometeamstatus=linescore.teams.home>>>awayteamstatus=linescore.teams.away>>>>>>print("home: ",hometeaminfo.franchisename,hometeaminfo.clubname)>>>print("      runs:",hometeamstatus.runs)>>>print("      hits:",hometeamstatus.hits)>>>print("      errors:",hometeamstatus.errors)>>>print("away: ",awayteaminfo.franchisename,awayteaminfo.clubname)>>>print("      runs:",awayteamstatus.runs)>>>print("      hits:",awayteamstatus.hits)>>>print("      errors:",awayteamstatus.errors)>>>print("")>>>print("inning:",linescore.inninghalf,linescore.currentinningordinal)>>>print("balls:",linescore.balls)>>>print("strikes:",linescore.strikes)>>>print("Outs:",linescore.outs)Get the play by play, line score, and box score objects from a game>>>mlb=mlbstatsapi.Mlb()>>>game=mlb.get_game(662242)>>>>>>play_by_play=game.livedata.plays>>>line_score=game.livedata.linescore>>>box_score=game.livedata.boxscorePlay by PlayGet only the play by play for a given game id>>>mlb=mlbstatsapi.Mlb()>>>playbyplay=mlb.get_play_by_play(662242)Line ScoreGet only the line score for a given game id>>>mlb=mlbstatsapi.Mlb()>>>linescore=mlb.get_line_score(662242)Box ScoreGet only the box score for a given game id>>>mlb=mlbstatsapi.Mlb()>>>boxscore=mlb.get_box_score(662242)People ExamplesGet all Players for a given sport id>>>mlb=mlbstatsapi.Mlb()>>>sport_id=mlb.get_sport_id()>>>players=mlb.get_players(sport_id=sport_id)>>>forplayerinplayers:...print(player.id)Get a player id>>>player_id=mlb.get_people_id("Ty France")>>>print(player_id[0])>>>[664034]Team ExamplesGet a Team>>>mlb=mlbstatsapi.Mlb()>>>team_ids=mlb.get_team_id("Seattle Mariners")>>>team_id=team_ids[0]>>>team=mlb.get_team(team_id.id)>>>print(team.id)>>>print(team.name)Get a Player Roster>>>mlb=mlbstatsapi.Mlb()>>>team_id=133>>>players=mlb.get_team_roster(team_id)>>>forplayerinplayers:print(player.jerseynumber)Get a Coach Roster>>>mlb=mlbstatsapi.Mlb()>>>team_id=133>>>coaches=mlb.get_team_coaches(team_id)>>>forcoachincoaches:print(coach.title)Draft ExamplesGet a draft for a year>>>mlb=mlbstatsapi.Mlb()>>>draft_year='2019'>>>draft=mlb.get_draft(draft_year)Get Players from Draft>>>draftpicks=draft[0].picks>>>fordraftpickindraftpicks:...print(draftpick.id)...print(draftpick.pickround)Award ExamplesGet awards for a given award id>>>mlb=mlbstatsapi.Mlb()>>>retiredjersy=self.mlb.get_awards(award_id='RETIREDUNI_108')>>>forrecipientinretiredjersy.awards:...print(recipient.player.nameFirstLast,recipient.name,recipient.date)Venue ExamplesGet a Venue>>>mlb=mlbstatsapi.Mlb()>>>vevue_ids=mlb.get_venue_id('PNC Park')>>>venue_id=venue_ids[0]>>>venue=mlb.get_team(venue.id)>>>print(venue.id)>>>print(venue.name)Sport ExamplesGet a Sport>>>mlb=mlbstatsapi.Mlb()>>>sport_ids=mlb.get_sport_id('Major League Baseball')>>>sport_id=sport_ids[0]>>>sport=mlb.get_sport(sport_id)Division ExamplesGet a division>>>mlb=mlbstatsapi.Mlb()>>>division=mlb.get_division(200)>>>print(division.name)League ExamplesGet a league>>>mlb=mlbstatsapi.Mlb()>>>league=mlb.get_league(103)>>>print(league.name)Season ExamplesGet a Season>>>mlb=mlbstatsapi.Mlb()>>>season=mlb.get_season(2018)>>>print(season.seasonid)Standings ExamplesGet a Standings>>>mlb=mlbstatsapi.Mlb()>>>standings=mlb.get_standings(103,2018)