Roster versions
Rosters and ratings by game edition. Still on NBA 2K26? Read the archived 2K26 roster instead of the current one. The current edition answers at the same URL shape, so one client can point at any season by changing :version.
A list of editions under data, current first, then newest archived, with meta carrying count and current (the current edition key). Each entry carries the fields below.
2K27, 2K26.NBA 2K26.current for the edition the live database tracks, archived for a frozen snapshot.{ curr, class, allt }.RESPONSES ARE CACHED 1H AND SUPPORT ETAG / 304 REVALIDATION.
Every route below takes an edition key in the path. 2K26 and 2k26 both work (the key is normalized to uppercase). Anything that is not shaped like 2K plus two digits returns 400 INVALID_VERSION; an edition that is not archived returns 404 VERSION_NOT_FOUND with the available keys under details.availableVersions. The current edition is served from the live database, so /api/versions/2K27/players returns what /api/players returns today.
Players in one edition, filterable and paginated. Sorted by overall descending, then name.
curr (default), class, allt, or all for every era in one call. teamType is a supported alias.Denver Nuggets or 1995-96 Chicago Bulls.PG, SG, SF, PF, C, or guard, wing, big.meta carries gameVersion, count, total, hasMore, offset, and limit.The whole matching set for one edition in a single call, sorted by overall descending, capped at 10,000 rows. Costs one request against your rate limit. meta carries gameVersion, count, total, filters, capturedAt, and source.
curr (default), class, or allt./players above.CACHED 1H WITH ETAG.
One player in one edition. Unknown slugs return 404 PLAYER_NOT_FOUND with a hint.
nikola-jokic.curr, class, or allt. Omit it and, when the slug is on more than one roster (another era, or several classic squads), data is an array with one entry per roster and meta.variants lists each { teamType, team }. teamType narrows to one era but can still return several rosters.Teams in one edition. Each row is teamName, teamType, playerCount, averageRating, and logo, the same shape as /api/teams.
curr (default), class, or allt. teamType is a supported alias.Every row returned from a versioned route carries gameVersion. 2K26 is the final pre-2K27-reveal snapshot, captured 2026-08-08: 1,889 players across current, classic, and all-time rosters, with overall, positions, physicals, every attribute, and badge counts with the top three badges. Archived editions do not change. The current edition is also reachable at /api/versions/2K27/..., so one URL shape covers every season.
ARCHIVED EDITIONS ARE READ-ONLY SNAPSHOTS · THE CURRENT EDITION FOLLOWS THE LIVE SCRAPE.
# Which editions exist (no key needed) curl 'https://api.nba2kapi.com/api/versions' # 2K26 Denver Nuggets, top five by overall curl 'https://api.nba2kapi.com/api/versions/2K26/players?\ team=Denver%20Nuggets&limit=5' \ -H 'X-API-Key: YOUR_KEY'
{
"success": true,
"data": [
{
"gameVersion": "2K26",
"slug": "nikola-jokic",
"name": "Nikola Jokic",
"team": "Denver Nuggets",
"teamType": "curr",
"overall": 98,
"positions": ["C"],
"height": "6'11\"",
"attributes": { "closeShot": 99, "midRangeShot": 98, … },
"badges": { "total": 24, "hallOfFame": 6, … }
},
{
"gameVersion": "2K26",
"slug": "jamal-murray",
"name": "Jamal Murray",
"overall": 89,
…
},
…
],
"meta": {
"gameVersion": "2K26",
"count": 5,
"total": 14,
"hasMore": true,
"offset": 0,
"limit": 5
}
}