Skip to contents

Player box score of a final game with the vendor's advanced rates, one row per player of both teams.

Endpoint: GET https://api.kbl.or.kr/match/{gmkey}/player-stat

Usage

kbl_player_box(gmkey)

Arguments

gmkey

Game key S{seasonCode}G{gameCode}N{gameNo}, e.g. 'S47G01N49' (the 2025-26 regular season's game 49): season_code, game_code and game_no of kbl_schedule. Only final games are served; a malformed key is a hoopR_bad_request.

Value

A hoopR_data tibble: Player box score of a final game with the vendor's advanced rates, one row per player of both teams. The columns are always these, in this order (sportsdataverse-py kbl_player_box); 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 game route and game frame.
season_codeintegerKBL season code: one sequential number over every season and D-League edition (47 = 2025-26, 48 = the 2025 D-League).
seasonintegerSeason END year (2026 = 2025-26), derived from season_code through the crosswalk (kbl_codes.SEASONS).
game_codecharacterCompetition inside the season, two digits: 01 regular season, 03 playoffs, 04 final, 07 EASL, 08 D-League stage 2, 10 All-Star, 11/13 cups, 14 Open Match Day.
game_nointegerGame number inside the competition (glkey): the N part of the gmkey.
team_codecharacterKBL 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_awaycharacterSide (string): '1' home, '2' away; '3' on both teams' rows in the 1997-98 sample, so join on player.tcode instead.
startedinteger1 when the player started the game, else 0.
pcodecharacterKBL player code (6-digit string). Joins to pcode on every route and to playerNo in /league/round-mvp.
player_namecharacterPlayer name in Korean (foreign players in Hangul transliteration).
player_name_encharacterPlayer name in English / romanized (sometimes Hangul for former players).
team_namecharacterTeam short name (Korean, e.g. Changwon LG), as it was at the time. English names: /common/teamList teamNameEn / teamNameFullEn, joined on the team code.
back_numcharacterJersey number (string).
poscharacterPosition code (string): C center, FD forward, GD guard, FC forward-center, GF guard-forward; table in the returns md.
player_flagcharacterPlayer type (string): '0' domestic, '1' foreign import, '2' Asian-quota player.
scoreintegerPoints. This game.
fgintegerTwo-point field goals made, dunks included: 201 + 207 rows (score = 2fg + 3threep + ft holds on every sampled box). This game.
fg_aintegerTwo-point field-goal attempts, made + missed, dunks included: 201 + 202 + 207 + 208 rows (checked per team on S47G01N49). This game.
fgtintegerField goals made, two- and three-point (fg + threep). This game.
fgt_aintegerField-goal attempts, two- and three-point (fgA + threepA). This game.
threepintegerThree-point field goals made (action 205). This game.
threep_aintegerThree-point attempts, made + missed (205 + 206). This game.
ftintegerFree throws made (action 203). This game.
ft_aintegerFree-throw attempts, made + missed (203 + 204). This game.
dkintegerDunks made (action 207); included in fg. This game.
dk_aintegerDunk attempts (made + missed, actions 207 + 208). This game.
rbintegerTotal rebounds (offr + defr; team rebounds are teamR). This game.
offrintegerOffensive rebounds (action 209). This game.
defrintegerDefensive rebounds (action 210). This game.
astintegerAssists (action 211). This game.
stlintegerSteals (action 212). This game.
bsintegerBlocked shots (action 213). This game.
tointegerTurnovers (action 214). This game.
foulintegerPersonal fouls (wft + woft). This game.
wftintegerFouls that awarded free throws (action 215). This game.
woftintegerFouls that awarded no free throws (action 216). This game.
ppintegerField goals made in the paint. This game.
pp_aintegerField-goal attempts in the paint. This game.
pscoreintegerPoints in the paint (2 * pp). This game.
sastintegerScreen assists (action 226; tracked in recent seasons only, 0 before). This game.
dflintegerDeflections (action 227; tracked in recent seasons only, 0 before). This game.
gdintegerGood-defense plays (action 221). This game.
idfintegerIllegal-defense violations (action 219; an early-KBL rule, so non-zero only in old seasons). This game.
fbintegerFast breaks credited to the player (action 217 rows that name a player, as in 1997-98); 0 in recent seasons, where fast breaks are team rows (tfb). This game.
efintegerMeaning unverified (0 in every game sample; non-zero in some season totals). This game.
tfintegerProbably technical fouls (unverified; 0 in most rows). This game.
inoutintegerTimes the player entered the game, the start included (checked on the 2025-26 sample game); a team row sums its players. This game.
inout1integerTimes the player was substituted out before the end (checked on the 2025-26 sample game); a team row sums its players. This game.
play_minintegerMinutes of playing time; add playSec seconds. This game.
play_secintegerSeconds part of the playing time (0-59), added to playMin. This game.
fointegerFouls drawn (the player rows of a team sum to the opponent's foul, checked on the 2025-26 sample game). This game.
margin_cnintegerPlus-minus: the point margin while the player was on court. This game.
offrtgdoubleOffensive rating: points scored per 100 possessions (estimated). This game.
defrtgdoubleDefensive rating: points allowed per 100 possessions (estimated). This game.
netrtgdoubleNet rating: offrtg - defrtg. This game.
efg_rtdoubleEffective field-goal percentage, 0-100. This game.
ts_rtdoubleTrue-shooting percentage, 0-100. This game.
ast_rtdoubleAssist rate: share of teammates' field goals assisted while on court, 0-100. This game.
ast_todoubleAssist-to-turnover ratio. This game.
ast_ratiodoubleAssist ratio: assists per 100 possessions used. This game.
oreb_rtdoubleOffensive-rebound percentage, 0-100. This game.
dreb_rtdoubleDefensive-rebound percentage, 0-100. This game.
reb_rtdoubleTotal-rebound percentage, 0-100. This game.
pacedoublePossessions per 40 minutes (estimated; a player row covers his minutes on court). This game.
tov_rtdoubleTurnover rate: turnovers per 100 possessions, 0-100. This game.
possdoublePossessions (estimated). This game.
perdoublePlayer efficiency rating (KBL's formula; scale unverified). This game.
piedoublePlayer impact estimate: share of the game's positive events, as a percentage. This game.
usg_rtdoubleUsage rate: share of team possessions used while on court, 0-100. This game.
to_ratiodoubleTurnover ratio: turnovers per 100 possessions used. This game.
minutes_playeddoublePlaying time in minutes (play_min + play_sec / 60), derived.

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_player_box(gmkey = "S47G01N49"))
#> ── KBL Player Box Score from api.kbl.or.kr ────────────────────── hoopR 3.2.0 ──
#> ℹ Data updated: 2026-10-31 21:30:57 UTC
#> # A tibble: 24 × 71
#>    gmkey  season_code season game_code game_no team_code home_away started pcode
#>    <chr>        <int>  <int> <chr>       <int> <chr>     <chr>       <int> <chr>
#>  1 S47G0…          47   2026 01             49 50        2               0 2902…
#>  2 S47G0…          47   2026 01             49 50        2               0 2904…
#>  3 S47G0…          47   2026 01             49 50        2               0 2905…
#>  4 S47G0…          47   2026 01             49 50        2               0 2906…
#>  5 S47G0…          47   2026 01             49 50        2               1 2909…
#>  6 S47G0…          47   2026 01             49 50        2               1 2914…
#>  7 S47G0…          47   2026 01             49 50        2               1 2915…
#>  8 S47G0…          47   2026 01             49 50        2               1 2916…
#>  9 S47G0…          47   2026 01             49 50        2               0 2916…
#> 10 S47G0…          47   2026 01             49 50        2               1 2916…
#> # ℹ 14 more rows
#> # ℹ 62 more variables: player_name <chr>, player_name_en <chr>,
#> #   team_name <chr>, back_num <chr>, pos <chr>, player_flag <chr>, score <int>,
#> #   fg <int>, fg_a <int>, fgt <int>, fgt_a <int>, threep <int>, threep_a <int>,
#> #   ft <int>, ft_a <int>, dk <int>, dk_a <int>, rb <int>, offr <int>,
#> #   defr <int>, ast <int>, stl <int>, bs <int>, to <int>, foul <int>,
#> #   wft <int>, woft <int>, pp <int>, pp_a <int>, pscore <int>, sast <int>, …
# }