Integration GuidesReference Docs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

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


Relevant Feeds

FeedPurpose
Team ProfileFranchise details, staff, venue, and the current roster
Player ProfileBio, current team, cross-league references, and per-season statistics
Seasonal StatisticsOne team's season: team record plus every player's totals and averages
League LeadersStatistical leaderboards, as totals and as per-game averages
InjuriesPart of the shared feed set; injury reporting is not included in G League coverage
Free AgentsEvery player currently in free agency
Daily TransfersOne day's transactions, with type codes and teams


High-Level Workflow

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

Roster and Player WorkflowProfiles for depth, statistics for pages, movement feeds for churn
Team pagesTeam Profileroster, staff, honors
Player pagesPlayer Profilebio + one line per season, type, and team
StatisticsSeasonal StatisticsLeague Leaderstotals and averages, per team or league-wide
MovementDaily TransfersFree Agentsper day / league-wide
The Daily Change Log's players section triggers targeted profile refreshes; cadences come from Update Frequencies.


Integration Steps


1. Build team pages from the Team Profile

Team Profile 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:

GET https://api.sportradar.com/nbdl/trial/v8/en/teams/e74de5ce-3e98-4414-afe5-b56a90e527a2/profile.json
x-api-key: YOUR_API_KEY
{
  "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. Rosters in the G League change constantly; re-pull profiles daily and let the Monitoring Data Changes workflow trigger off-cycle refreshes.


2. Build player pages from the Player Profile

Player Profile returns the bio, the current team, cross-league references (see 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:

GET https://api.sportradar.com/nbdl/trial/v8/en/players/761260a9-4cf6-43b9-a78e-df628a1da8b5/profile.json
x-api-key: YOUR_API_KEY
{
  "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.


3. Pull one team's season in one call

Seasonal Statistics 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:

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
{
  "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
      }
    }
  ]
}

4. Rank the league with League Leaders

League Leaders 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:

GET https://api.sportradar.com/nbdl/trial/v8/en/seasons/2025/REG/leaders.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"
  },
  "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.


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:

GET https://api.sportradar.com/nbdl/trial/v8/en/league/2026/01/15/transfers.json
x-api-key: YOUR_API_KEY
{
  "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:

{
  "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:

{
  "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.



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


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) 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

Did this page help you?