Goaltender season totals: games, starts, goals against, GAA, shots, saves, save percentage, ice time.
Reads the Swiss Ice Hockey Federation statistics API (data.sihf.ch, keyless JSON). SIHF keys a
season by its END year (2026 = 2025-26). An unknown season, league_id or phase_id is never an
error upstream (SIHF silently answers another one), so every table answer is checked against the
body's own filter echo and refused when it differs. Every request is spaced at least one second
from the last one to the host.
Arguments
- season
Required. Season by its END year (2026 = 2025-26). A season SIHF does not have raises
fastRhockey_no_dataerror (the API itself silently answers another one).- league_id
SIHF league id: 1 = National League, 2 = Swiss League, 100 = MyHockey League, 3 = 1. Liga, 43 = SWHL B, 113 = U21-Elit (the body's League filter lists them). An id SIHF does not have for the season raises
fastRhockey_no_dataerror.- phase_id
SIHF phase id (regular season, a playoff round, ...; the body's Phase filter lists them).
NULL= no phase filter: the season summary over every phase (player / goalie tables), every game (results), the regular-season table (standings).- language
Response language. Only part of the body is translated: status, position and penalty names stay German.
Value
A fastRhockey_data tibble with 19 columns. A zero-row tibble with these columns when the
payload holds no rows.
| col_name | type | description |
| season | integer | Season by its END year (2026 = 2025-26), from the body's echo of the Season filter. |
| phase_id | integer | SIHF phase id (regular season, a playoff round, ...); null unless a phase filter is passed. |
| rank | integer | Rank in the table; null on a summary row. |
| player | character | Player name as SIHF prints it, last name first (e.g., "Dahlbeck Klas"). |
| team_id | integer | SIHF team id (integer join key). |
| team_name | character | Team display name as SIHF publishes it. |
| team_acronym | character | Team abbreviation as SIHF publishes it (e.g., "HCD"). |
| games_played | integer | Games the goaltender dressed for. |
| first_keeper | integer | Games listed as the starting goaltender. |
| goals_against | integer | Goals allowed by the goaltender. |
| goals_against_average | numeric | Goals against per 60 minutes. |
| shots_against | integer | Shots on goal faced. |
| saves | integer | Shots on goal saved by the goaltender. |
| saves_percentage | numeric | Save percentage on a 0-100 scale (91.25 = .9125). |
| seconds_played | character | Ice time as "mm:ss" (a string, despite the upstream name). Minutes are not capped at 59: an overtime game reads "65:00", a season total "3615:02". |
| penalty_in_minutes | integer | Penalty minutes. |
| goals | integer | Goals scored by the goaltender (almost always 0). |
| assists | integer | Assists by the goaltender. |
| row_type | character | "data" for a regular row; "average" or "total" for a summary row SIHF mixes into the table. |
Errors
fastRhockey_no_data: SIHF answered 404 (unknown game), or ignored a requested season, league or phase and served another one.fastRhockey_bad_request: SIHF answered 400 / 422, or an argument is invalid.fastRhockey_asset_fetch: any other non-2xx answer or a dead connection after retries, an empty or unreadable body, a stub or redirect body, a table without its filter echo, a truncated table, or agameoverviewbody for another game.
See also
Other SIHF Functions:
sihf_game_goalie_stats(),
sihf_game_info(),
sihf_game_lineups(),
sihf_game_player_stats(),
sihf_game_team_stats(),
sihf_goalie_shootouts(),
sihf_goalie_shots(),
sihf_goalie_wins(),
sihf_pbp(),
sihf_phases(),
sihf_player_faceoffs(),
sihf_player_faceoffs_by_zone(),
sihf_player_faceoffs_by_zone_per_game(),
sihf_player_goals_assists(),
sihf_player_penalties(),
sihf_player_shootouts(),
sihf_player_shots(),
sihf_player_stats(),
sihf_player_time_on_ice(),
sihf_results(),
sihf_standings(),
sihf_team_attendance(),
sihf_team_faceoffs(),
sihf_team_faceoffs_by_zone(),
sihf_team_faceoffs_by_zone_per_game(),
sihf_team_goals(),
sihf_team_goals_by_position(),
sihf_team_penalties(),
sihf_team_penalty_kill(),
sihf_team_power_play(),
sihf_team_shootouts(),
sihf_team_shots()
Examples
# \donttest{
try(sihf_goalie_stats(season = 2026, league_id = 1))
#> ── SIHF Goalie Stats Information from data.sihf.ch ─── fastRhockey 1.0.0.9000 ──
#> ℹ Data updated: 2026-10-13 01:59:42 UTC
#> # A tibble: 35 × 19
#> season phase_id rank player team_id team_name team_acronym games_played
#> <int> <int> <int> <chr> <int> <chr> <chr> <int>
#> 1 2026 NA 1 Hrubec Sim… 101139 ZSC Lions ZSC 60
#> 2 2026 NA 2 Reideborn … 102126 SC Bern SCB 39
#> 3 2026 NA 3 Berra Reto 103138 Fribourg… FRI 75
#> 4 2026 NA 4 Aeschliman… 101151 HC Davos HCD 67
#> 5 2026 NA 5 Meyer Robin 102127 SCL Tige… SCL 22
#> 6 2026 NA 6 Schlegel N… 101150 HC Lugano HCL 42
#> 7 2026 NA NA Durchschni… NA Durchsch… NA 44
#> 8 2026 NA 7 Charlin St… 103140 Genève-S… GSHC 66
#> 9 2026 NA 8 Waeber Lud… 101149 EHC Klot… EHCK 25
#> 10 2026 NA 9 Genoni Leo… 101144 EV Zug EVZ 52
#> # ℹ 25 more rows
#> # ℹ 11 more variables: first_keeper <int>, goals_against <int>,
#> # goals_against_average <dbl>, shots_against <int>, saves <int>,
#> # saves_percentage <dbl>, seconds_played <chr>, penalty_in_minutes <int>,
#> # goals <int>, assists <int>, row_type <chr>
# }
