Game info: teams, score, arena, officials, starting goalies (one row).
Usage
khl_game_info(
game_id,
season = NULL,
stage = "regular",
headers = NULL,
tournament_id = NULL,
return_parsed = TRUE
)Arguments
- game_id
Required. khl.ru game id (the schedule's game_id; equals webcaster event khl_id).
- season
Season by its END year (2026 = 2025-26), mapped to the KHL tournament id (tnId) through the webcaster season table (khl_webcaster_stages). The game's season; required unless tournament_id is given.
- stage
Which stage of the season: regular or playoff. One of
regular,playoff.- headers
Named list of extra request headers, merged over the defaults (
X-Requested-With,Origin,Referer). The cookie jar andsessidare kept in-process, so nothing needs reusing across calls.- tournament_id
khl.ru tournament id (tnId), sent as is instead of season / stage (1369 = 2025-26 regular season, 1370 its playoff; the schedule's tournament_id column). The All-Star games have their own.
- return_parsed
Logical.
TRUE(default) returns the parsedfastRhockey_datatibble;FALSEreturns the raw khl.ru envelope as a list (status,data,errors; betting fields removed).
Value
A fastRhockey_data tibble (71 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_name | types | description |
| game_id | integer | khl.ru game id; equals webcaster event khl_id / match_id |
| tournament_id | integer | khl.ru tournament (stage) id, tnId: 1369 = 2025-26 regular season, 1370 its playoff; equals webcaster stage khl_id |
| home_club_id | integer | Home CLUB id (stable across seasons; joins webcaster team khl_id) |
| home_team_season_id | integer | Home team-season id (one per tournament; joins nothing in the webcaster API) |
| away_club_id | integer | Visitor CLUB id (stable across seasons; joins webcaster team khl_id) |
| away_team_season_id | integer | Visitor team-season id (one per tournament; joins nothing in the webcaster API) |
| arena_id | integer | khl.ru arena id |
| home_score | integer | Home goals (final, shootout winner counted) |
| away_score | integer | Visitor goals (final, shootout winner counted) |
| round | integer | Playoff round number |
| roundname | character | Round label in Russian ('Nedelya 29' = Week 29) |
| roundname_en | character | Round label in English |
| date | character | Game date YYYY-MM-DD (Moscow time) |
| dayofweek | integer | Day of week, 1 = Sunday (6 = Friday 2026-03-20) |
| time | character | Start time hh:mm:ss (Moscow time); not a game clock |
| changes | integer | Count of changes to the game record (0 in the captured bodies; unverified) |
| number | integer | Game number within the tournament |
| home_name_l3 | character | Home club 3-letter code in Russian |
| home_name_en | character | Home club name in English |
| home_name_l3_en | character | Home club 3-letter code in English |
| home_city_en | character | Home club city in English |
| visitor_name_l3 | character | Visiting club 3-letter code in Russian |
| visitor_name_en | character | Visiting club name in English |
| visitor_name_l3_en | character | Visiting club 3-letter code in English |
| visitor_city_en | character | Visiting club city in English |
| arena | character | Arena name in Russian |
| arena_en | character | Arena name in English |
| arena_city | character | Arena city in Russian |
| arena_city_en | character | Arena city in English |
| msktime_sft | integer | Offset of local time from Moscow time, hours (unverified) |
| gmttime_sft | integer | Offset of Moscow time from GMT, hours (unverified) |
| temp | character | Undocumented provider field temp; carried as sent. |
| score | character | Final score 'home:visitor' |
| ots | character | How the game ended: empty = regulation, OT = overtime, SO = shootout |
| sc_p1 | character | 1st-period score 'home:visitor' |
| sc_p2 | character | 2nd-period score 'home:visitor' |
| sc_p3 | character | 3rd-period score 'home:visitor' |
| sc_p4 | character | Overtime or shootout score 'home:visitor' |
| attendance | integer | Attendance (numeric string) |
| approved | integer | 1 = result confirmed by the league |
| format_date_day | character | Game date YYYY-MM-DD (Moscow time), as the site formats it |
| time_format | character | Start time hh:mm (Moscow time) |
| full_date | integer | Start time, unix seconds (UTC) |
| date_type | character | Front-end date bucket of the game relative to today ('last' = already played; other values unverified) |
| type | character | Game state/type code (sogame = finished in a shootout) |
| winner | character | Winning side: A = home, B = visitor |
| visible_date | character | Short display date in Russian ('20 mar' = 20 March) |
| visible_date_full | character | Display date in Russian without the year ('20 marta') |
| visible_date_full2 | character | Display date in Russian with the year ('20 marta 2026') |
| visible_date_day | character | Abbreviated weekday in Russian ('pt' = Friday) |
| statusvalue | character | Game status in Russian (match zavershen = match finished) |
| pernum | integer | Number of regulation periods played |
| numlines | integer | Number of lines on the line-up card |
| gk_a_jn | integer | Home starting goalie's JERSEY number (gameItem.gkA), not an id |
| gk_b_jn | integer | Visitor starting goalie's JERSEY number (gameItem.gkB), not an id |
| is_events_have_multi_ovt | logical | True when the game has more than one overtime period (playoff) |
| idmainref1 | integer | Referee 1: khl.ru referee id |
| idmainref2 | integer | Referee 2: khl.ru referee id |
| idlineref1 | integer | Linesman 1: khl.ru referee id |
| idlineref2 | integer | Linesman 2: khl.ru referee id |
| jnmainref1 | character | Referee 1 sweater number |
| jnmainref2 | character | Referee 2 sweater number |
| jnlineref1 | character | Linesman 1 sweater number |
| jnlineref2 | character | Linesman 2 sweater number |
| refm1 | character | Referee 1, name in Russian |
| refm2 | character | Referee 2, name in Russian |
| refl1 | character | Linesman 1, name in Russian |
| refl2 | character | Linesman 2, name in Russian |
| status | integer | Game status code (90 = finished; other codes UNVERIFIED) |
| gk_a_player_id | integer | khl.ru player id of the home starting goalie (gk_a_jn resolved through players) |
| gk_b_player_id | integer | khl.ru player id of the visitor starting goalie (gk_b_jn resolved through players) |
Details
Endpoint: POST https://www.khl.ru/rest/game/text/.
khl.ru REST needs a primed session (a GET of the site root sets the cookie jar and the Bitrix
sessid, then each call POSTs a form); this is done for you, one session per host per R session,
re-primed when the site rotates its cookie or the sessid expires. No route takes a year:
season (the END year, 2026 = 2025/26) and stage are mapped to the tournament id (tnId)
through the webcaster season table, or pass tournament_id (the All-Star games have their own
tnId).
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.
See also
Other KHL Functions:
khl_game_header(),
khl_game_protocol(),
khl_pbp(),
khl_player_box(),
khl_player_career(),
khl_player_profile(),
khl_player_stats(),
khl_playoff_bracket(),
khl_roster(),
khl_schedule(),
khl_shots(),
khl_standings(),
khl_stat_filters(),
khl_webcaster_event(),
khl_webcaster_events(),
khl_webcaster_leaders(),
khl_webcaster_players(),
khl_webcaster_players_light(),
khl_webcaster_stages(),
khl_webcaster_tables(),
khl_webcaster_team(),
khl_webcaster_teams()
Examples
# \donttest{
try(khl_game_info(game_id = 898236, season = 2026))
#> ── KHL Game Info from khl.ru ───────────────────────── fastRhockey 1.0.0.9000 ──
#> ℹ Data updated: 2026-10-13 01:54:39 UTC
#> # A tibble: 1 × 71
#> game_id tournament_id home_club_id home_team_season_id away_club_id
#> <int> <int> <int> <int> <int>
#> 1 898236 1369 7 14934 71
#> # ℹ 66 more variables: away_team_season_id <int>, arena_id <int>,
#> # home_score <int>, away_score <int>, round <int>, roundname <chr>,
#> # roundname_en <chr>, date <chr>, dayofweek <int>, time <chr>, changes <int>,
#> # number <int>, home_name_l3 <chr>, home_name_en <chr>,
#> # home_name_l3_en <chr>, home_city_en <chr>, visitor_name_l3 <chr>,
#> # visitor_name_en <chr>, visitor_name_l3_en <chr>, visitor_city_en <chr>,
#> # arena <chr>, arena_en <chr>, arena_city <chr>, arena_city_en <chr>, …
# }
