Skip to content
datasportsAPI

TeamsTennis year statistics

Documentation

/

Type to filter the docs by title or path.

TeamsEndpoint 42 of 116

Tennis year statistics

GET

/v2/teams/{id}/year-statistics

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

  • idpathRequired

    DataSportsAPI team id, a positive integer

  • yearqueryRequired

    calendar 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.

data
TennisYearStatistics[]
meta
year, count
Example response
{ "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

  • 400bad_request

    year is absent or malformed

  • 403history_not_in_plan

    the year finished before your plan’s history window begins

Any key can also meet401unauthorized429rate_limited429quota_exceeded500internal_errorEvery error code