Skip to contents

Standings of one competition season, one row per team.

Wraps GET https://s3.eu-west-1.amazonaws.com/den.hokejovyzapis.cz/table/{season}/{league_id}.json of the Metal Ligaen eSports bucket. Example: https://s3.eu-west-1.amazonaws.com/den.hokejovyzapis.cz/table/2026/1.json. Seasons are END years (2027 = 2026/27); every request waits at least one second after the last one to the same host.

Usage

metal_standings(season, league_id = 1L, return_parsed = TRUE)

Arguments

season

Season by its END year (2027 = 2026/27). The bucket keys seasons by their START year; the wrapper requests season - 1.

league_id

Competition id. 1 = Metal Ligaen, regular season and playoffs in one file (split them by league_part_name); 2 = pre-season, 4 = Final-4 cup.

return_parsed

Parse the payload into a tibble (default TRUE); FALSE returns the raw decoded JSON body (a nested list).

Value

A tibble::tibble() with one row per row of the file (zero rows, carrying the documented columns, for an empty frame); the raw JSON list when return_parsed = FALSE. Columns:

col_nametypedescription
group_idintegerGroup id (group key space); null when the stage has no groups, so unobserved here.
group_namecharacterGroup name; empty string when the stage has no groups.
completelogicalTrue when the standings include every finished game.
team_idintegerTeam id (per-bucket team key space); joins to home_id / guest_id in the schedule.
part_team_idintegerTeam-in-league-part id (its own key space: one team in one league part); no other captured file carries it.
namecharacterTeam display name.
team_originalcharacterTeam's registered name.
shortcutcharacterThree-letter team code.
positionintegerTable position, 1 = first.
pointsintegerTable points.
gamesintegerGames played.
winsintegerWins in regulation (DEL, EIHL, Denmark) or all wins (ICEHL, see winsReg); definition per bucket unverified.
wins_otintegerWins after overtime or shootout.
wins_regintegerWins in regulation time.
tiesintegerTies (0 under current rules).
losts_otintegerLosses after overtime or shootout.
lostsintegerLosses in regulation time.
score1integerGoals the team scored (goals for).
score2integerGoals against.
goals_awayintegerGoals scored in away games.
points_awayintegerTable points from away games.
last10characterForm over the last ten games as a result string; empty string in the samples.
only_ot_winsintegerWins in overtime.
only_so_winsintegerWins in a shootout.
only_ot_lostsintegerLosses in overtime.
only_so_lostsintegerLosses in a shootout.
qualifiedlogicalTrue when the team has clinched qualification.
livelogicalTrue while the team is playing a live game.
live_game_scorecharacterScore of the live game; null when none, so unobserved here.
position_changeintegerChange in table position since the previous round.
ppgnumericPoints per game.

Errors

Signalled as classed conditions: fastRhockey_no_data when the bucket has no such key (S3 404 NoSuchKey: unknown season, competition, match or team) or the file holds no rows (an unplayed game, an empty shot shell); fastRhockey_asset_fetch for any other non-2xx answer (403 AccessDenied), a connection failure after retries, an empty or unreadable 200 body, an error envelope, a body of the wrong shape, or a body for another season or game; fastRhockey_bad_request for an HTTP 400/422 or an invalid argument. All three also inherit fastRhockey_error. Wrappers raise; they never warn and return an empty frame.

See also

Metal Ligaen (the league site whose widgets read this public eSports bucket)

Other Metal Ligaen eSports functions: metal_game_center(), metal_game_info(), metal_goalie_box(), metal_pbp(), metal_player_box(), metal_schedule(), metal_top_scorers()

Examples

# \donttest{
  try(metal_standings(season = 2027, league_id = 1))
#> ── Metal Ligaen standings from the eSports hokejovyzapis bucket ────────────────
#> ℹ Data updated: 2026-10-13 01:57:01 UTC
#> # A tibble: 9 × 31
#>   group_id group_name complete team_id part_team_id name  team_original shortcut
#>      <int> <chr>      <lgl>      <int>        <int> <chr> <chr>         <chr>   
#> 1       NA ""         TRUE           6           42 Hern… Herning Blue… HER     
#> 2       NA ""         TRUE           3           40 Fred… Frederikshav… FRE     
#> 3       NA ""         TRUE           5           39 Esbj… Esbjerg Ener… ESB     
#> 4       NA ""         TRUE           7           41 Herl… Herlev Eagles HLV     
#> 5       NA ""         TRUE           4           38 Aalb… Aalborg Pira… AAL     
#> 6       NA ""         TRUE           9           43 Oden… Odense Bulld… ODE     
#> 7       NA ""         TRUE           2           46 Sønd… Sønderjyske … SON     
#> 8       NA ""         TRUE           1           45 Rung… Rungsted Sei… RUN     
#> 9       NA ""         TRUE           8           44 Rødo… Rødovre Migh… ROD     
#> # ℹ 23 more variables: position <int>, points <int>, games <int>, wins <int>,
#> #   wins_ot <int>, wins_reg <int>, ties <int>, losts_ot <int>, losts <int>,
#> #   score1 <int>, score2 <int>, goals_away <int>, points_away <int>,
#> #   last10 <chr>, only_ot_wins <int>, only_so_wins <int>, only_ot_losts <int>,
#> #   only_so_losts <int>, qualified <lgl>, live <lgl>, live_game_score <chr>,
#> #   position_change <int>, ppg <dbl>
# }