Skip to contents

Team rows of the box score of one B.LEAGUE game: the team / coaches row and the team totals, per period category.

Endpoint: GET https://b-league.s3.amazonaws.com/web_json/v2_genius_contexts/{schedule_key}/{latest}.json (the v1 feed, or the game page's embed, when v2 does not hold the game).

Rows with category 2 (team-credited stats; on v1 the row names the head coach in player_id and player_name_*) and 3 (the team totals, whose play_time is five times the period length: 200:00 for the game), one per period_category. The same columns as bleague_player_box(). The v2 totals row carries no TeamID; team_id is filled from the game header.

Usage

bleague_team_box(schedule_key, season = NULL)

Arguments

schedule_key

(integer required): B.LEAGUE ScheduleKey, one global sequence across B1, B2, B3 and every season, e.g. 504734 (B1 2025-26 sec 1, Alvark Tokyo v Utsunomiya Brex); the schedule_key column of bleague_schedule().

season

(integer optional): a guard, the season END year the game must belong to; a context whose Year differs raises hoopR_asset_fetch. NULL (default) = no check (the key alone selects the game).

Value

A hoopR_data tibble with these columns:

col_nametypedescription
schedule_keyintegerB.LEAGUE ScheduleKey (key space: B.LEAGUE games, ONE global integer sequence across B1, B2, B3 and every season). The {schedule_key} every game wrapper takes and the schedule page's list-item id.
seasonintegerSeason END year (2026 = 2025-26), the feed's Year (the START year) plus one.
feedcharacterSource feed of the row: v2 (v2_genius_contexts, B1/B2 from 2020-21) or v1 (v1_contexts: B3, B1/B2 2018-2020, and the 2016-17 / 2017-18 game-page embed). The feeds differ in id types, dates and some codes.
team_sidecharacterSide of the game the row belongs to: home or away.
team_idcharacterB.LEAGUE TeamID as text (key space: B.LEAGUE clubs, stable across seasons AND club renames: 703 = Tochigi Brex in 2016-17 = Utsunomiya Brex in 2025-26). The feed sends a string on v2 and an integer on v1; both are text here. Not a player id.
categoryintegerRow category: 1 = player, 2 = team / coaches row (team-credited stats; on v1 it names the head coach), 3 = team totals. One row per (category, player, period category).
period_categoryintegerPeriod category: 1-4 = quarters 1-4, 15 = first half, 16 = second half, 18 = whole game. Overtime codes are unverified.
team_name_jcharacterTeam name in Japanese (official name, e.g. Alvark Tokyo).
team_name_echaracterTeam name in English, uppercase ('ALVARK TOKYO').
player_idcharacterB.LEAGUE PlayerID as text (key space: B.LEAGUE persons, stable across seasons and clubs: Makoto Hiejima = '8589'). A string on v2, an integer on v1; both are text here. Null where the row names no player.
player_nocharacterShirt number as text, so '00' and '0' stay distinct; null on team and game-level rows.
player_name_jcharacterPlayer name in Japanese (katakana for foreign players); null on team and game-level rows.
player_name_echaracterPlayer name in English ('Makoto Hiejima'); null on team and totals rows.
play_timecharacterMinutes played as the feed's 'mm:ss'; 'DNP' = did not play. Totals rows hold 5 x the period length ('200:00' for the game).
on_courtlogicalTrue for the five players on court when the context was last written (for a final game, at the final buzzer); the same value on every period row of the player. Null on v2 team and totals rows.
display_orderintegerDisplay order of the row (v1 only), integer; null on v2.
starterlogicalTrue when the player started; false for the bench; null on team and totals rows. (The feed sends 1 / null on v2 and a boolean on v1.)
seconds_playedintegerTime on court in seconds, parsed from play_time (50:00 = 3000); null for DNP and blank.
pointsintegerPoints scored. The v2 feed sends ” (a placeholder, not 0) on the team row of quarters; null here.
fg3_madeintegerThree-point field goals made (v2 placeholder ” on quarter team rows becomes null).
fg3_attemptedintegerThree-point field goals attempted.
fg2_madeintegerTwo-point field goals made.
fg2_attemptedintegerTwo-point field goals attempted.
ft_madeintegerFree throws made.
ft_attemptedintegerFree throws attempted.
foulsintegerPersonal fouls committed (F).
fouls_drawnintegerFouls drawn (FD).
reb_offintegerOffensive rebounds (OR).
reb_defintegerDefensive rebounds (DR).
rebintegerTotal rebounds.
turnoversintegerTurnovers (TO).
assistsintegerAssists credited to the player or team (AS).
stealsintegerSteals credited to the player or team (ST).
blocksintegerBlocks made (BS).
blocks_receivedintegerShots of this player or team that were blocked (BSON).
ptfbintegerFast-break figure; equals the summary's fast-break points on the one game checked, but whether it counts points or baskets is unverified.
pt2inintegerInside-the-paint figure: on v2 a COUNT of made inside-the-paint 2PT (the summary holds 2x that in points); on v1 points in the paint (0 on B3, whose 2PT shots are never split by paint).
pt2ndintegerSecond-chance figure; smaller than the summary's second-chance points, so likely made baskets; unverified.
ptpftintegerPoints off turnovers; v1 box rows only, null on v2.
dunksintegerDunks made (PT2DUNK); v1 box rows only, null on v2.
efficiencyintegerEfficiency rating (kokendo), era-dependent: v2 = points + rebounds + assists + steals + blocks + fouls drawn - missed FG - missed FT - turnovers - fouls - shots blocked (PIR); v1 omits fouls drawn, fouls and shots blocked.
plus_minusintegerPlus/minus: team point difference while on court. v2 from 2022-23 only; null on totals and half rows.
ast_todoubleAssist-to-turnover ratio (0 when no turnovers). v2 from 2022-23 only; null on half rows.
efgdoubleEffective field-goal percentage as a FRACTION 0-1 (3PT weighted 1.5x); the site multiplies by 100. v2 from 2022-23 only.
tsdoubleTrue-shooting percentage as a FRACTION 0-1; the site multiplies by 100. v2 from 2022-23 only.
usgdoubleUsage rate in PERCENT 0-100. v2 from 2022-23 only; absent on totals rows.
off_rtgdoubleOffensive rating. v2 from 2022-23 only; on team and totals rows 0 in every sample, never filled.
def_rtgdoubleDefensive rating. v2 from 2022-23 only; on team and totals rows 0 in every sample, never filled.
net_rtgdoubleNet rating. v2 from 2022-23 only; on team and totals rows 0 in every sample, never filled.
possdoublePossessions. v2 from 2022-23 only; on team and totals rows 0 in every sample, never filled.

Details

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

Examples

# \donttest{
  try(bleague_team_box(schedule_key = 504734))
#> ── B.LEAGUE team box from b-league.s3.amazonaws.com ───────────── hoopR 3.2.0 ──
#> ℹ Data updated: 2026-10-31 21:27:28 UTC
#> # A tibble: 28 × 50
#>    schedule_key season feed  team_side team_id category period_category
#>           <int>  <int> <chr> <chr>     <chr>      <int>           <int>
#>  1       504734   2026 v2    home      706            2               1
#>  2       504734   2026 v2    home      706            3               1
#>  3       504734   2026 v2    home      706            2               2
#>  4       504734   2026 v2    home      706            3               2
#>  5       504734   2026 v2    home      706            2               3
#>  6       504734   2026 v2    home      706            3               3
#>  7       504734   2026 v2    home      706            2               4
#>  8       504734   2026 v2    home      706            3               4
#>  9       504734   2026 v2    home      706            2              15
#> 10       504734   2026 v2    home      706            3              15
#> # ℹ 18 more rows
#> # ℹ 43 more variables: team_name_j <chr>, team_name_e <chr>, player_id <chr>,
#> #   player_no <chr>, player_name_j <chr>, player_name_e <chr>, play_time <chr>,
#> #   on_court <lgl>, display_order <int>, starter <lgl>, seconds_played <int>,
#> #   points <int>, fg3_made <int>, fg3_attempted <int>, fg2_made <int>,
#> #   fg2_attempted <int>, ft_made <int>, ft_attempted <int>, fouls <int>,
#> #   fouls_drawn <int>, reb_off <int>, reb_def <int>, reb <int>, …
# }