Skip to contents

Registered rosters of both sides with player bio fields (the season registration, not the game box).

Endpoint: GET https://data-server.cbaleague.com/api/schedules/getPlayersByScheduleId/{schedule_id}

Usage

cba_rosters(schedule_id)

Arguments

schedule_id

(required) Required. CBA game id (integer), the global 9-digit sequence 100xxxxxx (100105799 = 2025-26 round 1). Only a finished game is served.

Value

A hoopR_data tibble: One row per registered player (season registration, not the game box). An empty valid answer is a zero-row tibble with these columns, in this order (sportsdataverse-py cba_rosters):

col_nametypedescription
schedule_idintegerCBA game id (key space: CBA games, ONE global 9-digit sequence 100xxxxxx across seasons and match types; the {scheduleId} of every game route). Stamped by the runtime from the request; null on a body parsed without it.
sidecharacterSide of the game the row belongs to: home (the API's host / home block) or away (guest / visiting block).
ageintegerAge in years as registered (0 on every sampled row: not maintained).
birth_datecharacterDate of birth 'YYYY-MM-DD'. A public player bio field of the roster (kept; officials' and coaches' dates would be redacted by the capture).
body_datacharacterJSON string of physical-testing results as the league stores it (wingspan, standing reach, vertical reach, hand size); null where not tested.
cn_aliascharacterPlayer short name (Chinese).
cn_alias_showcharacterDisplay name (Chinese); '—' for a placeholder row.
cn_namecharacterPlayer full name (Chinese; may include a first-name form for foreigners).
created_datecharacterAudit field: row creation time 'YYYY-MM-DD HH:MM:SS'.
first_namecharacterGiven name in Latin letters as registered, in capitals (e.g. 'CAI S.L.S.').
heightintegerHeight in cm (integer).
idcharacterInternal row id of the (player, team, season) registration, a 19-digit integer beyond 2^53: read it as a string/int64, never as a JS number. Not the playerId.
is_captainlogicalTeam captain flag (false on every sampled row).
is_deletelogicalSoft-delete flag (false on every sampled row).
is_injurylogicalInjury flag (false on every sampled row).
is_threeintegerFlag, 2 on every sampled row; meaning unverified.
last_modified_datecharacterAudit field: last modification time; null on rows never modified.
last_namecharacterFamily name in Latin letters; ” when none, and null on some older rows.
match_type_idintegerMatch type id (1 = regular season) of the registration.
nationalitycharacterNationality (Chinese country name; see the nationality code table for every value seen and its English name). Chinese country names seen: China; United States; Canada; France; Chinese Taipei; Iran; Nigeria; Jordan.
numbercharacterJersey number as a string.
player_cba_idintegerA registration id from the league's own system (e.g. 502672); 0 when unset (27 of 101 sampled rows). Not the playerId (unverified beyond that).
player_idintegerplayerId (key space: CBA persons, stable across seasons and clubs; 3-9 digits, older players have short ids (393433) and newer ones 100xxxxxx). Joins the player box routes, the season player lists and getPlayersByScheduleId. Not a team id.
player_piccharacterAbsolute URL of the player's photo; null when there is none.
positioncharacterPosition code as registered: SG, SF, PG, PF, C and their '/' pairs, or the coarse G (guard) / F (forward) on older rows (see positionDescription). Label glosses: C = (Chinese text); C/PF = (Chinese text); F = (Chinese text); G = (Chinese text); PF = (Chinese text); PF/C = (Chinese text); PF/SF = (Chinese text); PG = (Chinese text); PG/SG = (Chinese text); SF = (Chinese text); SF/PF = (Chinese text); SF/SG = (Chinese text); SG = (Chinese text); SG/PG = (Chinese text); SG/SF = (Chinese text); (Chinese text); (Chinese text); (Chinese text); (Chinese text); (Chinese text); (Chinese text); (Chinese text); (Chinese text); (Chinese text); (Chinese text); (Chinese text); (Chinese text); (Chinese text).
position_descriptioncharacterPosition label (Chinese). Eras differ: coarse (Chinese text) (guard) / (Chinese text) (forward) / (Chinese text) (center) in older seasons, five-way (Chinese text) (point guard) / (Chinese text) (shooting guard) / (Chinese text) (small forward) / (Chinese text) (power forward) / (Chinese text) (center) in newer ones; dual positions are joined with '/' (e.g. (Chinese text)). Label glosses: C = (Chinese text); C/PF = (Chinese text); F = (Chinese text); G = (Chinese text); PF = (Chinese text); PF/C = (Chinese text); PF/SF = (Chinese text); PG = (Chinese text); PG/SG = (Chinese text); SF = (Chinese text); SF/PF = (Chinese text); SF/SG = (Chinese text); SG = (Chinese text); SG/PG = (Chinese text); SG/SF = (Chinese text); (Chinese text); (Chinese text); (Chinese text); (Chinese text); (Chinese text); (Chinese text); (Chinese text); (Chinese text); (Chinese text); (Chinese text); (Chinese text); (Chinese text); (Chinese text).
position_stringcharacterUnobserved: null in every sample.
seasonintegerSeason START year (2025 = the 2025-26 season). The sdv season key is the END year = season + 1; map at the boundary.
season_idintegerSeason START year (2025 = the 2025-26 season). The sdv season key is the END year = season + 1; map at the boundary. Same value as season.
season_namecharacterUnobserved: null in every sample.
season_yearcharacterUnobserved: null in every sample.
team_cba_idintegerteamId again as an integer (29128); meaning unverified beyond equalling team_id in the sample.
team_cn_aliascharacterTeam short name (Chinese) in that season.
team_cn_namecharacterTeam full legal name (Chinese), e.g. 'Zhejiang Guangsha Lions Club Zheshang Securities basketball team'.
team_en_aliascharacterTeam code or English city name as registered: a three-letter code on recent rows ('ZGL', 'SBW'), an English city name on older ones ('Guangdong', 'Sichuan'), ” when none.
team_en_namecharacterTeam English name as the league registers it (the sample reads 'GUANG SHA').
team_idintegerteamId (key space: CBA clubs; 5 digits 29115-29140 for the long-standing clubs, 9 digits for newer ones (100074683 = Ningbo); stable across seasons and club renames, but the display name changes with the sponsor: 29128 = 'Zhejiang Guangsha' under many sponsor names, (Chinese text) in 2025-26). Joins getTeam / teamList and the team and player routes. Not a player or schedule id.
weightintegerWeight in kg (integer).

Details

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

Examples

# \donttest{
  try(cba_rosters(schedule_id = 100105799))
#> ── CBA Rosters from data-server.cbaleague.com ─────────────────── hoopR 3.2.0 ──
#> ℹ Data updated: 2026-10-31 21:27:44 UTC
#> # A tibble: 32 × 38
#>    schedule_id side    age birth_date body_data   cn_alias cn_alias_show cn_name
#>          <int> <chr> <int> <chr>      <chr>       <chr>    <chr>         <chr>  
#>  1   100105799 home      0 2006-01-24 "{\"cNName… 蔡束林森 蔡束林森      蔡束林森……
#>  2   100105799 home      0 2006-02-07 "{\"cNName… 崔新泉   ---           崔新泉 
#>  3   100105799 home      0 2006-12-23 "{\"cNName… 侯孟泽   侯孟泽        侯孟泽 
#>  4   100105799 home      0 1997-09-24 "{\"cNName… 胡金秋   胡金秋        胡金秋 
#>  5   100105799 home      0 1997-04-16 "{\"cNName… 李金效   李金效        李金效 
#>  6   100105799 home      0 2006-03-21 "{\"cNName… 连宇     --            连宇   
#>  7   100105799 home      0 1996-04-26 "{\"cNName… 孙铭徽   孙铭徽        孙铭徽 
#>  8   100105799 home      0 2003-06-06 "{\"cNName… 王欣瑞   王欣瑞        王欣瑞 
#>  9   100105799 home      0 1999-06-02 "{\"cNName… 吴骁     吴骁          吴骁   
#> 10   100105799 home      0 2004-03-19 "{\"cNName… 续峻玮   续峻玮        续峻玮 
#> # ℹ 22 more rows
#> # ℹ 30 more variables: created_date <chr>, first_name <chr>, height <int>,
#> #   id <chr>, is_captain <lgl>, is_delete <lgl>, is_injury <lgl>,
#> #   is_three <int>, last_modified_date <chr>, last_name <chr>,
#> #   match_type_id <int>, nationality <chr>, number <chr>, player_cba_id <int>,
#> #   player_id <int>, player_pic <chr>, position <chr>,
#> #   position_description <chr>, position_string <chr>, season <int>, …
# }