FixturesEndpoint 5 of 116
Fixture
https://api.datasportsapi.com/
- Plan
- All plans
- Auth
Bearer dsa_live_…- Parameters
- 1 required · 0 optional
- Returns
Fixture
Everything we hold on one fixture.
The core: both teams, score, status, match clock, winner, league, season, round and venue. Around it: the referee, with career cards per game; the two managers (homeManager / awayManager); previousLegFixtureId, our id for the first leg or the previous game in a series; and aggregateWinner, the side that went through, on a completed second leg.
Some sports add more: seeds (homeSeed / awaySeed); in tennis, surface (hard / clay / grass / carpet, indoor) and serving (who is serving at the moment); in cricket, battingSide, note, toss (winner, bat / bowl), tvUmpire and umpires; in MMA and boxing, fightResult (method, round and, for a stoppage, the time), fightCard (main card / prelims, order, weight class) and fightDiscipline (boxing, kickboxing, muayThai, …, if the source tags one); attendance (spectators, when reported); matchFormat (best of sets / legs in darts, best of games in esports); in baseball, inningState (inning, top / bottom, outs, count, runners); in basketball, timeouts (left per side) and bonus (which sides are in the bonus); in American football, downAndDistance (down, yards to go, field position, possession, play type); in football, varCheck (a VAR review in progress and the side it concerns); finalResultOnly (true when the source has nothing beyond the result); and, in set or round sports, durations (seconds per completed set or round, plus the total).
Worth knowing
- All score components live under periods: extra time in football and futsal is periods.extra1 / extra2, overtime in any other sport is periods.overtime, and extra innings in baseball are period10, period11, and so on.
- A shoot-out is never part of current — it goes in penalties — except that in ice hockey current includes the single goal awarded for winning a shoot-out.
- status.description is our own label, e.g. “Game 1”, “After overtime”, “After extra time” or “After penalties”.
- When the source drops coverage of a fixture, its status becomes canceled and both score sides are empty.
- For a match decided on penalties, winner is the shoot-out winner — second legs included, where the result on the night remains in normalTime; aggregateWinner names the side that progressed on aggregate (null if the source leaves a level aggregate unresolved).
- Lists and WebSocket snapshots may show aggregateWinner as null, so take it from this endpoint.
- Only this endpoint fills referee, homeManager / awayManager, previousLegFixtureId, toss, umpires, tvUmpire, fightCard and attendance; in fixture lists, on the live board and in WebSocket snapshots they are null (surface is filled here and on the live tennis board as well).
- inningState, timeouts, bonus, downAndDistance and varCheck exist only during play and are null at any other time.
- Every one of them except bonus is pushed in WebSocket deltas — inningState and varCheck as whole objects, timeouts and downAndDistance as partial updates (whole on first appearance, null once play stops).
- Because the source resends the baseball state roughly once a minute, the count may trail the action.
- durations — filled for tennis and the other set sports and for MMA rounds, null elsewhere — gains one period each time a set finishes, which is also delivered in WebSocket deltas (the completed period plus the updated totalSeconds; the set in progress began at clock.periodStartedAt).
- fightResult comes in a separate WebSocket delta, normally after the one that ends the fight, because the source publishes it only 20–60 s after the winner is known.
- In rugby, periods fill in live: period1 at half-time, then period2 = current − period1 through the second half.
- Esports periods: CS records 1 for each map won and 0 otherwise; LoL records how many kills the side made in game N.
- serving replaces firstToServe, which carries the same value and is deprecated but still present for now.
01Parameters
idpathRequiredfixture 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}"03Response
The top-level keys of the JSON body. Each object links to its full shape in the data reference.
dataFixture
{ "data": { "id": 201324, "sport": "football", "startTime": "2026-10-18T15:30:00.000Z",
"status": { "type": "finished", "phase": "finished", "code": 120, "description": "After penalties",
"period": null, "finish": "penalties" },
"homeScore": { "current": 1, "penalties": 2,
"periods": { "period1": 0, "period2": 1, "extra1": 0, "extra2": 0 }, … },
"awayScore": { "current": 1, "penalties": 4, … },
"winner": "away", "clock": null,
"round": { "number": 4, "name": "Round 4", "slug": "round-4", "prefix": null },
"season": { "id": 200386, "name": "FA Cup 25/26", "year": "25/26", "startYear": 2025, "endYear": 2026 },
"venue": { "id": 157902, "name": "St. Andrew's", "city": "Birmingham",
"country": { "code": "EN", "name": "England" }, "capacity": 29409 },
"referee": { "id": 51022, "name": "Michael Oliver", "slug": "michael-oliver", "country": { "code": "EN", "name": "England" },
"games": 612, "yellowCards": 2190, "redCards": 61, "yellowRedCards": 38,
"image": "https://cdn.datasportsapi.com/v2/referees/51022/photo" },
"homeManager": { "id": 912070, "name": "Chris Davies", "slug": "chris-davies", "shortName": "C. Davies", "image": "https://cdn.datasportsapi.com/v2/managers/912070/photo" },
"awayManager": { "id": 794942, "name": "Mikel Arteta", "slug": "mikel-arteta", "shortName": "M. Arteta", "image": null },
"previousLegFixtureId": null, "aggregateWinner": null, "surface": null, "toss": null, "umpires": null, "tvUmpire": null, "fightCard": null, … } }
// Second leg: "previousLegFixtureId": 582371, "aggregateWinner": "home" (homeScore.aggregated 2, awayScore.aggregated 2, penalties 5-3)
// Tennis: "serving": "home", "surface": { "type": "hard", "indoor": true, "name": "Hardcourt indoor" }
// Cricket: "toss": { "winner": "away", "decision": "bowl" }, "umpires": ["Chris Gaffaney", "Richard Illingworth"], "tvUmpire": "Joel Wilson"
// MMA: "fightCard": { "section": "mainCard", "order": 12, "weightClass": "light" }
// Basketball (in play): "attendance": 19156, "timeouts": { "homeRemaining": 3, "awayRemaining": 5, "perTeam": 7 }, "bonus": { "home": true, "away": false }
// American football (in play): "downAndDistance": { "down": 2, "yardsToGo": 6, "possession": "away", "ballOn": "away", "yardLine": 34,
// "goalToGo": false, "playType": "scrimmage" }
// Football (VAR review in progress): "varCheck": { "side": "home" } · every fixture: "finalResultOnly": false
// Tennis (finished): "durations": { "periods": { "period1": 3893, "period2": 3810, "period3": 2886, "period4": 2982 }, "totalSeconds": 13571 }
// Baseball (in play): "inningState": { "inning": 7, "half": "bottom", "battingSide": "home", "balls": 2, "strikes": 1, "outs": 1,
// "bases": { "first": true, "second": false, "third": true } }
// Darts: "matchFormat": { "bestOfSets": 5, "bestOfLegs": 5, "bestOfGames": null } (a legs match: bestOfSets 1, bestOfLegs 7)
// Esports: "matchFormat": { "bestOfSets": null, "bestOfLegs": null, "bestOfGames": 3 }04Errors
Nothing specific to this endpoint: only the account-wide errors below apply.
unauthorized429rate_limited429quota_exceeded500internal_errorEvery error code