Skip to main content
Version: 0.0.55

NHL — additional Python functions

Hand-written wrappers, loaders, and helpers in sportsdataverse.nhl not covered by the generated API-endpoint reference above.

Play-by-play, schedule & rosters

espn_nhl_game_rosters(game_id: 'int', raw=False, return_as_pandas=False, **kwargs) -> 'pl.DataFrame'

espn_nhl_game_rosters() - Pull the game by id.

Parameters

ParameterTypeDefaultDescription
game_idintUnique game_id, can be obtained from espn_nhl_schedule().
rawFalse
return_as_pandasboolFalseIf True, returns a pandas dataframe. If False, returns a polars dataframe.

Returns

Polars dataframe of game roster data with columns: 'athlete_id', 'athlete_uid', 'athlete_guid', 'athlete_type', 'first_name', 'last_name', 'full_name', 'athlete_display_name', 'short_name', 'weight', 'display_weight', 'height', 'display_height', 'age', 'date_of_birth', 'slug', 'jersey', 'linked', 'active', 'alternate_ids_sdr', 'birth_place_city', 'birth_place_state', 'birth_place_country', 'headshot_href', 'headshot_alt', 'experience_years', 'experience_display_value', 'experience_abbreviation', 'status_id', 'status_name', 'status_type', 'status_abbreviation', 'hand_type', 'hand_abbreviation', 'hand_display_value', 'draft_display_text', 'draft_round', 'draft_year', 'draft_selection', 'player_id', 'starter', 'valid', 'did_not_play', 'display_name', 'ejected', 'athlete_href', 'position_href', 'statistics_href', 'team_id', 'team_guid', 'team_uid', 'team_slug', 'team_location', 'team_name', 'team_abbreviation', 'team_display_name', 'team_short_display_name', 'team_color', 'team_alternate_color', 'is_active', 'is_all_star', 'logo_href', 'logo_dark_href', 'game_id'

col_nametypedescription
athlete_idintegerUnique athlete identifier (ESPN).
athlete_uidcharacterESPN athlete UID (universal identifier).
athlete_guidcharacterESPN athlete GUID.
athlete_typecharacterAthlete type / class.
alternate_idcharacter
first_namecharacterPlayer's first name.
last_namecharacterPlayer's last name.
full_namecharacterPlayer's full name.
athlete_display_namecharacterAthlete display name (full).
short_namecharacterShort display name.
weightdoublePlayer weight in pounds.
display_weightcharacterPlayer weight in display format (e.g. '180 lbs').
heightdoublePlayer height (string e.g. '6-2' or inches).
display_heightcharacterPlayer height in display format (e.g. '6-2').
ageintegerPlayer age (in years).
date_of_birthcharacterDate of birth (YYYY-MM-DD).
debut_yearintegerYear of professional debut.
slugcharacterURL-safe identifier.
jerseycharacterJersey number worn by the player.
linkedlogicalTRUE if the record is linked to a related entity.
activelogicalTRUE if the row represents an active record (player / team / season).
alternate_ids_sdrcharacter
birth_place_citycharacterBirth place city.
birth_place_statecharacterBirth place state.
birth_place_countrycharacterBirth place country.
birth_country_abbreviationcharacter
headshot_hrefcharacterHeadshot image URL.
headshot_altcharacterAlternative-text label for the headshot.
hand_typecharacterHand type.
hand_abbreviationcharacterHand abbreviation.
hand_display_valuecharacterHand display value.
contracts_hrefcharacter
experience_yearsintegerExperience years.
draft_display_textcharacterDraft display text.
draft_roundintegerRound of the draft selection.
draft_yearintegerDraft year (4-digit).
draft_selectionintegerDraft selection.
draft_team_hrefcharacter
status_idcharacterStatus identifier.
status_namecharacterStatus label.
status_typecharacterStatus type.
status_abbreviationcharacterStatus abbreviation.
jersey_rightcharacter
display_namecharacterDisplay name.
scratchedlogical
scratch_reasoncharacter
athlete_hrefcharacter
position_hrefcharacter
statistics_hrefcharacter
team_idintegerUnique team identifier.
orderintegerDisplay order within the result set.
home_awaycharacterGame venue label ('home' or 'away').
winnerlogicalWinner.
team_guidcharacterESPN team GUID.
team_uidcharacterESPN universal team identifier (UID format 's:40~l:...~t:...').
team_slugcharacterURL-safe team identifier (e.g. 'lasvegas-aces' / 'aces').
team_locationcharacterTeam city or location string.
team_namecharacterFull team display name (e.g. 'Las Vegas Aces').
team_nicknamecharacterTeam nickname.
team_abbreviationcharacterShort team abbreviation (e.g. 'LAS').
team_display_namecharacterFull team display name.
team_short_display_namecharacterShort team display name (e.g. 'Aces').
team_colorcharacterTeam primary color (hex without leading '#').
team_alternate_colorcharacterTeam alternate color (hex without leading '#').
is_activelogicalWhether the team was active in this season.
is_all_starlogicalIs all star.
team_alternate_ids_sdrcharacter
logo_hrefcharacterTeam or league logo URL.
logo_dark_hrefcharacterLogo URL for dark backgrounds.
game_idintegerUnique game identifier.

Example

from sportsdataverse.nhl import espn_nhl_game_rosters
rosters = espn_nhl_game_rosters(game_id=401559395)
print(rosters.shape)
rosters.select(["athlete_display_name", "jersey", "team_abbreviation", "starter"]).head(10)

Just the starters::

import polars as pl
rosters.filter(pl.col("starter") == True).select(["athlete_display_name", "team_abbreviation"])

Pandas round-trip::

rosters_pd = espn_nhl_game_rosters(game_id=401559395, return_as_pandas=True)
rosters_pd[["athlete_display_name", "team_abbreviation", "did_not_play"]].head()

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

espn_nhl_pbp() - Pull the game by id. Data from API endpoints - nhl/playbyplay, nhl/summary

.. note:: This is the ESPN NHL play-by-play, not the modern NHL api-web one. The two surfaces have different ID spaces and different schemas — they are NOT interchangeable: - espn_nhl_pbp(game_id) uses ESPN event IDs (e.g. 401559395). Returns a Dict of ~17 sub-frames matching the ESPN Site v2 summary shape (boxscore / plays / leaders / standings / etc.). Useful for historical alignment with the hoopR / wehoop R-package data stack. - nhl_web_pbp(game_id) + parse_nhl_web_pbp(payload) uses NHL native game IDs (e.g. 2023030417). Returns the modern api-web.nhle.com PBP shape (plays[] with eventId, typeCode, typeDescKey, periodDescriptor, nested details). Use this for live games + modern NHL.com source-of-truth data. Pick the surface that matches your ID space + downstream join keys. The two cannot be cross-referenced by game_id.

Parameters

ParameterTypeDefaultDescription
game_idintUnique ESPN event id (NOT the NHL native game id), can be obtained from nhl_schedule().
rawFalse

Returns

Dictionary of game data with keys - "gameId", "plays", "boxscore", "header", "broadcasts", "videos", "playByPlaySource", "standings", "leaders", "seasonseries", "pickcenter", "againstTheSpread", "odds", "onIce", "gameInfo", "season"

Example

from sportsdataverse.nhl import espn_nhl_pbp
game = espn_nhl_pbp(game_id=401559395)
list(game.keys()) # 'gameId', 'plays', 'boxscore', ...

Inspect parsed plays and a quick filter on goal events::

import polars as pl
plays = pl.DataFrame(game["plays"])
print(plays.shape)
goals = plays.filter(pl.col("type.text") == "Goal")
goals.select(["period", "time", "text"]).head()

Pull the unparsed payload for custom downstream parsing::

raw = espn_nhl_pbp(game_id=401559395, raw=True)
sorted(raw.keys())[:5]

espn_nhl_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 NHL athlete's ESPN season stat line as one wide row.

See :func:sportsdataverse.wbb.espn_wbb_player_stats for full documentation of the wide return shape, the {category}_{stat} stat columns (for hockey: offensive_*, defensive_*, penalties_*, ...), the athlete / team metadata blocks, and the season_type / total parameters. For the richer multi-category web-v3 payload use :func:sportsdataverse.nhl.espn_nhl_player_stats_v3.

Parameters

ParameterTypeDefaultDescription
athlete_idintESPN NHL athlete identifier (e.g. 3895074 for Connor McDavid).
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 (1=pre-season, 2=regular season, 3=postseason, 4=off-season for ESPN; or string label for WNBA Stats).
totallogicalTotal.
athlete_idintegerUnique athlete identifier (ESPN).
athlete_uidcharacterESPN athlete UID (universal identifier).
athlete_guidcharacterESPN athlete GUID.
athlete_typecharacterAthlete type / class.
first_namecharacterPlayer's first name.
last_namecharacterPlayer's last name.
full_namecharacterPlayer's full name.
display_namecharacterDisplay name.
short_namecharacterShort display name.
weightdoublePlayer weight in pounds.
display_weightcharacterPlayer weight in display format (e.g. '180 lbs').
heightdoublePlayer height (string e.g. '6-2' or inches).
display_heightcharacterPlayer height in display format (e.g. '6-2').
ageintegerPlayer age (in years).
date_of_birthcharacterDate of birth (YYYY-MM-DD).
jerseycharacterJersey number worn by the player.
slugcharacterURL-safe identifier.
activelogicalTRUE if the row represents an active record (player / team / season).
position_idintegerUnique position identifier.
position_namecharacterListed roster position ('Guard', 'Forward', 'Center').
position_display_namecharacterPosition display name.
position_abbreviationcharacterPosition abbreviation ('G' / 'F' / 'C').
college_namecharacterCollege name.
status_idintegerStatus identifier.
status_namecharacterStatus label.
defensive_goals_againstdouble
defensive_avg_goals_againstdouble
defensive_shots_againstdouble
defensive_avg_shots_againstdouble
defensive_shootout_savescharacter
defensive_shootout_shots_againstdouble
defensive_shootout_save_pctdouble
defensive_empty_net_goals_againstcharacter
defensive_shutoutsdouble
defensive_savesdouble
defensive_save_pctdouble
defensive_overtime_lossesdouble
defensive_blocked_shotsdouble
defensive_hitsdouble
defensive_even_strength_savesdouble
defensive_power_play_savesdouble
defensive_short_handed_savesdouble
general_gamesdouble
general_game_starteddouble
general_team_games_playeddouble
general_winsdouble
general_lossesdouble
general_tiescharacter
general_plus_minusdoubleA player's estimated on-court impact on team performance measured in point differential per 100 possessions.
general_time_on_icedouble
general_time_on_ice_per_gamedouble
general_shiftsdouble
general_shifts_per_gamedouble
general_productiondouble
offensive_goalsdouble
offensive_avg_goalsdouble
offensive_assistsdoubleThe number of times a player who passes the ball to a teammate in a way that leads to a score by field goal, meaning that he or she was "assisting" in the basket. There is some judgment involved in deciding whether a passer should be credited with an assist.
offensive_shots_totaldouble
offensive_avg_shotsdouble
offensive_pointsdoubleThe number of points scored.
offensive_points_per_gamedouble
offensive_power_play_goalsdouble
offensive_power_play_assistsdouble
offensive_short_handed_goalsdouble
offensive_short_handed_assistsdouble
offensive_shootout_attemptsdouble
offensive_shootout_goalsdouble
offensive_shootout_shot_pctdouble
offensive_shooting_pctdouble
offensive_total_face_offsdouble
offensive_faceoffs_wondouble
offensive_faceoffs_lostdouble
offensive_faceoff_percentdouble
offensive_game_tying_goalscharacter
offensive_game_winning_goalsdouble
penalties_penalty_minutesdouble
penalties_major_penaltiesdouble
penalties_minor_penaltiesdouble
penalties_match_penaltiesdouble
penalties_misconductsdouble
penalties_game_misconductsdouble
penalties_boarding_penaltiesdouble
penalties_unsportsmanlike_penaltiesdouble
penalties_fighting_penaltiesdouble
penalties_avg_fightsdouble
penalties_time_between_fightscharacter
penalties_instigator_penaltiesdouble
penalties_charging_penaltiesdouble
penalties_hooking_penaltiesdouble
penalties_tripping_penaltiesdouble
penalties_roughing_penaltiesdouble
penalties_holding_penaltiesdouble
penalties_interference_penaltiesdouble
penalties_slashing_penaltiesdouble
penalties_high_sticking_penaltiesdouble
penalties_cross_checking_penaltiesdouble
penalties_stick_holding_penaltiesdouble
penalties_goalie_interference_penaltiesdouble
penalties_elbowing_penaltiesdouble
penalties_diving_penaltiesdouble
rpi_winsdouble
rpi_lossesdouble
rpi_ot_lossescharacter
rpi_pointsdouble
rpi_rpicharacter
rpi_soscharacter
rpi_power_rankcharacter
rpi_points_forcharacter
rpi_points_againstcharacter
team_idintegerUnique team identifier.
team_uidcharacterESPN universal team identifier (UID format 's:40~l:...~t:...').
team_guidcharacterESPN team GUID.
team_slugcharacterURL-safe team identifier (e.g. 'lasvegas-aces' / 'aces').
team_locationcharacterTeam city or location string.
team_namecharacterFull team display name (e.g. 'Las Vegas Aces').
team_abbreviationcharacterShort team abbreviation (e.g. 'LAS').
team_display_namecharacterFull team display name.
team_short_display_namecharacterShort team display name (e.g. 'Aces').
team_colorcharacterTeam primary color (hex without leading '#').
team_alternate_colorcharacterTeam alternate color (hex without leading '#').
team_is_activelogicalTRUE if the team is currently active.
team_logo_hrefcharacterDefault team logo URL; team_detail = TRUE only.

Example

from sportsdataverse.nhl import espn_nhl_player_stats
df = espn_nhl_player_stats(athlete_id=3895074, season=2023)
df.select(["full_name", "team_display_name", "offensive_goals"])

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

espn_nhl_schedule - look up the NHL schedule for a given date

Parameters

ParameterTypeDefaultDescription
datesintNoneUsed to define different seasons. 2002 is the earliest available season.
season_typeintNoneseason type, 1 for pre-season, 2 for regular season, 3 for post-season, 4 for all-star, 5 for off-season
limitint500number of records to return, default: 500.
return_as_pandasboolFalseIf True, returns a pandas dataframe. If False, returns a polars dataframe.

Returns

Polars dataframe containing schedule dates for the requested season. Returns None if no games

col_nametypedescription
idcharacterId.
uidcharacterESPN UID string.
datecharacterDate in YYYY-MM-DD format.
attendanceintegerReported attendance.
time_validlogicalTime valid.
neutral_sitelogicalNeutral site.
play_by_play_availablelogicalTRUE if play-by-play is available.
recentlogicalRecent.
start_datecharacterStart date (YYYY-MM-DD).
broadcastcharacterBroadcast information string.
highlightscharacterGame highlight urls.
notes_typecharacterNotes type.
notes_headlinecharacterNotes headline.
broadcast_marketcharacterBroadcast market label (e.g. 'national', 'home').
broadcast_namecharacterBroadcast name.
type_idcharacterType identifier (numeric).
type_abbreviationcharacterPlay-type abbreviation (e.g. RUSH, TD).
venue_idcharacterUnique venue identifier.
venue_full_namecharacterVenue full name.
venue_address_citycharacterVenue address city.
venue_address_statecharacterVenue address state / region.
venue_address_countrycharacter
venue_indoorlogicalWhether the home venue is indoors.
status_clockdoubleStatus clock.
status_display_clockcharacterStatus display clock.
status_periodintegerStatus period.
status_type_idcharacterUnique identifier for status type.
status_type_namecharacterStatus type name.
status_type_statecharacterStatus type state.
status_type_completedlogicalStatus type completed.
status_type_descriptioncharacterStatus type description.
status_type_detailcharacterStatus type detail.
status_type_short_detailcharacterStatus type short detail.
format_regulation_periodsintegerFormat regulation periods.
home_idcharacterUnique identifier for home.
home_uidcharacterHome team's uid.
home_locationcharacterHome team's location.
home_namecharacterHome name.
home_abbreviationcharacterHome team's abbreviation.
home_display_namecharacterHome display name.
home_short_display_namecharacterHome short display name.
home_colorcharacterColor code (hex) for home.
home_alternate_colorcharacterColor code (hex) for home alternate.
home_is_activelogicalHome team's is active.
home_venue_idcharacterUnique identifier for home venue.
home_logocharacterHome team logo URL.
home_scorecharacterHome team score at the time of the play.
home_linescoresinteger
home_recordscharacter
away_idcharacterUnique identifier for away.
away_uidcharacterAway team's uid.
away_locationcharacterAway team's location.
away_namecharacterAway name.
away_abbreviationcharacterAway team's abbreviation.
away_display_namecharacterAway display name.
away_short_display_namecharacterAway short display name.
away_colorcharacterColor code (hex) for away.
away_alternate_colorcharacterColor code (hex) for away alternate.
away_is_activelogicalAway team's is active.
away_venue_idcharacterUnique identifier for away venue.
away_logocharacterAway team logo URL.
away_scorecharacterAway team score at the time of the play.
away_linescoresinteger
away_recordscharacter
game_idintegerUnique game identifier.
seasonintegerSeason year.
season_typeintegerSeason type (1=pre-season, 2=regular season, 3=postseason, 4=off-season for ESPN; or string label for WNBA Stats).

Example

from sportsdataverse.nhl import espn_nhl_schedule
sched = espn_nhl_schedule(dates=20230613) # 2023 Stanley Cup Final game date
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_nhl_schedule(dates=2023, season_type=2, limit=500)
reg.group_by("status_type_description").len().sort("len", descending=True)

Pandas round-trip for one date::

espn_nhl_schedule(dates=20230613, return_as_pandas=True).head()

NHL native

nhl_pbp_disk(game_id, path_to_json)

No description available.

Parameters

ParameterTypeDefaultDescription
game_id
path_to_json

nhl_records_coach_milestone_wins(wins: 'int', playoffs: 'bool' = False, **filters) -> 'Dict'

Coaches who reached a wins milestone in fewest games.

Wraps one of the /coach-fewest-games-to-{N}-wins or /coach-fewest-games-to-{N}-playoff-wins paths. Supported wins values: 50, 100, 150, 200, 300, 400, 500, 600, 700, 800, 900, 1000 (regular season); 50, 100, 150 (playoffs).

Parameters

ParameterTypeDefaultDescription
winsintMilestone win total (e.g. 100).
playoffsboolFalseIf True, use the playoff-wins path.

Returns

Coaches who hit the milestone, sorted by games needed.

nhl_records_comeback_wins(scope: 'str' = 'league', **filters) -> 'Dict'

Comeback wins from a multi-goal deficit.

Wraps: * GET /comeback-league-wins when scope is "league". * GET /comeback-franchise-wins when scope is "franchise".

Parameters

ParameterTypeDefaultDescription
scopestr'league'"league" (default) or "franchise".

Returns

Games where the team overcame a deficit to win.

nhl_records_consecutive_goal_seasons(goals: 'int' = 50, **filters) -> 'Dict'

Skaters with the most consecutive N-goal seasons.

Wraps one of: * GET /consecutive-20-goal-seasons * GET /consecutive-30-goal-seasons * GET /consecutive-40-goal-seasons * GET /consecutive-50-goal-seasons * GET /consecutive-60-goal-seasons

Parameters

ParameterTypeDefaultDescription
goalsint50Goal threshold — one of 20, 30, 40, 50, 60.

Returns

Skaters sorted by consecutive-season streak.

nhl_records_fastest_goals(n_goals: 'int' = 2, **filters) -> 'Dict'

Fastest N goals by one team in a single game.

Wraps one of: * GET /fastest-2-goals-one-team * GET /fastest-3-goals-one-team * GET /fastest-4-goals-one-team * GET /fastest-5-goals-one-team

Parameters

ParameterTypeDefaultDescription
n_goalsint2Goal count — one of 2, 3, 4, 5.

Returns

Games where the milestone was set, sorted by elapsed time (fastest first).

nhl_records_fastest_goals_both_teams(n_goals: 'int' = 2, **filters) -> 'Dict'

Fastest N goals combined (both teams) in a single game.

Wraps one of: * GET /fastest-2-goals-both-teams * GET /fastest-3-goals-both-teams * GET /fastest-4-goals-both-teams * GET /fastest-5-goals-both-teams * GET /fastest-6-goals-both-teams

Parameters

ParameterTypeDefaultDescription
n_goalsint2Combined goal count — one of 2, 3, 4, 5, 6.

Returns

Sorted by elapsed time (fastest first).

nhl_records_games_played_streak_skaters(active_only: 'bool' = False, **filters) -> 'Dict'

Consecutive games-played streaks for skaters.

Wraps GET /games-played-streak-skaters (career) or GET /games-played-active-streak-skaters (currently active streaks).

Parameters

ParameterTypeDefaultDescription
active_onlyboolFalseIf True, return only active streaks.

Returns

Skaters sorted by streak length.

nhl_scoreboard(date: 'Optional[str]' = None, team: 'Optional[str]' = None, *, return_parsed: 'bool' = True, return_as_pandas: 'bool' = False, **kwargs) -> 'Dict'

In-game scoreboard payload (renamed from nhl_web_scoreboard).

Picks among three mutually-exclusive NHL api-web forms (kept hand-written because the URL-builder codegen can't represent the 3-way branch): * GET /v1/scoreboard/{team}/now -- team-scoped now (when team set), * GET /v1/scoreboard/{date} -- league-wide on a date, * GET /v1/scoreboard/now -- league-wide now (both args None).

Parameters

ParameterTypeDefaultDescription
dateOptional[str]NoneYYYY-MM-DD; None -> /now. Mutually exclusive with team.
teamOptional[str]None3-letter abbreviation; takes precedence over date.
return_parsedboolTruedispatch the raw payload through parse_nhl_web_scoreboard.
return_as_pandasboolFalsewith return_parsed, return pandas instead of polars.

Returns

A polars/pandas DataFrame by default; the raw JSON Dict when return_parsed=False.

col_nametypedescription
scoreboard_datecharacter
idintegerId.
seasonintegerSeason year.
game_typeintegerGame type code (R, P, etc.).
game_datecharacterGame date (YYYY-MM-DD).
game_center_linkcharacter
start_time_utccharacter
eastern_utc_offsetcharacter
venue_utc_offsetcharacter
tv_broadcastscharacter
game_statecharacter
game_schedule_statecharacter
tickets_linkcharacter
tickets_link_frcharacter
perioddoublePeriod of the game (1-4 quarters; 5+ for OT).
three_min_recapcharacter
three_min_recap_frcharacter
venue_defaultcharacter
away_team_idintegerUnique identifier for the away team.
away_team_name_defaultcharacter
away_team_name_frcharacter
away_team_common_name_defaultcharacter
away_team_place_name_with_preposition_defaultcharacter
away_team_place_name_with_preposition_frcharacter
away_team_abbrevcharacterAway team three-letter abbreviation.
away_team_scoredoubleAway team's score.
away_team_logocharacterAway team logo URL.
home_team_idintegerUnique identifier for the home team.
home_team_name_defaultcharacter
home_team_name_frcharacter
home_team_common_name_defaultcharacter
home_team_place_name_with_preposition_defaultcharacter
home_team_place_name_with_preposition_frcharacter
home_team_abbrevcharacterHome team three-letter abbreviation.
home_team_scoredoubleHome team's score.
home_team_logocharacterHome team logo URL.
period_descriptor_numberdouble
period_descriptor_period_typecharacter
period_descriptor_max_regulation_periodsdouble
series_status_roundinteger
series_status_series_abbrevcharacter
series_status_gameinteger
series_status_top_seed_team_abbrevcharacter
series_status_top_seed_winsinteger
series_status_bottom_seed_team_abbrevcharacter
series_status_bottom_seed_winsinteger
period_descriptor_ot_periodsdouble
away_team_recordcharacterAway team's win-loss record.
home_team_recordcharacterHome team's win-loss record.

Example

>>> nhl_scoreboard(date="2024-03-01")

Utilities & helpers

most_recent_nhl_season()

most_recent_nhl_season - return the season year for "today".

NHL seasons are labeled by the year they end in. October flips the label to next calendar year (the new season just started), otherwise the current calendar year is returned.

Returns

A season year suitable for season-aware loaders / schedule helpers.

Example

from sportsdataverse.nhl import most_recent_nhl_season, espn_nhl_calendar
season = most_recent_nhl_season()
cal = espn_nhl_calendar(season=season)
print(season, cal.height)

year_to_season(year)

year_to_season - format a starting year as the canonical YYYY-YY season string.

NHL season strings (used by statsapi / api-web.nhle.com) are of the form "2023-24". This helper converts a starting year (2023) into that string.

Parameters

ParameterTypeDefaultDescription
yearStarting calendar year of the season (e.g. 2023).

Returns

Season string formatted as "YYYY-YY".

Example

from sportsdataverse.nhl import year_to_season
year_to_season(2023) # '2023-24'
year_to_season(2009) # '2009-10'
year_to_season(1999) # '1999-00'

Other

espn_nhl_teams(return_as_pandas=False, **kwargs) -> 'pl.DataFrame'

espn_nhl_teams - look up NHL teams

Parameters

ParameterTypeDefaultDescription
return_as_pandasboolFalseIf True, returns a pandas dataframe. If False, returns a polars dataframe.

Returns

Polars dataframe containing teams for the requested league. This function caches by default, so if you want to refresh the data, use the command sportsdataverse.nhl.espn_nhl_teams.clear_cache().

col_nametypedescription
team_abbreviationcharacterShort team abbreviation (e.g. 'LAS').
team_alternate_colorcharacterTeam alternate color (hex without leading '#').
team_colorcharacterTeam primary color (hex without leading '#').
team_display_namecharacterFull team display name.
team_idcharacterUnique team identifier.
team_is_activelogicalTRUE if the team is currently active.
team_is_all_starlogicalTRUE if the row represents an All-Star team.
team_locationcharacterTeam city or location string.
team_logosinteger
team_namecharacterFull team display name (e.g. 'Las Vegas Aces').
team_nicknamecharacterTeam nickname.
team_short_display_namecharacterShort team display name (e.g. 'Aces').
team_slugcharacterURL-safe team identifier (e.g. 'lasvegas-aces' / 'aces').
team_uidcharacterESPN universal team identifier (UID format 's:40~l:...~t:...').

Example

from sportsdataverse.nhl import espn_nhl_teams
teams = espn_nhl_teams()
print(teams.shape)
teams.select(["team_id", "team_abbreviation", "team_display_name"]).head()

Find Tampa Bay Lightning (team_id 14)::

import polars as pl
teams.filter(pl.col("team_id") == "14").to_dicts()

Refresh the cache (the call is ``lru_cache``'d) and round-trip to pandas::

espn_nhl_teams.cache_clear()
teams_pd = espn_nhl_teams(return_as_pandas=True)
teams_pd[["team_id", "team_abbreviation", "team_display_name"]].head()

scoreboard_event_parsing(event)

No description available.

Parameters

ParameterTypeDefaultDescription
event