FixturesEndpoint 24 of 116
Point by point
https://api.datasportsapi.com/
- Plan
- Pro + Business
- Auth
Bearer dsa_live_…- Parameters
- 1 required · 0 optional
- Returns
Points
A point-by-point breakdown of the match.
Tennis nests sets → games (server, winner, set score) → points; badminton, table tennis and volleyball nest sets → rallies, with the running score.
Cricket nests innings → overs → balls: each ball has its batter, bowler, outcome, runs, extras, wicket and dismissal, and the score after the delivery, and since 2026-11-04 also the source’s commentary text for each ball, the wagon wheel (zone, angle and distance of the shot) and the pitching spot.
Baseball lists at-bats with inning, top / bottom, batting side, batter and pitcher, plus the home side’s win probability before and after the at-bat. Darts nests sets → legs (starting score, first thrower, winner, checkout) → visits (visit score, both sides’ remaining totals, checkout).
Plan access
Requires a Pro or Business plan; every other plan receives 403 endpoint_not_in_plan.
Worth knowing
- format names the one list that holds data (tennis and rally sports: sets; cricket: innings; baseball: atBats; darts: darts); every other list is empty.
- Darts visits do not break down into individual darts, as the source has none; a match played in legs is represented as a single set.
- On cricket balls (since 2026-11-04), commentary carries the source’s English text (null below the top tiers).
- shot describes the wagon wheel: zone is the fielding sector, as seen for a right-handed batter ( squareLeg, fineLeg, behindWicket, thirdMan, point, coverPoint, cover, longOff, straight, longOn, midWicket), angle in degrees (0 square leg, 90 behind the keeper, 180 point, 270 straight) and distance on a 1–5 scale (5 = reached the boundary); it is null when the batter did not hit the ball.
- pitchedAt gives where the ball pitched, in the source’s own units, with y growing with distance from the batter (about 25 for a yorker, 41 for a good length, 54 for a short ball).
- Each baseball at-bat includes the source’s home win probability (0–100, separate from our model) and, since 2026-11-04, an id you can pass to /v2/fixtures/{id}/at-bats/{atBatId}/pitches, where the last pitch listed ends the at-bat with its result.
- Any other sport, or a match with no point-by-point data yet, gets 200 with format null and every list empty.
- For rally sports you only get the rallies the source captured; lower tiers may skip some, which shows up as a jump in the running score.
- Each tennis point holds the score after it (homeScore / awayScore such as "15" or "A"; null on the game-winning point added at the end), a description (ace or doubleFault) and homeType / awayType (one of won, breakPoint, setPoint, miniBreak, none).
- In a match tie-break, the deciding set holds it as its only game, played to 10.
- Refreshed about every 30 seconds during a live match.
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}/points"03Response
The top-level keys of the JSON body. Each object links to its full shape in the data reference.
dataPoints
{ "data": { "format": "cricket", "sets": [],
"innings": [ { "inning": "inning2", "battingSide": "away", "overs": [ …,
{ "number": 49, "balls": [ { "sequence": 314, "ball": 1, "outcome": "wicket", "runs": 0, "totalRuns": 0,
"wicket": true, "dismissal": "bowled", "batter": { "id": 886956, "name": "Asitha Fernando", … },
"bowler": { "id": 975942, "name": "Haris Rauf", … }, "fielder": null,
"dismissedBatter": { "id": 886956, … }, "scoreRuns": 268, "scoreWickets": 10,
"commentary": "OUT! RAUF HITS TIMBER TO END THE GAME! Skiddy length ball, on the off-stump line. …",
"shot": null, "pitchedAt": { "x": 13, "y": 41, "z": null } } ] },
{ "number": 48, "balls": [ …, { "sequence": 310, "ball": 3, "outcome": "four", "runs": 4, "totalRuns": 4, …,
"commentary": "FOUR! How has that missed the stumps? Yorker length ball at the stumps. …",
"shot": { "zone": "behindWicket", "angle": 82, "distance": 5 }, "pitchedAt": { "x": 17, "y": 25, "z": null } }, … ] } ] } ] } }
{ "data": { "format": "tennis", "innings": [],
"sets": [ { "period": "period1", "homeScore": 6, "awayScore": 4, "points": [],
"games": [ { "number": 1, "server": "home", "winner": "home", "homeGames": 1, "awayGames": 0,
"points": [ { "homeScore": "15", "awayScore": "0", "winner": "home", "description": "ace",
"homeType": "won", "awayType": "none" }, … ] }, … ] }, … ], "atBats": [] } }
{ "data": { "format": "baseball", "sets": [], "innings": [],
"atBats": [ { "id": 70412, "inning": 1, "half": "top", "battingSide": "away",
"batter": { "id": 912, "name": "Yandy Díaz", "slug": "diaz-yandy", "shortName": "Y. Díaz", "image": "https://cdn.datasportsapi.com/v2/players/912/photo" },
"pitcher": { "id": 913, "name": "Shawn Armstrong", "slug": "armstrong-shawn", "shortName": "S. Armstrong", "image": null },
"homeWinProbabilityBefore": 49, "homeWinProbabilityAfter": 50.8, "at": "2026-10-17T00:10:04.000Z" }, … ] } }
{ "data": { "format": "darts", "sets": [], "innings": [], "atBats": [],
"darts": [ { "number": 1, "winner": "home", "homeSets": 1, "awaySets": 0,
"legs": [ { "number": 1, "startScore": 501, "throwingFirst": "away", "winner": "home", "homeLegs": 1, "awayLegs": 0, "checkout": 6,
"visits": [ { "side": "away", "scored": 100, "homeRemaining": 501, "awayRemaining": 401, "checkout": false },
{ "side": "home", "scored": 112, "homeRemaining": 389, "awayRemaining": 401, "checkout": false }, … ] }, … ] }, … ] } }04Errors
Nothing specific to this endpoint: only the account-wide errors below apply.
unauthorized429rate_limited429quota_exceeded500internal_errorEvery error code