Endpoint Playground
Returns every player's average position on the pitch during a football match (`average_x` and `average_y` on SofaScore's 0-100 pitch scale, plus the number of touches behind it) for the home and away sides, and the substitutions with their minute. Returns 404 when SofaScore has no positional data for the match, which includes unstarted matches and sports other than football.
14 Oct 2026: 14 away; 4 fields had a value in every checked item.
Sample value profiles: points_count: 10 to 91, median 42.
curl 'https://api.crawlora.net/api/v1/sofascore/event-average-positions?id=16363867' \
-H "x-api-key: $CRAWLORA_API_KEY"| Parameter | Type | Required | Prefilled value | Description |
|---|---|---|---|---|
| id | string | Yes | 16363867 | Numeric SofaScore event (match) id |
{
"code": 200,
"msg": "OK",
"data": {
"event_id": 16363867,
"source_url": "https://api.sofascore.com/api/v1/event/16363867/average-positions",
"fetched_at": "2026-07-08T00:00:00Z",
"home": [
{
"player": {
"id": 839956,
"name": "Erling Haaland",
"short_name": "E. Haaland",
"slug": "erling-haaland",
"position": "F",
"jersey_number": "9"
},
"average_x": 64.248571428571,
"average_y": 47.802857142857,
"points_count": 35
}
],
"away": [
{
"player": {
"id": 1195784,
"name": "Malick Fofana",
"short_name": "M. Fofana",
"slug": "malick-fofana",
"position": "M",
"jersey_number": "39"
},
"average_x": 59.022222222222,
"average_y": 82.133333333333,
"points_count": 18
}
],
"substitutions": [
{
"player_in": {
"id": 1195784,
"name": "Malick Fofana",
"short_name": "M. Fofana",
"slug": "malick-fofana",
"position": "M",
"jersey_number": "39"
},
"player_out": {
"id": 1116571,
"name": "Nilson Angulo",
"short_name": "N. Angulo",
"slug": "nilson-angulo",
"position": "M",
"jersey_number": "10"
},
"minute": 60,
"is_home": false
}
]
}
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.