Endpoint Playground
Returns every shot in a football or ice hockey match. Football shots carry the shooter, side, outcome (`shot_type`), situation, body part, expected goals (xG and xGOT), minute, and pitch and goal-mouth coordinates. Ice hockey shots carry the shooter, team, side, shot technique (`shot_type`, for example `wrist`), `outcome` (`made`, `saved`, `missed` or `blocked`), `strength` (`even`, `powerplay` or `shorthanded`), period and period clock, rink `coordinates` and, for most shots, `xg`. An empty `shots` list is a valid response (a live match with no shots yet). Returns 404 when SofaScore has no shot map for the match, which includes matches that have not started, basketball and other sports without one, and fixtures without expected-goals coverage.
14 Oct 2026: 33 shots; 16 fields had a value in every checked item and 3 varied between items.
Sample value profiles: shot_type: miss (10), block (8), goal (8) and 2 more; xg: 0.02 to 0.97, median 0.08; goal_mouth_location: “low-centre” and 9 other values.
curl 'https://api.crawlora.net/api/v1/sofascore/event-shotmap?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/shotmap",
"fetched_at": "2026-07-08T00:00:00Z",
"count": 33,
"shots": [
{
"id": 8504160,
"player": {
"id": 839956,
"name": "Erling Haaland",
"short_name": "E. Haaland",
"slug": "erling-haaland",
"position": "F",
"jersey_number": "9"
},
"goalkeeper": {
"id": 1012928,
"name": "Robin Roefs",
"short_name": "R. Roefs",
"slug": "robin-roefs",
"position": "G",
"jersey_number": "22"
},
"is_home": true,
"shot_type": "goal",
"situation": "assisted",
"body_part": "right-foot",
"goal_type": "regular",
"goal_mouth_location": "low-right",
"xg": 0.67196875810623,
"xgot": 0.86413210630417,
"minute": 81,
"time_seconds": 4858,
"player_coordinates": {
"x": 3.3,
"y": 53.2,
"z": 0
},
"goal_mouth_coordinates": {
"x": 0,
"y": 47.8,
"z": 7
}
}
]
}
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.