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_statsitself. Point any MCP client athttps://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
tourstringplayer_idstringnamestringseasonnumberby_season[]array- List of objects
by_season[].seasonnumberby_season[].winsnumberby_season[].lossesnumberby_season[].win_pctnumberby_season[].sets_wonnumberby_season[].sets_lostnumberby_season[].games_wonnumberby_season[].games_lostnumberby_season[].games_won_pctnumberby_season[].tiebreaks_wonnumberby_season[].tiebreaks_lostnumberby_season[].deciding_setsnumberby_season[].deciding_sets_wonnumberby_season[].sets_won_6_0numberby_season[].sets_lost_0_6numberby_season[].wins_by_retirementnumberby_season[].retired_or_lost_to_retnumberby_round[]array- List of objects
by_round[].drawstringby_round[].roundstringby_round[].round_ordernumberby_round[].winsnumberby_round[].lossesnumberby_round[].win_pctnumberby_round[].sets_wonnumberby_round[].sets_lostnumberby_round[].games_wonnumberby_round[].games_lostnumberby_round[].games_won_pctnumberby_round[].tiebreaks_wonnumberby_round[].tiebreaks_lostnumberby_round[].deciding_setsnumberby_round[].deciding_sets_wonnumberby_round[].sets_won_6_0numberby_round[].sets_lost_0_6number
Related endpoints
list_tournaments1 cr
Returns the player_id this one takes.
A season's tournaments with dates, surface, status and champion
search_players1 cr
Returns the player_id this one takes.
Find players by name or country
get_head_to_head3 cr
Takes the player_id this one returns.
Two players' meetings, wins by surface and in finals
get_surface_splits3 cr
Takes the player_id this one returns.
A player's record by surface: sets, games, tiebreaks, deciding sets
Try it
500 credits free on signup: 166 calls to get_player_stats, and no card.