Skip to contents

Team stat summary per period, half and game (2018-19 on): percentages, rebounds, assists, turnovers, lead changes.

Endpoint: GET https://api.wjbl.01core.app/api/pbp/team-stats

Usage

wjbl_team_period_stats(play_schedule_id)

Arguments

play_schedule_id

Game id (play_schedule_id in wjbl_schedule): ONE global sequence across every league edition and season, e.g. 7987 (2025-26 playoff final game 1), 5533 (2018-19), 4243 (2013-14 final, box score only). The game must be final.

Value

A wehoop_data tibble, one row per record; the columns are always these, in this order (sdv-py wjbl_team_period_stats):

col_nametypedescription
play_schedule_idintegerGame id play_schedule_id (key space: W League games, ONE global sequence across every league_id and season, e.g. 4243 = 2013-14 final, 7987 = 2025-26 final). The play_schedule_id parameter of every game route and of the site's /schedule_result/detail/*?play_schedule_id= pages.
home_team_idintegerHome team: Franchise id team_id (key space: W League franchises, STABLE across seasons and sponsor renames: 13 = Toyota Antelopes, 12 = Denso Iris, 8 = ENEOS Sunflowers; all-star sides have their own ids, e.g. 591). The team_id of /team/roster and of the site's /team/roster/?team_id=. Not season_team_id.
away_team_idintegerAway team: Franchise id team_id (key space: W League franchises, STABLE across seasons and sponsor renames: 13 = Toyota Antelopes, 12 = Denso Iris, 8 = ENEOS Sunflowers; all-star sides have their own ids, e.g. 591). The team_id of /team/roster and of the site's /team/roster/?team_id=. Not season_team_id.
period_categoryintegerThe period category again, as an integer (see periods).
period_labelcharacterReadable period: Q1-Q4 quarters, OT1-OT10 overtimes (period categories 5-14), H1 / H2 halves (15 / 16), OT all overtimes together (17), GAME the whole game (18).
home_ptrdoubleHome field-goal percentage (2PT + 3PT) in the period, 0-100, a NUMBER with up to one decimal (61.5; whole values come as integers).
home_pt2rdoubleHome two-point percentage, 0-100, number.
home_pt3rdoubleHome three-point percentage, 0-100, number.
home_ftrdoubleHome free-throw percentage, 0-100, number (0 when no attempts).
home_rebound_offintegerHome offensive rebounds in the period, the first number of the wire's 'off-def-total' string.
home_rebound_defintegerHome defensive rebounds in the period, the second number of the wire's 'off-def-total' string.
home_rebound_totintegerHome total rebounds in the period, the third number of the wire's 'off-def-total' string.
home_assistintegerHome assists (integer).
home_turnoversintegerHome turnovers in the period, from the wire's counted string (6); the wire key is spelled home_trun_over.
home_max_differenceintegerHome team's largest lead in the period, in points; the wire key is spelled home_max_differenct.
away_ptrdoubleAway field-goal percentage (2PT + 3PT) in the period, 0-100, a NUMBER with up to one decimal (61.5; whole values come as integers).
away_pt2rdoubleAway two-point percentage, 0-100, number.
away_pt3rdoubleAway three-point percentage, 0-100, number.
away_ftrdoubleAway free-throw percentage, 0-100, number (0 when no attempts).
away_rebound_offintegerAway offensive rebounds in the period, the first number of the wire's 'off-def-total' string.
away_rebound_defintegerAway defensive rebounds in the period, the second number of the wire's 'off-def-total' string.
away_rebound_totintegerAway total rebounds in the period, the third number of the wire's 'off-def-total' string.
away_assistintegerAway assists (integer).
away_turnoversintegerAway turnovers in the period, from the wire's counted string (6); the wire key is spelled away_trun_over.
away_max_differenceintegerAway team's largest lead in the period, points (integer).
lead_countintegerLead changes in the period, from the wire's counted string (0 times).
tie_countintegerTimes the score was tied in the period, from the wire's counted string (4 times).

Details

  • Unofficial and unsupported: these wrappers read the JSON backend of www.wjbl.org (api.wjbl.01core.app), keyless, found in the site's own JavaScript. The site's terms of use (www.wjbl.org/kiyaku/) forbid reproducing, republishing or otherwise using site content without permission: a copyright clause, not an anti-scraping one. The wrappers fetch on the user's behalf; a published data release or a hosted mirror needs the owner's decision first. The site has no robots.txt (404, checked 2026-10-12), so no Crawl-delay is published; the runtime waits at least 1 s before every request, retries included. Payloads are not redistributed as release assets.

  • Women's league: the W League is Japan's top women's basketball league (the SportsDataverse R counterpart is wehoop). All text is Japanese (team names, phases, play-by-play actions); the column descriptions translate the vocabulary.

  • Seasons are END years (2026 = 2025-26, 2000 = 1999-2000). The API keys a season edition by an opaque league_id (45 = '25-26 W League'; every all-star game, cup and camp has one too) and the wrappers map the END year with the live league list (one extra, cached request; END = 2000 + the second YY of league_title). Phases inside an edition (season_id: 169 = regular season Premier, 170 = Future, 176 = playoff final; two divisions from 2024-25) are native ids, passed as given: wjbl_standing_seasons lists them with their END year.

  • The schedule is paged by month: wjbl_schedule answers ONE month (game_month, YYYY-MM; omitted = the season's latest month only). List the months with wjbl_game_months and loop. The game routes take only the global play_schedule_id and serve final games only: each makes one extra, cached request (the game header) to prove the game is final and that the answer is the game and the teams asked for.

  • Errors are HTTP 200: an unknown id answers [] (wehoop_no_data) and a missing or non-numeric parameter answers an error envelope (wehoop_asset_fetch). Coverage: schedules from 1999-2000, box scores from 2013-14, play-by-play and the period stats from 2018-19 (earlier games answer [] on the /pbp routes: wehoop_no_data). No route carries shot coordinates.

  • Personal data: the organiser's contact details (phones, e-mail) and the player's blood type are never output, and phone numbers and e-mail addresses inside free text are replaced by [redacted-phone] / [redacted-email]. Do not add them back. Player bio fields and referee names are public and stay.

  • Errors are classed conditions, all inheriting wehoop_error: wehoop_no_data (HTTP 404 or the API has nothing for the request: an empty list, an id it does not know, a game without play-by-play before 2018-19, a season without months or games), wehoop_bad_request (a season that is not the END year of a W League edition, an id that is not an integer or a game_month that is not YYYY-MM, raised before the request, or the API's HTTP 400 / 422) and wehoop_asset_fetch (any other failure: an error envelope at HTTP 200, any other non-2xx, an empty or non-JSON body, a game that is not final, a truncated play-by-play, or a body for another game, league edition, month, team, season phase or player than the one asked for; transient is TRUE for 408 / 429 / 5xx and transport failures). HTTP 500 is retried. Wrappers raise; they never warn and return an empty frame.

 wjbl_team_period_stats(play_schedule_id = 7987)