---
updatedAt: 2026-09-01T10:23:26.000Z
agentTools:
  siteIndex: https://developer.sportradar.com/llms.txt
  projectIndex: https://developer.sportradar.com/basketball/llms.txt
---

# Schedules

This scenario pulls and maintains the G League schedule: the full slate for any season phase and a single date's games.

This scenario is commonly used to:

* Populate season and team schedule pages
* Discover today's games to hand off to live-game polling
* Label games with their season phase, venue, and coverage flags

<br />

***

## Relevant Feeds

| Feed                                                                                                            | Purpose                                                                                                                       |
| --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| <Anchor label="Seasons" target="_blank" href="ref:g-league-seasons">Seasons</Anchor>                            | The season catalog: every year and phase on file, with dates and statuses                                                     |
| <Anchor label="Schedule" target="_blank" href="ref:g-league-schedule">Schedule</Anchor>                         | Every game of one season phase                                                                                                |
| <Anchor label="Daily Schedule" target="_blank" href="ref:g-league-daily-schedule">Daily Schedule</Anchor>       | Every game on one US Eastern date                                                                                             |
| <Anchor label="Series Schedule" target="_blank" href="ref:g-league-series-schedule">Series Schedule</Anchor>    | Playoff series (covered in [Playoffs and Tournaments](https://developer.sportradar.com/basketball/docs/g-league-ig-playoffs)) |
| <Anchor label="Daily Change Log" target="_blank" href="ref:g-league-daily-change-log">Daily Change Log</Anchor> | The trigger for off-cycle schedule refreshes                                                                                  |

<br />

***

## High-Level Workflow

**Seasons for the catalog → Schedule per phase → Daily Schedule to seed each day**

<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"}}>Schedules Workflow</span>
    <span style={{fontSize: "12px", opacity: 0.8}}>Discover the season, pull the slate, seed each day</span>
  </div>
  <div style={{padding: "12px 18px", background: "#FFFFFF", display: "flex", flexDirection: "column", gap: "10px"}}>
    <div style={{display: "flex", flexWrap: "wrap", gap: "8px", alignItems: "center"}}>
      <span style={{minWidth: "112px", fontSize: "12px", color: "#6B7280", fontWeight: 700}}>Discover</span>
      <span style={{display: "inline-block", padding: "4px 10px", borderRadius: "999px", border: "1px solid #C5CAE9", background: "#F3F6FA", color: "#1A237E", fontSize: "12.5px", fontWeight: 600, fontFamily: "SFMono-Regular, Menlo, Consolas, monospace", whiteSpace: "nowrap"}}>Seasons</span>
      <span style={{color: "#9FA8DA", fontWeight: 700, fontSize: "14px"}}>→</span>
      <span style={{display: "inline-block", padding: "4px 10px", borderRadius: "999px", border: "1px solid #C5CAE9", background: "#F3F6FA", color: "#1A237E", fontSize: "12.5px", fontWeight: 600, whiteSpace: "nowrap"}}>pick season_year + season_type</span>
    </div>
    <div style={{display: "flex", flexWrap: "wrap", gap: "8px", alignItems: "center"}}>
      <span style={{minWidth: "112px", fontSize: "12px", color: "#6B7280", fontWeight: 700}}>Season slate</span>
      <span style={{display: "inline-block", padding: "4px 10px", borderRadius: "999px", border: "1px solid #C5CAE9", background: "#F3F6FA", color: "#1A237E", fontSize: "12.5px", fontWeight: 600, fontFamily: "SFMono-Regular, Menlo, Consolas, monospace", whiteSpace: "nowrap"}}>Schedule</span>
      <span style={{display: "inline-block", padding: "4px 10px", borderRadius: "999px", border: "1px solid #E8EAF6", background: "#FAFAFA", color: "#6B7280", fontSize: "12px", whiteSpace: "nowrap"}}>every game of the phase, one response</span>
    </div>
    <div style={{display: "flex", flexWrap: "wrap", gap: "8px", alignItems: "center"}}>
      <span style={{minWidth: "112px", fontSize: "12px", color: "#6B7280", fontWeight: 700}}>Each day</span>
      <span style={{display: "inline-block", padding: "4px 10px", borderRadius: "999px", border: "1px solid #C5CAE9", background: "#F3F6FA", color: "#1A237E", fontSize: "12.5px", fontWeight: 600, fontFamily: "SFMono-Regular, Menlo, Consolas, monospace", whiteSpace: "nowrap"}}>Daily Schedule</span>
      <span style={{color: "#9FA8DA", fontWeight: 700, fontSize: "14px"}}>→</span>
      <span style={{display: "inline-block", padding: "4px 10px", borderRadius: "999px", border: "1px solid #C5CAE9", background: "#F3F6FA", color: "#1A237E", fontSize: "12.5px", fontWeight: 600, whiteSpace: "nowrap"}}>hand off to live tracking</span>
      <span style={{display: "inline-block", padding: "4px 10px", borderRadius: "999px", border: "1px solid #E8EAF6", background: "#FAFAFA", color: "#6B7280", fontSize: "12px", whiteSpace: "nowrap"}}>US Eastern date</span>
    </div>
  </div>
  <div style={{padding: "8px 18px", borderTop: "1px solid #E8EAF6", fontSize: "12px", color: "#6B7280", background: "#FAFAFA"}}>Cadences come from Update Frequencies; postponements surface in the daily change log; past seasons are covered on Historical Data.</div>
</div>

<br />

***

## Integration Steps

<br />

### 1. Pull a season's full schedule

<Anchor label="Schedule" target="_blank" href="ref:g-league-schedule">Schedule</Anchor> takes the `{season_year}/{season_type}` pair and returns every game of that phase in one response: 561 games for the 2025-26 regular season. Two entries, one completed and one postponed (the full season carried 558 closed games and 3 postponed):

```http
GET https://api.sportradar.com/nbdl/trial/v8/en/games/2025/REG/schedule.json
x-api-key: YOUR_API_KEY
```
```json Schedule (json)
{
  "league": {
    "id": "ac79301f-9b1a-4e72-a4cb-230d4418ae08",
    "name": "NBA G League",
    "alias": "NBDL"
  },
  "season": {
    "id": "fea41a6e-80d4-4756-bfea-37c7b347a21a",
    "year": 2025,
    "type": "REG"
  },
  "games": [
    {
      "id": "cc32f8b6-904d-4210-9f9b-b7a39c361db4",
      "status": "closed",
      "title": "Showcase Cup Quarterfinal",
      "coverage": "full",
      "scheduled": "2025-12-19T17:00:00+00:00",
      "home_points": 117,
      "away_points": 119,
      "track_on_court": true,
      "reference": "2022500001",
      "time_zones": {
        "venue": "US/Eastern",
        "home": "US/Central",
        "away": "US/Pacific"
      },
      "venue": {
        "id": "db7644f4-45dc-4ee1-a2ab-f4467ffc03c6",
        "name": "Orange County Convention Center",
        "address": "9800 International Drive",
        "city": "Orlando",
        "state": "FL",
        "zip": "32819",
        "country": "USA"
      },
      "broadcasts": [
        {
          "network": "ESPNU",
          "type": "TV",
          "locale": "National",
          "channel": "208"
        }
      ],
      "home": {
        "name": "Austin Spurs",
        "alias": "AUS",
        "id": "0f009580-dda8-4080-aa43-5d58a17028f6",
        "seed": 3,
        "reference": "1612709890"
      },
      "away": {
        "name": "Stockton Kings",
        "alias": "STO",
        "id": "b971b187-c542-4b76-9548-114acc564e05",
        "seed": 6,
        "reference": "1612709914"
      }
    },
    {
      "id": "35062e4c-8fc1-4184-9ca6-b1b70db8ff9c",
      "status": "postponed",
      "coverage": "full",
      "scheduled": "2026-02-20T01:00:00+00:00",
      "track_on_court": true,
      "time_zones": {
        "venue": "US/Central",
        "home": "US/Central",
        "away": "US/Pacific"
      },
      "venue": {
        "id": "0c04b68b-a69e-451e-84a8-e9e60a1f17c3",
        "name": "Landers Center",
        "capacity": 8362,
        "address": "4560 Venture Drive",
        "city": "Southaven",
        "state": "MS",
        "zip": "38671",
        "country": "USA",
        "location": {
          "lat": "34.927201",
          "lng": "-89.996536"
        }
      },
      "home": {
        "name": "Memphis Hustle",
        "alias": "MHU",
        "id": "4e26f748-e98f-412e-9c27-f04b255e7f25",
        "reference": "1612709926"
      },
      "away": {
        "name": "Stockton Kings",
        "alias": "STO",
        "id": "b971b187-c542-4b76-9548-114acc564e05",
        "reference": "1612709914"
      }
    }
  ]
}
```

Reading a game entry:

* `status` is the game lifecycle state: completed games read `closed`, and games that were not played read `postponed` (or, in playoff series, `unnecessary`); the full lifecycle is on [Game Status Workflow](https://developer.sportradar.com/basketball/docs/g-league-ig-game-status-workflow)
* `coverage` (`full` or `extended_boxscore`) and `track_on_court` state the data depth available for the game; see [Game Status Workflow](https://developer.sportradar.com/basketball/docs/g-league-ig-game-status-workflow) for what each level carries
* `home_points` and `away_points` carry the final score once play ends
* `time_zones` gives the venue, home, and away time zones for rendering local times alongside the UTC `scheduled` timestamp
* `broadcasts` lists where the game airs: each entry carries a `network` and `type` (`TV` or `Internet`), plus a `locale` and provider `channel` number where they apply. `National` and `International` entries sit alongside `Home` and `Away` entries for each side's regional network or team stream. Networks are an open set that changes from season to season, so treat them as display data rather than an enumerated list; not every game carries the field
* `reference` is the official league identifier for the game; see [ID Handling](https://developer.sportradar.com/basketball/docs/g-league-ig-id-handling)

<br />

### 2. Pull one date's games

<Anchor label="Daily Schedule" target="_blank" href="ref:g-league-daily-schedule">Daily Schedule</Anchor> takes a date and returns that day's games. The date is the **US Eastern date**: an evening tip-off whose UTC timestamp has rolled past midnight still belongs to the Eastern calendar day, as in this response, where a game scheduled `2026-01-16T00:00:00+00:00` sits on January 15:

```http
GET https://api.sportradar.com/nbdl/trial/v8/en/games/2026/01/15/schedule.json
x-api-key: YOUR_API_KEY
```
```json Daily Schedule (json)
{
  "league": {
    "id": "ac79301f-9b1a-4e72-a4cb-230d4418ae08",
    "name": "NBA G League",
    "alias": "NBDL"
  },
  "date": "2026-01-15",
  "games": [
    {
      "id": "5e712734-759a-4f18-b069-26ab17d961ca",
      "status": "closed",
      "coverage": "full",
      "scheduled": "2026-01-16T00:00:00+00:00",
      "home_points": 92,
      "away_points": 102,
      "track_on_court": true,
      "reference": "2022500152",
      "time_zones": {
        "venue": "US/Eastern",
        "home": "US/Eastern",
        "away": "US/Eastern"
      },
      "season": {
        "id": "fea41a6e-80d4-4756-bfea-37c7b347a21a",
        "year": 2025,
        "type": "REG"
      },
      "venue": {
        "id": "1f499b56-7cbc-48cd-a312-7bb55734b4c8",
        "name": "Riverview Health Arena at Innovation Mile",
        "capacity": 3400,
        "address": "14157 CJ Way",
        "city": "Noblesville",
        "state": "IN",
        "zip": "46060",
        "country": "USA",
        "location": {
          "lat": "39.99217",
          "lng": "-85.91165"
        }
      },
      "broadcasts": [
        {
          "network": "ESPN+",
          "type": "Internet"
        }
      ],
      "home": {
        "name": "Noblesville Boom",
        "alias": "NOB",
        "id": "5335bf84-d1ec-4c85-bc0e-1c36abc091e6",
        "reference": "1612709910"
      },
      "away": {
        "name": "Grand Rapids Gold",
        "alias": "GRG",
        "id": "bbeebcb5-0d9b-4992-bcba-cbde3ec60628",
        "reference": "1612709917"
      }
    }
  ]
}
```

The response is shown with one of the day's seven games. Unlike the season Schedule, each entry carries its own `season` object, so a date that spans phases (a Showcase Cup date, a playoff date) labels each game with the phase it belongs to.

Rendered as a scoreboard, a day needs nothing beyond this one response:

<div style={{border: "1px solid #C5CAE9", borderRadius: "12px", overflow: "hidden", margin: "4px 0 8px", maxWidth: "560px"}}>
<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"}}>January 15 Scoreboard</span>
<span style={{fontSize: "12px", opacity: 0.8}}>3 of the day's 7 games</span>
</div>
<div style={{display: "flex", flexWrap: "wrap", gap: "10px", padding: "12px 18px", background: "#F3F6FA", alignItems: "stretch"}}>
<div style={{flex: "1 1 230px", minWidth: "0", border: "1px solid #E8EAF6", borderRadius: "10px", background: "#FFFFFF", padding: "8px 12px", display: "flex", flexDirection: "column", gap: "6px"}}>
<span style={{display: "flex", alignItems: "center", gap: "6px"}}><span style={{width: "22px", height: "22px", borderRadius: "50%", background: "#E8EAF6", color: "#1A237E", fontWeight: 700, fontSize: "9px", display: "inline-flex", alignItems: "center", justifyContent: "center", flex: "none"}}>GRG</span><span style={{flex: "1 1 auto", minWidth: "0", fontSize: "12.5px", fontWeight: 700, color: "#1A237E", lineHeight: "1.2"}}>Grand Rapids Gold</span><span style={{fontSize: "13px", fontWeight: 700, color: "#1A237E", fontFamily: "SFMono-Regular, Menlo, Consolas, monospace", flex: "none"}}>102</span></span>
<span style={{display: "flex", alignItems: "center", gap: "6px"}}><span style={{width: "22px", height: "22px", borderRadius: "50%", background: "#E8EAF6", color: "#1A237E", fontWeight: 700, fontSize: "9px", display: "inline-flex", alignItems: "center", justifyContent: "center", flex: "none"}}>NOB</span><span style={{flex: "1 1 auto", minWidth: "0", fontSize: "12.5px", fontWeight: 600, color: "#3B4252", lineHeight: "1.2"}}>Noblesville Boom</span><span style={{fontSize: "13px", fontWeight: 700, color: "#3B4252", fontFamily: "SFMono-Regular, Menlo, Consolas, monospace", flex: "none"}}>92</span></span>
<span style={{display: "flex", flexWrap: "wrap", alignItems: "center", gap: "4px 8px", borderTop: "1px solid #E8EAF6", paddingTop: "6px"}}><span style={{padding: "1px 8px", borderRadius: "999px", background: "#1A237E", color: "#FFFFFF", fontSize: "10px", fontWeight: 700, whiteSpace: "nowrap", flex: "none"}}>FINAL</span><span style={{flex: "1 1 120px", minWidth: "0", fontSize: "11px", color: "#6B7280"}}>Riverview Health Arena at Innovation Mile, Noblesville</span><span style={{padding: "1px 8px", borderRadius: "999px", border: "1px solid #C5CAE9", background: "#F3F6FA", color: "#1A237E", fontSize: "10px", fontWeight: 700, whiteSpace: "nowrap"}}>ESPN+</span></span>
</div>
<div style={{flex: "1 1 230px", minWidth: "0", border: "1px solid #E8EAF6", borderRadius: "10px", background: "#FFFFFF", padding: "8px 12px", display: "flex", flexDirection: "column", gap: "6px"}}>
<span style={{display: "flex", alignItems: "center", gap: "6px"}}><span style={{width: "22px", height: "22px", borderRadius: "50%", background: "#E8EAF6", color: "#1A237E", fontWeight: 700, fontSize: "9px", display: "inline-flex", alignItems: "center", justifyContent: "center", flex: "none"}}>GBO</span><span style={{flex: "1 1 auto", minWidth: "0", fontSize: "12.5px", fontWeight: 700, color: "#1A237E", lineHeight: "1.2"}}>Greensboro Swarm</span><span style={{fontSize: "13px", fontWeight: 700, color: "#1A237E", fontFamily: "SFMono-Regular, Menlo, Consolas, monospace", flex: "none"}}>123</span></span>
<span style={{display: "flex", alignItems: "center", gap: "6px"}}><span style={{width: "22px", height: "22px", borderRadius: "50%", background: "#E8EAF6", color: "#1A237E", fontWeight: 700, fontSize: "9px", display: "inline-flex", alignItems: "center", justifyContent: "center", flex: "none"}}>WES</span><span style={{flex: "1 1 auto", minWidth: "0", fontSize: "12.5px", fontWeight: 600, color: "#3B4252", lineHeight: "1.2"}}>Westchester Knicks</span><span style={{fontSize: "13px", fontWeight: 700, color: "#3B4252", fontFamily: "SFMono-Regular, Menlo, Consolas, monospace", flex: "none"}}>111</span></span>
<span style={{display: "flex", flexWrap: "wrap", alignItems: "center", gap: "4px 8px", borderTop: "1px solid #E8EAF6", paddingTop: "6px"}}><span style={{padding: "1px 8px", borderRadius: "999px", background: "#1A237E", color: "#FFFFFF", fontSize: "10px", fontWeight: 700, whiteSpace: "nowrap", flex: "none"}}>FINAL</span><span style={{flex: "1 1 120px", minWidth: "0", fontSize: "11px", color: "#6B7280"}}>Westchester County Center, White Plains</span><span style={{padding: "1px 8px", borderRadius: "999px", border: "1px solid #C5CAE9", background: "#F3F6FA", color: "#1A237E", fontSize: "10px", fontWeight: 700, whiteSpace: "nowrap"}}>ESPN+</span><span style={{padding: "1px 8px", borderRadius: "999px", border: "1px solid #C5CAE9", background: "#F3F6FA", color: "#1A237E", fontSize: "10px", fontWeight: 700, whiteSpace: "nowrap"}}>MSG</span></span>
</div>
<div style={{flex: "1 1 230px", minWidth: "0", border: "1px solid #E8EAF6", borderRadius: "10px", background: "#FFFFFF", padding: "8px 12px", display: "flex", flexDirection: "column", gap: "6px"}}>
<span style={{display: "flex", alignItems: "center", gap: "6px"}}><span style={{width: "22px", height: "22px", borderRadius: "50%", background: "#E8EAF6", color: "#1A237E", fontWeight: 700, fontSize: "9px", display: "inline-flex", alignItems: "center", justifyContent: "center", flex: "none"}}>RAP</span><span style={{flex: "1 1 auto", minWidth: "0", fontSize: "12.5px", fontWeight: 700, color: "#1A237E", lineHeight: "1.2"}}>Raptors 905</span><span style={{fontSize: "13px", fontWeight: 700, color: "#1A237E", fontFamily: "SFMono-Regular, Menlo, Consolas, monospace", flex: "none"}}>115</span></span>
<span style={{display: "flex", alignItems: "center", gap: "6px"}}><span style={{width: "22px", height: "22px", borderRadius: "50%", background: "#E8EAF6", color: "#1A237E", fontWeight: 700, fontSize: "9px", display: "inline-flex", alignItems: "center", justifyContent: "center", flex: "none"}}>CCG</span><span style={{flex: "1 1 auto", minWidth: "0", fontSize: "12.5px", fontWeight: 600, color: "#3B4252", lineHeight: "1.2"}}>Capital City Go-Go</span><span style={{fontSize: "13px", fontWeight: 700, color: "#3B4252", fontFamily: "SFMono-Regular, Menlo, Consolas, monospace", flex: "none"}}>104</span></span>
<span style={{display: "flex", flexWrap: "wrap", alignItems: "center", gap: "4px 8px", borderTop: "1px solid #E8EAF6", paddingTop: "6px"}}><span style={{padding: "1px 8px", borderRadius: "999px", background: "#1A237E", color: "#FFFFFF", fontSize: "10px", fontWeight: 700, whiteSpace: "nowrap", flex: "none"}}>FINAL</span><span style={{flex: "1 1 120px", minWidth: "0", fontSize: "11px", color: "#6B7280"}}>CareFirst Arena, Washington</span><span style={{padding: "1px 8px", borderRadius: "999px", border: "1px solid #C5CAE9", background: "#F3F6FA", color: "#1A237E", fontSize: "10px", fontWeight: 700, whiteSpace: "nowrap"}}>Monumental</span></span>
</div>
</div>
<div style={{padding: "8px 18px", borderTop: "1px solid #E8EAF6", fontSize: "12px", color: "#6B7280", background: "#FAFAFA"}}>The logo slots are generic placeholders; fill them from Sportradar's image products or your own assets.</div>
</div>

<br />

***

## Common Use Cases

Typical builds on this workflow include:

* A season schedule page with phase tabs (Showcase Cup, Regular Season, Post-season)
* A daily scoreboard that seeds itself each morning from the Daily Schedule
* A results database kept current from the season schedule, backfilled per [Historical Data](https://developer.sportradar.com/basketball/docs/g-league-ig-historical-data)

<br />

***

## Best Practices

* Pull the full-season Schedule daily during the season and cache it; the feed's TTL is 10 minutes, but schedule changes are infrequent
* Use the Daily Schedule, not repeated full-season pulls, to seed each day's live tracking
* Watch the `schedule` section of the daily change log to catch postponements and reschedules without re-pulling every phase; the workflow is on [Monitoring Data Changes](https://developer.sportradar.com/basketball/docs/g-league-ig-daily-change-log)
* Remember the season-type split: a full G League year means four schedules (`SC`, `SCC`, `REG`, `PST`)
* For completed seasons and how far back the data reaches, see [Historical Data](https://developer.sportradar.com/basketball/docs/g-league-ig-historical-data)