Skip to contents

League table of every season (one row per season per team, from the championship table).

Usage

khl_webcaster_tables(locale = "en", return_parsed = TRUE)

Arguments

locale

Response language: en or ru. One of en, ru.

return_parsed

Logical. TRUE (default) returns the parsed fastRhockey_data tibble; FALSE returns the raw JSON body as a list (betting fields and the caller's IP removed).

Value

A fastRhockey_data tibble (29 columns; zero rows with the same columns when the payload is empty), or the raw body as a list when return_parsed = FALSE. Raises fastRhockey_no_data (nothing there, or an unknown season / stage), fastRhockey_asset_fetch (an error envelope, an answer for another id than the one asked, or a failed fetch) and fastRhockey_bad_request (an invalid argument or an HTTP 400 / 422).

col_nametypesdescription
seasonintegerSeason END year (2026 = 2025-26)
season_labelcharacterSeason label as sent (26/27, 2025/2026)
rankinteger1-based position in its table / list
gpintegerGames played (gp = w + otw + sow + sol + otl + l)
wintegerRegulation wins only: overtime (otw) and shootout (sow) wins are separate columns
otwintegerOvertime wins (not counted in w)
sowintegerShootout wins (not counted in w)
solintegerShootout losses
otlintegerOvertime losses
otl_enintegerOvertime losses with the net empty
lintegerRegulation losses only: overtime (otl) and shootout (sol) losses are separate columns
ptsintegerPoints: 2 per win of any kind, 1 per overtime or shootout loss (3-2-1 in early seasons such as 2013-14)
pts_pctnumericPoints percentage
soaintegerShutouts against, 1-7 a season (the refs say shots on goal against; the values do not fit that; unverified)
sointegerShutouts (refs: khl-returns.md tables_v2)
gfintegerGoals scored by the team
gaintegerGoals allowed by the team
pimintegerPenalty minutes
pimaintegerOpponents' penalty minutes
idintegerWebcaster id of the stages object (webcaster key space); no khl.ru counterpart in the body
khl_idintegerkhl.ru club id of the championship object (site key space): the join key to khl-rest
imagecharacterTeam logo URL (webcaster thumbnail)
tv_imagecharacterTeam logo path on the KHL TV front end
namecharacterName (English with locale=en)
locationcharacterTeam city / region (English with locale=en)
divisioncharacterDivision name (English with locale=en)
division_keycharacterDivision key (bobrov, tarasov, kharlamov, chernyshev)
conferencecharacterConference (west / east)
conference_keycharacterConference key (east / west)

Details

Endpoint: GET https://khl.api.webcaster.pro/api/khl_mobile/tables_v2.json.

The webcaster API is keyless JSON. Neither backend takes a year: season (the END year, 2026 = 2025/26) and stage are mapped to the webcaster stage id through the season table of khl_webcaster_stages() (cached for the R session), or pass stage_id. Honours getOption("fastRhockey.proxy"); betting fields and the caller's IP are removed from every body.

Ids and counts are integers (sdv-py Int64); a column holding values past 2^31 (epoch milliseconds) is returned as a whole-number double.

At least one second is left between two requests to a host.

Owner flag (sanctions). The KHL and its webcaster platform are run by Russian operators, some clubs by sanctioned state companies. Fetching on your own machine is fine; any published data release, hosted mirror or redistribution needs owner (sanctions / legal) sign-off first.

Examples

# \donttest{
  try(khl_webcaster_tables())
#> ── KHL Webcaster Tables from khl.api.webcaster.pro ─── fastRhockey 1.0.0.9000 ──
#> ℹ Data updated: 2026-10-13 01:55:09 UTC
#> # A tibble: 468 × 29
#>    season season_label  rank    gp     w   otw   sow   sol   otl otl_en     l
#>     <dbl> <chr>        <int> <int> <int> <int> <int> <int> <int>  <int> <int>
#>  1   2026 2025/2026        1    68    37     8     4     3     4      0    12
#>  2   2026 2025/2026        2    68    36     6     5     1     4      0    16
#>  3   2026 2025/2026        3    68    34     6     6     2     4      0    16
#>  4   2026 2025/2026        4    68    38     2     3     6     2      0    17
#>  5   2026 2025/2026        5    68    33     2     4     5     5      0    19
#>  6   2026 2025/2026        6    68    29     9     2     4     2      0    22
#>  7   2026 2025/2026        7    68    33     3     2     7     1      0    22
#>  8   2026 2025/2026        8    68    32     4     4     0     4      0    24
#>  9   2026 2025/2026        9    68    28     7     2     4     3      0    24
#> 10   2026 2025/2026       10    68    27     6     4     2     5      0    24
#> # ℹ 458 more rows
#> # ℹ 18 more variables: pts <int>, pts_pct <dbl>, soa <int>, so <int>, gf <int>,
#> #   ga <int>, pim <int>, pima <int>, id <int>, khl_id <int>, image <chr>,
#> #   tv_image <chr>, name <chr>, location <chr>, division <chr>,
#> #   division_key <chr>, conference <chr>, conference_key <chr>
# }