---
title: "NBA per-game season averages"
method: GET
path: "/v1/nba/players/{id}/season-averages"
tags: ["nba"]
---

# NBA per-game season averages

`GET /v1/nba/players/{id}/season-averages`

## Request

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

Per-game averages exactly as the vendor publishes them: one row per
season, regular season only. These are NOT the same numbers as
`/v1/nba/players/{id}/season`, which DERIVES its averages from box
scores; the two will differ in the last decimal.

Coverage: seasons 2023-2025, 1,723 rows across 802 players. Every
column is non-NULL on every row; a `0` is a real zero (a bench player
who attempted no threes), not a placeholder.

A well-formed id that is not an NBA player returns 404. A known NBA
player with no rows in the measured season span returns 200 with an
empty `data` and a `meta.note` explaining the coverage boundary.

## Path parameters

- `id` string, uuid, required

## Query parameters

- `season` integer
- `limit` integer
- `offset` integer
- `page` integer

## Response `200`

ok

- object
  - `data` NbaPlayerSeasonAverage[]
    - `player_id` string, uuid: BigBalls player id.
    - `season` integer: Season LABEL: the year the season starts in.
    - `games_played` integer, nullable
    - `min` string, nullable: Average minutes per game as "MM:SS". This is a STRING because the vendor writes it as one; we do not convert it to a decimal, because that would be a number we invented published under the vendor's name.
    - `pts` number, nullable: Points per game.
    - `ast` number, nullable: Assists per game.
    - `reb` number, nullable: Total rebounds per game.
    - `oreb` number, nullable: Offensive rebounds per game.
    - `dreb` number, nullable: Defensive rebounds per game.
    - `stl` number, nullable: Steals per game.
    - `blk` number, nullable: Blocks per game.
    - `turnover` number, nullable: Turnovers per game.
    - `pf` number, nullable: Personal fouls per game.
    - `fga` number, nullable
    - `fgm` number, nullable
    - `fg_pct` number, nullable: Field goal percentage as a ratio (0.576), not a percentage.
    - `fg3a` number, nullable
    - `fg3m` number, nullable
    - `fg3_pct` number, nullable: Three-point percentage as a ratio.
    - `fta` number, nullable
    - `ftm` number, nullable
    - `ft_pct` number, nullable: Free throw percentage as a ratio.
  - `pagination` object
    - `total` integer
    - `limit` integer
    - `offset` integer
  - `meta` object
    - `data_as_of` string, date-time, nullable: Newest row timestamp on THIS page: a fact about the response, not the feed.
    - `note` string: Present only when data is empty; explains the two reasons it can be.

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