Skip to main content

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

sportpress_ui_strings​

UI string tables of the site in English, French and Dutch (one row per language and key).

Endpoint URL: GET https://bnxt.sportpress.info/api/v1/server-config

Valid URL: https://bnxt.sportpress.info/api/v1/server-config

API ParameterPythonPatternRequiredNullableDescription

Returns​

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

col_nametypedescription
languagecharacterISO 639-1 code of the UI language: en, fr (French) or nl (Dutch).
keycharacterDotted UI string key such as 'statistics.individual.points'; 302 keys per language.
textcharacterThe UI text in that language; 11 keys label statistics columns, the rest are menus and buttons.

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_ui_strings()

Last validated n/a.

sportpress_club_seasons​

Seasons (END years) in which Belgian and Dutch clubs have teams.

Endpoint URL: GET https://bnxt.sportpress.info/api/v1/competition-team/club/seasons

Valid URL: https://bnxt.sportpress.info/api/v1/competition-team/club/seasons?clubs%5B0%5D=1&clubs%5B1%5D=2

API ParameterPythonPatternRequiredNullableDescription

Returns​

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

col_nametypedescription
seasonintegerSeason END year in which the clubs (countries) have teams; includes 2021 = 2020-21.

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_club_seasons()

Last validated n/a.

sportpress_referees​

Referees of the league (staff title 2).

Endpoint URL: GET https://bnxt.sportpress.info/api/v1/staff/list

Valid URL: https://bnxt.sportpress.info/api/v1/staff/list?title_id=2

API ParameterPythonPatternRequiredNullableDescription

Returns​

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

col_nametypedescription
staff_idintegerStaff member id (key space: sportpress staff); the referees are title 2.
namecharacterReferee name 'First Last' (free text).
title_idintegerStaff title id: 1 = Head coach, 2 = Referee; Assistant coach has its own id.
title_namecharacterStaff title in English: Head coach, Assistant coach or Referee.

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_referees()

Last validated n/a.

sportpress_phases​

The competition of a season with its phases (regular season, playoffs, supercup).

Endpoint URL: GET https://bnxt.sportpress.info/api/v1/phase/season/{season}

Valid URL: https://bnxt.sportpress.info/api/v1/phase/season/2026

API ParameterPythonPatternRequiredNullableDescription
seasonseasonYRequired. Season END year (2026 = 2025-26), the API's own key; no mapping is applied.

Returns​

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

col_nametypedescription
seasonintegerSeason END year (2026 = 2025-26), the sdv convention and the API's own season key.
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.
competition_namecharacterCompetition name, 'BNXT League 2025-2026'.
phase_idintegerPhase id (key space: sportpress phases); the {phaseId} of the standings route. New every season.
phase_namecharacterPhase name as entered in the CMS; names differ every season.
standings_visiblelogicalWhether the phase shows standings; false for playoff phases, which answer the standings route empty.

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_phases(season=2026)

Last validated n/a.

sportpress_competition_teams​

Every competition team of one competition: ids, names and country.

Endpoint URL: GET https://bnxt.sportpress.info/api/v1/competition-team/all

Valid URL: https://bnxt.sportpress.info/api/v1/competition-team/all?competition_id=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).

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 the team plays in (key space: sportpress competitions); the competition_id the route was asked for.
seasonintegerSeason END year of the team's competition.
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.

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_competition_teams(competition_id=24)

Last validated n/a.

sportpress_competition_staff​

Coaching staff (head coach, assistants) of every competition team of one competition.

Endpoint URL: GET https://bnxt.sportpress.info/api/v1/competition-team/all

Valid URL: https://bnxt.sportpress.info/api/v1/competition-team/all?competition_id=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).

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 of the team the staff member works for.
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.
staff_idintegerStaff member id (key space: sportpress staff).
namecharacterStaff member name 'First Last' (free text).
title_idintegerStaff title id: 1 = Head coach; Assistant coach has its own id.
title_namecharacterStaff title in English: Head coach or Assistant coach.

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_competition_staff(competition_id=24)

Last validated n/a.

sportpress_standings​

Standings of one phase of a competition: record, points, home/away split, last five and streak.

Endpoint URL: GET https://bnxt.sportpress.info/api/v1/standings/competition/{competition_id}/phase/{phase_id}

Valid URL: https://bnxt.sportpress.info/api/v1/standings/competition/24/phase/169

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_idYRequired. Phase id (integer) of the competition, from sportpress_phases (phase_id).

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.
phase_idintegerPhase id (key space: sportpress phases), a stage of one competition such as the regular season or the playoffs; new every season.
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.
positionintegerRank in the table, 1 = first.
playedintegerGames played in the phase (win + loss + even).
winintegerGames won in the phase.
lossintegerGames lost in the phase.
evenintegerGames drawn; 0 in every sample (basketball has no draws).
scoreintegerPoints scored in the phase.
againstintegerPoints conceded in the phase.
score_differenceintegerscore - against.
percentnumericWin percentage 0-100, rounded to 1 decimal.
pointintegerLeague points: 2 per win plus 1 per loss.
point_percentnumericShare of the possible league points won, 0-1 rounded to 2 decimals.
home_winintegerWins in home games.
home_lossintegerLosses in home games.
away_winintegerWins in away games.
away_lossintegerLosses in away games.
last5_winintegerWins among the last five games.
last5_lossintegerLosses among the last five games.
streak_is_winlogicalTrue for a winning streak, false for a losing one.
streak_countintegerLength of the current streak in games.
groupcharacterGroup label for split phases; null in every sample.

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_standings(competition_id=24, phase_id=169)

Last validated n/a.

sportpress_schedule​

Every game of a season for Belgian and Dutch clubs, with teams, scores, phase and venue.

Endpoint URL: GET https://bnxt.sportpress.info/api/v1/schedule/club/{season}

Valid URL: https://bnxt.sportpress.info/api/v1/schedule/club/2026?clubs%5B0%5D=1&clubs%5B1%5D=2&month=-1

API ParameterPythonPatternRequiredNullableDescription
seasonseasonYRequired. Season END year (2026 = 2025-26), the API's own key; no mapping is applied.
monthmonthYCalendar month filter; -1 (default) = the whole season in one body.
phase_idphase_idYRestrict to one phase (integer), from sportpress_phases. Omitted = every phase.

Returns​

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

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

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_schedule(season=2026)

Last validated n/a.

sportpress_season_roster​

Every roster entry of a season: player, team, jersey, height, weight and position.

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

Valid URL: https://bnxt.sportpress.info/api/v1/roster/season-players/2026

API ParameterPythonPatternRequiredNullableDescription
seasonseasonYRequired. Season END year (2026 = 2025-26), the API's own key; no mapping is applied.

Returns​

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

col_nametypedescription
seasonintegerSeason END year the roster was asked for.
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_season_roster(season=2026)

Last validated n/a.

sportpress_nationality_codes​

Distinct player nationality codes of a season (dirty: lower case, pairs, empty).

Endpoint URL: GET https://bnxt.sportpress.info/api/v1/roster/season-nationality-codes/{season}

Valid URL: https://bnxt.sportpress.info/api/v1/roster/season-nationality-codes/2026

API ParameterPythonPatternRequiredNullableDescription
seasonseasonYRequired. Season END year (2026 = 2025-26), the API's own key; no mapping is applied.

Returns​

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

col_nametypedescription
seasonintegerSeason END year the codes were asked for.
nationality_codecharacterA distinct nationality code of the season's players, as served (dirty).

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_nationality_codes(season=2026)

Last validated n/a.

sportpress_roster_find​

One roster entry with its player, team and season.

Endpoint URL: GET https://bnxt.sportpress.info/api/v1/roster/find/{roster_id}

Valid URL: https://bnxt.sportpress.info/api/v1/roster/find/11193

API ParameterPythonPatternRequiredNullableDescription
roster_idroster_idYRequired. Roster id (integer): one player on one team in one season; from the roster frames.

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; former entries are false.
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.
uu_team_idintegerStable club key across seasons of the team.
teamcharacterTeam display name including the sponsor.
team_short_namecharacterThree-letter club code of the team.
competition_idintegerCompetition id the roster entry's team plays in.
seasonintegerSeason END year of the roster entry's competition.

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_roster_find(roster_id=11193)

Last validated n/a.