Skip to contents

CURRENT roster of a team page (player names in Cyrillic even on /en/).

Usage

vhl_roster(team_page_id, return_parsed = TRUE)

Arguments

team_page_id

Team page id (home_team_page_id / away_team_page_id in vhl_game_info), e.g. 390. Neither a club id nor a team-season id.

return_parsed

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

Value

A fastRhockey_data tibble with one row per player:

col_nametypedescription
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).
calendar_tnintegerTournament id of the team's CURRENT season stage (the page's 'To the calendar' link).
calendar_team_season_idintegerThe team's team-season id in calendar_tn.
roster_as_ofcharacterDate the roster is valid for, as printed ('12.10.2026').
jerseyintegerJersey number (integer).
positioncharacterPosition in English, lower case: goaltender, defense, forward.
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' — in CYRILLIC even on the /en/ page.
borncharacterBirth date 'DD.MM.YYYY' as the public page prints it.
countrycharacterCitizenship (English).

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

Details

The roster is the team page's CURRENT one (names are Cyrillic even on /en/), not a season's.

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

Owner flag (sanctions)

The VHL is run by Russian league operators, and several clubs are owned or sponsored by sanctioned state companies. Fetching on your own machine is fine; a published data release or a hosted mirror of this data needs the owner's sanctions / legal sign-off first.

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_roster(team_page_id = 390))
#> ── VHL Roster Information from vhlru.ru ────────────── fastRhockey 1.0.0.9000 ──
#> ℹ Data updated: 2026-10-13 02:00:27 UTC
#> # A tibble: 27 × 11
#>    team_page_id team  calendar_tn calendar_team_season_id roster_as_of jersey
#>           <int> <chr>       <int>                   <int> <chr>         <int>
#>  1          390 Toros        1430                   15531 13.10.2026       40
#>  2          390 Toros        1430                   15531 13.10.2026       28
#>  3          390 Toros        1430                   15531 13.10.2026       97
#>  4          390 Toros        1430                   15531 13.10.2026       31
#>  5          390 Toros        1430                   15531 13.10.2026       25
#>  6          390 Toros        1430                   15531 13.10.2026       71
#>  7          390 Toros        1430                   15531 13.10.2026       36
#>  8          390 Toros        1430                   15531 13.10.2026       49
#>  9          390 Toros        1430                   15531 13.10.2026       46
#> 10          390 Toros        1430                   15531 13.10.2026       19
#> # ℹ 17 more rows
#> # ℹ 5 more variables: position <chr>, player_id <int>, player <chr>,
#> #   born <chr>, country <chr>
# }