---
title: "NBA advanced season stats and league ranks"
method: GET
path: "/v1/nba/players/{id}/advanced-stats"
tags: ["nba"]
---

# NBA advanced season stats and league ranks

`GET /v1/nba/players/{id}/advanced-stats`

## Request

- Base URL: `https://api.bigballsdata.com`
- URL: `https://api.bigballsdata.com/v1/nba/players/{id}/advanced-stats`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

Vendor-computed advanced season aggregates: shooting efficiency, usage,
on/off ratings, pace and PIE, plus the vendor's own league rank for
each under `ranks`.

Separate from `/season-averages` because the grain differs: this
relation splits regular season from playoffs and the other does not.
Without `?season_type` both are returned, each labelled, newest season
first with the regular season ahead of the playoffs within a season.

Coverage: seasons 2023-2025 regular season plus 2023 playoffs, 1,937
rows across 802 players.

## Path parameters

- `id` string, uuid, required

## Query parameters

- `season` integer
- `season_type` 'regular' | 'playoffs'
- `limit` integer
- `offset` integer
- `page` integer

## Response `200`

ok

- object
  - `data` NbaPlayerAdvancedSeason[]
    - `player_id` string, uuid
    - `season` integer
    - `season_type` 'regular' | 'playoffs'
    - `games_played` integer, nullable
    - `wins` integer, nullable
    - `losses` integer, nullable
    - `w_pct` number, nullable
    - `min` number, nullable: Average minutes as a decimal. Note this differs from `min` on NbaPlayerSeasonAverage, which is an "MM:SS" string; the two relations store it differently and neither is reshaped here.
    - `poss` number, nullable: Possessions.
    - `ts_pct` number, nullable: True shooting percentage.
    - `efg_pct` number, nullable: Effective field goal percentage.
    - `usg_pct` number, nullable: Usage rate.
    - `e_usg_pct` number, nullable
    - `ast_pct` number, nullable
    - `ast_ratio` number, nullable
    - `ast_to` number, nullable: Assist-to-turnover ratio.
    - `oreb_pct` number, nullable
    - `dreb_pct` number, nullable
    - `reb_pct` number, nullable
    - `off_rating` number, nullable: Offensive rating (points produced per 100 possessions).
    - `def_rating` number, nullable: Defensive rating (points allowed per 100 possessions).
    - `net_rating` number, nullable: Offensive rating minus defensive rating.
    - `e_off_rating` number, nullable
    - `e_def_rating` number, nullable
    - `e_net_rating` number, nullable
    - `pace` number, nullable: Possessions per 48 minutes.
    - `e_pace` number, nullable
    - `pace_per40` number, nullable
    - `tm_tov_pct` number, nullable
    - `e_tov_pct` number, nullable
    - `pie` number, nullable: Player impact estimate.
    - `ranks` object, nullable: The vendor's league rank for each column, keyed `<column>_rank` (e.g. `pie_rank`, `off_rating_rank`). Rank 1 is best; for `def_rating` and `l_rank` that means lowest.
  - `pagination` object
    - `total` integer
    - `limit` integer
    - `offset` integer
  - `meta` object
    - `data_as_of` string, date-time, nullable
    - `note` string

## Other responses

- `400`: invalid player id format, or invalid query
- `403`: plan does not include basketball
- `404`: no player with that id

---

[API](https://skmtc.dev/bigballsdata/apis/big-ball-sports-api.md) · [All operations](https://skmtc.dev/bigballsdata/apis/big-ball-sports-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bigballsdata/apis/big-ball-sports-api/revisions/31fb54ac414e?raw)
