Skip to contents

Every game (all competitions, KBL and D-League) of a season or of a date window, with scores and venue.

Endpoint: GET https://api.kbl.or.kr/match/list

Usage

kbl_schedule(season = NULL, from_date = NULL, to_date = NULL)

Arguments

season

Season END year (2026 = 2025-26): the window from the first to the last game of that END year's KBL and D-League editions, fetched as at most two requests (one per calendar year). Pass this or from_date and to_date.

from_date

First date of a window, YYYYMMDD (KST). Needs to_date; inside one calendar year the API answers the whole window in one request (up to 396 games a year, no paging).

to_date

Last date of the window, YYYYMMDD (KST), not before from_date.

Value

A hoopR_data tibble: Every game (all competitions, KBL and D-League) of a season or of a date window, with scores and venue. The columns are always these, in this order (sportsdataverse-py kbl_schedule); an empty valid answer raises hoopR_no_data, a valid body with no rows for this frame is a zero-row tibble:

col_nametypedescription
gmkeycharacterGame key S{seasonCode}G{gameCode}N{gameNo} (e.g. S47G01N49): the id of every /match/{gmkey} route.
glkeycharacterCompetition key S{seasonCode}G{gameCode} (e.g. S47G01 = 2025-26 regular season): the id of the /leagues and /league/rank routes.
seasonintegerSeason END year (2026 = 2025-26), derived from season_code through the crosswalk (kbl_codes.SEASONS).
season_codeintegerKBL season code: sequential over every season and D-League edition (2 = 1997-98, 47 = 2025-26); the crosswalk to the sdv END year is in the README.
season_namecharacterSeason label as sent: 'YYYY-YYYY' for a KBL season, '1997' for the inaugural one, a D-League edition label, or an empty string on EASL rows.
season_gradeintegerDivision: 1 = the KBL itself, 2 = the KBL D-League (reserve league).
game_codecharacterCompetition type within the season (2-digit string; code table in the README and below): 01 regular season, 03 playoffs, 04 final, ...
game_nointegerGame number within the competition (glkey); the N part of the gmkey.
season_categorycharacterCategory code of the competition: R regular season, PO playoffs, CP final, D1/D2 D-League stages, AS All-Star, EG/CU cups, EA EASL, OM Open Match Day (table below).
season_category_namecharacterCategory name in Korean (regular season, playoffs, championship final, D-League stage 1 / 2, All-Star Game, cups, 'KBL' Cup, 'EASL', 'OPEN MATCH DAY').
game_dateDateGame date (KST).
week_daycharacterDay of the week in Korean (one Hangul syllable, Monday to Sunday).
game_startcharacterTip-off time, HHMM (KST).
game_endcharacterEnd time, HHMM (KST); '0000' or blanks when not recorded.
game_timeintegerDuration of the game in minutes (a numeric string on the wire; null on some rows).
home_team_codecharacterHome team code. KBL team code (2-digit string, e.g. '50' = Changwon LG). Joins to /common/teamList teamCode, game tcodeH/tcodeA, t in text-cast. Not stable across ownership changes: the Anyang club is '40' (SBS) in 1997-98 and '70' today. D-League sides have their own codes (teamCodeD).
away_team_codecharacterAway team code. KBL team code (2-digit string, e.g. '50' = Changwon LG). Joins to /common/teamList teamCode, game tcodeH/tcodeA, t in text-cast. Not stable across ownership changes: the Anyang club is '40' (SBS) in 1997-98 and '70' today. D-League sides have their own codes (teamCodeD).
home_team_namecharacterHome team short name (Korean, e.g. Goyang Sono). English names: /common/teamList teamNameEn / teamNameFullEn, joined on the team code.
away_team_namecharacterAway team short name (Korean, e.g. Changwon LG). English names: /common/teamList teamNameEn / teamNameFullEn, joined on the team code.
home_team_name_fullcharacterHome team full name (Korean).
away_team_name_fullcharacterAway team full name (Korean).
home_scoreintegerHome team points (scoreH).
away_scoreintegerAway team points (scoreA).
is_startedinteger1 when the game has started. Unreliable for old games (0 on finished 1997-2006 games in /match/list).
is_endedinteger1 when the game is over. Unreliable: 0 on every finished game through 2005-06 and on some later ones (e.g. S45G01N95's header); the capture treats a past-dated game with scores as final.
playing_quartercharacterPeriod in progress: 'X' when none (before or after the game), else e.g. 'Q4' or 'EQ1'. Can stay stale after the game (the overtime sample says 'EQ1').
stadium_namecharacterVenue short name (Korean).
stadium_name_fullcharacterVenue full name (Korean).
stadium_name_encharacterVenue name in English; an empty string, or the Korean name, for some old venues.
tvcharacterBroadcaster name(s), e.g. 'tvN SPORTS', 'SPOTV2 / SPOTV ON'.
tv_codecharacterBroadcaster code(s), comma-separated (e.g. 'T24,T25'); the site uses it instead of tv from seasonCode 45.
article_idintegerId of the game's news article on kbl.or.kr; null when none.
challenge_idintegerId of the game in KBL Challenge (the site's prediction game); null when none.

Details

Source, terms of use, request pacing, seasons, ids, coverage and error classes of this family: see the notes in kbl_seasons().

Examples

# \donttest{
  try(kbl_schedule(from_date = "20251101", to_date = "20251102"))
#> ── KBL Schedule from api.kbl.or.kr ────────────────────────────── hoopR 3.2.0 ──
#> ℹ Data updated: 2026-10-31 21:31:02 UTC
#> # A tibble: 6 × 33
#>   gmkey     glkey  season season_code season_name season_grade game_code game_no
#>   <chr>     <chr>   <int>       <int> <chr>              <int> <chr>       <int>
#> 1 S47G01N49 S47G01   2026          47 2025-2026              1 01             49
#> 2 S47G01N50 S47G01   2026          47 2025-2026              1 01             50
#> 3 S47G01N51 S47G01   2026          47 2025-2026              1 01             51
#> 4 S47G01N52 S47G01   2026          47 2025-2026              1 01             52
#> 5 S47G01N53 S47G01   2026          47 2025-2026              1 01             53
#> 6 S47G01N54 S47G01   2026          47 2025-2026              1 01             54
#> # ℹ 25 more variables: season_category <chr>, season_category_name <chr>,
#> #   game_date <date>, week_day <chr>, game_start <chr>, game_end <chr>,
#> #   game_time <int>, home_team_code <chr>, away_team_code <chr>,
#> #   home_team_name <chr>, away_team_name <chr>, home_team_name_full <chr>,
#> #   away_team_name_full <chr>, home_score <int>, away_score <int>,
#> #   is_started <int>, is_ended <int>, playing_quarter <chr>,
#> #   stadium_name <chr>, stadium_name_full <chr>, stadium_name_en <chr>, …
# }