| Title: | Scraper for National Hockey League Data |
|---|---|
| Description: | Scrapes and cleans data from the 'NHL' and 'ESPN' APIs into data.frames and lists. Wraps 125+ endpoints documented in <https://github.com/RentoSaijo/nhlscraper/wiki> from high-level multi-season summaries and award winners to low-level decisecond replays and bookmakers' odds, making them more accessible. Features cleaning and visualization tools, primarily for play-by-plays. |
| Authors: | Rento Saijo [aut, cre, cph] (ORCID: <https://orcid.org/0009-0008-4919-7349>), Lars Skytte [ctb], Jack Pallotta [ctb] (ORCID: <https://orcid.org/0009-0004-0744-6977>) |
| Maintainer: | Rento Saijo <[email protected]> |
| License: | GPL (>= 3) |
| Version: | 0.6.1.9000 |
| Built: | 2026-05-31 10:42:46 UTC |
| Source: | https://github.com/rentosaijo/nhlscraper |
add_deltas() adds event-to-event deltas in raw and normalized x/y,
distance, and angle for a play-by-play. Sequences are bounded by faceoffs:
each sequence begins at a faceoff, faceoff rows do not look backward across
the boundary, and subsequent events are compared to the most recent prior
valid-spatial event in the same faceoff-bounded sequence. Shootout and
penalty-shot rows (0101/1010) are left as NA and do not serve as
anchors for later rows. When multiple events in a sequence share the same
recorded second, zero-time denominators used internally are replaced by
1 / n, where n is the number of events in that same second within the
sequence.
add_deltas(play_by_play)add_deltas(play_by_play)
play_by_play |
data.frame of play-by-play(s) using the current public schema returned by |
data.frame with one row per event (play) and added columns: eventIdPrev, secondsElapsedInSequence, dSecondsElapsedInSequence, dXCoord, dYCoord, dXCoordNorm, dYCoordNorm, dDistance, dAngle, dXCoordPerSecond, dYCoordPerSecond, dXCoordNormPerSecond, dYCoordNormPerSecond, dDistancePerSecond, dAnglePerSecond
add_goalie_biometrics() adds goalie biometrics (height, weight, hand, and age at game date) to (a) play-by-play(s) for shot attempts. Goalie identity is resolved from goalieInNetId first and goaliePlayerIdAgainst second. If neither is available on a row, the added goalie biometrics are left as NA.
add_goalie_biometrics(play_by_play)add_goalie_biometrics(play_by_play)
play_by_play |
data.frame of play-by-play(s) using the current public schema returned by |
data.frame with one row per event (play) and added columns: goalieHeight, goalieWeight, goalieHandCode, and goalieAge
add_shift_times() adds SecondsRemainingInShift,
SecondsElapsedInShift, and SecondsElapsedInPeriodSinceLastShift columns
for the on-ice goalies and skaters already present in a public play-by-play.
It accepts either a single game play-by-play plus shift_chart() data or a
season aggregate plus shift_charts() data.
add_shift_times(play_by_play, shift_chart)add_shift_times(play_by_play, shift_chart)
play_by_play |
data.frame of play-by-play(s) using the current public schema returned by |
shift_chart |
data.frame returned by |
data.frame with one row per event (play) and added or updated scalar on-ice shift timing columns
pbp <- gc_play_by_play(game = 2023030417) sc <- shift_chart(game = 2023030417) pbp <- add_shift_times(pbp, sc)pbp <- gc_play_by_play(game = 2023030417) sc <- shift_chart(game = 2023030417) pbp <- add_shift_times(pbp, sc)
add_shooter_biometrics() adds shooter biometrics (height, weight, hand, age at game date, and position) to (a) play-by-play(s) for shot attempts.
add_shooter_biometrics(play_by_play)add_shooter_biometrics(play_by_play)
play_by_play |
data.frame of play-by-play(s) using the current public schema returned by |
data.frame with one row per event (play) and added columns: shooterHeight, shooterWeight, shooterHandCode, shooterAge, and shooterPositionCode
attendance() retrieves the attendance by season and game type as a data.frame where each row represents season and includes detail on date/season filtering windows and chronological context.
attendance()attendance()
data.frame with one row per season
all_attendance <- attendance()all_attendance <- attendance()
award_winners() retrieves all the award winners/finalists as a data.frame where each row represents winner/finalist and includes detail on date/season filtering windows and chronological context, team identity, affiliation, and matchup-side context, and player identity, role, handedness, and biographical profile.
award_winners()award_winners()
data.frame with one row per winner/finalist
all_award_winners <- award_winners()all_award_winners <- award_winners()
awards() retrieves all the awards as a data.frame where each row represents award and includes detail on recognition, leaderboard, and milestone-watch context.
awards()awards()
data.frame with one row per award
all_awards <- awards()all_awards <- awards()
boxscore() retrieves the boxscore for a game, team, and position as a data.frame where each row represents player and includes detail on player identity, role, handedness, and biographical profile plus production, workload, efficiency, and result-level performance outcomes.
boxscore(game = 2023030417, team = "home", position = "forwards")boxscore(game = 2023030417, team = "home", position = "forwards")
game |
integer ID (e.g., 2025020275); see |
team |
character of 'h'/'home' or 'a'/'away' |
position |
character of 'f'/'forwards', 'd'/'defensemen', or 'g'/'goalies' |
data.frame with one row per player
boxscore_COL_forwards_Martin_Necas_legacy_game <- boxscore( game = 2025020275, team = 'H', position = 'F' )boxscore_COL_forwards_Martin_Necas_legacy_game <- boxscore( game = 2025020275, team = 'H', position = 'F' )
bracket() retrieves the playoff bracket for a season as a data.frame where each row represents series and includes detail on team identity, affiliation, and matchup-side context.
bracket(season = season_now())bracket(season = season_now())
season |
integer in YYYYYYYY (e.g., 20242025); see |
data.frame with one row per series
bracket_20242025 <- bracket(season = 20242025)bracket_20242025 <- bracket(season = 20242025)
calculate_expected_goals() scores shot events with nhlscraper's built-in
ridge expected-goals model. The runtime model is a fixed six-partition system:
sd (5v5), ev (other even strength), pp (power play), sh
(short-handed), en (empty net against), and ps (penalty shot; trained on
penalty-shot and shootout-style rows). The legacy model argument is
accepted for backward compatibility but ignored.
calculate_expected_goals(play_by_play, model = NULL) calculate_xG(play_by_play, model = NULL)calculate_expected_goals(play_by_play, model = NULL) calculate_xG(play_by_play, model = NULL)
play_by_play |
data.frame of play-by-play(s) using the current public
schema returned by |
model |
deprecated legacy model selector; ignored |
data.frame with one row per event (play) and added xG column
# May take >5s, so skip. pbp <- gc_play_by_play() pbp_with_xg <- calculate_expected_goals(play_by_play = pbp)# May take >5s, so skip. pbp <- gc_play_by_play() pbp_with_xg <- calculate_expected_goals(play_by_play = pbp)
coach_career_statistics() retrieves the career statistics for all the coaches as a data.frame where each row represents coach and includes detail on ranking movement, points pace, and division/conference position signals.
coach_career_statistics() coach_career_stats()coach_career_statistics() coach_career_stats()
data.frame with one row per coach
coach_career_stats <- coach_career_statistics()coach_career_stats <- coach_career_statistics()
coach_franchise_statistics() retrieves the statistics for all the coaches by franchise and game type as a data.frame where each row represents franchise per coach per game type and includes detail on date/season filtering windows and chronological context, team identity, affiliation, and matchup-side context, and player identity, role, handedness, and biographical profile.
coach_franchise_statistics() coach_franchise_stats()coach_franchise_statistics() coach_franchise_stats()
data.frame with one row per franchise per coach per game type
coach_franchise_stats <- coach_franchise_statistics()coach_franchise_stats <- coach_franchise_statistics()
coaches() retrieves all the coaches as a data.frame where each row represents coach and includes detail on team identity, affiliation, and matchup-side context plus player identity, role, handedness, and biographical profile.
coaches()coaches()
data.frame with one row per coach
all_coaches <- coaches()all_coaches <- coaches()
combine_reports() retrieves the draft combine reports as a data.frame where each row represents player and includes detail on player identity, role, handedness, and biographical profile.
combine_reports()combine_reports()
data.frame with one row per player
combine_reports <- combine_reports()combine_reports <- combine_reports()
contracts() loads preprocessed contract records bundled with the package and returns a cleaned data.frame with package-consistent column names, season IDs, numeric money fields, and team/player identifiers.
contracts()contracts()
data.frame with one row per contract
all_contracts <- contracts()all_contracts <- contracts()
countries() retrieves all the countries as a data.frame where each row represents country and includes detail on reference metadata, regional context, and media availability detail.
countries()countries()
data.frame with one row per country
all_countries <- countries()all_countries <- countries()
draft_picks() retrieves all the draft picks as a data.frame where each row represents pick and includes detail on team identity, affiliation, and matchup-side context plus player identity, role, handedness, and biographical profile.
draft_picks()draft_picks()
data.frame with one row per pick
# May take >5s, so skip. all_draft_picks <- draft_picks()# May take >5s, so skip. all_draft_picks <- draft_picks()
draft_prospects() retrieves all the draft prospects as a data.frame where each row represents player and includes detail on player identity, role, handedness, and biographical profile plus broadcast carriage, media availability, and viewing-link metadata.
draft_prospects()draft_prospects()
data.frame with one row per player
# May take >5s, so skip. all_prospects <- draft_prospects()# May take >5s, so skip. all_prospects <- draft_prospects()
draft_rankings() retrieves the draft rankings for a class and category as a data.frame where each row represents player and includes detail on player identity, role, handedness, and biographical profile plus draft-board context, scouting background, and pick/round progression.
draft_rankings(class = season_now()%%10000, category = 1)draft_rankings(class = season_now()%%10000, category = 1)
class |
integer in YYYY (e.g., 2017); see |
category |
integer in 1:4 (where 1 = North American Skaters, 2 = International Skaters, 3 = North American Goalies, and 4 = International Goalies) OR character of 'NAS'/'NA Skaters'/'North American Skaters', 'INTLS'/'INTL Skaters'/'International Skaters', 'NAG'/'NA Goalies'/'North American Goalies', 'INTLG'/'INTL Goalies'/'International Goalies' |
data.frame with one row per player
draft_rankings_INTL_Skaters_2017 <- draft_rankings( class = 2017, category = 2 )draft_rankings_INTL_Skaters_2017 <- draft_rankings( class = 2017, category = 2 )
draft_tracker() retrieves the real-time draft tracker as a data.frame where each row represents player and includes detail on team identity, affiliation, and matchup-side context, player identity, role, handedness, and biographical profile, and venue/location geography and regional metadata.
draft_tracker()draft_tracker()
data.frame with one row per player
draft_tracker <- draft_tracker()draft_tracker <- draft_tracker()
drafts() retrieves all the drafts as a data.frame where each row represents draft and includes detail on venue/location geography and regional metadata.
drafts()drafts()
data.frame with one row per draft
all_drafts <- drafts()all_drafts <- drafts()
draw_NHL_rink() draws a full NHL rink such that the x and y coordinates
span -100 to 100 and -43 to +43, respectively. Use graphics::points()
to create custom graphs; check out an example on the online documentation!
draw_NHL_rink()draw_NHL_rink()
NULL
draw_NHL_rink()draw_NHL_rink()
espn_futures() retrieves the ESPN futures for a season as a data.frame where each row represents type and includes detail on betting market snapshots with side/total prices and provider variation.
espn_futures(season = season_now())espn_futures(season = season_now())
season |
integer in YYYYYYYY (e.g., 20242025); see |
nested data.frame with one row per type (outer) and book (inner)
ESPN_futures_20252026 <- espn_futures(20252026)ESPN_futures_20252026 <- espn_futures(20252026)
espn_game_odds() retrieves the ESPN odds for a game as a data.frame where each row represents provider and includes detail on team identity, affiliation, and matchup-side context plus betting market snapshots with side/total prices and provider variation.
espn_game_odds(game = 401777460)espn_game_odds(game = 401777460)
game |
integer ID (e.g., 401777460); see |
data.frame with one row per provider
ESPN_odds_SCF_20242025 <- espn_game_odds(game = 401777460)ESPN_odds_SCF_20242025 <- espn_game_odds(game = 401777460)
espn_game_summary() retrieves the ESPN summary for a game as a nested list that separates summary and detail blocks for date/season filtering windows and chronological context, venue/location geography and regional metadata, and playoff-series progression, round status, and series leverage.
espn_game_summary(game = 401777460)espn_game_summary(game = 401777460)
game |
integer ID (e.g., 401777460); see |
list with various items
ESPN_summary_SCF_20242025 <- espn_game_summary(game = 401777460)ESPN_summary_SCF_20242025 <- espn_game_summary(game = 401777460)
espn_games() retrieves the ESPN games for a season as a data.frame where each row represents ESPN and includes detail on game timing, matchup state, scoring flow, and situational event detail.
espn_games(season = season_now())espn_games(season = season_now())
season |
integer in YYYYYYYY (e.g., 20242025); see |
data.frame with one row per ESPN game
ESPN_games_20242025 <- espn_games(season = 20242025)ESPN_games_20242025 <- espn_games(season = 20242025)
espn_injuries() retrieves the real-time ESPN injury reports as a data.frame where each row represents team and includes detail on availability status tracking for injuries or transactions.
espn_injuries()espn_injuries()
nested data.frame with one row per team (outer) and player (inner)
ESPN_injuries_now <- espn_injuries()ESPN_injuries_now <- espn_injuries()
espn_play_by_play() retrieves the ESPN play-by-play for a game as a data.frame where each row represents event and includes detail on game timeline state, period/clock progression, and matchup flow, team identity, affiliation, and matchup-side context, and situational splits across home/road, strength state, and overtime/shootout states.
espn_play_by_play(game = 401777460) espn_pbp(game = 401777460)espn_play_by_play(game = 401777460) espn_pbp(game = 401777460)
game |
integer ID (e.g., 401777460); see |
data.frame with one row per event (play)
ESPN_pbp_SCF_20242025 <- espn_play_by_play(game = 401777460)ESPN_pbp_SCF_20242025 <- espn_play_by_play(game = 401777460)
espn_player_summary() retrieves the ESPN summary for a player as a data.frame where each row represents one result and includes detail on game timing, matchup state, scoring flow, and situational event detail.
espn_player_summary(player = 3988803)espn_player_summary(player = 3988803)
player |
integer ID (e.g., 3988803); see |
data.frame with one row
ESPN_summary_Charlie_McAvoy <- espn_player_summary(player = 3988803)ESPN_summary_Charlie_McAvoy <- espn_player_summary(player = 3988803)
espn_players() retrieves all the ESPN players as a data.frame where each row represents ESPN player and includes detail on person-level profile context and performance history with situational splits.
espn_players()espn_players()
data.frame with one row per ESPN player
all_ESPN_players <- espn_players()all_ESPN_players <- espn_players()
espn_team_summary() retrieves the ESPN summary for a team as a data.frame where each row represents one result and includes detail on game timing, matchup state, scoring flow, and situational event detail.
espn_team_summary(team = 1)espn_team_summary(team = 1)
team |
integer ID (e.g., 1); see |
data.frame with one row
ESPN_summary_Boston_Bruins <- espn_team_summary(team = 1)ESPN_summary_Boston_Bruins <- espn_team_summary(team = 1)
espn_teams() retrieves all the ESPN teams as a data.frame where each row represents ESPN team and includes detail on team composition, matchup context, and season progression detail.
espn_teams()espn_teams()
data.frame with one row per ESPN team
all_ESPN_teams <- espn_teams()all_ESPN_teams <- espn_teams()
espn_transactions() retrieves the ESPN transactions for a season as a data.frame where each row represents transaction and includes detail on availability and transaction-status tracking detail.
espn_transactions(season = season_now())espn_transactions(season = season_now())
season |
integer in YYYYYYYY (e.g., 20242025); the summer of the latter year is included |
data.frame with one row per transaction
ESPN_transactions_20242025 <- espn_transactions(season = 20242025)ESPN_transactions_20242025 <- espn_transactions(season = 20242025)
expansion_draft_picks() retrieves all the expansion draft picks as a data.frame where each row represents pick and includes detail on date/season filtering windows and chronological context plus team identity, affiliation, and matchup-side context.
expansion_draft_picks()expansion_draft_picks()
data.frame with one row per pick
all_expansion_draft_picks <- expansion_draft_picks()all_expansion_draft_picks <- expansion_draft_picks()
expansion_drafts() retrieves all the expansion drafts as a data.frame where each row represents expansion draft and includes detail on date/season filtering windows and chronological context plus reference definitions and rules-framework information.
expansion_drafts()expansion_drafts()
data.frame with one row per expansion draft
all_expansion_drafts <- expansion_drafts()all_expansion_drafts <- expansion_drafts()
franchise_playoff_situational_results() retrieves the playoff series results for all the franchises by situation as a data.frame where each row represents franchise per situation and includes detail on team identity, affiliation, and matchup-side context.
franchise_playoff_situational_results()franchise_playoff_situational_results()
data.frame with one row per franchise per situation
franchise_playoff_situational_results <- franchise_playoff_situational_results()franchise_playoff_situational_results <- franchise_playoff_situational_results()
franchise_season_statistics() retrieves the statistics for all the franchises by season and game type as a data.frame where each row represents franchise per season per game type and includes detail on date/season filtering windows and chronological context, team identity, affiliation, and matchup-side context, and production, workload, efficiency, and result-level performance outcomes.
franchise_season_statistics() franchise_season_stats()franchise_season_statistics() franchise_season_stats()
data.frame with one row per franchise per season per game type
# May take >5s, so skip. franchise_season_stats <- franchise_season_statistics()# May take >5s, so skip. franchise_season_stats <- franchise_season_statistics()
franchise_statistics() retrieves the all-time statistics for all the franchises by game type as a data.frame where each row represents franchise per game type and includes detail on date/season filtering windows and chronological context, team identity, affiliation, and matchup-side context, and production, workload, efficiency, and result-level performance outcomes.
franchise_statistics() franchise_stats()franchise_statistics() franchise_stats()
data.frame with one row per franchise per game type
franchise_stats <- franchise_statistics()franchise_stats <- franchise_statistics()
franchise_team_statistics() retrieves the all-time statistics for all the franchises by team and game type as a data.frame where each row represents team per franchise per game type and includes detail on date/season filtering windows and chronological context, team identity, affiliation, and matchup-side context, and production, workload, efficiency, and result-level performance outcomes.
franchise_team_statistics() franchise_team_stats()franchise_team_statistics() franchise_team_stats()
data.frame with one row per team per franchise per game type
franchise_team_stats <- franchise_team_statistics()franchise_team_stats <- franchise_team_statistics()
franchise_versus_franchise() retrieves the all-time statistics versus other franchises for all the franchises by game type as a data.frame where each row represents franchise per franchise per game type and includes detail on date/season filtering windows and chronological context plus team identity, affiliation, and matchup-side context.
franchise_versus_franchise() franchise_vs_franchise()franchise_versus_franchise() franchise_vs_franchise()
data.frame with one row per franchise per franchise per game type
# May take >5s, so skip. franchise_vs_franchise <- franchise_versus_franchise()# May take >5s, so skip. franchise_vs_franchise <- franchise_versus_franchise()
franchises() retrieves all the franchises as a data.frame where each row represents franchise and includes detail on team identity, affiliation, and matchup-side context.
franchises()franchises()
data.frame with one row per franchise
all_franchises <- franchises()all_franchises <- franchises()
game_odds() retrieves the real-time game odds for a country by partnered bookmaker as a data.frame where each row represents game and includes detail on betting market lines, prices, and provider-level context.
game_odds(country = "US")game_odds(country = "US")
country |
two-letter code (e.g., 'CA'); see |
data.frame with one row per game
game_odds_CA <- game_odds(country = 'CA')game_odds_CA <- game_odds(country = 'CA')
game_rosters() retrieves the rosters for a game as a data.frame where each row represents player and includes detail on team identity, affiliation, and matchup-side context plus player identity, role, handedness, and biographical profile.
game_rosters(game = 2023030417)game_rosters(game = 2023030417)
game |
integer ID (e.g., 2025020275); see |
data.frame with one row per player
rosters_Martin_Necas_legacy_game <- game_rosters(game = 2025020275)rosters_Martin_Necas_legacy_game <- game_rosters(game = 2025020275)
game_type_now() retrieves the game type as of now and returns a scalar integer used as the current-context default in season/game-type dependent wrappers.
game_type_now()game_type_now()
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3 = playoff/post-season)
game_type_now <- game_type_now()game_type_now <- game_type_now()
games() retrieves all the games as a data.frame where each row represents game and includes detail on game timeline state, period/clock progression, and matchup flow plus date/season filtering windows and chronological context.
games()games()
data.frame with one row per game
# May take >5s, so skip. all_games <- games()# May take >5s, so skip. all_games <- games()
gc_play_by_play() retrieves the GameCenter (GC) play-by-play for a game as
a data.frame where each row represents an event. The returned schema is the
cleaned, public-facing play-by-play schema, including canonical names such as
periodNumber, eventTypeCode, eventTypeDescKey, homeShots,
shotsFor, penaltyTypeDescKey, penaltyDuration, servedByPlayerId,
goalieInNetId, and HTML-report-derived on-ice player ID columns such as
homeGoaliePlayerId, awayGoaliePlayerId, homeSkater1PlayerId, and any
additional overflow skater slots required by the game. HTML report skater and
goalie IDs are returned whenever they can be matched back to a supported row,
even when the raw situationCode is stale. Use add_shift_times() with
shift_chart() (or shift_charts()) to add on-ice shift timing columns.
gc_play_by_play(game = 2023030417) gc_pbp(game = 2023030417)gc_play_by_play(game = 2023030417) gc_pbp(game = 2023030417)
game |
integer ID (e.g., 2025020275); see |
data.frame with one row per event (play)
# May take >5s, so skip. gc_pbp_Martin_Necas_legacy_game <- gc_play_by_play(game = 2025020275)# May take >5s, so skip. gc_pbp_Martin_Necas_legacy_game <- gc_play_by_play(game = 2025020275)
gc_play_by_play_raw() returns the raw flattened GameCenter play-by-play as
served by the NHL API for one game. Use gc_play_by_play() for the cleaned
public schema that repairs common clock/order defects and appends the derived
public columns.
gc_play_by_play_raw(game = 2023030417) gc_pbp_raw(game = 2023030417)gc_play_by_play_raw(game = 2023030417) gc_pbp_raw(game = 2023030417)
game |
integer ID (e.g., 2025020275); see |
data.frame with one row per event (play)
gc_raw_Martin_Necas_legacy_game <- gc_play_by_play_raw(game = 2025020275)gc_raw_Martin_Necas_legacy_game <- gc_play_by_play_raw(game = 2025020275)
gc_play_by_plays() loads the GC play-by-plays for a given season.
gc_play_by_plays(season = 20242025) gc_pbps(season = 20242025)gc_play_by_plays(season = 20242025) gc_pbps(season = 20242025)
season |
integer in YYYYYYYY (e.g., 20242025); see |
data.frame with one row per event (play) per game
# May take >5s, so skip. gc_pbps_20212022 <- gc_play_by_plays(season = 20212022)# May take >5s, so skip. gc_pbps_20212022 <- gc_play_by_plays(season = 20212022)
gc_play_by_plays_raw() loads the raw GC play-by-plays for a given
season.
gc_play_by_plays_raw(season = 20242025) gc_pbps_raw(season = 20242025)gc_play_by_plays_raw(season = 20242025) gc_pbps_raw(season = 20242025)
season |
integer in YYYYYYYY (e.g., 20242025); see |
data.frame with one row per raw event (play) per game
# May take >5s, so skip. gc_pbps_raw_20212022 <- gc_play_by_plays_raw(season = 20212022)# May take >5s, so skip. gc_pbps_raw_20212022 <- gc_play_by_plays_raw(season = 20212022)
gc_summary() retrieves the GameCenter (GC) summary for a game as a nested list that separates summary and detail blocks for game timeline state, period/clock progression, and matchup flow, date/season filtering windows and chronological context, and venue/location geography and regional metadata.
gc_summary(game = 2023030417)gc_summary(game = 2023030417)
game |
integer ID (e.g., 2025020275); see |
list of various items
gc_summary_Martin_Necas_legacy_game <- gc_summary(game = 2025020275)gc_summary_Martin_Necas_legacy_game <- gc_summary(game = 2025020275)
general_managers() retrieves all the general managers as a data.frame where each row represents general manager and includes detail on player identity, role, handedness, and biographical profile.
general_managers() gms()general_managers() gms()
data.frame with one row per general manager
all_GMs <- general_managers()all_GMs <- general_managers()
get_attendance() is deprecated. Use attendance() instead.
get_attendance()get_attendance()
data.frame with one row per season
get_award_winners() is deprecated. Use award_winners() instead.
get_award_winners()get_award_winners()
data.frame with one row per winner/finalist
get_awards() is deprecated. Use awards() instead.
get_awards()get_awards()
data.frame with one row per award
get_bracket() is deprecated. Use bracket() instead.
get_bracket(season = season_now())get_bracket(season = season_now())
season |
integer in YYYYYYYY (e.g., 20242025); see |
data.frame with one row per series
get_configuration() is defunct. Use team_report_configurations(),
skater_report_configurations(), and/or goalie_report_configurations()
instead.
get_configuration()get_configuration()
get_countries() is deprecated. Use countries() instead.
get_countries()get_countries()
data.frame with one row per country
get_draft_picks() is deprecated. Use draft_picks() instead.
get_draft_picks()get_draft_picks()
data.frame with one row per pick
get_draft_rankings() is deprecated. Use draft_rankings() instead.
get_draft_rankings(year = season_now()%/%10000, player_type = 1)get_draft_rankings(year = season_now()%/%10000, player_type = 1)
year |
integer in YYYY (e.g., 2017); see |
player_type |
integer in 1:4 (where 1 = North American Skaters, 2 = International Skaters, 3 = North American Goalies, and 4 = International Goalies) |
data.frame with one row per player
get_draft_tracker() is deprecated. Use draft_tracker() instead.
get_draft_tracker()get_draft_tracker()
data.frame with one row per player
get_drafts() is deprecated. Use drafts() instead.
get_drafts()get_drafts()
data.frame with one row per draft
get_espn_athlete() is defunct. Use espn_player_summary() instead.
get_espn_athlete()get_espn_athlete()
get_espn_athletes() is deprecated. Use espn_players() instead.
get_espn_athletes()get_espn_athletes()
data.frame with one row per ESPN athlete (player)
get_espn_coach() is defunct. Use coach_career_statistics() instead.
get_espn_coach()get_espn_coach()
get_espn_coach_career() is defunct. Use coach_career_statistics() instead.
get_espn_coach_career()get_espn_coach_career()
get_espn_coaches() is defunct. Use coaches() instead.
get_espn_coaches()get_espn_coaches()
get_espn_event() is deprecated. Use espn_game_summary() instead.
get_espn_event(event = 401777460)get_espn_event(event = 401777460)
event |
integer ID (e.g., 401777460); see |
data.frame with one row per event (game)
get_espn_event_odds() is deprecated. Use espn_game_odds()
instead.
get_espn_event_odds(event = 401777460)get_espn_event_odds(event = 401777460)
event |
integer ID (e.g., 401777460); see |
data.frame with one row per provider
get_espn_event_officials() is defunct. Use gc_summary() and/or
wsc_summary() instead.
get_espn_event_officials()get_espn_event_officials()
get_espn_event_play_by_play() is deprecated. Use espn_play_by_play()
instead.
get_espn_event_play_by_play(event = 401777460)get_espn_event_play_by_play(event = 401777460)
event |
integer ID (e.g., 401777460); see |
data.frame with one row per play
get_espn_event_stars() is defunct. Use gc_summary() and/or
wsc_summary() instead.
get_espn_event_stars()get_espn_event_stars()
get_espn_events() is defunct. Use espn_games() instead.
get_espn_events()get_espn_events()
get_espn_futures() is defunct. Use espn_futures() instead.
get_espn_futures()get_espn_futures()
get_espn_injuries() is deprecated. Use espn_injuries() instead.
get_espn_injuries()get_espn_injuries()
nested data.frame with one row per team (outer) and player (inner)
get_espn_team() is defunct. Use espn_team_summary() instead.
get_espn_team()get_espn_team()
get_espn_teams() is defunct. Use espn_teams() instead.
get_espn_teams()get_espn_teams()
get_espn_transactions() is defunct. Use espn_transactions() instead.
get_espn_transactions()get_espn_transactions()
get_franchise_season_by_season() is deprecated. Use
franchise_season_statistics() instead.
get_franchise_season_by_season()get_franchise_season_by_season()
data.frame with one row per franchise per season per game type
get_franchise_team_totals() is deprecated. Use
franchise_team_statistics() instead.
get_franchise_team_totals()get_franchise_team_totals()
data.frame with one row per team per franchise per game type
get_franchise_vs_franchise() is deprecated. Use
franchise_versus_franchise() instead.
get_franchise_vs_franchise()get_franchise_vs_franchise()
data.frame with one row per franchise per franchise per game type
get_franchises() is deprecated. Use franchises() instead.
get_franchises()get_franchises()
data.frame with one row per franchise
get_game_boxscore() is deprecated. Use boxscore() instead.
get_game_boxscore(game = 2023030417, team = "home", player_type = "forwards")get_game_boxscore(game = 2023030417, team = "home", player_type = "forwards")
game |
integer ID (e.g., 2025020275); see |
team |
character of 'home' or 'away' |
player_type |
character of 'forwards', 'defense', or 'goalies' |
data.frame with one row per player
get_game_landing() is deprecated. Use gc_summary() instead.
get_game_landing(game = 2023030417)get_game_landing(game = 2023030417)
game |
integer ID (e.g., 2025020275); see |
list of various items
get_game_story() is deprecated. Use wsc_summary() instead.
get_game_story(game = 2023030417)get_game_story(game = 2023030417)
game |
integer ID (e.g., 2025020275); see |
list of various items
get_games() is deprecated. Use games() instead.
get_games()get_games()
data.frame with one row per game
get_gc_play_by_play() is deprecated. Use gc_play_by_play() instead.
get_gc_play_by_play(game = 2023030417)get_gc_play_by_play(game = 2023030417)
game |
integer ID (e.g., 2025020275); see |
data.frame with one row per event (play)
get_glossary() is deprecated. Use glossary() instead.
get_glossary()get_glossary()
data.frame with one row per terminology
get_goalie_leaders() is deprecated. Use goalie_leaders() instead.
get_goalie_leaders(season = "current", game_type = "", category = "wins")get_goalie_leaders(season = "current", game_type = "", category = "wins")
season |
integer in YYYYYYYY (e.g., 20242025); see |
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
playoff'/'post'; see |
category |
character of 'wins', 'shutouts', 'savePctg', or 'goalsAgainstAverage' |
data.frame with one row per player
get_goalie_milestones() is deprecated. Use goalie_milestones()
instead.
get_goalie_milestones()get_goalie_milestones()
data.frame with one row per player
get_goalie_statistics() is defunct. Use goalie_season_report() or
goalie_game_report() instead.
get_goalie_statistics()get_goalie_statistics()
get_goalies() is defunct. Use players() instead.
get_goalies()get_goalies()
get_officials() is deprecated. Use officials() instead.
get_officials()get_officials()
data.frame with one row per official
get_partner_odds() is deprecated. Use game_odds() instead.
get_partner_odds(country = "US")get_partner_odds(country = "US")
country |
two-letter code (e.g., 'CA'); see |
data.frame with one row per game
get_player_game_log() is deprecated. Use player_game_log() instead.
get_player_game_log(player = 8478402, season = "now", game_type = "")get_player_game_log(player = 8478402, season = "now", game_type = "")
player |
integer ID (e.g., 8480039); see |
season |
integer in YYYYYYYY (e.g., 20242025); see |
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
playoff'/'post'; see |
data.frame with one row per game
get_player_landing() is deprecated. Use player_summary() instead.
get_player_landing(player = 8478402)get_player_landing(player = 8478402)
player |
integer ID (e.g., 8480039); see |
list with various items
get_players() is deprecated. Use players() instead.
get_players()get_players()
data.frame with one row per player
get_schedule() is deprecated. Use schedule() instead.
get_schedule(date = "2025-01-01")get_schedule(date = "2025-01-01")
date |
character in 'YYYY-MM-DD' (e.g., '2025-01-01'); see
|
data.frame with one row per game
get_scoreboards() is deprecated. Use scores() instead.
get_scoreboards(date = "now")get_scoreboards(date = "now")
date |
character in 'YYYY-MM-DD' (e.g., '2025-01-01'); see
|
data.frame with one row per game
get_scores() is deprecated. Use scores() instead.
get_scores(date = "now")get_scores(date = "now")
date |
character in 'YYYY-MM-DD' (e.g., '2025-01-01'); see
|
data.frame with one row per game
get_season_now() is defunct. Use season_now() and/or game_type_now()
instead.
get_season_now()get_season_now()
get_seasons() is deprecated. Use seasons() instead.
get_seasons()get_seasons()
data.frame with one row per season
get_series() is defunct.
get_series()get_series()
get_series_schedule() is deprecated. Use series_schedule() instead.
get_series_schedule(season = season_now(), series = "a")get_series_schedule(season = season_now(), series = "a")
season |
integer in YYYYYYYY (e.g., 20242025); see |
series |
one-letter code (e.g., 'O'); see |
data.frame with one row per game
get_shift_charts() is deprecated. Use shift_chart() instead.
get_shift_charts(game = 2023030417)get_shift_charts(game = 2023030417)
game |
integer ID (e.g., 2025020275); see |
data.frame with one row per shift
get_skater_leaders() is deprecated. Use skater_leaders() instead.
get_skater_leaders(season = "current", game_type = "", category = "points")get_skater_leaders(season = "current", game_type = "", category = "points")
season |
integer in YYYYYYYY (e.g., 20242025); see |
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
playoff'/'post'; see |
category |
character of 'assists', 'goals', 'goalsSh', 'goalsPp', 'points, 'penaltyMins', 'toi', 'plusMinus', or 'faceoffLeaders' |
data.frame with one row per player
get_skater_milestones() is deprecated. Use skater_milestones()
instead.
get_skater_milestones()get_skater_milestones()
data.frame with one row per player
get_skater_statistics() is defunct. Use skater_season_report() or
skater_game_report() instead.
get_skater_statistics()get_skater_statistics()
get_skaters() is defunct. Use players() instead.
get_skaters()get_skaters()
get_spotlight_players() is deprecated. Use spotlight_players()
instead.
get_spotlight_players()get_spotlight_players()
data.frame with one row per player
get_standings() is deprecated. Use standings() instead.
get_standings(date = "2025-01-01")get_standings(date = "2025-01-01")
date |
character in 'YYYY-MM-DD' (e.g., '2025-01-01'); see
|
data.frame with one row per team
get_standings_information() is deprecated. Use standings_rules()
instead.
get_standings_information()get_standings_information()
data.frame with one row per season
get_streams() is deprecated. Use streams() instead.
get_streams()get_streams()
data.frame with one row per stream
get_team_prospects() is deprecated. Use team_prospects() instead.
get_team_prospects(team = "NJD", player_type = "forwards")get_team_prospects(team = "NJD", player_type = "forwards")
team |
three-letter code (e.g., 'COL'); see |
player_type |
character of 'forwards', 'defensemen', or 'goalies' |
data.frame with one row per player
get_team_roster() is deprecated. Use roster() instead.
get_team_roster(team = "NJD", season = "current", player_type = "forwards")get_team_roster(team = "NJD", season = "current", player_type = "forwards")
team |
three-letter code (e.g., 'COL'); see |
season |
integer in YYYYYYYY (e.g., 20242025); see |
player_type |
character of 'forwards', 'defensemen', or 'goalies' |
data.frame with one row per player
get_team_roster_statistics() is deprecated. Use roster_statistics()
instead.
get_team_roster_statistics( team = "NJD", season = "now", game_type = 2, player_type = "skaters" )get_team_roster_statistics( team = "NJD", season = "now", game_type = 2, player_type = "skaters" )
team |
three-letter code (e.g., 'COL'); see |
season |
integer in YYYYYYYY (e.g., 20242025); see |
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
playoff'/'post'; see |
player_type |
character of 'skaters' or 'goalies' |
data.frame with one row per player
get_team_schedule() is deprecated. Use team_season_schedule() instead.
get_team_schedule(team = "NJD", season = "now")get_team_schedule(team = "NJD", season = "now")
team |
three-letter code (e.g., 'COL'); see |
season |
integer in YYYYYYYY (e.g., 20242025); see |
data.frame with one row per game
get_team_scoreboard() is defunct.
get_team_scoreboard()get_team_scoreboard()
get_team_seasons() is deprecated. Use team_seasons() instead.
get_team_seasons(team = "NJD")get_team_seasons(team = "NJD")
team |
three-letter code (e.g., 'COL'); see |
data.frame with one row per season
get_team_statistics() is defunct. Use team_season_report() and/or
team_game_report() instead.
get_team_statistics()get_team_statistics()
get_teams() is deprecated. Use teams() instead.
get_teams()get_teams()
data.frame with one row per team
get_tv_schedule() is deprecated. Use tv_schedule() instead.
get_tv_schedule(date = "now")get_tv_schedule(date = "now")
date |
character in 'YYYY-MM-DD' (e.g., '2025-01-01'); see
|
data.frame with one row per program
get_venues() is deprecated. Use venues() instead.
get_venues()get_venues()
data.frame with one row per venue
get_wsc_play_by_play() is deprecated. Use wsc_play_by_play() instead.
get_wsc_play_by_play(game = 2023030417)get_wsc_play_by_play(game = 2023030417)
game |
integer ID (e.g., 2025020275); see |
data.frame with one row per event (play)
glossary() retrieves the glossary as a data.frame where each row represents terminology and includes detail on reference definitions and rules-framework information.
glossary()glossary()
data.frame with one row per terminology
glossary <- glossary()glossary <- glossary()
goalie_edge_five_versus_five() retrieves the EDGE 5 vs. 5 statistics for a goalie, season, game type, and category as a nested list that separates summary and detail blocks for production, workload, efficiency, and result-level performance outcomes plus NHL EDGE style tracking outputs and relative-performance context.
goalie_edge_five_versus_five( player = 8476945, season = "now", game_type = "", category = "details" ) goalie_edge_5_vs_5( player = 8476945, season = "now", game_type = "", category = "details" )goalie_edge_five_versus_five( player = 8476945, season = "now", game_type = "", category = "details" ) goalie_edge_5_vs_5( player = 8476945, season = "now", game_type = "", category = "details" )
player |
integer ID (e.g., 8478406) |
season |
integer in YYYYYYYY (e.g., 20242025); see
|
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
'playoff'/'post'; see |
category |
character of 'd'/'details' or 'l'/'l10'/'last 10' |
list with four items (category = 'details') or data.frame with one row per game (category = 'last 10')
Mackenzie_Blackwood_L10_5_vs_5_regular_20242025 <- goalie_edge_five_versus_five( player = 8478406, season = 20242025, game_type = 2, category = 'L' )Mackenzie_Blackwood_L10_5_vs_5_regular_20242025 <- goalie_edge_five_versus_five( player = 8478406, season = 20242025, game_type = 2, category = 'L' )
goalie_edge_leaders() retrieves the goalie EDGE statistics leaders for a season and game type as a nested list that separates summary and detail blocks for NHL EDGE style tracking outputs and relative-performance context.
goalie_edge_leaders(season = "now", game_type = "")goalie_edge_leaders(season = "now", game_type = "")
season |
integer in YYYYYYYY (e.g., 20242025); see
|
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
'playoff'/'post'; see |
list of various items
goalie_EDGE_leaders_regular_20242025 <- goalie_edge_leaders( season = 20242025, game_type = 2 )goalie_EDGE_leaders_regular_20242025 <- goalie_edge_leaders( season = 20242025, game_type = 2 )
goalie_edge_save_percentage() retrieves the EDGE save percentage statistics for a goalie, season, game type, and category as a nested list that separates summary and detail blocks for NHL EDGE style tracking outputs and relative-performance context.
goalie_edge_save_percentage( player = 8476945, season = "now", game_type = "", category = "details" )goalie_edge_save_percentage( player = 8476945, season = "now", game_type = "", category = "details" )
player |
integer ID (e.g., 8478406) |
season |
integer in YYYYYYYY (e.g., 20242025); see
|
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
'playoff'/'post'; see |
category |
character of 'd'/'details' or 'l'/'l10'/'last 10' |
list with two items (category = 'details') or data.frame with one row per game (category = 'last 10')
Mackenzie_Blackwood_L10_sP_regular_20242025 <- goalie_edge_save_percentage( player = 8478406, season = 20242025, game_type = 2, category = 'L' )Mackenzie_Blackwood_L10_sP_regular_20242025 <- goalie_edge_save_percentage( player = 8478406, season = 20242025, game_type = 2, category = 'L' )
goalie_edge_seasons() retrieves the season(s) and game type(s) in which there exists goalie EDGE statistics as a data.frame where each row represents season and includes detail on date/season filtering windows and chronological context plus NHL EDGE style tracking outputs and relative-performance context.
goalie_edge_seasons()goalie_edge_seasons()
data.frame with one row per season
goalie_EDGE_seasons <- goalie_edge_seasons()goalie_EDGE_seasons <- goalie_edge_seasons()
goalie_edge_shot_location() retrieves the EDGE shot location statistics for a goalie, season, game type, and category as a data.frame where each row represents shot location and includes detail on production, workload, efficiency, and result-level performance outcomes plus NHL EDGE style tracking outputs and relative-performance context.
goalie_edge_shot_location( player = 8476945, season = "now", game_type = "", category = "details" )goalie_edge_shot_location( player = 8476945, season = "now", game_type = "", category = "details" )
player |
integer ID (e.g., 8478406) |
season |
integer in YYYYYYYY (e.g., 20242025); see
|
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
'playoff'/'post'; see |
category |
character of 'd'/details' or 't'/'totals' |
data.frame with one row per shot location
Mackenzie_Blackwood_shot_location_totals_regular_20242025 <- goalie_edge_shot_location( player = 8478406, season = 20242025, game_type = 2, category = 'T' )Mackenzie_Blackwood_shot_location_totals_regular_20242025 <- goalie_edge_shot_location( player = 8478406, season = 20242025, game_type = 2, category = 'T' )
goalie_edge_summary() retrieves the EDGE summary for a goalie, season, and game type as a nested list that separates summary and detail blocks for player identity, role, handedness, and biographical profile plus NHL EDGE style tracking outputs and relative-performance context.
goalie_edge_summary(player = 8476945, season = "now", game_type = "")goalie_edge_summary(player = 8476945, season = "now", game_type = "")
player |
integer ID (e.g., 8478406) |
season |
integer in YYYYYYYY (e.g., 20242025); see
|
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
'playoff'/'post'; see |
list of various items
Mackenzie_Blackwood_EDGE_summary_regular_20242025 <- goalie_edge_summary( player = 8478406, season = 20242025, game_type = 2 )Mackenzie_Blackwood_EDGE_summary_regular_20242025 <- goalie_edge_summary( player = 8478406, season = 20242025, game_type = 2 )
goalie_game_report() retrieves various reports for a season, game type, and category for all the goalies by game as a data.frame where each row represents game per goalie and includes detail on game timeline state, period/clock progression, and matchup flow, player identity, role, handedness, and biographical profile, and production, workload, efficiency, and result-level performance outcomes.
goalie_game_report( season = season_now(), game_type = game_type_now(), category = "summary" )goalie_game_report( season = season_now(), game_type = game_type_now(), category = "summary" )
season |
integer in YYYYYYYY (e.g., 20242025); see |
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
playoff'/'post'; see |
category |
character (e.g., 'advanced'); see
|
data.frame with one row per game per goalie
# May take >5s, so skip. advanced_goalie_game_report_playoffs_20212022 <- goalie_game_report( season = 20212022, game_type = 3, category = 'advanced' )# May take >5s, so skip. advanced_goalie_game_report_playoffs_20212022 <- goalie_game_report( season = 20212022, game_type = 3, category = 'advanced' )
goalie_game_scoring() retrieves the scoring statistics for all the goalies by game as a data.frame with detail on game timeline state, period/clock progression, and matchup flow, date/season filtering windows and chronological context, and team identity, affiliation, and matchup-side context.
goalie_game_scoring()goalie_game_scoring()
data.frame with one row per player per game
goalie_game_scoring <- goalie_game_scoring()goalie_game_scoring <- goalie_game_scoring()
goalie_game_statistics() retrieves the statistics for all the goalies by game as a data.frame with detail on game timeline state, period/clock progression, and matchup flow, date/season filtering windows and chronological context, and team identity, affiliation, and matchup-side context.
goalie_game_statistics() goalie_game_stats()goalie_game_statistics() goalie_game_stats()
data.frame with one row per goalie per game
goalie_game_stats <- goalie_game_statistics()goalie_game_stats <- goalie_game_statistics()
goalie_leaders() retrieves the goalie statistics leaders for a season, game type, and category as a data.frame where each row represents player and includes detail on player identity, role, handedness, and biographical profile.
goalie_leaders(season = "current", game_type = "", category = "wins")goalie_leaders(season = "current", game_type = "", category = "wins")
season |
integer in YYYYYYYY (e.g., 20242025); see |
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
playoff'/'post'; see |
category |
character of 'w'/'wins', 's'/shutouts', 's%'/'sP'/'save %'/'save percentage', or 'gaa'/'goals against average' |
data.frame with one row per player
GAA_leaders_regular_20242025 <- goalie_leaders( season = 20242025, game_type = 2, category = 'GAA' )GAA_leaders_regular_20242025 <- goalie_leaders( season = 20242025, game_type = 2, category = 'GAA' )
goalie_milestones() retrieves the goalies on milestone watch as a data.frame where each row represents player and includes detail on date/season filtering windows and chronological context, player identity, role, handedness, and biographical profile, and ranking movement, points pace, and division/conference position signals.
goalie_milestones()goalie_milestones()
data.frame with one row per player
goalie_milestones <- goalie_milestones()goalie_milestones <- goalie_milestones()
goalie_regular_statistics() retrieves the career regular season statistics for all the goalies as a data.frame where each row represents goalie and includes detail on date/season filtering windows and chronological context, team identity, affiliation, and matchup-side context, and player identity, role, handedness, and biographical profile.
goalie_regular_statistics() goalie_regular_stats()goalie_regular_statistics() goalie_regular_stats()
data.frame with one row per goalie
goalie_career_regular_statistics <- goalie_regular_statistics()goalie_career_regular_statistics <- goalie_regular_statistics()
goalie_report_configurations() retrieves the configurations for goalie reports as a nested list that separates summary and detail blocks for situational splits across home/road, strength state, and overtime/shootout states plus configuration catalogs for valid report categories and filters.
goalie_report_configurations() goalie_report_configs()goalie_report_configurations() goalie_report_configs()
list with various items
goalie_report_configs <- goalie_report_configurations()goalie_report_configs <- goalie_report_configurations()
goalie_scoring() retrieves the career scoring statistics for all the goalies as a data.frame where each row represents player and includes detail on date/season filtering windows and chronological context, team identity, affiliation, and matchup-side context, and player identity, role, handedness, and biographical profile.
goalie_scoring()goalie_scoring()
data.frame with one row per player
goalie_scoring <- goalie_scoring()goalie_scoring <- goalie_scoring()
goalie_season_report() retrieves various reports for a season, game type, and category for all the goalies by season as a data.frame where each row represents player and includes detail on date/season filtering windows and chronological context, player identity, role, handedness, and biographical profile, and production, workload, efficiency, and result-level performance outcomes.
goalie_season_report( season = season_now(), game_type = game_type_now(), category = "summary" )goalie_season_report( season = season_now(), game_type = game_type_now(), category = "summary" )
season |
integer in YYYYYYYY (e.g., 20242025); see |
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
playoff'/'post'; see |
category |
character (e.g., 'advanced'); see
|
data.frame with one row per player
# May take >5s, so skip. advanced_goalie_season_report_playoffs_20212022 <- goalie_season_report( season = 20212022, game_type = 3, category = 'advanced' )# May take >5s, so skip. advanced_goalie_season_report_playoffs_20212022 <- goalie_season_report( season = 20212022, game_type = 3, category = 'advanced' )
goalie_season_statistics() retrieves the statistics for all the goalies by season, game type, and team as a data.frame where each row represents player per season per game type, separated by team if applicable and includes detail on date/season filtering windows and chronological context, team identity, affiliation, and matchup-side context, and player identity, role, handedness, and biographical profile.
goalie_season_statistics() goalie_season_stats()goalie_season_statistics() goalie_season_stats()
data.frame with one row per player per season per game type, separated by team if applicable
goalie_season_stats <- goalie_season_statistics()goalie_season_stats <- goalie_season_statistics()
goalie_series_statistics() retrieves the playoff statistics for all the goalies by series as a data.frame where each row represents player per series and includes detail on date/season filtering windows and chronological context, team identity, affiliation, and matchup-side context, and player identity, role, handedness, and biographical profile.
goalie_series_statistics() goalie_series_stats()goalie_series_statistics() goalie_series_stats()
data.frame with one row per player per series
goalie_series_stats <- goalie_series_statistics()goalie_series_stats <- goalie_series_statistics()
goalie_statistics() retrieves the career statistics for all the goalies as a data.frame where each row represents player and includes detail on team identity, affiliation, and matchup-side context, player identity, role, handedness, and biographical profile, and production, workload, efficiency, and result-level performance outcomes.
goalie_statistics() goalie_stats()goalie_statistics() goalie_stats()
data.frame with one row per player
goalie_stats <- goalie_statistics()goalie_stats <- goalie_statistics()
ig_game_cumulative_expected_goals() saves an IG share-able cumulative xG
time-series plot for a given game as a PNG.
ig_game_cumulative_expected_goals(game = 2023030417, model = NULL, save = TRUE) ig_game_cum_xG(game = 2023030417, model = NULL)ig_game_cumulative_expected_goals(game = 2023030417, model = NULL, save = TRUE) ig_game_cum_xG(game = 2023030417, model = NULL)
game |
integer ID (e.g., 2025020275); see |
model |
deprecated legacy model selector; ignored |
save |
logical only FALSE for tests |
NULL
# May take >5s, so skip. ig_game_cumulative_expected_goals( game = 2023030417, save = FALSE )# May take >5s, so skip. ig_game_cumulative_expected_goals( game = 2023030417, save = FALSE )
ig_game_shot_locations() saves an IG share-able shot location plot for a
given game.
ig_game_shot_locations( game = 2023030417, team = "home", model = NULL, save = TRUE ) ig_game_shot_locs(game = 2023030417, team = "home", model = NULL)ig_game_shot_locations( game = 2023030417, team = "home", model = NULL, save = TRUE ) ig_game_shot_locs(game = 2023030417, team = "home", model = NULL)
game |
integer ID (e.g., 2025020275); see |
team |
character of 'h'/'home' or 'a'/'away' |
model |
deprecated legacy model selector; ignored |
save |
logical only FALSE for tests |
NULL
# May take >5s, so skip. ig_game_shot_locations( game = 2023030417, team = 'H', save = FALSE )# May take >5s, so skip. ig_game_shot_locations( game = 2023030417, team = 'H', save = FALSE )
location() retrieves the location for a zip code as a data.frame where each row represents team and includes detail on venue/location geography and regional metadata.
location(zip = 10001)location(zip = 10001)
zip |
integer (e.g., 48304) |
data.frame with one row per team
Cranbrook_Schools <- location(48304)Cranbrook_Schools <- location(48304)
lottery_odds() retrieves the draft lottery odds as a data.frame where each row represents draft lottery and includes detail on draft-cycle evaluation, ranking, and selection tracking detail.
lottery_odds()lottery_odds()
data.frame with one row per draft lottery
lottery_odds <- lottery_odds()lottery_odds <- lottery_odds()
nhlscraper is a minimum-dependency R package to scrape, clean, and
visualize NHL data via the NHL and ESPN APIs. It primarily wraps 125+
endpoints from high-level
multi-season summaries and award winners to low-level decisecond replays and
bookmakers' odds, making them significantly more accessible. It also
features cleaning and visualization functions, primarily for play-by-plays,
to help analyze the data.
R/RStudio; you can check out my tutorial if you are not familiar.
Detailed documentation for each scraping function will be released gradually over time. Because each function can return a large amount of information, users are encouraged to explore the provided examples to discover what is available. Most, if not all, of the endpoints accessed by this package are unofficially documented (i.e., hidden), so it is important to use them responsibly and with respect for the NHL's data servers. Endpoints serving historical or otherwise mostly static data should ideally be queried once and then stored locally (for example, in a MySQL database) for further analysis, rather than being called repeatedly; the load functions attempt to mitigate this risk by providing pre-scraped data, so please make use of them. The exact rate limits for these APIs are not publicly known, so users are asked to avoid excessive or abusive querying to help ensure continued access for everyone.
Prior to the NHL API rework in 2023, Drew Hynes documented a comprehensive list of known endpoints, and several R packages, such as nhlapi and hockeyR, were built to access them. However, after the NHL completely transformed its API structure, all of these packages became mostly defunct as their authors understandably chose not to continue maintaining them. The community gathered around work by Zachary Maludzinski to discover and share new endpoints, but progress naturally slowed once most of the "main" endpoints were identified. Over the summer of 2025, I began reverse-engineering many of the remaining, undocumented endpoints while searching for additional data for future research, with a particular focus on NHL EDGE and Records data. After I shared those findings, the effort to expand and refine this map of the APIs accelerated, and with the addition of David Fleischer's effort, we ultimately identified 400+ new endpoints. In parallel, I also discovered many new endpoints for the ESPN API, extending beyond what Joseph Wilson had already compiled.
Maintainer: Rento Saijo [email protected] (ORCID) [copyright holder]
Other contributors:
Lars Skytte [email protected] [contributor]
Jack Pallotta [email protected] (ORCID) [contributor]
Useful links:
Report bugs at https://github.com/RentoSaijo/nhlscraper/issues
officials() retrieves all the officials as a data.frame where each row represents official and includes detail on player identity, role, handedness, and biographical profile plus coach/management/officiating identity and assignment history.
officials()officials()
data.frame with one row per official
all_officials <- officials()all_officials <- officials()
penalty_shots() retrieves all the penalty shots as a data.frame where each row represents penalty shot and includes detail on game timeline state, period/clock progression, and matchup flow plus date/season filtering windows and chronological context.
penalty_shots() pss()penalty_shots() pss()
data.frame with one row per penalty shot
all_pss <- penalty_shots()all_pss <- penalty_shots()
player_game_log() retrieves the game log for a player, season, and game type as a data.frame where each row represents game and includes detail on game timeline state, period/clock progression, and matchup flow plus production, workload, efficiency, and result-level performance outcomes.
player_game_log(player = 8478402, season = "now", game_type = "")player_game_log(player = 8478402, season = "now", game_type = "")
player |
integer ID (e.g., 8480039); see |
season |
integer in YYYYYYYY (e.g., 20242025); see |
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
playoff'/'post'; see |
data.frame with one row per game
Martin_Necas_game_log_regular_20242025 <- player_game_log( player = 8480039, season = 20242025, game_type = 2 )Martin_Necas_game_log_regular_20242025 <- player_game_log( player = 8480039, season = 20242025, game_type = 2 )
player_seasons() retrieves the season(s) and game type(s) in which a player played as a data.frame where each row represents season and includes detail on date/season filtering windows and chronological context.
player_seasons(player = 8478402)player_seasons(player = 8478402)
player |
integer ID (e.g., 8480039); see |
data.frame with one row per season
Martin_Necas_seasons <- player_seasons(player = 8480039)Martin_Necas_seasons <- player_seasons(player = 8480039)
player_summary() retrieves the summary for a player as a nested list that separates summary and detail blocks for player identity, role, handedness, and biographical profile.
player_summary(player = 8478402)player_summary(player = 8478402)
player |
integer ID (e.g., 8480039); see |
list with various items
Martin_Necas_summary <- player_summary(player = 8480039)Martin_Necas_summary <- player_summary(player = 8480039)
players() retrieves all the players as a data.frame where each row represents player and includes detail on player identity, role, handedness, and biographical profile.
players()players()
data.frame with one row per player
# May take >5s, so skip. all_players <- players()# May take >5s, so skip. all_players <- players()
playoff_season_statistics() retrieves the playoff statistics by season as a data.frame where each row represents season and includes detail on date/season filtering windows and chronological context.
playoff_season_statistics() playoff_season_stats()playoff_season_statistics() playoff_season_stats()
data.frame with one row per season
playoff_season_stats <- playoff_season_statistics()playoff_season_stats <- playoff_season_statistics()
ps() is deprecated. Use penalty_shots() instead.
ps()ps()
data.frame with one row per penalty shot
replay() retrieves the replay for an event as a data.frame where each row represents decisecond and includes detail on team identity, affiliation, and matchup-side context plus player identity, role, handedness, and biographical profile.
replay(game = 2023030417, event = 866)replay(game = 2023030417, event = 866)
game |
integer ID (e.g., 2025020262); see |
event |
integer ID (e.g., 751); see |
data.frame with one row per decisecond
Gabriel_Landeskog_first_regular_goal_back_replay <- replay( game = 2025020262, event = 751 )Gabriel_Landeskog_first_regular_goal_back_replay <- replay( game = 2025020262, event = 751 )
replays() loads the replays for a given season.
replays(season = 20242025)replays(season = 20242025)
season |
integer in YYYYYYYY (e.g., 20242025); see |
data.frame with one row per decisecond
# May take >5s, so skip. replays_20252026 <- replays(season = 20252026)# May take >5s, so skip. replays_20252026 <- replays(season = 20252026)
roster() retrieves the roster for a team, season, and position as a data.frame where each row represents player and includes detail on player identity, role, handedness, and biographical profile.
roster(team = 1, season = "current", position = "forwards")roster(team = 1, season = "current", position = "forwards")
team |
integer ID (e.g., 21), character full name (e.g., 'Colorado
Avalanche'), OR three-letter code (e.g., 'COL'); see |
season |
integer in YYYYYYYY (e.g., 20242025); see |
position |
character of 'f'/'forwards', 'd'/'defensemen', or 'g'/'goalies' |
data.frame with one row per player
COL_defensemen_20242025 <- roster( team = 21, season = 20242025, position = 'D' )COL_defensemen_20242025 <- roster( team = 21, season = 20242025, position = 'D' )
roster_statistics() retrieves the roster statistics for a team, season, game type, and position as a data.frame where each row represents player and includes detail on player identity, role, handedness, and biographical profile plus production, workload, efficiency, and result-level performance outcomes.
roster_statistics( team = 1, season = "now", game_type = "", position = "skaters" ) roster_stats(team = 1, season = "now", game_type = "", position = "skaters")roster_statistics( team = 1, season = "now", game_type = "", position = "skaters" ) roster_stats(team = 1, season = "now", game_type = "", position = "skaters")
team |
integer ID (e.g., 21), character full name (e.g., 'Colorado
Avalanche'), OR three-letter code (e.g., 'COL'); see |
season |
integer in YYYYYYYY (e.g., 20242025); see |
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
playoff'/'post'; see |
position |
character of 's'/'skaters' or 'g'/'goalies' |
data.frame with one row per player
COL_goalies_statistics_regular_20242025 <- roster_statistics( team = 21, season = 20242025, game_type = 2, position = 'G' )COL_goalies_statistics_regular_20242025 <- roster_statistics( team = 21, season = 20242025, game_type = 2, position = 'G' )
schedule() retrieves the schedule for a date as a data.frame where each row represents game and includes detail on game timing, matchup state, scoring flow, and situational event detail.
schedule(date = Sys.Date())schedule(date = Sys.Date())
date |
character in 'YYYY-MM-DD' (e.g., '2025-01-01'); see
|
data.frame with one row per game
schedule_Halloween_2025 <- schedule(date = '2025-10-31')schedule_Halloween_2025 <- schedule(date = '2025-10-31')
scores() retrieves the scores for a date as a data.frame where each row represents game and includes detail on game timeline state, period/clock progression, and matchup flow, date/season filtering windows and chronological context, and team identity, affiliation, and matchup-side context.
scores(date = "now")scores(date = "now")
date |
character in 'YYYY-MM-DD' (e.g., '2025-01-01'); see
|
data.frame with one row per game
scores_Halloween_2025 <- scores(date = '2025-10-31')scores_Halloween_2025 <- scores(date = '2025-10-31')
season_now() retrieves the season as of now and returns a scalar integer used as the current-context default in season/game-type dependent wrappers.
season_now()season_now()
integer in YYYYYYYY (e.g., 20242025)
season_now <- season_now()season_now <- season_now()
seasons() retrieves all the seasons as a data.frame where each row represents season and includes detail on date/season filtering windows and chronological context.
seasons()seasons()
data.frame with one row per season
all_seasons <- seasons()all_seasons <- seasons()
series() retrieves all the playoff series by game as a data.frame where each row represents game per series and includes detail on game timeline state, period/clock progression, and matchup flow, date/season filtering windows and chronological context, and playoff-series progression, round status, and series leverage.
series()series()
data.frame with one row per game per series
# May take >5s, so skip. all_series <- series()# May take >5s, so skip. all_series <- series()
series_schedule() retrieves the playoff schedule for a season and series as a data.frame where each row represents game and includes detail on game timeline state, period/clock progression, and matchup flow, date/season filtering windows and chronological context, and team identity, affiliation, and matchup-side context.
series_schedule(season = season_now() - 10001, series = "a")series_schedule(season = season_now() - 10001, series = "a")
season |
integer in YYYYYYYY (e.g., 20242025); see |
series |
one-letter code (e.g., 'O'); see |
data.frame with one row per game
SCF_schedule_20212022 <- series_schedule( season = 20212022, series = 'O' )SCF_schedule_20212022 <- series_schedule( season = 20212022, series = 'O' )
shift_chart() retrieves the shift chart for a game as a data.frame where each row represents shift and includes detail on game timeline state, period/clock progression, and matchup flow, date/season filtering windows and chronological context, and team identity, affiliation, and matchup-side context.
shift_chart(game = 2023030417)shift_chart(game = 2023030417)
game |
integer ID (e.g., 2025020275); see |
data.frame with one row per shift
shifts_Martin_Necas_legacy_game <- shift_chart(game = 2025020275)shifts_Martin_Necas_legacy_game <- shift_chart(game = 2025020275)
shift_chart_summaries() loads the shift chart summaries for a given
season.
shift_chart_summaries(season = 20242025)shift_chart_summaries(season = 20242025)
season |
integer in YYYYYYYY (e.g., 20242025); see |
data.frame with one row per player per period
# May take >5s, so skip. shift_chart_summaries_20212022 <- shift_chart_summaries(season = 20212022)# May take >5s, so skip. shift_chart_summaries_20212022 <- shift_chart_summaries(season = 20212022)
shift_chart_summary() retrieves per-player, per-period time-on-ice splits
from the HTML shift reports.
shift_chart_summary(game = 2023030417)shift_chart_summary(game = 2023030417)
game |
integer ID (e.g., 2025020275); see |
data.frame with one row per player per period
shift_summary_2023030417 <- shift_chart_summary(game = 2023030417)shift_summary_2023030417 <- shift_chart_summary(game = 2023030417)
shift_charts() loads the shift charts for a given season.
shift_charts(season = 20242025)shift_charts(season = 20242025)
season |
integer in YYYYYYYY (e.g., 20242025); see |
data.frame with one row per event (play) per game
# May take >5s, so skip. shift_charts_20212022 <- shift_charts(season = 20212022)# May take >5s, so skip. shift_charts_20212022 <- shift_charts(season = 20212022)
shifts() is deprecated. Use shift_chart() instead.
shifts(game = 2023030417)shifts(game = 2023030417)
game |
integer ID (e.g., 2025020275); see |
data.frame with one row per shift
skater_edge_leaders() retrieves the skater EDGE statistics leaders for a season and game type as a nested list that separates summary and detail blocks for NHL EDGE style tracking outputs and relative-performance context.
skater_edge_leaders(season = "now", game_type = "")skater_edge_leaders(season = "now", game_type = "")
season |
integer in YYYYYYYY (e.g., 20242025); see
|
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
'playoff'/'post'; see |
list of various items
skater_EDGE_leaders_regular_20242025 <- skater_edge_leaders( season = 20242025, game_type = 2 )skater_EDGE_leaders_regular_20242025 <- skater_edge_leaders( season = 20242025, game_type = 2 )
skater_edge_seasons() retrieves the season(s) and game type(s) in which there exists skater EDGE statistics as a data.frame where each row represents season and includes detail on date/season filtering windows and chronological context plus NHL EDGE style tracking outputs and relative-performance context.
skater_edge_seasons()skater_edge_seasons()
data.frame with one row per season
skater_EDGE_seasons <- skater_edge_seasons()skater_EDGE_seasons <- skater_edge_seasons()
skater_edge_shot_location() retrieves the EDGE shot location statistics for a skater, season, game type, and category as a data.frame where each row represents shot location and includes detail on production, workload, efficiency, and result-level performance outcomes plus NHL EDGE style tracking outputs and relative-performance context.
skater_edge_shot_location( player = 8478402, season = "now", game_type = "", category = "details" )skater_edge_shot_location( player = 8478402, season = "now", game_type = "", category = "details" )
player |
integer ID (e.g., 8480039); see |
season |
integer in YYYYYYYY (e.g., 20242025); see
|
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
'playoff'/'post'; see |
category |
character of 'd'/details' or 't'/'totals' |
data.frame with one row per shot location
Martin_Necas_shot_location_totals_regular_20242025 <- skater_edge_shot_location( player = 8480039, season = 20242025, game_type = 2, category = 'T' )Martin_Necas_shot_location_totals_regular_20242025 <- skater_edge_shot_location( player = 8480039, season = 20242025, game_type = 2, category = 'T' )
skater_edge_shot_speed() retrieves the EDGE shot speed statistics for a skater, season, game type, and category as a nested list that separates summary and detail blocks for NHL EDGE style tracking outputs and relative-performance context.
skater_edge_shot_speed( player = 8478402, season = "now", game_type = "", category = "details" )skater_edge_shot_speed( player = 8478402, season = "now", game_type = "", category = "details" )
player |
integer ID (e.g., 8480039); see |
season |
integer in YYYYYYYY (e.g., 20242025); see
|
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
'playoff'/'post'; see |
category |
character of 'd'/'details' or 'h'/'hardest' |
list with six items (category = 'details') or data.frame with one row per shot (category = 'hardest')
Martin_Necas_hardest_shots_regular_20242025 <- skater_edge_shot_speed( player = 8480039, season = 20242025, game_type = 2, category = 'H' )Martin_Necas_hardest_shots_regular_20242025 <- skater_edge_shot_speed( player = 8480039, season = 20242025, game_type = 2, category = 'H' )
skater_edge_skating_distance() retrieves the EDGE skating distance statistics for a skater, season, game type, and category as a data.frame where each row represents strength state and includes detail on team identity, affiliation, and matchup-side context, player identity, role, handedness, and biographical profile, and tracking/spatial detail such as location, speed, distance, and zone distribution.
skater_edge_skating_distance( player = 8478402, season = "now", game_type = "", category = "details" )skater_edge_skating_distance( player = 8478402, season = "now", game_type = "", category = "details" )
player |
integer ID (e.g., 8480039); see |
season |
integer in YYYYYYYY (e.g., 20242025); see
|
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
'playoff'/'post'; see |
category |
character of 'd'/'details' or 'l'/'l10'/'last 10' |
data.frame with one row per strength state (category = 'details') or game (category = 'last 10')
Martin_Necas_L10_skating_distance_regular_20242025 <- skater_edge_skating_distance( player = 8480039, season = 20242025, game_type = 2, category = 'L' )Martin_Necas_L10_skating_distance_regular_20242025 <- skater_edge_skating_distance( player = 8480039, season = 20242025, game_type = 2, category = 'L' )
skater_edge_skating_speed() retrieves the EDGE skating speed statistics for a skater, season, game type, and category as a nested list that separates summary and detail blocks for NHL EDGE style tracking outputs and relative-performance context.
skater_edge_skating_speed( player = 8478402, season = "now", game_type = "", category = "details" )skater_edge_skating_speed( player = 8478402, season = "now", game_type = "", category = "details" )
player |
integer ID (e.g., 8480039); see |
season |
integer in YYYYYYYY (e.g., 20242025); see
|
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
'playoff'/'post'; see |
category |
character of 'd'/'details' or 't'/'top'/'top speeds' |
list with four items (category = 'details') or data.frame with one row per burst (category = 'top speeds')
Martin_Necas_top_speeds_regular_20242025 <- skater_edge_skating_speed( player = 8480039, season = 20242025, game_type = 2, category = 'T' )Martin_Necas_top_speeds_regular_20242025 <- skater_edge_skating_speed( player = 8480039, season = 20242025, game_type = 2, category = 'T' )
skater_edge_summary() retrieves the EDGE summary for a skater, season, and game type as a nested list that separates summary and detail blocks for player identity, role, handedness, and biographical profile plus NHL EDGE style tracking outputs and relative-performance context.
skater_edge_summary(player = 8478402, season = "now", game_type = "")skater_edge_summary(player = 8478402, season = "now", game_type = "")
player |
integer ID (e.g., 8480039); see |
season |
integer in YYYYYYYY (e.g., 20242025); see
|
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
'playoff'/'post'; see |
list of various items
Martin_Necas_EDGE_summary_regular_20242025 <- skater_edge_summary( player = 8480039, season = 20242025, game_type = 2 )Martin_Necas_EDGE_summary_regular_20242025 <- skater_edge_summary( player = 8480039, season = 20242025, game_type = 2 )
skater_edge_zone_time() retrieves the EDGE zone time statistics for a skater, season, game type, and category as a data.frame where each row represents strength state and includes detail on NHL EDGE style tracking outputs and relative-performance context.
skater_edge_zone_time( player = 8478402, season = "now", game_type = "", category = "details" )skater_edge_zone_time( player = 8478402, season = "now", game_type = "", category = "details" )
player |
integer ID (e.g., 8480039); see |
season |
integer in YYYYYYYY (e.g., 20242025); see
|
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
'playoff'/'post'; see |
category |
character of 'd'/'details' or 's'/'starts' |
data.frame with one row per strength state (category = 'details') or list with six items (category = 'starts')
Martin_Necas_starts_regular_20242025 <- skater_edge_zone_time( player = 8480039, season = 20242025, game_type = 2, category = 'S' )Martin_Necas_starts_regular_20242025 <- skater_edge_zone_time( player = 8480039, season = 20242025, game_type = 2, category = 'S' )
skater_game_report() retrieves various reports for a season, game type, and category for all the skaters by game as a data.frame where each row represents game per player and includes detail on game timeline state, period/clock progression, and matchup flow, player identity, role, handedness, and biographical profile, and production, workload, efficiency, and result-level performance outcomes.
skater_game_report( season = season_now(), game_type = game_type_now(), category = "summary" )skater_game_report( season = season_now(), game_type = game_type_now(), category = "summary" )
season |
integer in YYYYYYYY (e.g., 20242025); see |
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
playoff'/'post'; see |
category |
character (e.g., 'puckPossessions'); see
|
data.frame with one row per game per player
# May take >5s, so skip. possession_skater_game_report_playoff_20212022 <- skater_game_report( season = 20212022, game_type = 3, category = 'puckPossessions' )# May take >5s, so skip. possession_skater_game_report_playoff_20212022 <- skater_game_report( season = 20212022, game_type = 3, category = 'puckPossessions' )
skater_leaders() retrieves the skater statistics leaders for a season, game type, and category as a data.frame where each row represents player and includes detail on player identity, role, handedness, and biographical profile.
skater_leaders(season = "current", game_type = "", category = "points")skater_leaders(season = "current", game_type = "", category = "points")
season |
integer in YYYYYYYY (e.g., 20242025); see |
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
playoff'/'post'; see |
category |
string of 'a'/'assists', 'g'/goals', 'shg'/'shorthanded goals', 'ppg'/'powerplay goals', 'p'/'points', 'pim'/penalty minutes'/'penalty infraction minutes', 'toi'/'time on ice', 'pm'/'plus minus', or 'f'/'faceoffs' |
data.frame with one row per player
TOI_leaders_regular_20242025 <- skater_leaders( season = 20242025, game_type = 2, category = 'TOI' )TOI_leaders_regular_20242025 <- skater_leaders( season = 20242025, game_type = 2, category = 'TOI' )
skater_milestones() retrieves the skaters on milestone watch as a data.frame where each row represents player and includes detail on date/season filtering windows and chronological context, player identity, role, handedness, and biographical profile, and production, workload, efficiency, and result-level performance outcomes.
skater_milestones()skater_milestones()
data.frame with one row per player
skater_milestones <- skater_milestones()skater_milestones <- skater_milestones()
skater_playoff_statistics() retrieves the career playoff statistics for all the skaters as a data.frame where each row represents player and includes detail on team identity, affiliation, and matchup-side context, player identity, role, handedness, and biographical profile, and production, workload, efficiency, and result-level performance outcomes.
skater_playoff_statistics() skater_playoff_stats()skater_playoff_statistics() skater_playoff_stats()
data.frame with one row per player
skater_playoff_stats <- skater_playoff_statistics()skater_playoff_stats <- skater_playoff_statistics()
skater_regular_statistics() retrieves the career regular season statistics for all the skaters as a data.frame where each row represents player and includes detail on team identity, affiliation, and matchup-side context, player identity, role, handedness, and biographical profile, and production, workload, efficiency, and result-level performance outcomes.
skater_regular_statistics() skater_regular_stats()skater_regular_statistics() skater_regular_stats()
data.frame with one row per player
skater_regular_stats <- skater_regular_statistics()skater_regular_stats <- skater_regular_statistics()
skater_report_configurations() retrieves the configurations for skater reports as a nested list that separates summary and detail blocks for production, workload, efficiency, and result-level performance outcomes, situational splits across home/road, strength state, and overtime/shootout states, and configuration catalogs for valid report categories and filters.
skater_report_configurations() skater_report_configs()skater_report_configurations() skater_report_configs()
list with various items
skater_report_configs <- skater_report_configurations()skater_report_configs <- skater_report_configurations()
skater_season_report() retrieves various reports for a season, game type, and category for all the skaters by season as a data.frame where each row represents player and includes detail on date/season filtering windows and chronological context, player identity, role, handedness, and biographical profile, and production, workload, efficiency, and result-level performance outcomes.
skater_season_report( season = season_now(), game_type = game_type_now(), category = "summary" )skater_season_report( season = season_now(), game_type = game_type_now(), category = "summary" )
season |
integer in YYYYYYYY (e.g., 20242025); see |
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
playoff'/'post'; see |
category |
character (e.g., 'puckPossessions'); see
|
data.frame with one row per player
# May take >5s, so skip. possession_skater_season_report_playoff_20212022 <- skater_season_report( season = 20212022, game_type = 3, category = 'puckPossessions' )# May take >5s, so skip. possession_skater_season_report_playoff_20212022 <- skater_season_report( season = 20212022, game_type = 3, category = 'puckPossessions' )
skater_season_statistics() retrieves the statistics for all the skaters by season, game type, and team as a data.frame where each row represents player per season per game type, separated by team if applicable and includes detail on date/season filtering windows and chronological context, team identity, affiliation, and matchup-side context, and player identity, role, handedness, and biographical profile.
skater_season_statistics() skater_season_stats()skater_season_statistics() skater_season_stats()
data.frame with one row per player per season per game type, separated by team if applicable
# May take >5s, so skip. skater_season_stats <- skater_season_statistics()# May take >5s, so skip. skater_season_stats <- skater_season_statistics()
skater_series_statistics() retrieves the playoff statistics for all the skaters by series as a data.frame where each row represents player per series and includes detail on date/season filtering windows and chronological context, team identity, affiliation, and matchup-side context, and player identity, role, handedness, and biographical profile.
skater_series_statistics() skater_series_stats()skater_series_statistics() skater_series_stats()
data.frame with one row per player per series
# May take >5s, so skip. skater_series_stats <- skater_series_statistics()# May take >5s, so skip. skater_series_stats <- skater_series_statistics()
skater_statistics() retrieves the career statistics for all the skaters as a data.frame where each row represents player and includes detail on player identity, role, handedness, and biographical profile plus production, workload, efficiency, and result-level performance outcomes.
skater_statistics() skater_stats()skater_statistics() skater_stats()
data.frame with one row per player
skater_stats <- skater_statistics()skater_stats <- skater_statistics()
spotlight_players() retrieves the spotlight players as a data.frame where each row represents player and includes detail on team identity, affiliation, and matchup-side context plus player identity, role, handedness, and biographical profile.
spotlight_players()spotlight_players()
data.frame with one row per player
spotlight_players <- spotlight_players()spotlight_players <- spotlight_players()
standings() retrieves the standings for a date as a data.frame where each row represents team and includes detail on date/season filtering windows and chronological context, production, workload, efficiency, and result-level performance outcomes, and ranking movement, points pace, and division/conference position signals.
standings(date = "now")standings(date = "now")
date |
character in 'YYYY-MM-DD' (e.g., '2025-01-01'); see
|
data.frame with one row per team
standings_Halloween_2025 <- standings(date = '2025-10-31')standings_Halloween_2025 <- standings(date = '2025-10-31')
standings_rules() retrieves the standings rules by season as a data.frame where each row represents season and includes detail on date/season filtering windows and chronological context.
standings_rules()standings_rules()
data.frame with one row per season
standings_rules <- standings_rules()standings_rules <- standings_rules()
streams() retrieves all the streams as a data.frame where each row represents stream and includes detail on reference metadata, regional context, and media availability detail.
streams()streams()
data.frame with one row per stream
all_streams <- streams()all_streams <- streams()
team_edge_leaders() retrieves the team EDGE statistics leaders for a season and game type as a nested list that separates summary and detail blocks for NHL EDGE style tracking outputs and relative-performance context.
team_edge_leaders(season = "now", game_type = "")team_edge_leaders(season = "now", game_type = "")
season |
integer in YYYYYYYY (e.g., 20242025); see
|
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
'playoff'/'post'; see |
list of various items
team_EDGE_leaders_regular_20242025 <- team_edge_leaders( season = 20242025, game_type = 2 )team_EDGE_leaders_regular_20242025 <- team_edge_leaders( season = 20242025, game_type = 2 )
team_edge_seasons() retrieves the season(s) and game type(s) in which there exists team EDGE statistics as a data.frame where each row represents season and includes detail on date/season filtering windows and chronological context plus NHL EDGE style tracking outputs and relative-performance context.
team_edge_seasons()team_edge_seasons()
data.frame with one row per season
team_EDGE_seasons <- team_edge_seasons()team_EDGE_seasons <- team_edge_seasons()
team_edge_shot_location() retrieves the EDGE shot location statistics for a team, season, game type, and category as a data.frame where each row represents location and includes detail on production, workload, efficiency, and result-level performance outcomes plus NHL EDGE style tracking outputs and relative-performance context.
team_edge_shot_location( team = 1, season = "now", game_type = "", category = "details" )team_edge_shot_location( team = 1, season = "now", game_type = "", category = "details" )
team |
integer ID (e.g., 21), character full name (e.g., 'Colorado
Avalanche'), OR three-letter code (e.g., 'COL'); see |
season |
integer in YYYYYYYY (e.g., 20242025); see
|
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
'playoff'/'post'; see |
category |
character of 'd'/details' or 't'/'totals' |
data.frame with one row per location (category = 'details') or combination of strength state and position (category = 'totals')
COL_shot_location_totals_regular_20242025 <- team_edge_shot_location( team = 21, season = 20242025, game_type = 2, category = 'T' )COL_shot_location_totals_regular_20242025 <- team_edge_shot_location( team = 21, season = 20242025, game_type = 2, category = 'T' )
team_edge_shot_speed() retrieves the EDGE shot speed statistics for a team, season, game type, and category as a data.frame where each row represents position and includes detail on team identity, affiliation, and matchup-side context, player identity, role, handedness, and biographical profile, and ranking movement, points pace, and division/conference position signals.
team_edge_shot_speed( team = 1, season = "now", game_type = "", category = "details" )team_edge_shot_speed( team = 1, season = "now", game_type = "", category = "details" )
team |
integer ID (e.g., 21), character full name (e.g., 'Colorado
Avalanche'), OR three-letter code (e.g., 'COL'); see |
season |
integer in YYYYYYYY (e.g., 20242025); see
|
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
'playoff'/'post'; see |
category |
character of 'd'/'details' or 'h'/'hardest' |
data.frame with one row per position (category = 'details') or shot (category = 'hardest')
COL_hardest_shots_regular_20242025 <- team_edge_shot_speed( team = 21, season = 20242025, game_type = 2, category = 'H' )COL_hardest_shots_regular_20242025 <- team_edge_shot_speed( team = 21, season = 20242025, game_type = 2, category = 'H' )
team_edge_skating_distance() retrieves the EDGE skating distance statistics for a team, season, game type, and category as a data.frame where each row represents combination of strength state and position and includes detail on team identity, affiliation, and matchup-side context, ranking movement, points pace, and division/conference position signals, and NHL EDGE style tracking outputs and relative-performance context.
team_edge_skating_distance( team = 1, season = "now", game_type = "", category = "details" )team_edge_skating_distance( team = 1, season = "now", game_type = "", category = "details" )
team |
integer ID (e.g., 21), character full name (e.g., 'Colorado
Avalanche'), OR three-letter code (e.g., 'COL'); see |
season |
integer in YYYYYYYY (e.g., 20242025); see
|
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
'playoff'/'post'; see |
category |
character of 'd'/'details' or 'l'/'l10'/'last 10' |
data.frame with one row per combination of strength state and position (category = 'details') or game (category = 'last 10') game
COL_L10_skating_distance_regular_20242025 <- team_edge_skating_distance( team = 21, season = 20242025, game_type = 2, category = 'L' )COL_L10_skating_distance_regular_20242025 <- team_edge_skating_distance( team = 21, season = 20242025, game_type = 2, category = 'L' )
team_edge_skating_speed() retrieves the EDGE skating speed statistics for a team, season, game type, and category as a data.frame where each row represents position and includes detail on team identity, affiliation, and matchup-side context, player identity, role, handedness, and biographical profile, and ranking movement, points pace, and division/conference position signals.
team_edge_skating_speed( team = 1, season = "now", game_type = "", category = "details" )team_edge_skating_speed( team = 1, season = "now", game_type = "", category = "details" )
team |
integer ID (e.g., 21), character full name (e.g., 'Colorado
Avalanche'), OR three-letter code (e.g., 'COL'); see |
season |
integer in YYYYYYYY (e.g., 20242025); see
|
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
'playoff'/'post'; see |
category |
character of 'd'/'details' or 't'/'top'/'top speeds' |
data.frame with one row per position (category = 'details') or burst (category = 'top speeds')
COL_top_speeds_regular_20242025 <- team_edge_skating_speed( team = 21, season = 20242025, game_type = 2, category = 'T' )COL_top_speeds_regular_20242025 <- team_edge_skating_speed( team = 21, season = 20242025, game_type = 2, category = 'T' )
team_edge_summary() retrieves the EDGE summary for a team, season, and game type as a nested list that separates summary and detail blocks for team identity, affiliation, and matchup-side context plus NHL EDGE style tracking outputs and relative-performance context.
team_edge_summary(team = 1, season = "now", game_type = "")team_edge_summary(team = 1, season = "now", game_type = "")
team |
integer ID (e.g., 21), character full name (e.g., 'Colorado
Avalanche'), OR three-letter code (e.g., 'COL'); see |
season |
integer in YYYYYYYY (e.g., 20242025); see
|
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
'playoff'/'post'; see |
list of various items
COL_EDGE_summary_regular_20242025 <- team_edge_summary( team = 21, season = 20242025, game_type = 2 )COL_EDGE_summary_regular_20242025 <- team_edge_summary( team = 21, season = 20242025, game_type = 2 )
team_edge_zone_time() retrieves the EDGE zone time statistics for a team, season, game type, and category as a data.frame where each row represents strength state and includes detail on NHL EDGE style tracking outputs and relative-performance context.
team_edge_zone_time( team = 1, season = "now", game_type = "", category = "details" )team_edge_zone_time( team = 1, season = "now", game_type = "", category = "details" )
team |
integer ID (e.g., 21), character full name (e.g., 'Colorado
Avalanche'), OR three-letter code (e.g., 'COL'); see |
season |
integer in YYYYYYYY (e.g., 20242025); see
|
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
'playoff'/'post'; see |
category |
character of 'd'/'details' or 'dS'/'dSOG'/'dShot'/'shot differential' |
data.frame with one row per strength state (category = 'details') or list with four items (category = 'shot differential')
COL_dS_regular_20242025 <- team_edge_zone_time( team = 21, season = 20242025, game_type = 2, category = 'dS' )COL_dS_regular_20242025 <- team_edge_zone_time( team = 21, season = 20242025, game_type = 2, category = 'dS' )
team_game_report() retrieves various reports for a season, game type, and category for all the teams by game as a data.frame where each row represents game per team and includes detail on game timeline state, period/clock progression, and matchup flow, team identity, affiliation, and matchup-side context, and production, workload, efficiency, and result-level performance outcomes.
team_game_report( season = season_now(), game_type = game_type_now(), category = "summary" )team_game_report( season = season_now(), game_type = game_type_now(), category = "summary" )
season |
integer in YYYYYYYY (e.g., 20242025); see |
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
playoff'/'post'; see |
category |
character (e.g., 'leadingtrailing'); see
|
data.frame with one row per game per team
situational_team_game_report_playoffs_20212022 <- team_game_report( season = 20212022, game_type = 3, category = 'leadingtrailing' )situational_team_game_report_playoffs_20212022 <- team_game_report( season = 20212022, game_type = 3, category = 'leadingtrailing' )
team_logos() retrieves all the team logos as a data.frame where each row represents logo and includes detail on team identity, affiliation, and matchup-side context.
team_logos()team_logos()
data.frame with one row per logo
all_team_logos <- team_logos()all_team_logos <- team_logos()
team_month_schedule() retrieves the schedule for a team and month as a data.frame where each row represents game and includes detail on game timeline state, period/clock progression, and matchup flow, date/season filtering windows and chronological context, and team identity, affiliation, and matchup-side context.
team_month_schedule(team = 1, month = "now")team_month_schedule(team = 1, month = "now")
team |
integer ID (e.g., 21), character full name (e.g., 'Colorado
Avalanche'), OR three-letter code (e.g., 'COL'); see |
month |
character in 'YYYY-MM' (e.g., '2025-01'); see |
data.frame with one row per game
COL_schedule_December_2025 <- team_month_schedule( team = 21, month = '2025-12' )COL_schedule_December_2025 <- team_month_schedule( team = 21, month = '2025-12' )
team_prospects() retrieves the prospects for a team and position as a data.frame where each row represents player and includes detail on player identity, role, handedness, and biographical profile.
team_prospects(team = 1, position = "forwards")team_prospects(team = 1, position = "forwards")
team |
integer ID (e.g., 21), character full name (e.g., 'Colorado
Avalanche'), OR three-letter code (e.g., 'COL'); see |
position |
character of 'f'/'forwards', 'd'/'defensemen', or 'g'/'goalies' |
data.frame with one row per player
COL_forward_prospects <- team_prospects( team = 21, position = 'F' )COL_forward_prospects <- team_prospects( team = 21, position = 'F' )
team_report_configurations() retrieves the configurations for team reports as a nested list that separates summary and detail blocks for situational splits across home/road, strength state, and overtime/shootout states plus configuration catalogs for valid report categories and filters.
team_report_configurations() team_report_configs()team_report_configurations() team_report_configs()
list with various items
team_report_configs <- team_report_configurations()team_report_configs <- team_report_configurations()
team_season_report() retrieves various reports for a season, game type, and category for all the teams by season as a data.frame where each row represents team and includes detail on date/season filtering windows and chronological context, team identity, affiliation, and matchup-side context, and production, workload, efficiency, and result-level performance outcomes.
team_season_report( season = season_now(), game_type = game_type_now(), category = "summary" )team_season_report( season = season_now(), game_type = game_type_now(), category = "summary" )
season |
integer in YYYYYYYY (e.g., 20242025); see |
game_type |
integer in 1:3 (where 1 = pre-season, 2 = regular season, 3
= playoff/post-season) OR character of 'pre', 'regular', or
playoff'/'post'; see |
category |
character (e.g., 'leadingtrailing'); see
|
data.frame with one row per team
situational_team_season_report_playoffs_20212022 <- team_season_report( season = 20212022, game_type = 3, category = 'leadingtrailing' )situational_team_season_report_playoffs_20212022 <- team_season_report( season = 20212022, game_type = 3, category = 'leadingtrailing' )
team_season_schedule() retrieves the schedule for a team and season as a data.frame where each row represents game and includes detail on game timeline state, period/clock progression, and matchup flow, date/season filtering windows and chronological context, and team identity, affiliation, and matchup-side context.
team_season_schedule(team = 1, season = "now")team_season_schedule(team = 1, season = "now")
team |
integer ID (e.g., 21), character full name (e.g., 'Colorado
Avalanche'), OR three-letter code (e.g., 'COL'); see |
season |
integer in YYYYYYYY (e.g., 20242025); see |
data.frame with one row per game
COL_schedule_20252026 <- team_season_schedule( team = 21, season = 20252026 )COL_schedule_20252026 <- team_season_schedule( team = 21, season = 20252026 )
team_season_statistics() retrieves the statistics for all the teams by season and game type as a data.frame where each row represents team per season per game type and includes detail on date/season filtering windows and chronological context, team identity, affiliation, and matchup-side context, and production, workload, efficiency, and result-level performance outcomes.
team_season_statistics() team_season_stats()team_season_statistics() team_season_stats()
data.frame with one row per team per season per game type
# May take >5s, so skip. team_season_statistics <- team_season_statistics()# May take >5s, so skip. team_season_statistics <- team_season_statistics()
team_seasons() retrieves the season(s) and game type(s) in which a team played as a data.frame where each row represents season and includes detail on date/season filtering windows and chronological context.
team_seasons(team = 1)team_seasons(team = 1)
team |
integer ID (e.g., 21), character full name (e.g., 'Colorado
Avalanche'), OR three-letter code (e.g., 'COL'); see |
data.frame with one row per season
COL_seasons <- team_seasons(team = 21)COL_seasons <- team_seasons(team = 21)
team_week_schedule() retrieves the schedule for a team and week since a date as a data.frame where each row represents game and includes detail on game timeline state, period/clock progression, and matchup flow, date/season filtering windows and chronological context, and team identity, affiliation, and matchup-side context.
team_week_schedule(team = 1, date = "now")team_week_schedule(team = 1, date = "now")
team |
integer ID (e.g., 21), character full name (e.g., 'Colorado
Avalanche'), OR three-letter code (e.g., 'COL'); see |
date |
character in 'YYYY-MM-DD' (e.g., '2025-01-01'); see
|
data.frame with one row per game
COL_schedule_Family_Week_2025 <- team_week_schedule( team = 21, date = '2025-10-06' )COL_schedule_Family_Week_2025 <- team_week_schedule( team = 21, date = '2025-10-06' )
teams() retrieves all the teams as a data.frame where each row represents team and includes detail on team identity, affiliation, and matchup-side context.
teams()teams()
data.frame with one row per team
all_teams <- teams()all_teams <- teams()
tv_schedule() retrieves the NHL Network TV schedule for a date as a data.frame where each row represents program and includes detail on date/season filtering windows and chronological context.
tv_schedule(date = "now")tv_schedule(date = "now")
date |
character in 'YYYY-MM-DD' (e.g., '2025-01-01'); see
|
data.frame with one row per program
tv_schedule_Halloween_2025 <- tv_schedule(date = '2025-10-31')tv_schedule_Halloween_2025 <- tv_schedule(date = '2025-10-31')
venues() retrieves all the venues as a data.frame where each row represents venue and includes detail on venue/location geography and regional metadata.
venues()venues()
data.frame with one row per venue
all_venues <- venues()all_venues <- venues()
wsc_play_by_play() retrieves the World Showcase (WSC) play-by-play for a
game as a data.frame where each row represents an event. The returned
schema follows the same cleaned public-facing naming as gc_play_by_play(),
including servedByPlayerId, goalieInNetId, and utc immediately after
secondsElapsedInGame while omitting GC-only clip fields. It also includes
the same HTML-report-derived on-ice player ID columns added to the GC output,
including dynamically expanded overflow skater slots when needed. HTML report
skater and goalie IDs are returned whenever they can be matched back to a
supported row, even when the raw situationCode is stale. Use add_shift_times()
with shift_chart() (or shift_charts()) to add on-ice shift timing columns.
wsc_play_by_play(game = 2023030417) wsc_pbp(game = 2023030417)wsc_play_by_play(game = 2023030417) wsc_pbp(game = 2023030417)
game |
integer ID (e.g., 2025020275); see |
data.frame with one row per event (play)
# May take >5s, so skip. wsc_pbp_Martin_Necas_legacy_game <- wsc_play_by_play(game = 2025020275)# May take >5s, so skip. wsc_pbp_Martin_Necas_legacy_game <- wsc_play_by_play(game = 2025020275)
wsc_play_by_play_raw() returns the raw flattened World Showcase play-by-play
as served by the NHL API for one game. Use wsc_play_by_play() for the
cleaned public schema that repairs common clock/order defects and appends the
derived public columns.
wsc_play_by_play_raw(game = 2023030417) wsc_pbp_raw(game = 2023030417)wsc_play_by_play_raw(game = 2023030417) wsc_pbp_raw(game = 2023030417)
game |
integer ID (e.g., 2025020275); see |
data.frame with one row per event (play)
wsc_raw_Martin_Necas_legacy_game <- wsc_play_by_play_raw(game = 2025020275)wsc_raw_Martin_Necas_legacy_game <- wsc_play_by_play_raw(game = 2025020275)
wsc_play_by_plays() loads the WSC play-by-plays for a given season.
wsc_play_by_plays(season = 20242025) wsc_pbps(season = 20242025)wsc_play_by_plays(season = 20242025) wsc_pbps(season = 20242025)
season |
integer in YYYYYYYY (e.g., 20242025); see |
data.frame with one row per event (play) per game
# May take >5s, so skip. wsc_pbps_20212022 <- wsc_play_by_plays(season = 20212022)# May take >5s, so skip. wsc_pbps_20212022 <- wsc_play_by_plays(season = 20212022)
wsc_play_by_plays_raw() loads the raw WSC play-by-plays for a given
season.
wsc_play_by_plays_raw(season = 20242025) wsc_pbps_raw(season = 20242025)wsc_play_by_plays_raw(season = 20242025) wsc_pbps_raw(season = 20242025)
season |
integer in YYYYYYYY (e.g., 20242025); see |
data.frame with one row per raw event (play) per game
# May take >5s, so skip. wsc_pbps_raw_20212022 <- wsc_play_by_plays_raw(season = 20212022)# May take >5s, so skip. wsc_pbps_raw_20212022 <- wsc_play_by_plays_raw(season = 20212022)
wsc_summary() retrieves the World Showcase (WSC) summary for a game as a nested list that separates summary and detail blocks for game timeline state, period/clock progression, and matchup flow, date/season filtering windows and chronological context, and venue/location geography and regional metadata.
wsc_summary(game = 2023030417)wsc_summary(game = 2023030417)
game |
integer ID (e.g., 2025020275); see |
list of various items
wsc_summary_Martin_Necas_legacy_game <- wsc_summary(game = 2025020275)wsc_summary_Martin_Necas_legacy_game <- wsc_summary(game = 2025020275)
x_game_cumulative_expected_goals() saves an X share-able cumulative xG
time-series plot for a given game as a PNG.
x_game_cumulative_expected_goals(game = 2023030417, model = NULL, save = TRUE) x_game_cum_xG(game = 2023030417, model = NULL)x_game_cumulative_expected_goals(game = 2023030417, model = NULL, save = TRUE) x_game_cum_xG(game = 2023030417, model = NULL)
game |
integer ID (e.g., 2025020275); see |
model |
deprecated legacy model selector; ignored |
save |
logical only FALSE for tests |
NULL
# May take >5s, so skip. x_game_cumulative_expected_goals( game = 2023030417, save = FALSE )# May take >5s, so skip. x_game_cumulative_expected_goals( game = 2023030417, save = FALSE )
x_game_shot_locations() saves an X share-able shot-location plot for a
given game.
x_game_shot_locations( game = 2023030417, team = "home", model = NULL, save = TRUE ) x_game_shot_locs(game = 2023030417, team = "home", model = NULL)x_game_shot_locations( game = 2023030417, team = "home", model = NULL, save = TRUE ) x_game_shot_locs(game = 2023030417, team = "home", model = NULL)
game |
integer ID (e.g., 2025020275); see |
team |
character of 'h'/'home' or 'a'/'away' |
model |
deprecated legacy model selector; ignored |
save |
logical only FALSE for tests |
NULL
# May take >5s, so skip. x_game_shot_locations( game = 2023030417, team = 'H', save = FALSE )# May take >5s, so skip. x_game_shot_locations( game = 2023030417, team = 'H', save = FALSE )