Skip to contents

Goalie box score of a game: shots against, saves, save percentage and time on ice.

Usage

vhl_goalie_box(season, game_id, stage = "regular", return_parsed = TRUE)

Arguments

season

Season END year (2026 = 2025/26; the calendar covers 2010/11 on). With stage it is mapped to the site's tournament id, see vhl_tn().

game_id

Required. Game id (game_id in vhl_schedule; the report's and the broadcast's idgame), e.g. 899223.

stage

Season stage: "regular" (default) or "playoff".

return_parsed

TRUE (default) returns the parsed tibble; FALSE returns the page's parsed record (a named list, plus _request with the season, stage, tn and the ids asked for).

Value

A fastRhockey_data tibble with one row per goalie:

col_nametypedescription
game_idintegerGame id (the calendar's game_id; the report's and the broadcast's idgame). The report and broadcast pages do not print it: it comes from the request.
seasonintegerSeason END year (2026 = 2025/26).
stagecharacterSeason stage: regular or playoff.
game_numberintegerOfficial game number (from 'No.984'); checked against the request.
team_sidecharacterSide of the game the row belongs to: home or away.
team_page_idintegerTeam page id (vhlru.ru /en/teams/{team_page_id}/), stable across seasons; for report rows the page id of the row's side.
teamcharacterTeam short name (Latin; the report tables' form).
jerseyintegerJersey number (integer).
player_idintegerPlayer id: the {player_id} of /en/players/{player_id}/, stable across seasons and teams; also the photo id on img.khl.ru. Same numeric sequence as khl.ru player ids; whether it equals the same person's khl.ru id is unverified.
playercharacterPlayer name, 'Surname Given' (Latin on /en/ pages).
captaincycharacterUnobserved in samples (null in every capture); type and meaning unverified.
games_playedintegerGames played (GP).
winsintegerGoalie wins (W).
lossesintegerGoalie losses (L).
shootouts_playedintegerShootouts played (SOP).
shots_againstintegerShots on goal faced (the SOG column of goalie tables).
goals_againstintegerGoals allowed (GA).
savesintegerSaves (Sv): shots on goal the goalie stopped in the row's scope (the game, or the season stage in stats and career rows).
save_pctnumericSave percentage (%Sv); 0-100 scale (93.8 = 93.8 %); null when the page shows '-'.
gaanumericGoals-against average (GAA) = 60 x GA / TOI minutes; null when the page shows '-'.
assistsintegerAssists (A) credited to the player in the row's scope: the game in a box score, the season stage in stats and career rows.
shutoutsintegerShutouts (SO): games in the row's scope in which the goalie allowed no goal.
penalty_minutesintegerPenalty minutes (PIM).
toicharacterTime on ice in this game, 'mm:ss'; null for a dressed goalie who did not play ('-').

With return_parsed = FALSE, the page's parsed record (a named list) instead.

Details

Source: GET https://www.vhlru.ru/en/report/{season}/ (server-rendered HTML, keyless; parsed with rvest). Unofficial use of a public source; payloads are not redistributed.

Terms of use

Check the provider's terms of use before redistributing this data.

Errors

  • fastRhockey_no_data: the VHL has nothing for the request (a season without that stage, a game not in the season's calendar, an unknown game, player or team page).

  • fastRhockey_bad_request: a bad season / stage / id, a missing argument, or HTTP 400 / 422.

  • fastRhockey_asset_fetch: the page could not be fetched, or it is not the page asked for (another season, game or player; a missing table or header drift).

Examples

if (FALSE) { # interactive()
# \donttest{
  try(vhl_goalie_box(season = 2026, game_id = 899223))
# }
}