Skip to contents

One team's games for one season.

Usage

nl_team_schedule(team_id, season = NULL, return_parsed = TRUE)

Arguments

team_id

SIHF team id (team_id in nl_standings(); the same id as the SIHF family's team_id), e.g. 101144 (EV Zug). A whole number or a digit string.

season

Season END year (2026 is 2025/26), sent to the API unchanged. Changing it changes every list, so it scopes the answer. Lists are served for 2019-2027 (the app's season picker) and patchily before: 2012 and 2017 answered, 2010/2014/2015/2016/2018 answered an empty list (probed 2026-10-12). NULL (the default) leaves the choice to the API.

return_parsed

Logical. TRUE (the default) returns the fastRhockey_data tibble; FALSE returns the raw JSON body as a nested list (api keys already dropped).

Value

A fastRhockey_data tibble (29 columns) with the columns below, or the raw JSON body when return_parsed = FALSE. A valid but empty payload returns a zero-row tibble with these columns.

col_nametypedescription
game_idnumericSIHF game id <season(4)><competition(4)><sequence(6)> (whole number; e.g. 20261105000325, 1105 = National League). The same id as the sihf family's game_id; its first four digits are the season END year.
home_team_short_namecharacterHome team abbreviation (e.g. HCD)
home_team_namecharacterHome team display name
away_team_short_namecharacterAway team abbreviation
away_team_namecharacterAway team display name
home_team_idnumericHome team. SIHF team id (whole number; e.g. 101151 = HC Davos). The same key space as the sihf family's team_id.
away_team_idnumericAway team. SIHF team id (whole number; e.g. 101151 = HC Davos). The same key space as the sihf family's team_id.
vimeo_video_idnumericFull-game video. Vimeo video id (whole number): vimeo.com/<id>.
datecharacterScheduled start, ISO 8601 with UTC offset
statuscharacterGame state: finished, canceled, beforeStartOfPlay (others appear live)
base_statuscharacterCoarse game state; equal to status in every sampled game
home_team_resultintegerHome team goals (final or current score; 0 before the game)
away_team_resultintegerAway team goals (final or current score; 0 before the game)
is_overtimelogicalGame went to overtime
is_shootoutlogicalGame went to a shootout
highlight_vimeo_video_idnumericHighlights video. Vimeo video id (whole number): vimeo.com/<id>.
has_highlightlogicalA highlight video exists
is_currentlogicalGame belongs to the current game day
is_current_for_teamlogicalGame is the team's current game (team-scoped views)
tv_partnercharacterBroadcaster logo image URLs; unobserved: null, absent or empty in every sampled row
spectatorsintegerAttendance (whole number; the API sends a digit string).
has_my_sportslogicalBroadcast on MySports
refereescharacterOfficials as '#<number> <name>' strings (referees and linesmen; one entry in some games)
is_exhibitionlogicalExhibition game, not NL competition (competition code other than 1105)
home_team_coachcharacterHome head coach name; filled in a game's overview, null in the season lists; unobserved: null, absent or empty in every sampled row
away_team_coachcharacterAway head coach name; filled in a game's overview, null in the season lists; unobserved: null, absent or empty in every sampled row
game_timeintegerElapsed game minutes; 0 on every game in the season lists, 60 in a finished game's overview
show_game_timelogicalApp flag: show gameTime
arenacharacterName of the arena the game is played in

Details

Polite use. www.nationalleague.ch/robots.txt disallows /api, so keep use light and incremental. Requests are spaced at least one second apart (on every attempt, retries included). Check the site's terms of use before any bulk download or redistribution. Crawl incrementally: fetch a finished game once (keyed by game_id), find new games with one nl_schedule() call per run, and fetch season tables at most once per game day.

Seasons are END years and go on the wire unchanged. Ids (*_id) are whole-number numeric (a 14-digit game_id exceeds R's 32-bit integer); every other whole-number column is integer. The club backend key the API ships in /teams/{id}/info is dropped before parsing and never returned.

Endpoint: GET https://www.nationalleague.ch/api/games/team/{teamId}.

Errors

Raises a classed condition (all inherit fastRhockey_error): fastRhockey_no_data for a 404 or an empty answer (no games or rows for that season, team or phase), fastRhockey_asset_fetch for a failed fetch, an error object in a 200, a body without the ids it must carry, or an answer for another season, team, game or player, and fastRhockey_bad_request for a 400/422 or an argument that is not a whole number.

Examples

# \donttest{
  try(nl_team_schedule(season = 2026, team_id = 101144))
#> ── National League Team Schedule Information from nationalleague.ch ────────────
#> ℹ Data updated: 2026-11-02 03:52:01 UTC
#> # A tibble: 63 × 29
#>    game_id home_team_short_name home_team_name       away_team_short_name
#>      <dbl> <chr>                <chr>                <chr>               
#>  1 2.03e13 EVZ                  EV Zug               Motor Ceske Budejovi
#>  2 2.03e13 EVZ                  EV Zug               Red Bull München    
#>  3 2.03e13 EC Red Bull Salzburg EC Red Bull Salzburg EVZ                 
#>  4 2.03e13 EVZ                  EV Zug               Rögle BK            
#>  5 2.03e13 EVZ                  EV Zug               SCB                 
#>  6 2.03e13 HCL                  HC Lugano            EVZ                 
#>  7 2.03e13 EVZ                  EV Zug               SCL                 
#>  8 2.03e13 EVZ                  EV Zug               FRI                 
#>  9 2.03e13 EHCK                 EHC Kloten           EVZ                 
#> 10 2.03e13 EVZ                  EV Zug               SCRJ                
#> # ℹ 53 more rows
#> # ℹ 25 more variables: away_team_name <chr>, home_team_id <dbl>,
#> #   away_team_id <dbl>, vimeo_video_id <dbl>, date <chr>, status <chr>,
#> #   base_status <chr>, home_team_result <int>, away_team_result <int>,
#> #   is_overtime <lgl>, is_shootout <lgl>, highlight_vimeo_video_id <dbl>,
#> #   has_highlight <lgl>, is_current <lgl>, is_current_for_team <lgl>,
#> #   tv_partner <chr>, spectators <int>, has_my_sports <lgl>, referees <chr>, …
# }