Standings and Rankings
This scenario builds and maintains the league tables: conference and division standings with deep record splits, the separate Showcase Cup table, and the Rankings feed's seeds and clinch markers.
This scenario is commonly used to:
- Render standings pages with conference and division views
- Track playoff races with seeds and clinch markers
- Show team form with streaks, last-10 records, and home/road splits
Relevant Feeds
| Feed | Purpose |
|---|---|
| League Hierarchy | The conference and division structure the tables follow |
| Standings | Records, win percentage, games behind, streaks, and 30+ record splits |
| Rankings | Conference and division ranks plus clinch markers |
| Daily Change Log | The trigger for off-cycle standings refreshes |
High-Level Workflow
Hierarchy for structure → Standings per season type → Rankings for seeds and clinch markers
Integration Steps
1. Read the league structure
League Hierarchy returns the conference and division tree that standings and rankings follow. In the current structure, teams sit directly in a conference-wide division (16 teams in the Eastern Conference, 15 in the Western):
GET https://api.sportradar.com/nbdl/trial/v8/en/league/hierarchy.json
x-api-key: YOUR_API_KEY{
"league": {
"id": "ac79301f-9b1a-4e72-a4cb-230d4418ae08",
"name": "NBA G League",
"alias": "NBDL"
},
"conferences": [
{
"id": "aa94c231-e9c7-48ac-bcc4-99a0a9273f68",
"name": "EASTERN CONFERENCE",
"alias": "EASTERN-DL",
"divisions": [
{
"id": "29016614-48f3-4b2b-95d7-6ee09cb3f0ca",
"name": "Eastern Conference",
"alias": "EASTERN - G",
"teams": [
{
"id": "e74de5ce-3e98-4414-afe5-b56a90e527a2",
"name": "Swarm",
"market": "Greensboro",
"alias": "GBO",
"reference": "1612709922"
},
{
"id": "de15d563-8e6b-4f3d-ba47-9dfb6fc51222",
"name": "Charge",
"market": "Cleveland",
"alias": "CLC",
"reference": "1612709893"
},
{
"id": "cefdc308-b8ea-441e-a698-6ef3891cec35",
"name": "Go-Go",
"market": "Capital City",
"alias": "CCG",
"reference": "1612709928"
}
]
}
]
}
]
}The sample is reduced to one conference and three of its teams. The hierarchy also carries entries for historical division alignments, which appear without teams; render from the divisions that contain teams.
2. Pull the standings
Standings takes the {season_year}/{season_type} pair. The Eastern Conference top three from the final 2025-26 regular-season table, in both formats:
GET https://api.sportradar.com/nbdl/trial/v8/en/seasons/2025/REG/standings.json
x-api-key: YOUR_API_KEY{
"league": {
"id": "ac79301f-9b1a-4e72-a4cb-230d4418ae08",
"name": "NBA G League",
"alias": "NBDL"
},
"season": {
"id": "fea41a6e-80d4-4756-bfea-37c7b347a21a",
"year": 2025,
"type": "REG"
},
"conferences": [
{
"id": "aa94c231-e9c7-48ac-bcc4-99a0a9273f68",
"name": "EASTERN CONFERENCE",
"alias": "EASTERN-DL",
"divisions": [
{
"id": "29016614-48f3-4b2b-95d7-6ee09cb3f0ca",
"name": "Eastern Conference",
"alias": "EASTERN - G",
"teams": [
{
"id": "179339ce-525f-4a2d-8117-a4b33b3daebb",
"name": "Magic",
"market": "Osceola",
"wins": 26,
"losses": 10,
"win_pct": 0.722,
"points_for": 119.19,
"points_against": 112.64,
"point_diff": 6.56,
"games_behind": {
"league": 0,
"conference": 0,
"division": 0
},
"streak": {
"kind": "win",
"length": 1
},
"records": [
{
"record_type": "conference",
"wins": 20,
"losses": 9,
"win_pct": 0.69
},
{
"record_type": "home",
"wins": 14,
"losses": 4,
"win_pct": 0.778
},
{
"record_type": "last_10",
"wins": 7,
"losses": 3,
"win_pct": 0.7
},
{
"record_type": "road",
"wins": 12,
"losses": 6,
"win_pct": 0.667
}
]
},
{
"id": "e74de5ce-3e98-4414-afe5-b56a90e527a2",
"name": "Swarm",
"market": "Greensboro",
"wins": 24,
"losses": 12,
"win_pct": 0.667,
"points_for": 126.17,
"points_against": 118.03,
"point_diff": 8.14,
"games_behind": {
"league": 2,
"conference": 2,
"division": 2
},
"streak": {
"kind": "loss",
"length": 1
},
"records": [
{
"record_type": "conference",
"wins": 19,
"losses": 10,
"win_pct": 0.655
},
{
"record_type": "home",
"wins": 12,
"losses": 6,
"win_pct": 0.667
},
{
"record_type": "last_10",
"wins": 5,
"losses": 5,
"win_pct": 0.5
},
{
"record_type": "road",
"wins": 12,
"losses": 6,
"win_pct": 0.667
}
]
},
{
"id": "de15d563-8e6b-4f3d-ba47-9dfb6fc51222",
"name": "Charge",
"market": "Cleveland",
"wins": 23,
"losses": 13,
"win_pct": 0.639,
"points_for": 122.58,
"points_against": 117.25,
"point_diff": 5.33,
"games_behind": {
"league": 3,
"conference": 3,
"division": 3
},
"streak": {
"kind": "win",
"length": 1
},
"records": [
{
"record_type": "conference",
"wins": 18,
"losses": 10,
"win_pct": 0.643
},
{
"record_type": "home",
"wins": 13,
"losses": 5,
"win_pct": 0.722
},
{
"record_type": "last_10",
"wins": 5,
"losses": 5,
"win_pct": 0.5
},
{
"record_type": "road",
"wins": 10,
"losses": 8,
"win_pct": 0.556
}
]
}
]
}
]
}
]
}<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" charset="UTF-8" href="/xslt/basketball/nbdl/standings-v4.0.xsl"?>
<!-- Generation started @ 2026-07-23 02:49:51 +0000 -->
<league xmlns="http://feed.elasticstats.com/schema/basketball/nbdl/standings-v4.0.xsd" id="ac79301f-9b1a-4e72-a4cb-230d4418ae08" name="NBA G League" alias="NBDL">
<season id="fea41a6e-80d4-4756-bfea-37c7b347a21a" year="2025" type="REG">
<conference id="aa94c231-e9c7-48ac-bcc4-99a0a9273f68" name="EASTERN CONFERENCE" alias="EASTERN-DL">
<division id="29016614-48f3-4b2b-95d7-6ee09cb3f0ca" name="Eastern Conference" alias="EASTERN - G">
<team id="179339ce-525f-4a2d-8117-a4b33b3daebb" name="Magic" market="Osceola" wins="26" losses="10" win_pct="0.722" points_for="119.19" points_against="112.64" point_diff="6.56">
<games-behind league="0" conference="0" division="0"/>
<streak>
<win length="1"/>
</streak>
<calc_rank/>
<records>
<atlantic-dl wins="0" losses="0" win_pct="0"/>
<below_500 wins="11" losses="1" win_pct="0.917"/>
<central-dl wins="0" losses="0" win_pct="0"/>
<conference wins="20" losses="9" win_pct="0.69"/>
<division wins="20" losses="9" win_pct="0.69"/>
<eastern wins="20" losses="9" win_pct="0.69"/>
<equal_rebounds wins="1" losses="0" win_pct="1"/>
<equal_turnovers wins="1" losses="0" win_pct="1"/>
<fewer_turnovers wins="14" losses="7" win_pct="0.667"/>
<gleague wins="0" losses="0" win_pct="0"/>
<home wins="14" losses="4" win_pct="0.778"/>
<last_10 wins="7" losses="3" win_pct="0.7"/>
<last_10_home wins="8" losses="2" win_pct="0.8"/>
<last_10_road wins="6" losses="4" win_pct="0.6"/>
<leads_field_goal_pct wins="23" losses="1" win_pct="0.958"/>
<leads_rebounds wins="14" losses="2" win_pct="0.875"/>
<midwest-dl wins="0" losses="0" win_pct="0"/>
<neutral wins="0" losses="0" win_pct="0"/>
<opponent_fewer_turnovers wins="11" losses="3" win_pct="0.786"/>
<opponent_leads_field_goal_pct wins="3" losses="9" win_pct="0.25"/>
<opponent_leads_rebounds wins="11" losses="8" win_pct="0.579"/>
<opponent_scores_100_or_more wins="21" losses="10" win_pct="0.677"/>
<over_500 wins="15" losses="9" win_pct="0.625"/>
<overtime wins="1" losses="1" win_pct="0.5"/>
<pacific-dl wins="0" losses="0" win_pct="0"/>
<road wins="12" losses="6" win_pct="0.667"/>
<scores_100_or_more wins="26" losses="9" win_pct="0.743"/>
<southeast-dl wins="0" losses="0" win_pct="0"/>
<southwest-dl wins="0" losses="0" win_pct="0"/>
<ten_points wins="14" losses="5" win_pct="0.737"/>
<three_points wins="2" losses="2" win_pct="0.5"/>
<western wins="6" losses="1" win_pct="0.857"/>
</records>
</team>
<team id="e74de5ce-3e98-4414-afe5-b56a90e527a2" name="Swarm" market="Greensboro" wins="24" losses="12" win_pct="0.667" points_for="126.17" points_against="118.03" point_diff="8.14">
<games-behind league="2" conference="2" division="2"/>
<streak>
<loss length="1"/>
</streak>
<calc_rank/>
<records>
<atlantic-dl wins="0" losses="0" win_pct="0"/>
<below_500 wins="10" losses="2" win_pct="0.833"/>
<central-dl wins="0" losses="0" win_pct="0"/>
<conference wins="19" losses="10" win_pct="0.655"/>
<division wins="19" losses="10" win_pct="0.655"/>
<eastern wins="19" losses="10" win_pct="0.655"/>
<equal_rebounds wins="1" losses="1" win_pct="0.5"/>
<equal_turnovers wins="5" losses="0" win_pct="1"/>
<fewer_turnovers wins="11" losses="6" win_pct="0.647"/>
<gleague wins="0" losses="0" win_pct="0"/>
<home wins="12" losses="6" win_pct="0.667"/>
<last_10 wins="5" losses="5" win_pct="0.5"/>
<last_10_home wins="6" losses="4" win_pct="0.6"/>
<last_10_road wins="6" losses="4" win_pct="0.6"/>
<leads_field_goal_pct wins="21" losses="4" win_pct="0.84"/>
<leads_rebounds wins="18" losses="4" win_pct="0.818"/>
<midwest-dl wins="0" losses="0" win_pct="0"/>
<neutral wins="0" losses="0" win_pct="0"/>
<opponent_fewer_turnovers wins="8" losses="6" win_pct="0.571"/>
<opponent_leads_field_goal_pct wins="3" losses="8" win_pct="0.273"/>
<opponent_leads_rebounds wins="5" losses="7" win_pct="0.417"/>
<opponent_scores_100_or_more wins="23" losses="12" win_pct="0.657"/>
<over_500 wins="14" losses="10" win_pct="0.583"/>
<overtime wins="1" losses="1" win_pct="0.5"/>
<pacific-dl wins="0" losses="0" win_pct="0"/>
<road wins="12" losses="6" win_pct="0.667"/>
<scores_100_or_more wins="24" losses="12" win_pct="0.667"/>
<southeast-dl wins="0" losses="0" win_pct="0"/>
<southwest-dl wins="0" losses="0" win_pct="0"/>
<ten_points wins="18" losses="5" win_pct="0.783"/>
<three_points wins="2" losses="2" win_pct="0.5"/>
<western wins="5" losses="2" win_pct="0.714"/>
</records>
</team>
<!-- ... omitted for brevity -->
</division>
</conference>
<!-- ... omitted for brevity -->
</season>
</league>
<!-- Generation ended @ 2026-07-23 02:49:51 +0000 -->The JSON sample keeps three rows and four of each row's record splits; the XML keeps two full rows with the remaining teams and the Western Conference omitted. Reading a row:
wins,losses, andwin_pctare the record;points_forandpoints_againstare per-game averages, withpoint_difftheir differencegames_behindis an object withleague,conference, anddivisionvalues, so one row serves every table viewstreakcarries the current run askind(winorloss) andlengthrecordsis a list of 30+ situational splits keyed byrecord_type:home,road,last_10,conference,division, results against over-.500 opponents, overtime games, and more. Splits tied to the league's former division alignment (such asatlantic-dl) remain in the list but sit at 0-0 under the current two-conference structure; choose from the splits that carry data
3. Show the Showcase Cup table separately
The Showcase Cup is its own season type with its own table; regular-season records do not include it. The same request shape with SC, showing the top of the Western Conference (led by the eventual Showcase Cup champion):
GET https://api.sportradar.com/nbdl/trial/v8/en/seasons/2025/SC/standings.json
x-api-key: YOUR_API_KEY{
"league": {
"id": "ac79301f-9b1a-4e72-a4cb-230d4418ae08",
"name": "NBA G League",
"alias": "NBDL"
},
"season": {
"id": "ebf401bb-9bc2-4d18-832c-cd1d32f6dcdd",
"year": 2025,
"type": "SC"
},
"conferences": [
{
"id": "1359451c-3a31-4a27-afca-214e3d391156",
"name": "WESTERN CONFERENCE",
"alias": "WESTERN-DL",
"divisions": [
{
"id": "553510fc-6a2a-4c3d-ac6e-4deb55a52b87",
"name": "Western Conference",
"alias": "WESTERN - G",
"teams": [
{
"id": "f12b109d-a4fa-42f4-83fd-34a82cf65239",
"name": "Stars",
"market": "Salt Lake City",
"wins": 12,
"losses": 2,
"win_pct": 0.857,
"points_for": 133.64,
"points_against": 118.21,
"point_diff": 15.43,
"games_behind": {
"league": 2,
"conference": 0,
"division": 0
},
"streak": {
"kind": "win",
"length": 3
}
},
{
"id": "0f009580-dda8-4080-aa43-5d58a17028f6",
"name": "Spurs",
"market": "Austin",
"wins": 12,
"losses": 2,
"win_pct": 0.857,
"points_for": 118.07,
"points_against": 108.79,
"point_diff": 9.28,
"games_behind": {
"league": 2,
"conference": 0,
"division": 0
},
"streak": {
"kind": "loss",
"length": 1
}
}
]
}
]
}
]
}4. Read seeds and clinch markers from Rankings
Rankings returns each team's rank within its conference and division, and adds a clinched marker when something has been secured. The top of the final 2025-26 Eastern Conference rankings, where the leader carries clinched: "conference":
GET https://api.sportradar.com/nbdl/trial/v8/en/seasons/2025/REG/rankings.json
x-api-key: YOUR_API_KEY{
"league": {
"id": "ac79301f-9b1a-4e72-a4cb-230d4418ae08",
"name": "NBA G League",
"alias": "NBDL"
},
"season": {
"id": "fea41a6e-80d4-4756-bfea-37c7b347a21a",
"year": 2025,
"type": "REG"
},
"conferences": [
{
"id": "aa94c231-e9c7-48ac-bcc4-99a0a9273f68",
"name": "EASTERN CONFERENCE",
"alias": "EASTERN-DL",
"divisions": [
{
"id": "29016614-48f3-4b2b-95d7-6ee09cb3f0ca",
"name": "Eastern Conference",
"alias": "EASTERN - G",
"teams": [
{
"id": "179339ce-525f-4a2d-8117-a4b33b3daebb",
"name": "Magic",
"market": "Osceola",
"rank": {
"conference": 1,
"division": 1,
"clinched": "conference"
}
},
{
"id": "e74de5ce-3e98-4414-afe5-b56a90e527a2",
"name": "Swarm",
"market": "Greensboro",
"rank": {
"conference": 2,
"division": 2,
"clinched": "playoff_berth"
}
},
{
"id": "de15d563-8e6b-4f3d-ba47-9dfb6fc51222",
"name": "Charge",
"market": "Cleveland",
"rank": {
"conference": 3,
"division": 3,
"clinched": "playoff_berth"
}
}
]
}
]
}
]
}clinched appears only on rows that have secured something; treat it as optional, and never derive clinching from rank yourself. Two of the six documented values appear in the sample above (conference on the leader, playoff_berth behind it); the full set (conference, division, division_playoff_berth, playoff_berth, play_in_berth, eliminated) is defined in the G League FAQ. Rankings apply to the played phases that seed something: the regular season (which seeds the playoffs) and the Showcase Cup.
Together the two feeds render as a finished table: rows from Standings, the rank column and clinch chips from Rankings:
Common Use Cases
Typical builds on this workflow include:
- A standings page with conference and division tabs plus a Showcase Cup tab during November and December
- A playoff race tracker on Rankings' seeds and
clinchedmarkers - Team form modules from
streakand thelast_10,home, androadsplits
Best Practices
- Refresh standings and rankings after game days rather than on a fast timer; the tables move when games close
- Key rows on the pair of season ID and team ID: the same team has separate regular-season and Showcase Cup rows
- Use the
standingssection of the daily change log (Monitoring Data Changes) to catch off-cycle corrections to closed games that move a table - Render tables from the feed's ordering and markers rather than recomputing them from results
Updated about 14 hours ago
