Player career by season stage and team (skater and goalie columns in one frame).
Value
A fastRhockey_data tibble with one row per season stage and team:
| col_name | type | description |
player_id | integer | Player id, read from the page's own /players/{id}/games/ tab link; equals the requested id or the capture refuses. |
season | integer | Season END year (2026 = 2025/26). |
stage | character | Season stage: regular or playoff. |
tn | integer | Tournament id of the season stage (2025/26 regular season = 1374, playoffs = 1375); vhl_tn maps season + stage to it. |
team_season_id | integer | Team-season id (khl/ terminology): one id per team per tournament, from the KHL's sequence (khl/: Spartak = 14934 in 1369; here Metallurg = 15017 in 1374). The {id} of /calendar/{tn}/0/{id}/ and /stats/players/{tn}/all/{id}/. Not the stable club id (*_club_id) and not the team page id. With tn, the bridge from a player to every tournament team he played for. |
team | character | Team short name (Latin; the report tables' form). |
jersey | integer | Jersey number worn for that team that season (#). |
games_played | integer | Games played (GP). |
goals | integer | Goals (G) the player scored in the row's scope: the game in a box score, the season stage in stats and career rows. |
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. |
points | integer | Points, goals + assists (PTS). |
plus_minus | integer | Plus/minus (+/-). |
penalty_minutes | integer | Penalty minutes (PIM). |
even_strength_goals | integer | Even-strength goals (ESG). |
power_play_goals | integer | Power-play goals (PPG). |
shorthanded_goals | integer | Shorthanded goals (SHG). |
overtime_goals | integer | Overtime goals (OTG). |
game_winning_goals | integer | Game-winning goals (GWG). |
shootout_deciding_goals | integer | Shootout-deciding goals (SDS; the legend says 'Shootouts deciding shots'). |
shots_on_goal | integer | Shots on goal (SOG). |
shot_pct | numeric | Shooting percentage, goals / shots on goal x 100 (%SOG); 0-100 scale; null when the page shows '-'. |
shots_per_game | numeric | Shots on goal per game (S/G). |
faceoffs | integer | Faceoffs taken (FO). |
faceoffs_won | integer | Faceoffs won (FOW). |
faceoff_pct | numeric | Faceoff win percentage (%FO); 0-100 scale; null when the page shows '-' (no faceoffs taken). |
toi_per_game | character | Average time on ice per game (TOI/G), 'm:ss' / 'mm:ss' string; null when the page shows '-'. |
shifts_per_game | numeric | Average shifts per game (Sft/G); integer in a one-game report, decimal in season tables. |
hits | integer | Body checks delivered (Hits). |
blocked_shots | integer | Blocked shots (BLS). |
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 '-'. |
shutouts | integer | Shutouts (SO): games in the row's scope in which the goalie allowed no goal. |
toi | character | Time on ice (TOI), 'mm:ss' string; minutes run past 59 over a season ('2314:48'); null when the page shows '-'. |
With return_parsed = FALSE, the page's parsed record (a named list) instead.
Details
Source: GET https://www.vhlru.ru/en/players/{player_id}/ (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).
See also
Other VHL Functions:
vhl_game_info(),
vhl_goalie_box(),
vhl_goalie_stats(),
vhl_goals(),
vhl_pbp(),
vhl_penalties(),
vhl_player(),
vhl_player_box(),
vhl_roster(),
vhl_schedule(),
vhl_skater_stats(),
vhl_standings(),
vhl_tn()
Examples
# \donttest{
try(vhl_player_career(player_id = 34526))
#> ── VHL Player Career Information from vhlru.ru ──────────── fastRhockey 1.1.0 ──
#> ℹ Data updated: 2026-11-02 03:53:35 UTC
#> # A tibble: 5 × 39
#> player_id season stage tn team_season_id team jersey games_played goals
#> <int> <int> <chr> <int> <int> <chr> <int> <int> <int>
#> 1 34526 2027 regular 1430 15516 Dynam… NA 0 0
#> 2 34526 2026 playoff 1375 15424 Magni… 31 11 3
#> 3 34526 2026 regular 1374 15016 Magni… 31 60 25
#> 4 34526 2025 regular 1306 14252 Omski… 94 57 14
#> 5 34526 2024 regular 1230 13642 Ryaza… 37 27 3
#> # ℹ 30 more variables: assists <int>, points <int>, plus_minus <int>,
#> # penalty_minutes <int>, even_strength_goals <int>, power_play_goals <int>,
#> # shorthanded_goals <int>, overtime_goals <int>, game_winning_goals <int>,
#> # shootout_deciding_goals <int>, shots_on_goal <int>, shot_pct <dbl>,
#> # shots_per_game <dbl>, faceoffs <int>, faceoffs_won <int>,
#> # faceoff_pct <dbl>, toi_per_game <chr>, shifts_per_game <dbl>, hits <int>,
#> # blocked_shots <int>, wins <int>, losses <int>, shootouts_played <int>, …
# }
