Player seasons
A/v1/players/{id}
One player, every season: appearances, minutes, goals, assists and more
One player, season by season: appearances, starts, minutes, goals, assists, shots and shots on target, passes and key passes, tackles, interceptions, duels, dribbles, fouls, cards, saves, goals conceded and the average rating, with goals per 90 minutes. One row a competition, season and club, so a move mid-season shows as two rows; a career total sits above them.
Counted from the matches the player played in, where the competition publishes player figures (the same figures as /v1/matches/{id}/players). Rebuilt every night.
Plan
This endpoint needs Archive.
Calling it on a lower plan returns a 403 naming the plan it needs and
a link to pricing, never a bare refusal.
Parameters
player_id
string
path
required
pl_0YC6AT4
Returns
data[].player_id
string
data[].player_name
string
data[].league_id
string
data[].league_name
string
data[].country_name
string
data[].season
integer
data[].team_id
string
data[].team_name
string
data[].appearances
integer
data[].starts
integer
data[].minutes
integer
data[].goals
integer
data[].assists
integer
data[].shots
integer
data[].shots_on_target
integer
data[].key_passes
integer
data[].yellow_cards
integer
data[].red_cards
integer
data[].rating
number
meta.data_as_of
string
meta.request_id
string
Request
curl "https://api.footballsoccerapi.com/v1/players/pl_0YC6AT4" \ -H "X-API-Key: $FSAPI_KEY"
const res = await fetch("https://api.footballsoccerapi.com/v1/players/pl_0YC6AT4", { headers: { "X-API-Key": process.env.FSAPI_KEY } }); const { data, meta } = await res.json();
import os, requests r = requests.get( "https://api.footballsoccerapi.com/v1/players/pl_0YC6AT4", headers={"X-API-Key": os.environ["FSAPI_KEY"]}, ) data = r.json()["data"]
$ch = curl_init("https://api.footballsoccerapi.com/v1/players/pl_0YC6AT4"); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ["X-API-Key: {$key}"], ]); $data = json_decode(curl_exec($ch), true)["data"];
Example response
A real row from the archive, fetched when this page rendered. Run it against your own key below.
{
"data": [
{
"player_id": "pl_0HDM538",
"player_name": "Erling Haaland",
"league_id": "lg_24T9Z0G",
"league_name": "Premier League",
"country_name": "England",
"season": 2026,
"team_id": "tm_3WJM4RA",
"team_name": "Manchester City",
"appearances": 7,
"starts": 7,
"minutes": 620,
"goals": 8,
"assists": 0,
"shots": 26,
"shots_on_target": 14,
"key_passes": 4,
"yellow_cards": 0,
"red_cards": 0,
"rating": 7.91
},
{
"player_id": "pl_0FT6EHA",
"player_name": "Alexander Isak",
"league_id": "lg_24T9Z0G",
"league_name": "Premier League",
"country_name": "England",
"season": 2026,
"team_id": "tm_06VYC58",
"team_name": "Liverpool",
"appearances": 6,
"starts": 6,
"minutes": 481,
"goals": 6,
"assists": 0,
"shots": 14,
"shots_on_target": 8,
"key_passes": 6,
"yellow_cards": 1,
"red_cards": 0,
"rating": 7.68
}
],
"meta": {
"data_as_of": "2026-10-29T04:32:57Z",
"request_id": "01J9QW3C7M4KX2VB"
}
}
Run it live
Paste your key and fire the real request. The key is kept in this browser only and never sent anywhere but the API.