TeamsEndpoint 42 of 116
Tennis year statistics
https://api.datasportsapi.com/
- Plan
- All plans
- Auth
Bearer dsa_live_…- Parameters
- 2 required · 0 optional
- Returns
TennisYearStatistics[]
Breaks down one calendar year of a tennis player’s season by surface, one row each: matches and wins, tournaments entered and won, aces and double faults, break points, tie-breaks, serve and return points, winners and unforced errors.
Worth knowing
Derived fields: servicePoints = firstServesIn + secondServes and secondServesIn = secondServes − doubleFaults. Team sports, and years in which the player had no matches, return an empty list.
01Parameters
idpathRequiredDataSportsAPI team id, a positive integer
yearqueryRequiredcalendar year such as 2026
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/teams/{id}/year-statistics?year=…"03Response
The top-level keys of the JSON body. Each object links to its full shape in the data reference.
dataTennisYearStatistics[]meta- year, count
{ "data": [ { "surface": { "type": "grass", "indoor": null, "name": "Grass" }, "matches": 7, "wins": 7, "tournamentsPlayed": 1, "tournamentsWon": 1,
"aces": 128, "doubleFaults": 18, "servicePoints": 723, "firstServesIn": 474, "firstServePointsWon": 400, "secondServes": 249, "secondServesIn": 231,
"secondServePointsWon": 144, "breakPointsConverted": 25, "breakPointChances": 69, "breakPointsFaced": 22, "breakPointsLost": 6,
"tiebreaksWon": 5, "tiebreaksLost": 2, "winners": 319, "unforcedErrors": 188 }, … ],
"meta": { "year": 2026, "count": 3 } }04Errors
- 400
bad_requestyear is absent or malformed
- 403
history_not_in_planthe year finished before your plan’s history window begins
unauthorized429rate_limited429quota_exceeded500internal_errorEvery error code