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

# Rosters and Player Statuses

This scenario maintains team and player data: rosters and franchise details, player profiles with per-season statistics, league leaders, and the movement feeds (free agents and daily transfers) that track a league defined by constant roster churn.

This scenario is commonly used to:

* Build team pages with rosters, staff, and franchise honors
* Build player pages with bios and season-by-season statistics
* Track player movement: signings, waivers, and free agency

<br />

***

## Relevant Feeds

| Feed                                                                                                                     | Purpose                                                                            |
| ------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------- |
| <Anchor label="Team Profile" target="_blank" href="ref:g-league-team-profile">Team Profile</Anchor>                      | Franchise details, staff, venue, and the current roster                            |
| <Anchor label="Player Profile" target="_blank" href="ref:g-league-player-profile">Player Profile</Anchor>                | Bio, current team, cross-league references, and per-season statistics              |
| <Anchor label="Seasonal Statistics" target="_blank" href="ref:g-league-seasonal-statistics">Seasonal Statistics</Anchor> | One team's season: team record plus every player's totals and averages             |
| <Anchor label="League Leaders" target="_blank" href="ref:g-league-league-leaders">League Leaders</Anchor>                | Statistical leaderboards, as totals and as per-game averages                       |
| <Anchor label="Injuries" target="_blank" href="ref:g-league-injuries">Injuries</Anchor>                                  | Part of the shared feed set; injury reporting is not included in G League coverage |
| <Anchor label="Free Agents" target="_blank" href="ref:g-league-free-agents">Free Agents</Anchor>                         | Every player currently in free agency                                              |
| <Anchor label="Daily Transfers" target="_blank" href="ref:g-league-daily-transfers">Daily Transfers</Anchor>             | One day's transactions, with type codes and teams                                  |

<br />

***

## High-Level Workflow

**Profiles for structure → Seasonal Statistics and Leaders for numbers → movement feeds for churn**

<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"}}>Roster and Player Workflow</span>
    <span style={{fontSize: "12px", opacity: 0.8}}>Profiles for depth, statistics for pages, movement feeds for churn</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}}>Team pages</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"}}>Team Profile</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"}}>roster, staff, honors</span>
    </div>
    <div style={{display: "flex", flexWrap: "wrap", gap: "8px", alignItems: "center"}}>
      <span style={{minWidth: "112px", fontSize: "12px", color: "#6B7280", fontWeight: 700}}>Player pages</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"}}>Player Profile</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"}}>bio + one line per season, type, and team</span>
    </div>
    <div style={{display: "flex", flexWrap: "wrap", gap: "8px", alignItems: "center"}}>
      <span style={{minWidth: "112px", fontSize: "12px", color: "#6B7280", fontWeight: 700}}>Statistics</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"}}>Seasonal Statistics</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"}}>League Leaders</span>
      <span style={{display: "inline-block", padding: "4px 10px", borderRadius: "999px", border: "1px solid #E8EAF6", background: "#FAFAFA", color: "#6B7280", fontSize: "12px", whiteSpace: "nowrap"}}>totals and averages, per team or league-wide</span>
    </div>
    <div style={{display: "flex", flexWrap: "wrap", gap: "8px", alignItems: "center"}}>
      <span style={{minWidth: "112px", fontSize: "12px", color: "#6B7280", fontWeight: 700}}>Movement</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 Transfers</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"}}>Free Agents</span>
      <span style={{display: "inline-block", padding: "4px 10px", borderRadius: "999px", border: "1px solid #E8EAF6", background: "#FAFAFA", color: "#6B7280", fontSize: "12px", whiteSpace: "nowrap"}}>per day / league-wide</span>
    </div>
  </div>
  <div style={{padding: "8px 18px", borderTop: "1px solid #E8EAF6", fontSize: "12px", color: "#6B7280", background: "#FAFAFA"}}>The Daily Change Log's players section triggers targeted profile refreshes; cadences come from Update Frequencies.</div>
</div>

<br />

***

## Integration Steps

<br />

### 1. Build team pages from the Team Profile

<Anchor label="Team Profile" target="_blank" href="ref:g-league-team-profile">Team Profile</Anchor> returns franchise details (founding year, honors, staff, venue) and the current roster. The 2025-26 champion's profile, with the roster reduced to two players:

```http
GET https://api.sportradar.com/nbdl/trial/v8/en/teams/e74de5ce-3e98-4414-afe5-b56a90e527a2/profile.json
x-api-key: YOUR_API_KEY
```
```json Team Profile (json)
{
  "id": "e74de5ce-3e98-4414-afe5-b56a90e527a2",
  "name": "Swarm",
  "market": "Greensboro",
  "alias": "GBO",
  "founded": 2016,
  "mascot": "Swarmy",
  "championships_won": 1,
  "championship_seasons": "2026",
  "conference_titles": 1,
  "division_titles": 0,
  "playoff_appearances": 2,
  "owner": "Charlotte Hornets",
  "general_manager": "Cole Teal",
  "president": "Steve Swetoha",
  "sponsor": "BMW",
  "reference": "1612709922",
  "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"
  },
  "venue": {
    "id": "c780720a-64bf-4a47-983e-518eb7e710c7",
    "name": "Novant Health Fieldhouse",
    "capacity": 2500,
    "address": "1921 W. Gate City Boulevard",
    "city": "Greensboro",
    "state": "NC",
    "zip": "27403",
    "country": "USA",
    "location": {
      "lat": "36.059478",
      "lng": "-79.825533"
    }
  },
  "coaches": [
    {
      "id": "a75fffc5-70aa-4c30-8d24-53c0109eb81f",
      "full_name": "D.J. Bakker",
      "first_name": "D.J.",
      "last_name": "Bakker",
      "position": "Head Coach"
    }
  ],
  "players": [
    {
      "id": "d1315319-4751-42ea-88e6-0b707a4a08cb",
      "full_name": "Jonas Aidoo",
      "status": "ACT",
      "position": "C",
      "primary_position": "NA",
      "jersey_number": "00",
      "height": 83,
      "weight": 240,
      "birthdate": "2002-12-10",
      "college": "Arkansas",
      "reference": "1643265"
    },
    {
      "id": "9e3cbb49-2529-42d3-b3b6-7234f30e6354",
      "full_name": "PJ Hall",
      "status": "ACT",
      "position": "C",
      "primary_position": "NA",
      "jersey_number": "24",
      "height": 80,
      "weight": 245,
      "birthdate": "2002-02-21",
      "college": "Clemson",
      "reference": "1641790"
    }
  ]
}
```

Roster entries carry a `status` alongside position, measurables, and background: `ACT` for active players, with the full value list (including `TWO-WAY`, `IR`, `SUS`, and `NWT`) defined in the [G League FAQ](https://developer.sportradar.com/basketball/reference/g-league-faq#player-statuses). Rosters in the G League change constantly; re-pull profiles daily and let the [Monitoring Data Changes](https://developer.sportradar.com/basketball/docs/g-league-ig-daily-change-log) workflow trigger off-cycle refreshes.

<br />

### 2. Build player pages from the Player Profile

<Anchor label="Player Profile" target="_blank" href="ref:g-league-player-profile">Player Profile</Anchor> returns the bio, the current team, cross-league `references` (see [ID Handling](https://developer.sportradar.com/basketball/docs/g-league-ig-id-handling)), and a `seasons` array with the player's statistics per season, per team. The 2025-26 minutes leader, reduced to his regular-season entry with a selection of the average-statistics fields:

```http
GET https://api.sportradar.com/nbdl/trial/v8/en/players/761260a9-4cf6-43b9-a78e-df628a1da8b5/profile.json
x-api-key: YOUR_API_KEY
```
```json Player Profile (json)
{
  "id": "761260a9-4cf6-43b9-a78e-df628a1da8b5",
  "full_name": "Jahmyl Telfort",
  "first_name": "Jahmyl",
  "last_name": "Telfort",
  "abbr_name": "J.Telfort",
  "status": "ACT",
  "position": "G",
  "primary_position": "NA",
  "jersey_number": "19",
  "height": 79,
  "weight": 225,
  "birthdate": "2001-04-30",
  "birth_place": "Montreal, QC, CAN",
  "college": "Butler",
  "high_school": "New Hampton (NH)",
  "reference": "1643141",
  "updated": "2025-12-04T22:13:53+00:00",
  "team": {
    "id": "80411a5b-5ac0-4297-a19d-2dff8e0b611b",
    "name": "Clippers",
    "market": "San Diego",
    "alias": "SDC",
    "reference": "1612709924"
  },
  "seasons": [
    {
      "id": "fea41a6e-80d4-4756-bfea-37c7b347a21a",
      "year": 2025,
      "type": "REG",
      "teams": [
        {
          "id": "80411a5b-5ac0-4297-a19d-2dff8e0b611b",
          "name": "Clippers",
          "market": "San Diego",
          "alias": "SDC",
          "reference": "1612709924",
          "average": {
            "minutes": 35.9,
            "points": 15.3,
            "rebounds": 5.44,
            "assists": 3.0,
            "steals": 0.86,
            "blocks": 0.36
          }
        }
      ]
    }
  ]
}
```

A player's `seasons` entries are split by season type (`SC` and `REG` are separate lines) and by team, so a mid-season move produces one entry per team; key statistics storage on the triple of player, season, and team.

<br />

### 3. Pull one team's season in one call

<Anchor label="Seasonal Statistics" target="_blank" href="ref:g-league-seasonal-statistics">Seasonal Statistics</Anchor> returns a team's season: the team's own record statistics, opponent statistics, and every player's totals and averages. The champion's regular season, reduced to the team's average line and the leading scorer:

```http
GET https://api.sportradar.com/nbdl/trial/v8/en/seasons/2025/REG/teams/e74de5ce-3e98-4414-afe5-b56a90e527a2/statistics.json
x-api-key: YOUR_API_KEY
```
```json Seasonal Statistics (json)
{
  "id": "e74de5ce-3e98-4414-afe5-b56a90e527a2",
  "name": "Swarm",
  "market": "Greensboro",
  "season": {
    "id": "fea41a6e-80d4-4756-bfea-37c7b347a21a",
    "year": 2025,
    "type": "REG"
  },
  "own_record": {
    "average": {
      "points": 126.2,
      "field_goals_made": 45.64,
      "field_goals_att": 92.47,
      "three_points_made": 12.28,
      "three_points_att": 35.5,
      "free_throws_made": 13.67,
      "free_throws_att": 17.64,
      "rebounds": 48.56,
      "assists": 25.3,
      "steals": 7.61,
      "blocks": 5.47,
      "turnovers": 13.5,
      "fast_break_pts": 15.42
    }
  },
  "players": [
    {
      "id": "e97ddcf0-32a1-44b7-9ef6-5fd30f5233c2",
      "full_name": "Tidjane Sala\u00fcn",
      "position": "F",
      "jersey_number": "31",
      "average": {
        "minutes": 31.8,
        "points": 21.0,
        "rebounds": 9.5,
        "assists": 2.8,
        "steals": 0.75,
        "blocks": 0.5
      }
    }
  ]
}
```

<br />

### 4. Rank the league with League Leaders

<Anchor label="League Leaders" target="_blank" href="ref:g-league-league-leaders">League Leaders</Anchor> returns leaderboards as `categories`, each present twice: once with `type: "total"` and once with `type: "average"`. The per-game scoring leaders, reduced to the top two:

```http
GET https://api.sportradar.com/nbdl/trial/v8/en/seasons/2025/REG/leaders.json
x-api-key: YOUR_API_KEY
```
```json League Leaders (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"
  },
  "categories": [
    {
      "name": "points",
      "type": "average",
      "ranks": [
        {
          "rank": 1,
          "score": 31.8,
          "tied": false,
          "player": {
            "id": "a7ad124e-7060-402d-8ad3-a982af52eb93",
            "full_name": "Mac McClung",
            "position": "G"
          },
          "teams": [
            {
              "id": "34f6b263-8f03-481a-9e59-0ce0bcd86480",
              "name": "Bulls",
              "market": "Windy City"
            }
          ]
        },
        {
          "rank": 2,
          "score": 25.6,
          "tied": false,
          "player": {
            "id": "e93c89fb-6893-4027-b372-bf8f870d4bd5",
            "full_name": "Tristen Newton",
            "position": "G"
          },
          "teams": [
            {
              "id": "36ab932e-ab25-4b82-8133-ea5aed2f6a02",
              "name": "Wolves",
              "market": "Iowa"
            },
            {
              "id": "9b8f2022-d45f-43f8-bf02-4914b04f5aa3",
              "name": "Vipers",
              "market": "Rio Grande Valley"
            }
          ]
        }
      ]
    }
  ]
}
```

Each rank entry carries a `teams` array rather than a single team: a player who suited up for more than one team that season lists them all. `score` is the ranked value for the category (31.8 points per game for the 2025-26 leader), and `tied` flags shared ranks.

<br />

### 5. Track player movement

Three feeds cover movement, each with a different scope:

**Daily Transfers** returns one US Eastern day's transactions, with a `transaction_type` and code, the teams involved, and a human-readable description:

```http
GET https://api.sportradar.com/nbdl/trial/v8/en/league/2026/01/15/transfers.json
x-api-key: YOUR_API_KEY
```
```json Daily Transfers (json)
{
  "league": {
    "id": "ac79301f-9b1a-4e72-a4cb-230d4418ae08",
    "name": "NBA G League",
    "alias": "NBDL"
  },
  "start_time": "2026-01-15T05:00:00Z",
  "end_time": "2026-01-16T04:59:59Z",
  "players": [
    {
      "id": "48e7e6ae-f7a1-473c-85b1-b17d905f23f9",
      "full_name": "Matthew Cleveland",
      "first_name": "Matthew",
      "last_name": "Cleveland",
      "position": "G-F",
      "primary_position": "NA",
      "jersey_number": "35",
      "reference": "1642888",
      "transfers": [
        {
          "id": "1b4262bf-3f1a-4249-902d-2958f779acb7",
          "desc": "The Salt Lake City Stars signed G-F Matthew Cleveland. ",
          "effective_date": "2026-01-14",
          "last_modified": "2026-01-15T06:07:58+00:00",
          "transaction_type": "Signed",
          "transaction_code": "SGN",
          "to_team": {
            "id": "f12b109d-a4fa-42f4-83fd-34a82cf65239",
            "name": "Stars",
            "market": "Salt Lake City",
            "reference": "1612709903"
          }
        },
        {
          "id": "948bca5e-8783-4159-bd48-ce35308dd104",
          "desc": "The Texas Legends waived G-F Matthew Cleveland.",
          "effective_date": "2026-01-13",
          "last_modified": "2026-01-15T06:08:12+00:00",
          "transaction_type": "Waived",
          "transaction_code": "WA",
          "from_team": {
            "id": "cb42985c-2c08-4540-8b89-ea4d0b84958e",
            "name": "Legends",
            "market": "Texas",
            "reference": "1612709918"
          }
        }
      ]
    }
  ]
}
```

**Free Agents** returns every player currently in free agency (the league-wide list runs to nearly 2,000 entries), each with `status: "FA"` and a full bio row:

```json Free Agents (json)
{
  "league": {
    "id": "ac79301f-9b1a-4e72-a4cb-230d4418ae08",
    "name": "NBA G League",
    "alias": "NBDL"
  },
  "free_agents": [
    {
      "id": "0024568e-b20e-44a2-936f-e7a791385318",
      "status": "FA",
      "full_name": "Raynere Thornton",
      "first_name": "Raynere",
      "last_name": "Thornton",
      "abbr_name": "R.Thornton",
      "height": 78,
      "weight": 235,
      "position": "F",
      "primary_position": "NA",
      "college": "Memphis",
      "high_school": "Marietta (GA)",
      "birth_place": "Marietta, GA, USA",
      "birthdate": "1995-09-14",
      "updated": "2021-01-27T16:10:52+00:00",
      "reference": "1629940"
    },
    {
      "id": "004ce036-0beb-477b-8cf6-48328dd9c58c",
      "status": "FA",
      "full_name": "Tyler Lydon",
      "first_name": "Tyler",
      "last_name": "Lydon",
      "abbr_name": "T.Lydon",
      "height": 81,
      "weight": 223,
      "position": "F",
      "primary_position": "NA",
      "college": "Syracuse",
      "birth_place": "Elizaville, NY, USA",
      "birthdate": "1996-04-09",
      "updated": "2020-03-20T15:36:16+00:00",
      "reference": "1628399"
    }
  ]
}
```

**Injuries** is part of the shared basketball feed set, but injury reporting is not included in G League coverage; the feed returns the empty report structure:

```json Injuries (json)
{
  "league": {
    "id": "ac79301f-9b1a-4e72-a4cb-230d4418ae08",
    "name": "NBA G League",
    "alias": "NBDL"
  },
  "teams": []
}
```

Game-day absence reasons live on the Game Summary instead: see the `not_playing_reason` notes in [Live Game Updates](https://developer.sportradar.com/basketball/docs/g-league-ig-live-game-retrieval).

<br />

***

## Common Use Cases

Typical builds on this workflow include:

* Team pages combining Team Profile (roster, staff, honors) with Seasonal Statistics
* Player pages combining Player Profile bios with season-by-season stat tables
* A transactions ticker on Daily Transfers, with Free Agents powering availability indicators

<br />

***

## Best Practices

* Key player-season statistics on player, season, and team; multi-team seasons are normal in the G League
* Pull Daily Transfers for each Eastern calendar day rather than diffing rosters yourself
* Treat the `players` section of the daily change log ([Monitoring Data Changes](https://developer.sportradar.com/basketball/docs/g-league-ig-daily-change-log)) as the trigger to refresh individual Player Profiles
* Render leaderboards from the `average` categories for rate stats and `total` categories for counting stats; the feed provides both