SofaScore API endpoint
Returns where a football player ranks against every other player of the competition season for about 78 statistics (goals, assists, rating, expected goals, passes, duels, distance covered and more): the `value`, the `rank` (tied values share a rank), the number of ranked players (`count`) and the tie-broken `order`. Statistics are snake_case and sorted alphabetically. The `type` enum accepts only `overall`, which is also the default; the other statistics views answer 404. Returns 404 for players without a ranking in that season, which includes basketball players.
/sofascore/player-statistical-rankingsReturns where a football player ranks against every other player of one competition season from SofaScore.
Query parameters:
id: required. Numeric SofaScore player id, e.g. 839956. Get it from sofascore-search or sofascore-team-players.season: required. Numeric SofaScore season id from sofascore-player-statistics-seasons, e.g. 96668.type: optional enum. Allowed value: overall. Defaults to overall.Notable response behavior:
rankings holds about 78 statistics, sorted by name in snake_case (goals, assists, rating, expected_goals, accurate_passes, minutes_played, ...). Each has the player's value, the competition rank (tied values share a rank), count (the number of ranked players for that statistic) and order (the position when ties are broken; never lower than rank).overall answers: home, away, regular_season and playoffs returned 404. An invalid type returns 400. Returns 404 for players without a ranking in that season, which includes the basketball player checked.| Field | Filled in, of 78 checked | Values in the sample |
|---|---|---|
| statistic | 78 | “accurate_crosses” and 77 other values |
| value | 78 | 0 to 38,793.41, median 25 |
| rank | 78 | 1 to 470, median 67 |
| count | 78 | 280 to 537, median 537 |
| order | 78 | 1 to 470, median 102 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id | string | Yes | Numeric SofaScore player id | 839956 | |
| season | string | Yes | Numeric SofaScore season id from player-statistics-seasons | 96668 | |
| type | string | No | Statistics view Allowed values: overall. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/sofascore/player-statistical-rankings?id=839956&season=96668&type=overall" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"player_id": 839956,
"season": {
"id": 96668,
"name": "Premier League 26/27",
"year": "26/27"
},
"type": "overall",
"source_url": "https://api.sofascore.com/api/v1/player/839956/season/96668/statistical-rankings/overall",
"fetched_at": "2026-10-07T00:00:00Z",
"count": 2,
"rankings": [
{
"statistic": "goals",
"value": 5,
"rank": 1,
"count": 421,
"order": 1
},
{
"statistic": "rating",
"value": 7.6,
"rank": 12,
"count": 421,
"order": 14
}
]
}
}Request schema
No body schema
Response schema
#/definitions/sofascore.playerStatisticalRankingsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | sofascore.PlayerStatisticalRankingsResponse | No | ||||
| data.count | integer | No | ||||
| data.fetched_at | string | No | ||||
| data.player_id | integer | No | 839956 | |||
| data.rankings | array | No | ||||
| data.rankings[].count | integer | No | 421 | |||
| data.rankings[].order | integer | No | 1 | Order is the player's position when ties are broken; it is never lower than Rank. | ||
| data.rankings[].rank | integer | No | 1 | Rank is the competition rank (tied values share a rank) among Count players. | ||
| data.rankings[].statistic | string | No | goals | |||
| data.rankings[].value | number | No | 5 | |||
| data.season | sofascore.Season | No | ||||
| data.season.id | integer | No | SofaScore season id. Pass it to the standings and round endpoints. | |||
| data.season.name | string | No | Season name. | |||
| data.season.year | string | No | Season label, for example 26/27. | |||
| data.source_url | string | No | ||||
| data.type | string | No | overall | |||
| 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/player-statistical-rankings?id=839956&season=96668&type=overall" \
-H "x-api-key: $CRAWLORA_API_KEY"