Skip to contents

League standings of one regular season (/standings/league/; /standings/regular/ ignores the season).

Usage

vhl_standings(season, 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().

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 team:

col_nametypedescription
seasonintegerSeason END year (2026 = 2025/26).
stagecharacterSeason stage: regular or playoff.
tnintegerTournament id of the season stage (2025/26 regular season = 1374, playoffs = 1375); vhl_tn maps season + stage to it.
rankintegerRank (unlabelled first column).
teamcharacterTeam short name (Latin; the report tables' form).
team_season_idintegerTeam-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.
games_playedintegerGames played (GP).
winsintegerRegulation wins (W).
ot_winsintegerOvertime wins (OTW).
so_winsintegerShootout wins (SOW).
so_lossesintegerShootout losses (SOL).
ot_lossesintegerOvertime losses (OTL).
lossesintegerRegulation losses (L).
goals_forintegerGoals for (left side of the G column '226-131').
goals_againstintegerGoals against (right side of the G column).
pointsintegerPoints (PTS): 2 per win of any kind, 1 per OT or SO loss.

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

Details

Regular season only: the site's playoff standings are not read.

Source: GET https://www.vhlru.ru/en/standings/league/{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

# \donttest{
  try(vhl_standings(season = 2026))
#> ── VHL Standings Information from vhlru.ru ──────────────── fastRhockey 1.1.0 ──
#> ℹ Data updated: 2026-11-02 03:53:39 UTC
#> # A tibble: 32 × 16
#>    season stage      tn  rank team     team_season_id games_played  wins ot_wins
#>     <int> <chr>   <int> <int> <chr>             <int>        <int> <int>   <int>
#>  1   2026 regular  1374     1 Metallu…          15017           62    40       5
#>  2   2026 regular  1374     2 Ugra              15035           62    39       4
#>  3   2026 regular  1374     3 Neftyan…          15019           62    34       3
#>  4   2026 regular  1374     4 Khimik            15029           62    35       3
#>  5   2026 regular  1374     5 Magnitka          15016           62    26       7
#>  6   2026 regular  1374     6 Ryazan-…          15024           62    30       4
#>  7   2026 regular  1374     7 Omskie …          15021           62    30       4
#>  8   2026 regular  1374     8 Gornyak…          15008           62    25       3
#>  9   2026 regular  1374     9 Molot             15018           62    22       4
#> 10   2026 regular  1374    10 Chelmet           15033           62    30       3
#> # ℹ 22 more rows
#> # ℹ 7 more variables: so_wins <int>, so_losses <int>, ot_losses <int>,
#> #   losses <int>, goals_for <int>, goals_against <int>, points <int>
# }