Goalie box score of a game: shots against, saves, save percentage and time on ice.
Arguments
- season
Season END year (2026 = 2025/26; the calendar covers 2010/11 on). With
stageit is mapped to the site's tournament id, seevhl_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;FALSEreturns the page's parsed record (a named list, plus_requestwith the season, stage, tn and the ids asked for).
Value
A fastRhockey_data tibble with one row per goalie:
| col_name | type | description |
game_id | integer | Game 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. |
season | integer | Season END year (2026 = 2025/26). |
stage | character | Season stage: regular or playoff. |
game_number | integer | Official game number (from 'No.984'); checked against the request. |
team_side | character | Side of the game the row belongs to: home or away. |
team_page_id | integer | Team page id (vhlru.ru /en/teams/{team_page_id}/), stable across seasons; for report rows the page id of the row's side. |
team | character | Team short name (Latin; the report tables' form). |
jersey | integer | Jersey number (integer). |
player_id | integer | Player 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. |
player | character | Player name, 'Surname Given' (Latin on /en/ pages). |
captaincy | character | Unobserved in samples (null in every capture); type and meaning unverified. |
games_played | integer | Games played (GP). |
wins | integer | Goalie wins (W). |
losses | integer | Goalie losses (L). |
shootouts_played | integer | Shootouts played (SOP). |
shots_against | integer | Shots on goal faced (the SOG column of goalie tables). |
goals_against | integer | Goals allowed (GA). |
saves | integer | Saves (Sv): shots on goal the goalie stopped in the row's scope (the game, or the season stage in stats and career rows). |
save_pct | numeric | Save percentage (%Sv); 0-100 scale (93.8 = 93.8 %); null when the page shows '-'. |
gaa | numeric | Goals-against average (GAA) = 60 x GA / TOI minutes; null when the page shows '-'. |
assists | integer | Assists (A) credited to the player in the row's scope: the game in a box score, the season stage in stats and career rows. |
shutouts | integer | Shutouts (SO): games in the row's scope in which the goalie allowed no goal. |
penalty_minutes | integer | Penalty minutes (PIM). |
toi | character | Time 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.
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 badseason/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))
# }
}
