Skip to content
datasportsAPI

FixturesShot map

Documentation

/

Type to filter the docs by title or path.

FixturesEndpoint 17 of 116

Shot map

GET

/v2/fixtures/{id}/shotmap

Plan
Pro + Business
Auth
Bearer dsa_live_…
Parameters
1 required · 0 optional
Returns
Shot[]

All shots in chronological order (oldest first), each with its outcome and expected goals.

Football shots include expectedGoals / expectedGoalsOnTarget, situation, body part, and pitch and goal-mouth coordinates; ice hockey adds technique, strength and rink coordinates; basketball lists each field-goal attempt as made, missed or blocked along with its court location.

Plan access

Requires a Pro or Business plan; every other plan receives 403 endpoint_not_in_plan.

Worth knowing

  • Available for football, ice hockey and basketball in covered leagues; any other case returns an empty array.
  • In football and ice hockey, outcome is goal | save | miss | block | post, and a football shot cleared off the line counts as a block.
  • In basketball the outcomes are goal (made), miss and block; positions are measured from the basket in tenths of a foot, the player and time fields are null, and every home shot comes before the away shots.
  • Only ice hockey uses technique (wrist, snap, slap, …) and strength.
  • goalType is regular, ownGoal or penalty.
  • Shoot-out kicks appear at the end: shootoutSequence is the order of kicks across both teams (matching the events), and shootoutRound is the kick’s number (1st, 2nd, …) for the taker’s side.
  • In football, period (since 2026-10-24; null for earlier data) is derived from the minute: period1, period2, extra1, extra2, or penalties for a shoot-out kick.
  • While a match is live the list is re-read about every 30 seconds; Business fixture:{id} WebSocket channels receive the entire list as a shotmap frame whenever it changes.

01Parameters

  • idpathRequired

    fixture id issued by DataSportsAPI, a positive integer

02Request

The same call from the command line and each SDK. The SDK lines assume a client created with your key; left out, it is read from DATASPORTSAPI_API_KEY. Installing a client: SDKs & CLI.

curl -H "Authorization: Bearer dsa_live_…" \
    "https://api.datasportsapi.com/v2/fixtures/{id}/shotmap"

03Response

The top-level keys of the JSON body. Each object links to its full shape in the data reference.

data
Shot[]
meta
count
ObjectsShot
Example response
{ "data": [ …, { "side": "away", "outcome": "goal", "technique": null, "goalType": "regular",
    "situation": "assisted", "bodyPart": "rightFoot", "strength": null, "expectedGoals": 0.028, "expectedGoalsOnTarget": 0.165,
    "minute": 80, "addedMinute": null, "second": 4770, "period": "period2",
    "player": { "id": 3759, "name": "Bukayo Saka", … }, "goalkeeper": { "id": 4101, "name": "Matz Sels", … },
    "position": { "x": 13.4, "y": 27.5, "z": 0 }, "goalMouth": { "x": 0, "y": 48.4, "z": 24.1 },
    "goalMouthLocation": "highCentre", "blockPosition": null, "shootoutSequence": null, "shootoutRound": null } ],
  "meta": { "count": 23 } }

// Ice hockey:
{ "data": [ { "side": "home", "outcome": "save", "technique": "wrist", "strength": "powerPlay", "expectedGoals": 0.036,
    "minute": 1, "second": 46, "period": "period1", "position": { "x": 50, "y": 22, "z": null }, … }, … ],
  "meta": { "count": 61 } }

// Basketball:
{ "data": [ { "side": "home", "outcome": "goal", "player": null, "minute": null, "second": null,
    "position": { "x": -132, "y": 168, "z": null }, … }, … ],
  "meta": { "count": 171 } }

04Errors

Nothing specific to this endpoint: only the account-wide errors below apply.

Any key can also meet401unauthorized429rate_limited429quota_exceeded500internal_errorEvery error code