Tracking data

Ball track

GET/v2/fixtures/{id}/tracking/ballEnterprise

The live ball track, oldest first — football (about 14 positions a minute in play, 0–100 pitch) and tennis (about one per shot, millimetres). A page of up to limit frames after since; the next page: since = meta.next. Enterprise plan only.

Empty for a fixture without a ball track (basketball, ice hockey, matches the source does not track). Polling a live match: pass the newest at you hold as since; or subscribe to tracking:{id} for every frame within about a second.

Parameters

id
pathrequired
our numeric id (positive integer)
since
query
only frames after this instant (ISO-8601, any offset; exclusive) — meta.next of the previous page, or the newest at you hold
limit
query
frames per page, 1–5000 (default 5000 — a whole football match)

Response

data
BallFrame[]
meta
count, hasNextPage, next (the since of the next page, or null)
errors
400 bad_request — since or limit malformed403 endpoint_not_in_plan — every plan but Enterprise404 not_found — an id we never issued

Every /v2 call can also answer the common errors.

Try it →
$ curl -H "Authorization: Bearer sk_live_…" \
    "https://api.sportsapi.app/v2/fixtures/{id}/tracking/ball"
Example
{ "data": [ { "at": "2026-11-11T20:05:31.412Z", "x": 61.5, "y": 38.2 }, { "at": "2026-11-11T20:05:35.906Z", "x": 70.1, "y": 44 }, … ],
  "meta": { "count": 1384, "hasNextPage": false, "next": null } }