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
| Feed | Purpose |
|---|---|
| Team Profile | Franchise details, staff, venue, and the current roster |
| Player Profile | Bio, current team, cross-league references, and per-season statistics |
| Seasonal Statistics | One team's season: team record plus every player's totals and averages |
| League Leaders | Statistical leaderboards, as totals and as per-game averages |
| Injuries | Part of the shared feed set; injury reporting is not included in G League coverage |
| Free Agents | Every player currently in free agency |
| Daily Transfers | One day's transactions, with type codes and teams |
High-Level Workflow
Profiles for structure → Seasonal Statistics and Leaders for numbers → movement feeds for churn
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
playerssection of the daily change log (Monitoring Data Changes) as the trigger to refresh individual Player Profiles - Render leaderboards from the
averagecategories for rate stats andtotalcategories for counting stats; the feed provides both
Updated about 12 hours ago
