Skip to main content

BNXT — BNXT League Sportpress API (bnxt.sportpress.info, Belgium and the Netherlands) — Team

sportpress_team_rankings​

Team per-game leaders in nine categories (one row per team and category).

Endpoint URL: GET https://bnxt.sportpress.info/api/v1/competition-team/average-rankings/{competition_id}

Valid URL: https://bnxt.sportpress.info/api/v1/competition-team/average-rankings/24

API ParameterPythonPatternRequiredNullableDescription
competition_idcompetition_idYRequired. Competition id (integer), ONE per season of the league: 24 = 2025-26, 25 = 2026-27 (sportpress_phases maps a season to it).
phase_idphase_idYRestrict to one phase (integer), from sportpress_phases. Omitted = every phase.
limitlimitYCap each ranking list at this many rows. Omitted = the complete lists.

Returns​

return_parsed=True (default) — a tidy polars.DataFrame with the columns below; pass return_as_pandas=True for a pandas.DataFrame.

col_nametypedescription
competition_idintegerCompetition id (key space: sportpress competitions): ONE season of the league (24 = 2025-26, 25 = 2026-27). Not the season number. The key of the standings, ranking, slider and box routes.
categorycharacterRanking category: efficiency, points, total_rebound, block, assist, steal, two_point_percent, three_point_percent or free_throw_percent.
rankintegerPlace in the category list, 1 = the leader (the list is sorted best first).
competition_team_idintegerCompetition-team id (key space: sportpress competition teams): a team in ONE competition, so a club has a new id every season (Antwerp = 3 in 2021-22, 506 in 2025-26, 541 in 2026-27). uu_team_id is the stable club key.
teamcharacterTeam display name including the sponsor; varies with language and playoff suffixes: never join on it.
team_short_namecharacterThree-letter club code (ANT, MON, ...), stable across seasons in the samples.
valuenumericThe team's per-game mean (or percentage 0-100) in the row's category.

return_parsed=False — the raw body (dict): {'data': ...} (the settings object for the site config, the nine-category object for the rankings) with contact fields dropped, plus _request (the season, competition, team, roster or game ids asked for).

Example​

sportpress_team_rankings(competition_id=24)

Last validated n/a.

sportpress_team_roster​

Roster of one competition team (current entries only).

Endpoint URL: GET https://bnxt.sportpress.info/api/v1/roster/team-players/{competition_team_id}

Valid URL: https://bnxt.sportpress.info/api/v1/roster/team-players/541

API ParameterPythonPatternRequiredNullableDescription
competition_team_idcompetition_team_idYRequired. Competition-team id (integer): a team in ONE competition, so new every season (e.g. 541 = Antwerp in 2026-27); from sportpress_competition_teams.

Returns​

return_parsed=True (default) — a tidy polars.DataFrame with the columns below; pass return_as_pandas=True for a pandas.DataFrame.

col_nametypedescription
roster_idintegerRoster id (key space: sportpress roster entries): one player on one competition team in one season, so a player has a new roster_id for every team and season. player_id is the person.
competition_team_idintegerCompetition-team id (key space: sportpress competition teams): a team in ONE competition, so a club has a new id every season (Antwerp = 3 in 2021-22, 506 in 2025-26, 541 in 2026-27). uu_team_id is the stable club key.
jerseycharacterShirt number as text; the box score sends it as an integer, so a zero-padded '00' is already lost there.
weightintegerWeight in kg; null when unknown.
heightintegerHeight in cm; null when unknown.
activelogicalTrue for a current roster entry; the lists hold current entries only.
position_idintegerPosition id (key space: sportpress positions; 3 = small_forward).
positioncharacterPosition code: point_guard, shooting_guard, small_forward, power_forward, center, and the hybrids point_guard-shooting_guard, shooting_guard-small_forward, small_forward-power_forward, power_forward-center.
player_idintegerPlayer id (key space: sportpress persons): stable across seasons and teams, distinct from roster_id. Not a Genius or FIBA person id.
first_namecharacterGiven name of the player as entered in the CMS.
last_namecharacterFamily name of the player as entered in the CMS.
nationality_codecharacterNationality code in FIBA style (USA, BEL, NED): DIRTY, with lower-case variants, '/'-joined pairs (USA/BEL), the empty string and 'HOL'; normalise before joining.
birth_datecharacterDate of birth as shown on the public player page; null when unknown.

return_parsed=False — the raw body (dict): {'data': ...} (the settings object for the site config, the nine-category object for the rankings) with contact fields dropped, plus _request (the season, competition, team, roster or game ids asked for).

Example​

sportpress_team_roster(competition_team_id=541)

Last validated n/a.

sportpress_team_find​

One competition team with its season scoring averages.

Endpoint URL: GET https://bnxt.sportpress.info/api/v1/competition-team/find/{competition_team_id}

Valid URL: https://bnxt.sportpress.info/api/v1/competition-team/find/541

API ParameterPythonPatternRequiredNullableDescription
competition_team_idcompetition_team_idYRequired. Competition-team id (integer): a team in ONE competition, so new every season (e.g. 541 = Antwerp in 2026-27); from sportpress_competition_teams.

Returns​

return_parsed=True (default) — a tidy polars.DataFrame with the columns below; pass return_as_pandas=True for a pandas.DataFrame.

col_nametypedescription
competition_idintegerCompetition id (key space: sportpress competitions): ONE season of the league (24 = 2025-26, 25 = 2026-27). Not the season number. The key of the standings, ranking, slider and box routes.
seasonintegerSeason END year of the team's competition.
competition_namecharacterCompetition name, 'BNXT League 2026-2027'.
uu_team_idintegerStable club key across seasons (key space: sportpress clubs-as-teams); competition_team_id changes every season, this does not.
competition_team_idintegerCompetition-team id (key space: sportpress competition teams): a team in ONE competition, so a club has a new id every season (Antwerp = 3 in 2021-22, 506 in 2025-26, 541 in 2026-27). uu_team_id is the stable club key.
teamcharacterTeam display name including the sponsor; varies with language and playoff suffixes: never join on it.
team_short_namecharacterThree-letter club code (ANT, MON, ...), stable across seasons in the samples.
club_idintegerCountry of the team (key space: sportpress clubs): 1 = Belgium, 2 = Netherlands. The provider calls the country a club.
club_namecharacterCountry name in English, Belgium or Netherlands.
average_score_fornumericPoints scored per game by the team over the season; null for a team with no statistics.
average_score_againstnumericPoints conceded per game; null for a team with no statistics.
field_goal_percentnumericTeam field-goal percentage 0-100; null for a team with no statistics.

return_parsed=False — the raw body (dict): {'data': ...} (the settings object for the site config, the nine-category object for the rankings) with contact fields dropped, plus _request (the season, competition, team, roster or game ids asked for).

Example​

sportpress_team_find(competition_team_id=541)

Last validated n/a.

sportpress_team_player_averages​

Per-game averages of each player of a competition team.

Endpoint URL: GET https://bnxt.sportpress.info/api/v1/competition-team/player-averages/{competition_team_id}

Valid URL: https://bnxt.sportpress.info/api/v1/competition-team/player-averages/541

API ParameterPythonPatternRequiredNullableDescription
competition_team_idcompetition_team_idYRequired. Competition-team id (integer): a team in ONE competition, so new every season (e.g. 541 = Antwerp in 2026-27); from sportpress_competition_teams.

Returns​

return_parsed=True (default) — a tidy polars.DataFrame with the columns below; pass return_as_pandas=True for a pandas.DataFrame.

col_nametypedescription
competition_team_idintegerCompetition-team id (key space: sportpress competition teams): a team in ONE competition, so a club has a new id every season (Antwerp = 3 in 2021-22, 506 in 2025-26, 541 in 2026-27). uu_team_id is the stable club key.
roster_idintegerRoster id (key space: sportpress roster entries): one player on one competition team in one season, so a player has a new roster_id for every team and season. player_id is the person.
player_idintegerPlayer id (key space: sportpress persons): stable across seasons and teams, distinct from roster_id. Not a Genius or FIBA person id.
first_namecharacterGiven name of the player as entered in the CMS.
last_namecharacterFamily name of the player as entered in the CMS.
nationality_codecharacterNationality code in FIBA style (USA, BEL, NED): DIRTY, with lower-case variants, '/'-joined pairs (USA/BEL), the empty string and 'HOL'; normalise before joining.
birth_datecharacterDate of birth as shown on the public player page; null when unknown.
played_gamesintegerGames the player played in the season.
games_startedintegerGames started (a count, not a mean).
minutenumericMinutes played; for a team total, the sum over its players (200 + 25 per overtime). Per-game mean over the games played (fractional).
foulnumericPersonal fouls committed. Per-game mean over the games played (fractional).
defensive_foulnumericFouls DRAWN (suffered), despite the name: equals the opponent's foul count up to scorer corrections. Per-game mean over the games played (fractional).
dunk_madenumericDunks made (a subset of the two-point field goals). Per-game mean over the games played (fractional).
dunk_allnumericDunks attempted. Per-game mean over the games played (fractional).
dunk_percentnumericDunk percentage 0-100; 0 when none were attempted. Per-game mean over the games played (fractional).
two_point_madenumericTwo-point field goals made. Per-game mean over the games played (fractional).
two_point_allnumericTwo-point field goals attempted. Per-game mean over the games played (fractional).
two_point_percentnumericTwo-point percentage 0-100. Per-game mean over the games played (fractional).
three_point_madenumericThree-point field goals made. Per-game mean over the games played (fractional).
three_point_allnumericThree-point field goals attempted. Per-game mean over the games played (fractional).
three_point_percentnumericThree-point percentage 0-100. Per-game mean over the games played (fractional).
throw_madenumericAll field goals made, two- plus three-pointers (the provider calls them 'throw'). Per-game mean over the games played (fractional).
throw_allnumericAll field goals attempted, two- plus three-pointers (the provider calls them 'throw'). Per-game mean over the games played (fractional).
throw_percentnumericField-goal percentage 0-100. Per-game mean over the games played (fractional).
free_throw_madenumericFree throws made. Per-game mean over the games played (fractional).
free_throw_allnumericFree throws attempted. Per-game mean over the games played (fractional).
free_throw_percentnumericFree-throw percentage 0-100. Per-game mean over the games played (fractional).
offensive_reboundnumericOffensive rebounds. Per-game mean over the games played (fractional).
defensive_reboundnumericDefensive rebounds. Per-game mean over the games played (fractional).
total_reboundnumericTotal rebounds (offensive plus defensive). Per-game mean over the games played (fractional).
blocknumericShots blocked by the player. Per-game mean over the games played (fractional).
block_againstnumericOwn shots blocked by an opponent. Per-game mean over the games played (fractional).
turnovernumericTurnovers committed. Per-game mean over the games played (fractional).
stealnumericSteals (balls taken from an opponent). Per-game mean over the games played (fractional).
assistnumericAssists (passes leading directly to a made basket). Per-game mean over the games played (fractional).
pointsnumericPoints scored (2 x two-pointers + 3 x three-pointers + free throws). Per-game mean over the games played (fractional).
valuenumericEfficiency rating (PIR with fouls drawn): points + rebounds + assists + steals + blocks + fouls drawn - missed field goals - missed free throws - turnovers. Per-game mean over the games played (fractional).

return_parsed=False — the raw body (dict): {'data': ...} (the settings object for the site config, the nine-category object for the rankings) with contact fields dropped, plus _request (the season, competition, team, roster or game ids asked for).

Example​

sportpress_team_player_averages(competition_team_id=541)

Last validated n/a.

sportpress_team_games​

Every finished game of a competition team with that team's totals.

Endpoint URL: GET https://bnxt.sportpress.info/api/v1/competition-team/statistics-by-game/total/{competition_team_id}

Valid URL: https://bnxt.sportpress.info/api/v1/competition-team/statistics-by-game/total/541

API ParameterPythonPatternRequiredNullableDescription
competition_team_idcompetition_team_idYRequired. Competition-team id (integer): a team in ONE competition, so new every season (e.g. 541 = Antwerp in 2026-27); from sportpress_competition_teams.

Returns​

return_parsed=True (default) — a tidy polars.DataFrame with the columns below; pass return_as_pandas=True for a pandas.DataFrame.

col_nametypedescription
competition_team_idintegerCompetition-team id the games were asked for (the team the totals belong to).
game_idintegerGame id (key space: sportpress games), unique across seasons: the key of every game route.
game_timecharacterTip-off as a naive datetime. The source carries no offset; the league's local time is assumed and unverified.
statuscharacterGame status: finished, or ready for an upcoming game.
competition_idintegerCompetition id (key space: sportpress competitions): ONE season of the league (24 = 2025-26, 25 = 2026-27). Not the season number. The key of the standings, ranking, slider and box routes.
seasonintegerSeason END year of the game's competition.
phase_idintegerPhase id (key space: sportpress phases), a stage of one competition such as the regular season or the playoffs; new every season.
phase_namecharacterPhase name as entered in the CMS ('Regular season 2026-27').
round_namecharacterRound label as entered in the CMS; often empty.
round_priorityintegerSort order of the round within the phase (provider's priority); meaning of the values is unverified.
period_namecharacterName of the period the game is in or ended in; 'Extra2' means the second overtime.
arenacharacterName of the arena where the game is played.
home_competition_team_idintegerHome side. Competition-team id (key space: sportpress competition teams): a team in ONE competition, so the same club has a new id every season (Antwerp = 3 in 2021-22, 506 in 2025-26, 541 in 2026-27). Joins competitors, rosters, box scores, film and standings. The stable club key across seasons is uu_team_id.
home_teamcharacterHome side. Display name incl. the sponsor. Teams of the playoff phases carry a ' playoff' suffix (2025-26), and standings names vary with X-Localization ('Partena Professional Okapi Aalst Playoff' (en) vs 'Okapi Aalst Playoff' (nl, fr)): never join on it.
home_team_short_namecharacterHome side. Three-letter club code (CHA, OOS, ANT, MON, LIM, ...), stable across seasons in the samples.
home_scoreintegerHome side. Final points of the side, including overtime.
away_competition_team_idintegerAway side. Competition-team id (key space: sportpress competition teams): a team in ONE competition, so the same club has a new id every season (Antwerp = 3 in 2021-22, 506 in 2025-26, 541 in 2026-27). Joins competitors, rosters, box scores, film and standings. The stable club key across seasons is uu_team_id.
away_teamcharacterAway side. Display name incl. the sponsor. Teams of the playoff phases carry a ' playoff' suffix (2025-26), and standings names vary with X-Localization ('Partena Professional Okapi Aalst Playoff' (en) vs 'Okapi Aalst Playoff' (nl, fr)): never join on it.
away_team_short_namecharacterAway side. Three-letter club code (CHA, OOS, ANT, MON, LIM, ...), stable across seasons in the samples.
away_scoreintegerAway side. Final points of the side, including overtime.
minuteintegerThe team's own minutes played; for a team total, the sum over its players (200 + 25 per overtime).
foulintegerThe team's own personal fouls committed.
defensive_foulintegerThe team's own fouls DRAWN (suffered), despite the name: equals the opponent's foul count up to scorer corrections.
dunk_madeintegerThe team's own dunks made (a subset of the two-point field goals).
dunk_allintegerThe team's own dunks attempted.
dunk_percentnumericThe team's own dunk percentage 0-100; 0 when none were attempted.
two_point_madeintegerThe team's own two-point field goals made.
two_point_allintegerThe team's own two-point field goals attempted.
two_point_percentnumericThe team's own two-point percentage 0-100.
three_point_madeintegerThe team's own three-point field goals made.
three_point_allintegerThe team's own three-point field goals attempted.
three_point_percentnumericThe team's own three-point percentage 0-100.
throw_madeintegerThe team's own all field goals made, two- plus three-pointers (the provider calls them 'throw').
throw_allintegerThe team's own all field goals attempted, two- plus three-pointers (the provider calls them 'throw').
throw_percentnumericThe team's own field-goal percentage 0-100.
free_throw_madeintegerThe team's own free throws made.
free_throw_allintegerThe team's own free throws attempted.
free_throw_percentnumericThe team's own free-throw percentage 0-100.
offensive_reboundintegerThe team's own offensive rebounds.
defensive_reboundintegerThe team's own defensive rebounds.
total_reboundintegerThe team's own total rebounds (offensive plus defensive).
blockintegerThe team's own shots blocked by the player.
block_againstintegerThe team's own own shots blocked by an opponent.
turnoverintegerThe team's own turnovers committed.
stealintegerThe team's own steals (balls taken from an opponent).
assistintegerThe team's own assists (passes leading directly to a made basket).
pointsintegerThe team's own points scored (2 x two-pointers + 3 x three-pointers + free throws).
valueintegerThe team's own efficiency rating (PIR with fouls drawn): points + rebounds + assists + steals + blocks + fouls drawn - missed field goals - missed free throws - turnovers.
plusminusintegerThe team's own plus/minus: the score margin while the player (or team) was on court; for a team total it is the game margin.

return_parsed=False — the raw body (dict): {'data': ...} (the settings object for the site config, the nine-category object for the rankings) with contact fields dropped, plus _request (the season, competition, team, roster or game ids asked for).

Example​

sportpress_team_games(competition_team_id=541)

Last validated n/a.