Skip to contents

Next match; the team segment is ignored by Rosetta (the body is the organisation's next match).

Endpoint: GET https://prod.rosetta.nbl.com.au/get/next/match/for/team/{team_code}/{org}/{season}

Usage

nbl_rosetta_next_match_team(team_code, season, org = "wnbl")

Arguments

team_code

(character required): Team code (team_code of nbl_rosetta_teams), e.g. PER for the Perth Wildcats.

season

(integer required): Season END year (2026 = 2025-26). The runtime maps it to Rosetta's year: the START year for the NBL and WNBL from 1998-99, the calendar year for NBL1 and the NBL / WNBL winter seasons up to 1998. END 1998 and 1999 both read Rosetta year 1998, which holds two seasons; the matches frame keeps the one asked for.

org

(character default "wnbl", the women's WNBL): Organisation: nbl (men's NBL), wnbl (women's) or nbl1 (the second tier, men's and women's conferences). One of "nbl", "wnbl", "nbl1".

Value

A wehoop_data tibble (one row: the next match):

col_nametypedescription
orgcharacterOrganisation the row belongs to: nbl, wnbl or nbl1. From the row's competition, else from the request.
match_idcharacterDataCore fixture id (UUID v1); equal to id.
external_media_idcharacterMedia id. Through NBL25 (2024-25): the Genius Sports match id (7 digits, e.g. 2636769; 6 or fewer in older seasons). From NBL26: mostly an 8-digit number of unverified origin (e.g. 61386925), date-like codes on some games (05042026 = DDMMYYYY on the 2026 Championship game, 1409252 = DDMMYY + n on the Blitz), null on many preseason games. NBL1 and WNBL 2025 carry 8-digit numbers.
date_updatedcharacterRecord last-edit time, ISO 8601 UTC.
start_timecharacterTip-off, UTC, with no offset or a Z suffix (ESPN dates the same Perth v SE Melbourne game 2025-12-18T10:30Z; Rosetta says 2025-12-18T10:30:00)
start_time_datetimecharacterTip-off, UTC; same value as start_time.
roundcharacterRound label: a number as a string in the regular season ("13"), words in the finals ("SEMI FINAL SERIES 1", "CHAMPIONSHIP")
match_typecharacterMatch type: regular, final (FINAL upper case seen)
match_statuscharacterStatus of the match in Rosetta's words (complete for a finished game): box score and play-by-play of any other status are partial.
statuscharacterProvider fixture status: CONFIRMED, SCHEDULED.
home_scoreintegerUnobserved in samples (null in every capture); type and meaning unverified.
away_scoreintegerUnobserved in samples (null in every capture); type and meaning unverified.
attendanceintegerUnobserved in samples (null in every capture); type and meaning unverified.
match_slugcharacterURL slug of the match page on nbl.com.au.
match_titlecharacterMatch title ("<home> v <away> <men/women> DD-MM-YYYY")
venue_idcharacterDataCore id (UUID v1, Sportradar) of the venue; stable across seasons and the id to join on across routes.
rosetta_venue_idcharacterRosetta's own id (UUID v4; v5 on NBL1) of the venue; routes that take this entity accept it as well as the DataCore id.
venue_namecharacterName of the venue (arena), e.g. RAC Arena.
venue_addresscharacterUnobserved in samples (null in every capture); type and meaning unverified.
venue_suburbcharacterUnobserved in samples (null in every capture); type and meaning unverified.
venue_statecharacterUnobserved in samples (null in every capture); type and meaning unverified.
venue_countrycharacterUnobserved in samples (null in every capture); type and meaning unverified.
venue_capacityintegerUnobserved in samples (null in every capture); type and meaning unverified.
venue_timezonecharacterIANA time zone of the venue, e.g. Australia/Sydney.
venue_codecharacterUnobserved in samples (null in every capture); type and meaning unverified.
venue_latitudedoubleUnobserved in samples (null in every capture); type and meaning unverified.
venue_longitudedoubleUnobserved in samples (null in every capture); type and meaning unverified.
home_team_idcharacterDataCore id (UUID v1, Sportradar) of the home team; stable across seasons and the id to join on across routes.
rosetta_home_team_idcharacterRosetta's own id (UUID v4; v5 on NBL1) of the home team; routes that take this entity accept it as well as the DataCore id.
home_team_namecharacterDisplay name of the team.
home_team_external_team_namecharacterTeam name as DataCore spells it.
home_team_codecharacterTeam code of the home team, e.g. PER or SYD.
home_team_divisioncharacterUnobserved in samples (null in every capture); type and meaning unverified.
home_team_conferencecharacterUnobserved in samples (null in every capture); type and meaning unverified.
away_team_idcharacterDataCore id (UUID v1, Sportradar) of the away team; stable across seasons and the id to join on across routes.
rosetta_away_team_idcharacterRosetta's own id (UUID v4; v5 on NBL1) of the away team; routes that take this entity accept it as well as the DataCore id.
away_team_namecharacterDisplay name of the team.
away_team_external_team_namecharacterTeam name as DataCore spells it.
away_team_codecharacterTeam code of the away team, e.g. PER or SYD.
away_team_divisioncharacterUnobserved in samples (null in every capture); type and meaning unverified.
away_team_conferencecharacterUnobserved in samples (null in every capture); type and meaning unverified.
season_idcharacterDataCore id (UUID v1, Sportradar) of the season; stable across seasons and the id to join on across routes.
rosetta_season_idcharacterRosetta's own id (UUID v4; v5 on NBL1) of the season; routes that take this entity accept it as well as the DataCore id.
season_namecharacterSeason name (NBL26, WNBL 2024/25, 2025 South Men)
season_yearintegerRosetta's year of the season: the START year for the NBL and WNBL from 1998-99 (2025 = 2025-26), the calendar year for NBL1 and the 1979-1997 winter seasons. See season_end_year for the sdv key.
season_typecharacterSeason type: regular (includes finals), preseason, in_season (cups, blitz, exhibition), test.
season_gendercharacterGender (MALE/FEMALE upper case on seasons and players, male/female lower case on competitions and divisions; UNKNOWN seen)
season_competition_idcharacterRosetta competition id (UUID v4)
season_competition_namecharacterName of the competition the season belongs to (e.g. NBL, WNBL, NBL1 North Men).
season_competition_gendercharacterUnobserved in samples (null in every capture); type and meaning unverified.
season_competition_league_namecharacterName of the league the competition belongs to (NBL, WNBL or NBL1).
season_competition_divisioncharacterAlways an empty array in samples; element shape and meaning unverified.
season_end_yearintegersdv season key: the END year of the season (2026 = 2025-26), derived from season_year (a START year for the NBL and WNBL from 1998-99, a calendar year for NBL1 and the 1979-1997 winter seasons; year 1998 is split on the start date). Where the body carries no year it is the season asked for.

Columns the body adds beyond these follow, in body order (sdv-py keeps them too).

Details

  • Unofficial: the JSON proxy behind nbl.com.au (not an API the NBL documents or supports). The terms of use were not reviewed; payloads are not redistributed as release assets.

  • Gated by a referer, not a key: every request carries Origin / Referer set to nbl.com.au (the runtime sends them); without them the host answers 403 MISSING_API_KEY, which is raised as wehoop_asset_fetch.

  • Fills a hole in ESPN: ESPN's nbl feed has box scores but no plays for the 2025-26 NBL season (the stats provider changed from Genius Sports to Sportradar DataCore that year). nbl_rosetta_match_pbp has the full event log with shot x/y for 2025-26 and, in the same shape, back to 2011-12 (WNBL about 2014-15). Matches from 1979 have box scores only.

  • One host serves three organisations; pass org='nbl' (default), 'wnbl' or 'nbl1'. NBL1 is the second tier (men's and women's conferences, calendar-year seasons).

  • Season = the END year (2026 = 2025-26) everywhere. Rosetta's own year is the START year for the NBL and WNBL from 1998-99 and a calendar year for NBL1 and the 1979-1997 winter seasons; the runtime maps it. Year 1998 holds two seasons (calendar 1998 and 1998-99).

  • Ids: <entity>id columns are DataCore ids (UUID v1; join on them), rosetta<entity>_id Rosetta's own. match_id is the DataCore fixture id every match route is keyed on.

  • Unknown ids, orgs and types answer 200 with no rows (wehoop_no_data). Rosetta caches a body per path and serves it whatever the query string, so a page cut by someone else's limit is refused (wehoop_asset_fetch); retry after the cache entry expires.

Errors: wehoop_no_data when Rosetta answers 404 or no rows (an unknown match, team, player or season id, an org or season type with nothing, or no season in progress); wehoop_asset_fetch for the 403 gate body, a stub or error envelope, a page cut by Rosetta's path cache, a body for another org, season or entity than the one asked for, or any other failed fetch; wehoop_bad_request for an unknown org / season_type, a malformed id, or HTTP 400 / 422.

 nbl_rosetta_next_match_team(org = "nbl", season = 2027, team_code = "PER")