Skip to contents

Game header of one B.LEAGUE game: competition, round, venue, officials, tip-off, both teams and the scores.

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).

One row. year is the season START year and season the END year (year + 1). Team ids are text (the v1 feed sends integers, v2 strings). home_score_p1 ... p14 are the points scored IN each period (the v1 header carries 14 slots, v2 four; use bleague_period_scores() for the played periods). The v1 header has many columns v2 lacks (game_no, event, winning / losing streaks, weather, report text); they are NA on v2. temperature and humidity were NA in every observed body, so their type is an assumption.

Usage

bleague_game_info(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.
yearintegerSeason START year as the site stores it (2025 = 2025-26); season is the END year.
codeintegerFeed/organisation code repeated on every row: 546 on v2, 6 on v1; meaning unverified.
eventintegerCompetition type (v1 header only): 2 B1 league, 3 B1 Championship, 4 B1 relegation playoffs, 5 all-star, 7 B2 league, 8 B2 playoffs, 11 B1-B2 promotion/relegation, 15 B3 league, 32 B3 playoffs; null on v2.
convention_keycharacterConventionKey as text (key space: competition-seasons, taikai): v2 '514' = B1 2025-26, v1 102 = B3 2025-26. Key on (feed, convention_key); the feeds may number independently.
convention_classintegerCompetition class code (1 on every sample); meaning unverified.
roundintegerRound (setsu) within the competition-season; playoffs use 100+ (101). Integer.
game_nointegerGame number within the competition (v1 header only); null on v2.
schedule_stateintegerSchedule state code (v1 header only; 2 on the final-game sample); meaning unverified.
schedule_conferenceintegerConference code (v1 header only); meaning unverified.
interleaguelogicalTrue for an inter-league game (v1 header only).
stadium_cdcharacterStadiumCD as text (key space: B.LEAGUE venues; stability unverified).
attendanceintegerAnnounced attendance.
game_datetimePOSIXctScheduled tip-off as a UTC instant (the feed's JST wall clock minus nine hours).
game_start_timePOSIXctActual start as a UTC instant (v1 header only; epoch seconds on the 2016-17 embed).
game_end_timePOSIXctActual end as a UTC instant (v1 header only).
max_periodintegerNumber of periods the game had (4 plus overtimes).
current_periodintegerPeriod the context was last written in (the last period for a final game).
rest_timeintegerClock remaining when last written (v1 header only; 0 for a final game).
game_endedlogicalTrue when the game has ended; the runtime serves only games where this and record_fixed are true.
record_fixedlogicalTrue when the record is finalised (no more corrections expected).
box_existslogicalTrue when the box score exists.
pbp_existslogicalTrue when play-by-play exists.
picture_existslogicalTrue when photos exist (v1 header only).
report_existslogicalTrue when a game report text exists (v1 header only).
home_winlogicalTrue when the home team won (v1 header only); null on v2.
commissioner_idcharacterCommissioner id as text; null when none is assigned.
referee_idcharacterCrew-chief referee RefereeID as text (key space: officials; stability unverified).
sub_referee_id1characterSecond referee RefereeID as text.
sub_referee_id2characterThird referee RefereeID as text.
temperaturedoubleTemperature; null in every observed body, so its dtype is an assumption.
humiditydoubleHumidity; null in every observed body, so its dtype is an assumption.
convention_name_jcharacterCompetition name in Japanese (e.g. the Resona Group B.LEAGUE 2025-26 B1 regular season).
convention_name_echaracterCompetition name in English; empty (null) on early v1 bodies.
convention_title_jcharacterCompetition title in Japanese (v1 header only).
convention_title_echaracterCompetition title in English (v1 header only).
stadium_name_jcharacterVenue name in Japanese (e.g. TOYOTA ARENA TOKYO, AGF Suzuka Gymnasium).
stadium_name_echaracterVenue name in English; often empty (null).
courtcharacterCourt number at the venue (v1 header only).
reportcharacterGame report text (v1 header only); usually empty (null).
weathercharacterWeather text (v1 header only); null in every observed body.
schedule_class_name_jcharacterSchedule class name in Japanese (v1 header only); usually empty.
schedule_class_name_echaracterSchedule class name in English (v1 header only); usually empty.
schedule_class_short_name_jcharacterSchedule class short name in Japanese (v1 header only); usually empty.
schedule_class_short_name_echaracterSchedule class short name in English (v1 header only); usually empty.
commissioner_name_jcharacterCommissioner name in Japanese (names only; no contact data is published).
commissioner_name_echaracterCommissioner name in English (v1 header only).
referee_name_jcharacterCrew-chief referee name in Japanese (name only; no contact data is published).
referee_name_echaracterCrew-chief referee name in English (v1 header only).
sub_referee_name_j1characterSecond referee name in Japanese.
sub_referee_name_e1characterSecond referee name in English (v1 header only).
sub_referee_name_j2characterThird referee name in Japanese.
sub_referee_name_e2characterThird referee name in English (v1 header only).
home_team_idcharacterHome team id. B.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.
home_team_name_jcharacterHome team name in Japanese (official name).
home_team_name_echaracterHome team name in English, uppercase.
home_team_short_name_jcharacterHome team short name in Japanese (e.g. the short form of Alvark Tokyo).
home_team_short_name_echaracterHome team short name in English (e.g. A TOKYO).
home_team_sub_name_jcharacterHome team sub name in Japanese (v1 header only); usually empty.
home_team_sub_name_echaracterHome team sub name in English (v1 header only); usually empty.
home_scoreintegerHome team final score.
home_winning_countintegerHome team winning streak (v1 header only); null in every observed body.
home_losing_countintegerHome team losing streak (v1 header only); null in every observed body.
away_team_idcharacterAway team id. B.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.
away_team_name_jcharacterAway team name in Japanese (official name).
away_team_name_echaracterAway team name in English, uppercase.
away_team_short_name_jcharacterAway team short name in Japanese (e.g. the short form of Alvark Tokyo).
away_team_short_name_echaracterAway team short name in English (e.g. A TOKYO).
away_team_sub_name_jcharacterAway team sub name in Japanese (v1 header only); usually empty.
away_team_sub_name_echaracterAway team sub name in English (v1 header only); usually empty.
away_scoreintegerAway team final score.
away_winning_countintegerAway team winning streak (v1 header only); null in every observed body.
away_losing_countintegerAway team losing streak (v1 header only); null in every observed body.
home_score_p1integerHome team points scored IN period 1 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
home_score_p2integerHome team points scored IN period 2 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
home_score_p3integerHome team points scored IN period 3 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
home_score_p4integerHome team points scored IN period 4 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
home_score_p5integerHome team points scored IN period 5 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
home_score_p6integerHome team points scored IN period 6 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
home_score_p7integerHome team points scored IN period 7 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
home_score_p8integerHome team points scored IN period 8 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
home_score_p9integerHome team points scored IN period 9 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
home_score_p10integerHome team points scored IN period 10 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
home_score_p11integerHome team points scored IN period 11 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
home_score_p12integerHome team points scored IN period 12 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
home_score_p13integerHome team points scored IN period 13 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
home_score_p14integerHome team points scored IN period 14 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
away_score_p1integerAway team points scored IN period 1 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
away_score_p2integerAway team points scored IN period 2 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
away_score_p3integerAway team points scored IN period 3 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
away_score_p4integerAway team points scored IN period 4 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
away_score_p5integerAway team points scored IN period 5 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
away_score_p6integerAway team points scored IN period 6 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
away_score_p7integerAway team points scored IN period 7 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
away_score_p8integerAway team points scored IN period 8 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
away_score_p9integerAway team points scored IN period 9 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
away_score_p10integerAway team points scored IN period 10 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
away_score_p11integerAway team points scored IN period 11 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
away_score_p12integerAway team points scored IN period 12 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
away_score_p13integerAway team points scored IN period 13 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.
away_score_p14integerAway team points scored IN period 14 (not cumulative). v2 headers carry four slots, v1 fourteen; an unplayed period is 0 on v1 and null on v2.

Details

The B.LEAGUE (Japan Professional Basketball League: B1, B2, B3) wrappers mirror sportsdataverse-py's sportsdataverse.basketball.bleague wrappers of the same names: same arguments, the same snake_case columns and types, one row per sportsdataverse-py row.

Unofficial and unsupported. The game contexts are JSON objects in B.LEAGUE's own public S3 bucket (b-league.s3.amazonaws.com, the store its game pages read), and the schedule, standings and game_detail pages of www.bleague.jp are parsed here. Neither host publishes terms for this use (the site's /terms/ answers 404; robots.txt sets a Crawl-delay only for msnbot and bingbot). Requests are spaced at least one second apart per host; 429 and 5xx answers are retried (three attempts). The site's terms were not reviewed; check them before you republish the data.

Seasons are END years (season = 2026 is 2025-26); the site's own Year / year= is the START year, so the request sends year = season - 1. Game wrappers take the global schedule_key (one integer sequence across B1, B2, B3 and every season: 1 = the 2016-17 opener, 5856 in 2020-21, 500017 in 2022-23, 504734 / 505508 B1 / B2 and 10693 B3 in 2025-26); list a day's keys with bleague_schedule().

Feeds. A game is read from the v2 feed (B1/B2 from 2020-21), else the v1 feed (B3 and B1/B2 2018-2020), else the game page's embedded copy (the only source of 2016-17 and 2017-18), decided at run time. v2 ids are strings, v1 ids integers: both become text here. v1 adds leaders and the score track; the team-rebound codes 18 / 19 are swapped between the feeds and a v1 substitution is one row where v2 has two. Player and team names are Japanese (English names only on the box score and header). Game wrappers serve FINISHED games only. Each game wrapper fetches the context itself (two requests): fetch once per game per wrapper you need.

Errors are classed conditions, never a warning plus an empty frame: hoopR_no_data (no source holds the game, a schedule day without games, HTTP 404), hoopR_bad_request (a non-integer or out-of-range argument, HTTP 400 / 422) and hoopR_asset_fetch (any other failure: another status, a transport error, a non-JSON or non-HTML body, an error or changed body, an unfinished game, a context or page for another game, season, tab or day, a truncated schedule list, or layout drift). All inherit hoopR_error.

Examples

# \donttest{
  try(bleague_game_info(schedule_key = 504734))
#> ── B.LEAGUE game info from b-league.s3.amazonaws.com ──────────── hoopR 3.2.0 ──
#> ℹ Data updated: 2026-10-31 21:27:18 UTC
#> # A tibble: 1 × 103
#>   schedule_key season feed   year  code event convention_key convention_class
#>          <int>  <int> <chr> <int> <int> <int> <chr>                     <int>
#> 1       504734   2026 v2     2025   546    NA 514                           1
#> # ℹ 95 more variables: round <int>, game_no <int>, schedule_state <int>,
#> #   schedule_conference <int>, interleague <lgl>, stadium_cd <chr>,
#> #   attendance <int>, game_datetime <dttm>, game_start_time <dttm>,
#> #   game_end_time <dttm>, max_period <int>, current_period <int>,
#> #   rest_time <int>, game_ended <lgl>, record_fixed <lgl>, box_exists <lgl>,
#> #   pbp_exists <lgl>, picture_exists <lgl>, report_exists <lgl>,
#> #   home_win <lgl>, commissioner_id <chr>, referee_id <chr>, …
# }