Skip to content

get_player_stats

3 creditsMulti-tablePOST /v1/get_player_stats

A player's season statistics from scores, by round and opponent rank

Use it when you want a player's season numbers from the scores, and how they do by round and against the top 10.

Parameters

player_idstringrequired
Player id from search_players.
seasonstring | numberoptional
Year (default every season).

Notes

  • Over MCP, ask for it in plain English and the client calls get_player_stats itself. Point any MCP client at https://mcp.acesapi.com/mcp?key=YOUR_API_KEY.
  • Each call costs 3 credits, taken before it runs and refunded if the server errors.
  • Not the call you need? Find the right call by what you are trying to answer.

Request

curl -X POST https://mcp.acesapi.com/v1/get_player_stats \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
  "player_id": "3623",
  "season": 2025
}'

Response

json
{
  "tour": "ATP",
  "player_id": "3623",
  "name": "Jannik Sinner",
  "season": 2025,
  "by_season": [
    {
      "season": 2025,
      "wins": 58,
      "losses": 6,
      "win_pct": 0.906,
      "sets_won": 144,
      "sets_lost": 22,
      "games_won": 976,
      "games_lost": 575,
      "games_won_pct": 0.629,
      "tiebreaks_won": 16,
      "tiebreaks_lost": 3,
      "deciding_sets": 6,
      "deciding_sets_won": 4,
      "sets_won_6_0": 10,
      "sets_lost_0_6": 0,
      "wins_by_retirement": 1,
      "retired_or_lost_to_ret": 2
    }
  ],
  "by_round": [
    {
      "draw": "main",
      "round": "Round 1",
      "round_order": 11,
      "wins": 7,
      "losses": 0,
      "win_pct": 1,
      "sets_won": 18,
      "sets_lost": 0,
      "games_won": 112,
      "games_lost": 50,
      "games_won_pct": 0.691,
      "tiebreaks_won": 2,
      "tiebreaks_lost": 0,
      "deciding_sets": 0,
      "deciding_sets_won": 0,
      "sets_won_6_0": 2,
      "sets_lost_0_6": 0,
      "wins_by_retirement": 0,
      "retired_or_lost_to_ret": 0
    },
    {
      "draw": "main",
      "round": "Round 2",
      "round_order": 12,
      "wins": 10,
      "losses": 1,
      "win_pct": 0.909,
      "sets_won": 25,
      "sets_lost": 4,
      "games_won": 167,
      "games_lost": 88,
      "games_won_pct": 0.655,
      "tiebreaks_won": 1,
      "tiebreaks_lost": 0,
      "deciding_sets": 2,
      "deciding_sets_won": 1,
      "sets_won_6_0": 2,
      "sets_lost_0_6": 0,
      "wins_by_retirement": 0,
      "retired_or_lost_to_ret": 0
    },
    {
      "draw": "main",
      "round": "Round 3",
      "round_order": 13,
      "wins": 7,
      "losses": 1,
      "win_pct": 0.875,
      "sets_won": 19,
      "sets_lost": 2,
      "games_won": 129,
      "games_lost": 70,
      "games_won_pct": 0.648,
      "tiebreaks_won": 2,
      "tiebreaks_lost": 0,
      "deciding_sets": 0,
      "deciding_sets_won": 0,
      "sets_won_6_0": 1,
      "sets_lost_0_6": 0,
      "wins_by_retirement": 0,
      "retired_or_lost_to_ret": 1
    }
  ],
  "by_opponent_rank": [
    {
      "opponent_rank": "top 10",
      "wins": 19,
      "losses": 4,
      "win_pct": 0.826,
      "sets_won": 48,
      "sets_lost": 11,
      "games_won": 341,
      "games_lost": 241,
      "games_won_pct": 0.586,
      "tiebreaks_won": 7,
      "tiebreaks_lost": 3,
      "deciding_sets": 3,
      "deciding_sets_won": 2,
      "sets_won_6_0": 2,
      "sets_lost_0_6": 0,
      "wins_by_retirement": 0,
      "retired_or_lost_to_ret": 1
    },
    {
      "opponent_rank": "11-50",
      "wins": 23,
      "losses": 2,
      "win_pct": 0.92,
      "sets_won": 57,
      "sets_lost": 9,
      "games_won": 387,
      "games_lost": 218,
      "games_won_pct": 0.64,
      "tiebreaks_won": 7,
      "tiebreaks_lost": 0,
      "deciding_sets": 2,
      "deciding_sets_won": 1,
      "sets_won_6_0": 5,
      "sets_lost_0_6": 0,
      "wins_by_retirement": 1,
      "retired_or_lost_to_ret": 1
    },
    {
      "opponent_rank": "51-100",
      "wins": 12,
      "losses": 0,
      "win_pct": 1,
      "sets_won": 29,
      "sets_lost": 1,
      "games_won": 183,
      "games_lost": 85,
      "games_won_pct": 0.683,
      "tiebreaks_won": 2,
      "tiebreaks_lost": 0,
      "deciding_sets": 1,
      "deciding_sets_won": 1,
      "sets_won_6_0": 2,
      "sets_lost_0_6": 0,
      "wins_by_retirement": 0,
      "retired_or_lost_to_ret": 0
    }
  ],
  "note": "Counted from scores (completed and retired matches; walkovers excluded). Opponent rank is the opponent's latest ESPN-listed rank on or before the match; ESPN keeps the top 100 to 150 for most weeks since 2007."
}

Response fields

tourstring
player_idstring
namestring
seasonnumber
by_season[]array
List of objects
by_season[].seasonnumber
by_season[].winsnumber
by_season[].lossesnumber
by_season[].win_pctnumber
by_season[].sets_wonnumber
by_season[].sets_lostnumber
by_season[].games_wonnumber
by_season[].games_lostnumber
by_season[].games_won_pctnumber
by_season[].tiebreaks_wonnumber
by_season[].tiebreaks_lostnumber
by_season[].deciding_setsnumber
by_season[].deciding_sets_wonnumber
by_season[].sets_won_6_0number
by_season[].sets_lost_0_6number
by_season[].wins_by_retirementnumber
by_season[].retired_or_lost_to_retnumber
by_round[]array
List of objects
by_round[].drawstring
by_round[].roundstring
by_round[].round_ordernumber
by_round[].winsnumber
by_round[].lossesnumber
by_round[].win_pctnumber
by_round[].sets_wonnumber
by_round[].sets_lostnumber
by_round[].games_wonnumber
by_round[].games_lostnumber
by_round[].games_won_pctnumber
by_round[].tiebreaks_wonnumber
by_round[].tiebreaks_lostnumber
by_round[].deciding_setsnumber
by_round[].deciding_sets_wonnumber
by_round[].sets_won_6_0number
by_round[].sets_lost_0_6number

Related endpoints

Try it

500 credits free on signup: 166 calls to get_player_stats, and no card.