---
updatedAt: 2026-08-20T11:23:23.000Z
agentTools:
  siteIndex: https://developer.sportradar.com/llms.txt
  projectIndex: https://developer.sportradar.com/basketball/llms.txt
---

# G League Fundamentals

This page explains the concepts the rest of the guide builds on: how a G League year is organized into season types, how the league is structured, which feeds carry game data, how coverage is flagged, and what changes if you are coming from the NBA API. The mechanics (authentication, the URL shape, errors, and cache behavior) are on [G League API Basics](https://developer.sportradar.com/basketball/docs/g-league-ig-api-basics).

<br />

***

## The Season Model

`{season_year}` is the year the G League season starts: `2025` addresses the 2025-26 season, whose regular season ran from December 2025 into March 2026. `{season_type}` selects the phase. <Anchor label="Seasons" target="_blank" href="ref:g-league-seasons">Seasons</Anchor> lists every season and phase on file; the 2025-26 entries:

```json Seasons (json)
{
  "league": {
    "id": "ac79301f-9b1a-4e72-a4cb-230d4418ae08",
    "name": "NBA G League",
    "alias": "NBDL"
  },
  "seasons": [
    {
      "id": "fbba7dc8-d6bf-4ce3-b63d-5a8626beaa49",
      "year": 2025,
      "status": "closed",
      "type": {
        "code": "EX",
        "name": "Exhibition"
      }
    },
    {
      "id": "e0eeac1f-0b20-4576-8f62-63ad4c712feb",
      "year": 2025,
      "status": "closed",
      "type": {
        "code": "PRE",
        "name": "Pre-season"
      }
    },
    {
      "id": "d32bbe62-5116-42c5-a96c-95ff0c87de03",
      "year": 2025,
      "start_date": "2026-03-31",
      "end_date": "2026-04-13",
      "status": "closed",
      "type": {
        "code": "PST",
        "name": "Post-season"
      }
    },
    {
      "id": "fea41a6e-80d4-4756-bfea-37c7b347a21a",
      "year": 2025,
      "start_date": "2025-12-19",
      "end_date": "2026-03-28",
      "status": "closed",
      "type": {
        "code": "REG",
        "name": "Regular Season"
      }
    },
    {
      "id": "ebf401bb-9bc2-4d18-832c-cd1d32f6dcdd",
      "year": 2025,
      "start_date": "2025-11-07",
      "end_date": "2025-12-22",
      "status": "closed",
      "type": {
        "code": "SC",
        "name": "Showcase Cup"
      }
    },
    {
      "id": "885e15b0-b071-49de-8d70-4b8f45a6b331",
      "year": 2025,
      "start_date": "2025-12-22",
      "end_date": "2025-12-23",
      "status": "closed",
      "type": {
        "code": "SCC",
        "name": "Showcase Cup Championship"
      }
    }
  ]
}
```
```xml Seasons (xml)
<?xml version="1.0" ?>
<!-- Generation started @ 2026-06-30 00:44:52 +0000 -->
<league xmlns="http://feed.elasticstats.com/schema/basketball/seasons-v6.0.xsd" id="ac79301f-9b1a-4e72-a4cb-230d4418ae08" name="NBA G League" alias="NBDL">
  
  
  <!-- ... omitted for brevity -->
  <season id="fbba7dc8-d6bf-4ce3-b63d-5a8626beaa49" year="2025" status="closed">
    
    
    <type code="EX" name="Exhibition"/>
    
  
  </season>
  <season id="e0eeac1f-0b20-4576-8f62-63ad4c712feb" year="2025" status="closed">
    
    
    <type code="PRE" name="Pre-season"/>
    
  
  </season>
  <season id="d32bbe62-5116-42c5-a96c-95ff0c87de03" year="2025" start_date="2026-03-31" end_date="2026-04-13" status="closed">
    
    
    <type code="PST" name="Post-season"/>
    
  
  </season>
  <season id="fea41a6e-80d4-4756-bfea-37c7b347a21a" year="2025" start_date="2025-12-19" end_date="2026-03-28" status="closed">
    
    
    <type code="REG" name="Regular Season"/>
    
  
  </season>
  <season id="ebf401bb-9bc2-4d18-832c-cd1d32f6dcdd" year="2025" start_date="2025-11-07" end_date="2025-12-22" status="closed">
    
    
    <type code="SC" name="Showcase Cup"/>
    
  
  </season>
  <season id="885e15b0-b071-49de-8d70-4b8f45a6b331" year="2025" start_date="2025-12-22" end_date="2025-12-23" status="closed">
    
    
    <type code="SCC" name="Showcase Cup Championship"/>
    
  
  </season>
  

</league>
```

The XML response is shown with earlier seasons omitted for brevity.

* `SC` (Showcase Cup): the season-opening tournament phase, November to late December
* `SCC` (Showcase Cup Championship): the Showcase Cup's standalone championship game
* `REG` (Regular Season): late December to late March
* `PST` (Post-season): the playoffs, in April
* `PRE` (Pre-season) and `EX` (Exhibition): additional game sets some seasons carry

Each phase is addressed separately and keeps its own schedule, standings, and statistics: the Showcase Cup crowns its champion in the `SCC` game, then records reset and the Regular Season starts fresh. A product covering the full G League year works phase by phase.

Not every feed accepts every type: for example, Standings covers the played phases (there is no `SCC` table for the one-game championship), and Rankings applies to `REG` and `SC`. Each endpoint's reference page lists its accepted values.

<br />

***

## League Structure

Standings, rankings, and rosters all follow one structural tree, served by <Anchor label="League Hierarchy" target="_blank" href="ref:g-league-league-hierarchy">League Hierarchy</Anchor>: the league, two conferences, and divisions holding the teams. In the current alignment, teams sit directly in one conference-wide division per side: 16 teams in the Eastern Conference and 15 in the Western.

<div style={{border: "1px solid #C5CAE9", borderRadius: "12px", overflow: "hidden", margin: "4px 0 8px"}}>
  <div style={{background: "linear-gradient(90deg, #1A237E 0%, #283593 60%, #3949AB 100%)", color: "#FFFFFF", padding: "10px 18px", display: "flex", alignItems: "baseline", justifyContent: "space-between", flexWrap: "wrap", gap: "4px 12px"}}>
    <span style={{fontWeight: 700, fontSize: "14px", letterSpacing: "0.02em"}}>The League Structure</span>
    <span style={{fontSize: "12px", opacity: 0.8}}>League, two conferences, one team-bearing division per side</span>
  </div>
  <div style={{padding: "6px 14px 14px", background: "#FFFFFF"}}>
<div style={{border: "1px solid #C5CAE9", borderRadius: "10px", padding: "10px 12px", margin: "8px 0 0", background: "#FFFFFF"}}>
  <div style={{display: "flex", alignItems: "center", flexWrap: "wrap", gap: "8px"}}>
    <span style={{fontWeight: 700, fontSize: "13px", color: "#1A237E"}}>League</span>
    <span style={{display: "inline-block", padding: "4px 10px", borderRadius: "999px", border: "1px solid #C5CAE9", background: "#F3F6FA", color: "#1A237E", fontSize: "11.5px", fontWeight: 600, fontFamily: "SFMono-Regular, Menlo, Consolas, monospace", whiteSpace: "nowrap"}}>ac79301f-9b1a-4e72-...</span>
    <span style={{fontSize: "12px", color: "#5C6BC0"}}>NBA G League, alias NBDL</span>
  </div>
<div style={{border: "1px solid #C5CAE9", borderRadius: "10px", padding: "10px 12px", margin: "8px 0 0", background: "#FFFFFF"}}>
  <div style={{display: "flex", alignItems: "center", flexWrap: "wrap", gap: "8px"}}>
    <span style={{fontWeight: 700, fontSize: "13px", color: "#1A237E"}}>Conference</span>
    <span style={{display: "inline-block", padding: "4px 10px", borderRadius: "999px", border: "1px solid #C5CAE9", background: "#F3F6FA", color: "#1A237E", fontSize: "11.5px", fontWeight: 600, fontFamily: "SFMono-Regular, Menlo, Consolas, monospace", whiteSpace: "nowrap"}}>aa94c231-e9c7-48ac-...</span>
    <span style={{fontSize: "12px", color: "#5C6BC0"}}>EASTERN CONFERENCE, one of two</span>
  </div>
<div style={{border: "1px solid #C5CAE9", borderRadius: "10px", padding: "10px 12px", margin: "8px 0 0", background: "#FFFFFF"}}>
  <div style={{display: "flex", alignItems: "center", flexWrap: "wrap", gap: "8px"}}>
    <span style={{fontWeight: 700, fontSize: "13px", color: "#1A237E"}}>Division</span>
    <span style={{display: "inline-block", padding: "4px 10px", borderRadius: "999px", border: "1px solid #C5CAE9", background: "#F3F6FA", color: "#1A237E", fontSize: "11.5px", fontWeight: 600, fontFamily: "SFMono-Regular, Menlo, Consolas, monospace", whiteSpace: "nowrap"}}>29016614-48f3-4b2b-...</span>
    <span style={{fontSize: "12px", color: "#5C6BC0"}}>conference-wide; holds all 16 Eastern teams</span>
  </div>
<div style={{border: "1px solid #C5CAE9", borderRadius: "10px", padding: "10px 12px", margin: "8px 0 0", background: "#FFFFFF"}}>
  <div style={{display: "flex", alignItems: "center", flexWrap: "wrap", gap: "8px"}}>
    <span style={{fontWeight: 700, fontSize: "13px", color: "#1A237E"}}>Team</span>
    <span style={{display: "inline-block", padding: "4px 10px", borderRadius: "999px", border: "1px solid #C5CAE9", background: "#F3F6FA", color: "#1A237E", fontSize: "11.5px", fontWeight: 600, fontFamily: "SFMono-Regular, Menlo, Consolas, monospace", whiteSpace: "nowrap"}}>e74de5ce-3e98-4414-afe5-...</span>
    <span style={{fontSize: "12px", color: "#5C6BC0"}}>Greensboro Swarm; reference 1612709922 is the official league id</span>
  </div>
</div>
</div>
</div>
</div>
  </div>
  <div style={{padding: "9px 18px", background: "#FAFAFA", color: "#5C6BC0", fontSize: "12px"}}>Earlier-alignment divisions stay listed without teams, and standings rows keep the matching record splits at 0-0; build from the entries that contain teams.</div>
</div>

Two structural details to handle:

* The hierarchy also lists a league-level placeholder conference and divisions from earlier alignments, none of which contain teams; build navigation from the entries that do
* The Teams feed includes a placeholder `TBD` team used for not-yet-determined matchups; filter it from team pickers ([ID Handling](https://developer.sportradar.com/basketball/docs/g-league-ig-id-handling) covers it)

[Standings and Rankings](https://developer.sportradar.com/basketball/docs/g-league-ig-standings-rankings-retrieval) walks the hierarchy feed and the tables built on it.

<br />

***

## The Game Feed Set

Three feeds cover a single game at increasing depth, all keyed by the game's GUID:

| Feed                                                                                                          | Returns                                                                                            | Build with it                             |
| ------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ----------------------------------------- |
| <Anchor label="Game Boxscore" target="_blank" href="ref:g-league-game-boxscore">Game Boxscore</Anchor>        | Score, clock, quarter scoring, and per-team statistical leaders                                    | Scoreboards and game cards                |
| <Anchor label="Game Summary" target="_blank" href="ref:g-league-game-summary">Game Summary</Anchor>           | The full statistical view: everything in the boxscore plus complete team and per-player statistics | Stat pages and post-game reports          |
| <Anchor label="Game Play-by-Play" target="_blank" href="ref:g-league-play-by-play">Game Play-by-Play</Anchor> | The event stream: every play with locations, possession, and the on-court players                  | Timelines, shot charts, and live trackers |

Schedule feeds provide the game IDs; [Live Game Updates](https://developer.sportradar.com/basketball/docs/g-league-ig-live-game-retrieval) walks all three feeds in play.

<br />

***

## Coverage

Every scheduled game carries a `coverage` flag (`full` or `extended_boxscore`) and a `track_on_court` flag stating the data depth to expect from the game feeds. Read them per game rather than assuming them; the full treatment of both flags is under [Coverage Flags](https://developer.sportradar.com/basketball/docs/g-league-ig-game-status-workflow) on Game Status Workflow.

<br />

***

## Coming from the NBA API

The G League API shares its shape with the [NBA API](https://developer.sportradar.com/basketball/docs/nba-ig-overview): the same URL structure, status model, ID scheme, and core feed set. If you have integrated the NBA API, these are the differences that matter:

| Difference                                   | What it means for your integration                                                                                                                                                                                                                                                                                                                                                |
| -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **The year runs in phases**                  | The season is addressed as separate season types (`SC`, `SCC`, `REG`, `PST`), and records reset after the Showcase Cup. Pull each phase you need separately (The Season Model, above) and show the Showcase Cup table on its own ([Standings and Rankings](https://developer.sportradar.com/basketball/docs/g-league-ig-standings-rankings-retrieval))                            |
| **Playoff formats are shorter and vary**     | In the 2025-26 postseason the first three rounds were single elimination and the Finals best of three. Read each season's bracket from Series Schedule rather than assuming a format ([Playoffs and Tournaments](https://developer.sportradar.com/basketball/docs/g-league-ig-playoffs))                                                                                          |
| **Weighted free throws**                     | G League rules include a single free throw attempt worth the full value of the trip. Free throw statistics carry `free_throw_type` (`regular` or `weighted`), so score from the events rather than assuming one point per make ([Live Game Updates](https://developer.sportradar.com/basketball/docs/g-league-ig-live-game-retrieval))                                            |
| **Injury reporting is not included**         | The Injuries feed is part of the shared basketball feed set, but injury reporting is not included in G League coverage, and the feed returns the report structure with no team entries ([Rosters and Player Statuses](https://developer.sportradar.com/basketball/docs/g-league-ig-rosters))                                                                                      |
| **One team-bearing division per conference** | In place of the NBA's six-division alignment, teams sit in one conference-wide division per side; earlier-alignment divisions and their record splits appear without data (League Structure, above)                                                                                                                                                                               |
| **Roster movement is constant**              | Two-way assignments and call-ups move players between the leagues all season. Daily Transfers tracks the movement ([Rosters and Player Statuses](https://developer.sportradar.com/basketball/docs/g-league-ig-rosters)), and `sport_profile` keeps one cross-league identity per player ([ID Handling](https://developer.sportradar.com/basketball/docs/g-league-ig-id-handling)) |