---
title: "Domestic-league top scorers (season aggregates)"
method: GET
path: "/v1/leagues/{id}/top-scorers"
tags: ["sports"]
---

# Domestic-league top scorers (season aggregates)

`GET /v1/leagues/{id}/top-scorers`

## Request

- Base URL: `https://api.bigballsdata.com`
- URL: `https://api.bigballsdata.com/v1/leagues/{id}/top-scorers`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

Per-league leaderboard sourced from our soccer_player_season_stats
(season aggregates), summing a player across their team
rows in the season. Flat data[] shape: rank, id, player_name, team,
goals, assists, minutes, matches (matches = season appearances). `id` is
the BigBalls player id (uuid), stable across seasons and joinable to
/v1/players/{id}, so a consumer never has to match on player name. It
is null for a leader we have not yet bridged to a player row (19 of the
current La Liga top 20 resolve, measured 2026-09-14). `headshot_url`
is a first-party asset URL on eligible plans and null otherwise.
Supports a
?category sort and excludes players with a zero in the sorted category.
Covers the big-five leagues. When `season` is omitted, this endpoint
and `/v1/leagues/{id}/xg-leaders` select the newest season present in
both datasets, so their defaults remain comparable. 5-minute Redis
cache keyed by league+season+category+limit.

## Path parameters

- `id` 'epl' | 'laliga' | 'serie-a' | 'bundesliga' | 'ligue-1', required

## Query parameters

- `category` 'goals' | 'assists' | 'minutes' | 'matches'
- `season` integer
- `limit` integer

## Response `200`

ok

- object

## Other responses

- `404`: unknown league code

---

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