← Back to API docs

GET/api/v1/players/season/statistics/old

Get season statistics
Database packageWorld Cup packageactivebetacoreAvailable (scoped)

Description

Returns team and player statistics for the season queried (player statistics, top scorers, team statistics)
Request rate: 120/min

Notes:
Players may transfer within a competition, so a player can have several rows with different teams; they are that player's figures at each team and can be merged

PS: get the ids of changed seasons from the 'data updates' endpoint

Access

Request
GET https://api.sports.csap.ai/api/v1/players/season/statistics/old
Auth
Header X-API-Key: <your key> (Authorization: Bearer <key> also works; ?key= is still accepted but discouraged, because the key ends up in URLs and logs)
External keys
Available (scoped)External keys can call it, but only data inside the open scope is returned.
Rate limits
3000 per minute · 200000 per day · Set per key (rate_per_min and quota_daily returned by /api/v1/account are authoritative; the numbers above are a trial key's). Beyond them the answer is 429. In addition, heavy requests such as whole-table snapshots and statistics lists without a match id are processed 2 at a time for the whole platform; a request that cannot get a slot receives 429 with Retry-After. Responses do not carry X-RateLimit-* headers for now. See the general guide

Request parameters 1

ParameterTyperequiredExampleDescription
idintegerrequired6917Season id

Example request

curl "https://api.sports.csap.ai/api/v1/players/season/statistics/old?id=6917" \
  -H "X-API-Key: YOUR_API_KEY"

Try it

Example response

Real response with an external key at 09/11/2026, 14:29 UTC: HTTP 200, 1000 rows, 848 ms (data cut to 2 rows)

{
  "code": 0,
  "data": [
    {
      "aerial_lost": null,
      "aerial_won": null,
      "appearances": 13,
      "assists": null,
      "ball_possession": null,
      "blocked_shots": null,
      "clean_sheets": null,
      "clearances": null,
      "competition_id": "202",
      "corner_kicks": null,
      "court": null,
      "crosses": null,
      "crosses_accuracy": null,
      "dispossessed": null,
      "dribble": null,
      "dribble_succ": null,
      "duels": null,
      "duels_won": null,
      "fastbreak_goals": null,
      "fastbreak_shots": null,
      "fastbreaks": null,
      "first": null,
      "fouls": null,
      "freekick_goals": null,
      "freekicks": null,
      "goal_conceded": null,
      "goals": null,
      "goals_against": null,
      "good_high_claim": null,
      "ground_lost": null,
      "ground_won": null,
      "hit_woodwork": null,
      "interceptions": null,
      "key_passes": null,
      "long_balls": null,
      "long_balls_accuracy": null,
      "matches": null,
      "minutes_played": null,
      "offsides": null,
      "passes": null,
      "passes_accuracy": null,
      "penalty": null,
      "player_id": "1031665",
      "player_name": "Ottó Hindrich",
      "players_stats": null,
      "position": null,
      "poss_losts": null,
      "punches": null,
      "rating": 7.1307692307692,
      "red_cards": null,
      "runs_out": null,
      "runs_out_succ": null,
      "saves": null,
      "season_id": "96144",
      "shooters": null,
      "shots": null,
      "shots_on_target": null,
      "source": "S2",
      "tackles": null,
      "team": "Legia Warszawa",
      "team_id": null,
      "teams_stats": null,
      "updated_at": 1793871041609,
      "was_fouled": null,
      "yellow2red_cards": null,
      "yellow_cards": null
    },
    {
      "aerial_lost": null,
      "aerial_won": null,
      "appearances": 11,
      "assists": null,
      "ball_possession": null,
      "blocked_shots": null,
      "clean_sheets": null,
      "clearances": null,
      "competition_id": "202",
      "corner_kicks": null,
      "court": null,
      "crosses": null,
      "crosses_accuracy": null,
      "dispossessed": null,
      "dribble": null,
      "dribble_succ": null,
      "duels": null,
      "duels_won": null,
      "fastbreak_goals": null,
      "fastbreak_shots": null,
      "fastbreaks": null,
      "first": null,
      "fouls": null,
      "freekick_goals": null,
      "freekicks": null,
      "goal_conceded": null,
      "goals": null,
      "goals_against": null,
      "good_high_claim": null,
      "ground_lost": null,
      "ground_won": null,
      "hit_woodwork": null,
      "interceptions": null,
      "key_passes": null,
      "long_balls": null,
      "long_balls_accuracy": null,
      "matches": null,
      "minutes_played": null,
      "offsides": null,
      "passes": null,
      "passes_accuracy": null,
      "penalty": null,
      "player_id": "1036147",
      "player_name": "Kacper Trelowski",
      "players_stats": null,
      "position": null,
      "poss_losts": null,
      "punches": null,
      "rating": 7.1272727272727,
      "red_cards": null,
      "runs_out": null,
      "runs_out_succ": null,
      "saves": null,
      "season_id": "96144",
      "shooters": null,
      "shots": null,
      "shots_on_target": null,
      "source": "S2",
      "tackles": null,
      "team": "Raków Częstochowa",
      "team_id": null,
      "teams_stats": null,
      "updated_at": 1793871041610,
      "was_fouled": null,
      "yellow2red_cards": null,
      "yellow_cards": null
    }
  ],
  "message": "success",
  "success": true
}

Response fields 66

aerial_lostnullnullable
aerial_wonnullnullable
appearancesintegerExample: 13
assistsintegernullableExample: 7
ball_possessionnullnullable
blocked_shotsnullnullable
clean_sheetsnullnullable
clearancesnullnullable
competition_idstringCompetition idExample: "202"
corner_kicksnullnullable
courtnullnullable
crossesnullnullable
crosses_accuracynullnullable
dispossessednullnullable
dribblenullnullable
dribble_succnullnullable
duelsnullnullable
duels_wonnullnullable
fastbreak_goalsnullnullable
fastbreak_shotsnullnullable
fastbreaksnullnullable
firstnullnullable
foulsnullnullable
freekick_goalsnullnullable
freekicksnullnullable
goal_concedednullnullable
goalsintegernullableGoalsExample: 8
goals_againstnullnullableGoals against
good_high_claimnullnullable
ground_lostnullnullable
ground_wonnullnullable
hit_woodworknullnullable
interceptionsnullnullable
key_passesnullnullable
long_ballsnullnullable
long_balls_accuracynullnullable
matchesnullnullableMatches
minutes_playednullnullable
offsidesnullnullable
passesnullnullable
passes_accuracynullnullable
penaltynullnullable
player_idstringPlayer idExample: "1031665"
player_namestringPlayer nameExample: "Ottó Hindrich"
players_statsnullnullable
positionnullnullablePosition
poss_lostsnullnullable
punchesnullnullable
ratingnumbernullableRatingExample: 7.1307692307692
red_cardsnullnullable
runs_outnullnullable
runs_out_succnullnullable
savesnullnullableSaves
season_idstringSeason idExample: "96144"
shootersnullnullable
shotsnullnullableShots
shots_on_targetnullnullable
sourcestringSource code (S1, S2…)Example: "S2"
tacklesnullnullable
teamstringTeam nameExample: "Legia Warszawa"
team_idnullnullableTeam id
teams_statsnullnullable
updated_atintegerLast update time (UTC, ISO 8601; incremental sync with the time parameter goes by it)Example: 1793871041609
was_foulednullnullable
yellow2red_cardsnullnullable
yellow_cardsnullnullable

Errors

HTTPmessageWhen
401missing API key / unauthorizedNo X-API-Key, or the key is invalid or disabled
400bad param …Malformed parameter (e.g. id is neither a number nor u<uid>)
301match merged into <gmid>Queried by an old match id that has been merged into a new gmid: Location points to the new address and the body carries moved_to
404not foundThe match / team / competition does not exist, or is outside what this key can see (external keys see only matches inside the open coverage)
429rate limit exceeded / daily quota exceededThe key's per-minute rate or daily quota is exceeded
429server busy, retry laterThe server's concurrency slots are full (only 2 heavy requests at a time); retry after Retry-After seconds
500query errorThe query failed on the server; you may retry