SofaScore API endpoint
Returns the player SofaScore names player of the season for a finished competition season: the player, their team, shirt number, average rating, appearances and the statistics scope (`overall`, or `regular_season` for the NBA). A season that is still running, has not been awarded, or does not belong to the competition answers 404. Get `id` from search and `season` from tournament-seasons or tournament-winners.
/sofascore/tournament-player-of-the-seasonQuery parameters:
id: required. Numeric SofaScore unique-tournament (competition) id, e.g. 17 for the Premier League, 132 for the NBA.season: required. Numeric SofaScore season id of a finished season, from sofascore/tournament-winners or sofascore/tournament-seasons, e.g. 76986 for the 2025/26 Premier League.Notable response behavior:
statistics_type is the scope the rating covers: overall for football, regular_season for the NBA (SofaScore's regularSeason, returned in the same spelling as the type enum of sofascore/tournament-top-players). Any other scope would be passed through unchanged.rating is the player's average SofaScore rating and is omitted if SofaScore does not publish it.| Field | In the sample | Value in the sample |
|---|---|---|
| tournament_id | Has a value | |
| season_id | Has a value | |
| player.id | Has a value | |
| player.name | Has a value | “Bruno Fernandes” |
| player.short_name | Has a value | “B. Fernandes” |
| player.slug | Has a value | |
| player.position | Has a value | “M” |
| jersey_number | Has a value | 8 |
| team.id | Has a value | |
| team.name | Has a value | “Manchester United” |
| team.short_name | Has a value | “Man Utd” |
| team.slug | Has a value | |
| rating | Has a value | 7.61 |
| appearances | Has a value | 35 |
| statistics_type | Has a value | “overall” |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id | string | Yes | Numeric SofaScore unique-tournament (competition) id | 17 | |
| season | string | Yes | Numeric SofaScore season id of a finished season | 76986 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/sofascore/tournament-player-of-the-season?id=17&season=76986" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"tournament_id": 17,
"season_id": 76986,
"player": {
"id": 288205,
"name": "Bruno Fernandes",
"short_name": "B. Fernandes",
"slug": "bruno-fernandes",
"position": "M"
},
"jersey_number": "8",
"team": {
"id": 35,
"name": "Manchester United",
"short_name": "Man Utd",
"slug": "manchester-united"
},
"rating": 7.6057142857143,
"appearances": 35,
"statistics_type": "overall",
"source_url": "https://api.sofascore.com/api/v1/unique-tournament/17/season/76986/player-of-the-season",
"fetched_at": "2026-10-07T14:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/sofascore.tournamentPlayerOfTheSeasonResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | sofascore.TournamentPlayerOfTheSeasonResponse | No | ||||
| data.appearances | integer | No | 35 | |||
| data.fetched_at | string | No | ||||
| data.jersey_number | string | No | JerseyNumber is the player's shirt number as published. | |||
| data.player | sofascore.PlayerRef | No | ||||
| data.player.country | string | No | Spain | Player's country. | ||
| data.player.id | integer | No | 855833 | SofaScore player id. Use it with the player endpoints. | ||
| data.player.name | string | No | Ferran Torres | Player's full name. | ||
| data.player.position | string | No | F | Position code, for example G, D, M or F. | ||
| data.player.short_name | string | No | F. Torres | Shortened name, for example "F. Torres". | ||
| data.player.slug | string | No | ferran-torres | URL slug of the player on SofaScore. | ||
| data.rating | number | No | 7.61 | Rating is the player's average SofaScore rating over the season. | ||
| data.season_id | integer | No | ||||
| data.source_url | string | No | ||||
| data.statistics_type | string | No | overall | StatisticsType is the scope of the rating: overall, regular_season, or the upstream value verbatim for any other scope. | ||
| data.team | sofascore.TeamRef | No | TeamRef record, 6 fields: country, id, name, national, short_name, slug. Described under SofaScore venue API. | |||
| data.tournament_id | integer | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/sofascore/tournament-player-of-the-season?id=17&season=76986" \
-H "x-api-key: $CRAWLORA_API_KEY"