Integration GuidesReference Docs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

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

FeedPurpose
League HierarchyThe conference and division structure the tables follow
StandingsRecords, win percentage, games behind, streaks, and 30+ record splits
RankingsConference and division ranks plus clinch markers
Daily Change LogThe trigger for off-cycle standings refreshes


High-Level Workflow

Hierarchy for structure → Standings per season type → Rankings for seeds and clinch markers

Two Tables per SeasonThe Showcase Cup and the regular season keep separate records
Regular Season late December to late March
Standings 2025/REGconference + division tables
Seeds the April playoffs; Rankings adds seeds and clinch markers.
Showcase Cup November to late December
Standings 2025/SCits own table, its own champion
Resolves in the one-game SCC championship; records reset for the regular season.
Same request shape, different season_type; key stored rows on season ID plus team ID.


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, and win_pct are the record; points_for and points_against are per-game averages, with point_diff their difference
  • games_behind is an object with league, conference, and division values, so one row serves every table view
  • streak carries the current run as kind (win or loss) and length
  • records is a list of 30+ situational splits keyed by record_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 as atlantic-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:

Eastern Conference2025-26 Regular Season
TEAMWLPCTGBSTRK
1OSCOsceola MagicClinched Conference2610.7220W1
2GBOGreensboro SwarmClinched Playoff Berth2412.6672L1
3CLCCleveland ChargeClinched Playoff Berth2313.6393W1
The logo slots are generic placeholders; fill them from Sportradar's image products or your own assets.


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 clinched markers
  • Team form modules from streak and the last_10, home, and road splits


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 standings section 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

Did this page help you?