Get H2H Player Type

GET/tennis/v2/ms-api/h2h/playerType/{player}
Returns whether a player belongs to the ATP or WTA tour β€” useful before making typed requests

Path Parameter

ParameterType
{player}Requiredstring
Player display name (URL-encoded)
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/ms-api/h2h/playerType/Carlos Alcaraz' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'
Example Response: JSON
{
  "type": "atp"
}

Get H2H Profile

GET/tennis/v2/ms-api/h2h/profile/{tourType}/{player1}/{player2}/{limit}
Returns combined profiles and H2H summary for two players

Path Parameter

ParameterType
{tourType}Requiredstring
ENUM("atp", "wta")
{player1}Requiredstring
First player display name (URL-encoded)
{player2}Requiredstring
Second player display name (URL-encoded)
{limit}Requiredboolean
"true" to limit recent matches, "false" for full history

Query Parameter

ParameterType
{includeAll}Requiredboolean
Include all historical data. Example: includeAll=false
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/ms-api/h2h/atp/Novak%20Djokovic/Carlos%20Alcaraz/false' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'
Example Response: JSON
{
  "player1": {
    "id": 5992,
    "name": "Novak Djokovic",
    "playerStatus": "Active",
    "country": "Serbia",
    "contryAcr": "SRB",
    "playerStat": {
      "maintourWin": 29,
      "maintourLose": 8,
      "finalsWin": 6,
      "finalsLose": 2,
      "masterWin": 40,
      "masterLose": 20,
      "slamWin": 24,
      "slamLose": 14,
      "cupsWin": 11,
      "cupsLose": 4,
      "futuresWin": 2,
      "futuresLose": 0,
      "challengersWin": 3,
      "challengersLose": 0,
      "totalWins": 1279,
      "totalLose": 262
    },
    "image": "/tennis/api2/uploads/Photo/atp/05992.jpg",
    "image_p_name": "/tennis/api2/uploads/Photo/atp_name/novak_djokovic.jpg",
    "birthday": "1987-05-22T00:00:00.000Z",
    "currentRank": 8,
    "plays": "Right-Handed",
    "recentGames": [
      "l",
      "w",
      "w",
      "l",
      "w",
      "w",
      "w",
      "w",
      "w",
      "l"
    ],
    "bestRank": 1,
    "ytdWon": 14,
    "ytdLost": 5,
    "ytdWLPercentage": 74,
    "ytdTitles": 0,
    "careerWin": 1279,
    "careerLose": 262,
    "careerWLPercentage": 83,
    "careerMoney": 139310065,
    "totalTitles": 108,
    "totalTitlesWon": 103,
    "totalFinalsWon": 5
  },
  "player2": {
    "id": 68074,
    "name": "Carlos Alcaraz",
    "playerStatus": "Active",
    "country": "Spain",
    "contryAcr": "ESP",
    "playerStat": {
      "maintourWin": 12,
      "maintourLose": 4,
      "finalsWin": 0,
      "finalsLose": 1,
      "masterWin": 8,
      "masterLose": 2,
      "slamWin": 7,
      "slamLose": 1,
      "cupsWin": 0,
      "cupsLose": 0,
      "futuresWin": 3,
      "futuresLose": 1,
      "challengersWin": 4,
      "challengersLose": 1,
      "totalWins": 382,
      "totalLose": 88
    },
    "image": "/tennis/api2/uploads/Photo/atp/68074.jpg",
    "image_p_name": "/tennis/api2/uploads/Photo/atp_name/carlos_alcaraz.jpg",
    "birthday": "2003-05-05T00:00:00.000Z",
    "currentRank": 2,
    "plays": "Right-Handed",
    "recentGames": [
      "w",
      "l",
      "w",
      "l",
      "w",
      "w",
      "w",
      "w",
      "l",
      "w"
    ],
    "bestRank": 1,
    "ytdWon": 22,
    "ytdLost": 3,
    "ytdWLPercentage": 88,
    "ytdTitles": 2,
    "careerWin": 382,
    "careerLose": 88,
    "careerWLPercentage": 81,
    "careerMoney": 45568740,
    "totalTitles": 34,
    "totalTitlesWon": 27,
    "totalFinalsWon": 7
  },
  "surfaceData": {
    "hard1": 2,
    "iHard1": 1,
    "clay1": 2,
    "grass1": 0,
    "hard2": 2,
    "iHard2": 0,
    "clay2": 1,
    "grass2": 2,
    "total1": 5,
    "total2": 5
  }
}

Get H2H Surface Breakdown

GET/tennis/v2/ms-api/h2h/surfaceBreakdown/{tourType}/{player}
Returns a player's win/loss record broken down by court surface

Path Parameter

ParameterType
{tourType}Requiredstring
ENUM("atp", "wta")
{player}Requiredstring
Player display name (URL-encoded)
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/ms-api/h2h/surfaceBreakdown/atp/Jannik%20Sinner' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'
Example Response: JSON
{
  "hard1": 155,
  "iHard1": 91,
  "clay1": 83,
  "grass1": 36,
  "hard2": 33,
  "iHard2": 21,
  "clay2": 25,
  "grass2": 10,
  "total1": 365,
  "total2": 89
}

Get H2H Statistics

GET/tennis/v2/ms-api/h2h/stats/{tourType}/{player1}/{player2}
Aggregated statistics for all matches played between two players

Path Parameter

ParameterType
{tourType}Requiredstring
ENUM("atp", "wta")
{player1}Requiredstring
First player display name (URL-encoded)
{player2}Requiredstring
Second player display name (URL-encoded)

Query Parameter

ParameterType
{year}Optionalinteger
Filter to a specific year. Example: year=2026
{surface}Optionalstring
Filter by surface: acrylic, hard, clay, grass, I.hard, carpet, clay. Example: surface=hard
{tournament}Optionalstring
Filter by tournament name. Example: tournament=EFG%20Swiss%20Open%20-%20Gstaad
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/ms-api/h2h/stats/atp/Novak%20Djokovic/Carlos%20Alcaraz?surface=hard&year=2024' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'
Example Response: JSON
{
  "matchesCount": 10,
  "player1": {
    "name": "Novak Djokovic",
    "matchesWon": 5,
    "acesCount": 44,
    "doubleFaultsCount": 30,
    "avgTime": "3:8:5",
    "firstServe": 769,
    "firstServeOf": 1167,
    "firstServePercentage": 66,
    "winningOnFirstServe": 520,
    "winningOnFirstServeOf": 769,
    "winningOnSecondServe": 217,
    "winningOnSecondServeOf": 398,
    "winningOnFirstServePercentage": 68,
    "winningOnSecondServePercentage": 55,
    "returnPtsWin": 395,
    "returnPtsWinOf": 1086,
    "returnPtsWinPercentage": 36,
    "breakPointsConverted": 29,
    "breakPointsConvertedOf": 86,
    "breakpointsWonPercentage": 34,
    "bestOfThreeWon": 3,
    "bestOfThreeWonPercentage": 75,
    "bestOfThreeCount": 4,
    "bestOfFiveWon": 2,
    "bestOfFiveWonPercentage": 33,
    "bestOfFiveCount": 6,
    "firstSetWinMatchWin": 3,
    "firstSetWinMatchWinPercentage": 50,
    "firstSetWinMatchLose": 3,
    "firstSetWinMatchLosePercentage": 50,
    "firstSetLoseMatchWin": 2,
    "firstSetLoseMatchWinPercentage": 50,
    "firstSetWinCount": 6,
    "firstSetLoseCount": 4,
    "decidingSetWin": 1,
    "decidingSetCount": 3,
    "decidingSetWinPercentage": 33,
    "tiebreakWon": 5,
    "tiebreakCount": 9,
    "totalTBWinPercentage": 56,
    "setsWon": 16,
    "gamesWon": 169,
    "title": 0,
    "grandSlam": 2,
    "masters": 1,
    "mainTour": 0,
    "tourFinals": 0,
    "cups": 0,
    "futures": 0,
    "challengers": 0
  },
  "player2": {
    "name": "Carlos Alcaraz",
    "matchesWon": 5,
    "acesCount": 69,
    "doubleFaultsCount": 35,
    "avgTime": "3:8:5",
    "firstServe": 720,
    "firstServeOf": 1086,
    "firstServePercentage": 66,
    "winningOnFirstServe": 512,
    "winningOnFirstServeOf": 720,
    "winningOnFirstServePercentage": 71,
    "winningOnSecondServe": 179,
    "winningOnSecondServeOf": 366,
    "winningOnSecondServePercentage": 49,
    "returnPtsWin": 430,
    "returnPtsWinOf": 1167,
    "returnPtsWinPercentage": 37,
    "breakPointsConverted": 31,
    "breakPointsConvertedOf": 111,
    "breakpointsWonPercentage": 28,
    "bestOfThreeWon": 1,
    "bestOfThreeWonPercentage": 25,
    "bestOfThreeCount": 4,
    "bestOfFiveWon": 4,
    "bestOfFiveWonPercentage": 67,
    "bestOfFiveCount": 6,
    "firstSetWinMatchWin": 2,
    "firstSetWinMatchWinPercentage": 50,
    "firstSetWinMatchLose": 2,
    "firstSetWinMatchLosePercentage": 50,
    "firstSetLoseMatchWin": 3,
    "firstSetLoseMatchWinPercentage": 50,
    "firstSetWinCount": 4,
    "firstSetLoseCount": 6,
    "decidingSetWin": 2,
    "decidingSetCount": 3,
    "decidingSetWinPercentage": 67,
    "tiebreakWon": 4,
    "tiebreakCount": 9,
    "totalTBWinPercentage": 44,
    "setsWon": 17,
    "gamesWon": 167,
    "title": 0,
    "grandSlam": 4,
    "masters": 1,
    "mainTour": 0,
    "tourFinals": 0,
    "cups": 0,
    "futures": 0,
    "challengers": 0
  },
  "surfaceData": {
    "hard1": 2,
    "iHard1": 1,
    "clay1": 2,
    "grass1": 0,
    "hard2": 2,
    "iHard2": 0,
    "clay2": 1,
    "grass2": 2,
    "total1": 5,
    "total2": 5
  }
}

Get H2H Filters

GET/tennis/v2/ms-api/h2h/filters/{player1}/{player2}/{tourType}
Returns available filter options for H2H queries between two players

Path Parameter

ParameterType
{player1}Requiredstring
First player display name (URL-encoded)
{player2}Requiredstring
Second player display name (URL-encoded)
{tourType}Requiredstring
ENUM("atp", "wta")
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/ms-api/h2h/filters/Novak%20Djokovic/Carlos%20Alcaraz/atp' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'
Example Response: JSON
{
  "courts": [
    {
      "id": 1,
      "name": "Hard"
    }
  ],
  "rounds": [
    {
      "id": 12,
      "name": "Final"
    }
  ],
  "level": [
    {
      "id": 0,
      "name": "Futures/Satellites/ITF tournaments $10K"
    }
  ],
  "tournaments": [
    {
      "name": "French Open - Paris",
      "date": "2026"
    }
  ],
  "years": [
    2026
  ]
}

Get H2H Upcoming

GET/tennis/v2/ms-api/h2h/upcoming/{tourType}/{player1}/{player2}
Returns the next scheduled match between two players if one exists

Path Parameter

ParameterType
{tourType}Requiredstring
ENUM("atp", "wta")
{player1}Requiredstring
First player display name (URL-encoded)
{player2}Requiredstring
Second player display name (URL-encoded)
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/ms-api/h2h/upcoming/atp/Lorenzo Sonego/Joel Schwaerzler' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'
Example Response: JSON
{
  "id": 1567,
  "date": "2026-07-13T11:35:00.000Z",
  "roundId": 4,
  "draw": 10,
  "result": "",
  "complete": null,
  "live": null,
  "timeGame": null,
  "reserveInt": null,
  "reserveString": null,
  "odd1": 1.426,
  "odd2": 3.01,
  "seed1": null,
  "seed2": "NG",
  "player1Id": 31392,
  "player2Id": 97369,
  "tournamentId": 21340,
  "yt_url": "",
  "yt_id": "",
  "player1": {
    "name": "Lorenzo Sonego",
    "countryAcr": "ITA"
  },
  "player2": {
    "name": "Joel Schwaerzler",
    "countryAcr": "AUT"
  },
  "round": {
    "name": "First"
  },
  "tournament": {
    "name": "EFG Swiss Open - Gstaad",
    "date": "2026-07-13T00:00:00.000Z",
    "court": {
      "name": "Clay"
    }
  }
}

Get H2H Recent Matches

GET/tennis/v2/ms-api/h2h/recent/{tourType}/{player}
Returns the most recent matches played by a single player

Path Parameter

ParameterType
{tourType}Requiredstring
ENUM("atp", "wta")
{player}Requiredstring
Player display name (URL-encoded)
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/ms-api/h2h/recent/atp/Carlos Alcaraz' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'
Example Response: JSON
{
  "name": "Carlos Alcaraz",
  "count": 478,
  "games": [
    {
      "id": "1242914",
      "roundId": 5,
      "result": "w/o",
      "date": "2026-04-15T00:00:00.000Z",
      "seed1": null,
      "seed2": "1",
      "odd1": null,
      "odd2": null,
      "player1Id": 58327,
      "player2Id": 68074,
      "tournamentId": 21323,
      "draw": 1,
      "winner_entry": null,
      "winner_hand": null,
      "winner_ht": null,
      "winner_ioc": null,
      "winner_age": null,
      "loser_entry": null,
      "loser_hand": null,
      "loser_ht": null,
      "loser_ioc": null,
      "loser_age": null,
      "best_of": null,
      "poll_vote": "400",
      "player1": {
        "id": 58327,
        "name": "Tomas Machac",
        "birthday": "2000-10-13T00:00:00.000Z",
        "countryAcr": "CZE",
        "currentRank": 49,
        "progress": 0,
        "points": 477,
        "hardPoints": null,
        "hardTournament": null,
        "clayPoints": null,
        "clayTournament": null,
        "grassPoints": null,
        "grassTournament": null,
        "carpetPoints": null,
        "carterTournament": null,
        "prize": 5659097,
        "ch": 690,
        "doublesPosition": 139,
        "doublesProgress": 0,
        "doublesPoints": 650,
        "ihardPoints": null,
        "ihardTournament": null,
        "itf": 800361512,
        "height": null,
        "wikidata_id": null
      },
      "player2": {
        "id": 68074,
        "name": "Carlos Alcaraz",
        "birthday": "2003-05-05T00:00:00.000Z",
        "countryAcr": "ESP",
        "currentRank": 2,
        "progress": 0,
        "points": 1612,
        "hardPoints": null,
        "hardTournament": null,
        "clayPoints": null,
        "clayTournament": null,
        "grassPoints": null,
        "grassTournament": null,
        "carpetPoints": null,
        "carterTournament": null,
        "prize": 60032046,
        "ch": 3650,
        "doublesPosition": null,
        "doublesProgress": null,
        "doublesPoints": null,
        "ihardPoints": null,
        "ihardTournament": null,
        "itf": 800446486,
        "height": null,
        "wikidata_id": null
      },
      "tournament": {
        "id": 21323,
        "name": "Barcelona Open Banc Sabadell - Barcelona",
        "courtId": 2,
        "date": "2026-04-13T00:00:00.000Z",
        "rankId": 2,
        "link": 20334,
        "countryAcr": "ESP",
        "prize": "ˆ2.95M",
        "ratingId": 104,
        "url": "https://www.barcelonaopenbancosabadell.com/",
        "latitude": 41.23,
        "longitude": 2.11,
        "site": "425",
        "race": 104,
        "entry": 104,
        "singlesPrizeId": 7646,
        "doublesMoneyId": 7647,
        "tier": "ATP 500",
        "reserveInt": null,
        "reserveChar": "barcelona",
        "live": null,
        "result": null,
        "draw_size": null
      },
      "stat": null,
      "h2h": {
        "id": "1642847",
        "player1Wins": 1,
        "player2Wins": 1,
        "player1AllWins": 1,
        "player2AllWins": 1,
        "player1Id": 58327,
        "player2Id": 68074
      },
      "isWin": false
    }
  ]
}

Get H2H Player Vs Player Recent Event

GET/tennis/v2/ms-api/h2h/player-vs-player/recent-event/{tourType}/{player1}/{player2}
Returns the most recent event/match between two specific players

Path Parameter

ParameterType
{tourType}Requiredstring
ENUM("atp", "wta")
{player1}Requiredstring
First player display name (URL-encoded)
{player2}Requiredstring
Second player display name (URL-encoded)
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/ms-api/h2h/player-vs-player/recent-event/atp/Lorenzo Sonego/Joel Schwaerzler' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'
Example Response: JSON
{
  "id": 1567,
  "date": "2026-07-13T11:35:00.000Z",
  "roundId": 4,
  "draw": 10,
  "result": "",
  "complete": null,
  "live": null,
  "timeGame": null,
  "reserveInt": null,
  "reserveString": null,
  "odd1": null,
  "odd2": null,
  "seed1": null,
  "seed2": "NG",
  "player1Id": 31392,
  "player2Id": 97369,
  "tournamentId": 21340,
  "yt_url": "",
  "yt_id": "",
  "player1": {
    "name": "Lorenzo Sonego",
    "countryAcr": "ITA",
    "playerStatus": "Active"
  },
  "player2": {
    "name": "Joel Schwaerzler",
    "countryAcr": "AUT",
    "playerStatus": "Active"
  },
  "round": {
    "name": "First"
  },
  "tournament": {
    "name": "EFG Swiss Open - Gstaad",
    "date": "2026-07-13T00:00:00.000Z",
    "court": {
      "name": "Clay"
    }
  },
  "hasUpcoming": true,
  "tnType": "atp",
  "careerMoney1": 6014170,
  "careerMoney2": 51290,
  "recentFormP1": [
    "l",
    "w",
    "w",
    "l",
    "w",
    "l",
    "l",
    "w",
    "l",
    "w"
  ],
  "recentFormP2": [
    "l",
    "l",
    "l",
    "l",
    "w",
    "l",
    "w",
    "l",
    "w",
    "l"
  ]
}

Get H2H Recent Stats

GET/tennis/v2/ms-api/h2h/recent-stats/{tourType}/{player}
Returns aggregated serve and return statistics from a player's recent matches

Path Parameter

ParameterType
{tourType}Requiredstring
ENUM("atp", "wta")
{player}Requiredstring
Player display name (URL-encoded)
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/ms-api/h2h/recent-stats/atp/Carlos Alcaraz' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'
Example Response: JSON
{
  "recentStats": {
    "playerStats": {
      "statMatchesPlayed": 25,
      "matchesWon": 0,
      "matchesLost": 0,
      "firstServe": 1372,
      "firstServeOf": 2131,
      "winningOnFirstServe": 891,
      "winningOnFirstServeOf": 1372,
      "winningOnSecondServe": 337,
      "winningOnSecondServeOf": 759,
      "breakPointsConverted": 30,
      "breakPointsConvertedOf": 99
    },
    "opponentStats": {
      "statMatchesPlayed": 25,
      "matchesWon": 25,
      "matchesLost": 25,
      "firstServe": 1309,
      "firstServeOf": 1942,
      "winningOnFirstServe": 965,
      "winningOnFirstServeOf": 1309,
      "winningOnSecondServe": 371,
      "winningOnSecondServeOf": 633,
      "breakPointsConverted": 100,
      "breakPointsConvertedOf": 229
    },
    "matchWinPer": 0,
    "secondServeWinPer": 44,
    "firstServeWinPer": 65,
    "oppSecondServeWinPer": 41,
    "oppFirstServeWinPer": 26,
    "bpSavedPer": 56,
    "bpConvertedPer": 30
  },
  "careerSurfaceWL": {
    "bestSurface": {
      "court": 5,
      "courtName": "Grass",
      "matchesWon": "35",
      "matchesLost": "4",
      "winPer": 90
    },
    "worstSurface": {
      "court": 3,
      "courtName": "I.hard",
      "matchesWon": "35",
      "matchesLost": "15",
      "winPer": 70
    }
  },
  "yearStats": {
    "maxMatchTourLevel": {
      "rank": 3,
      "rankName": "Masters series",
      "matchesWon": "15",
      "matchesLost": "4",
      "matchesPlayed": "19",
      "avgOppRankSum": "820"
    },
    "matchesWon": 45,
    "matchesLost": 6,
    "matchesPlayed": 51,
    "avgOppRankSum": 1798,
    "avgOppRank": 35.25,
    "decidingSetWin": 8,
    "decidingSetWinOf": 10,
    "decidingSetWinPer": 80
  }
}

Get H2H Breakdown

GET/tennis/v2/ms-api/h2h/breakdown/{tourType}/{player}
Returns a player's win/loss record broken down by round, level, and opponent category

Path Parameter

ParameterType
{tourType}Requiredstring
ENUM("atp", "wta")
{player}Requiredstring
Player display name (URL-encoded)
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/ms-api/h2h/breakdown/Carlos Alcaraz' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'
Example Response: JSON
{
  "slam1": 91,
  "slam2": 13,
  "title1": 27,
  "title2": 9,
  "master1": 93,
  "master2": 27,
  "main1": 98,
  "main2": 20,
  "cup1": 10,
  "cup2": 2,
  "future1": 0,
  "future2": 0,
  "challengers1": 0,
  "challengers2": 0,
  "tourFinals1": 7,
  "tourFinals2": 5,
  "matchesCount": 372,
  "name": "Carlos Alcaraz",
  "avgTime1": "2:2:16",
  "avgTime2": "2:2:16",
  "matchesWon1": 301,
  "matchesWon2": 66,
  "gamesWon1": 5508,
  "gamesWon2": 3993,
  "totalPointsWon": 32070,
  "totalPointsWonOf": 59782,
  "setsWon1": 734,
  "setsWon2": 254,
  "hard1": 124,
  "iHard1": 35,
  "clay1": 110,
  "grass1": 35,
  "hard2": 29,
  "iHard2": 15,
  "clay2": 20,
  "grass2": 4,
  "total1": 304,
  "total2": 68,
  "aces": 0.35,
  "acesTotal": 1634,
  "doubleFaultsCount": 0.19,
  "firstServe": 18705,
  "firstServeOf": 28746,
  "firstServePercentage": 65,
  "winningOnFirstServe": 13521,
  "winningOnFirstServeOf": 18705,
  "winningOnFirstServePercentage": 72,
  "winningOnSecondServe": 5628,
  "winningOnSecondServeOf": 10041,
  "winningOnSecondServePercentage": 56,
  "returnPtsWin": 12922,
  "returnPtsWinOf": 31038,
  "returnPtsWinPercentage": 42,
  "breakPointsConverted": 1429,
  "breakPointsConvertedOf": 3417,
  "breakpointsWonPercentage": 42,
  "bestOfThreeWon": 207,
  "bestOfThreeWonPercentage": 79,
  "bestOfThreeCount": 261,
  "bestOfFiveWon": 94,
  "bestOfFiveWonPercentage": 89,
  "bestOfFiveCount": 106,
  "firstSetWinMatchWin": 261,
  "firstSetWinMatchWinPercentage": 94,
  "firstSetWinMatchLose": 16,
  "firstSetWinMatchLosePercentage": 6,
  "firstSetLoseMatchWin": 41,
  "firstSetLoseMatchWinPercentage": 44,
  "firstSetWinCount": 277,
  "firstSetLoseCount": 93,
  "decidingSetWin": 70,
  "decidingSetCount": 97,
  "decidingSetWinPercentage": 72,
  "tiebreakWon": 101,
  "tiebreakCount": 165,
  "totalTBWinPercentage": 61,
  "avgOppRank": 150.1,
  "ytdWon": 22,
  "ytdLost": 3,
  "totalDoubleFaultsCount": 864
}

Get H2H Filters Vs

GET/tennis/v2/ms-api/h2h/filters/{player1}/{player2}/{tourType}/vs
Returns the available courts, rounds, tournament levels, tournaments, and years that can be used to filter head-to-head results.

Path Parameter

ParameterType
{player1}Requiredstring
First player display name (URL-encoded)
{player2}Requiredstring
Second player display name (URL-encoded)
{tourType}Requiredstring
ENUM("atp", "wta")
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/ms-api/h2h/filters/Novak Djokovic/Carlos Alcaraz/atp/vs' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'
Example Response: JSON
{
  "courts": [
    {
      "id": 6,
      "name": "Acrylic"
    }
  ],
  "rounds": [
    {
      "id": 12,
      "name": "Final"
    }
  ],
  "level": [
    {
      "id": 0,
      "name": "Futures/Satellites/ITF tournaments $10K"
    }
  ],
  "tournaments": [
    {
      "name": "Mutua Madrid Open - Madrid",
      "date": "2022"
    }
  ],
  "years": [
    2026
  ]
}

Get H2H Last Match Played By a Player

GET/tennis/v2/ms-api/h2h/filters/{tourType}/{player}
Returns the single most recent match played by a player

Path Parameter

ParameterType
{tourType}Requiredstring
ENUM("atp", "wta")
{player}Requiredstring
Player display name (URL-encoded)
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/ms-api/h2h/last-match-played/atp/Carlos Alcaraz' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'
Example Response: JSON
{
  "player1": "Carlos Alcaraz",
  "player2": "Otto Virtanen",
  "result": "won",
  "score": "6-4 6-2",
  "round": 4,
  "tournament": "Barcelona Open Banc Sabadell - Barcelona",
  "matchtime": "0000-00-00 01:25:15"
}

Get H2H Rivalries

GET/tennis/v2/ms-api/h2h/rivalries/{tourType}/{player}
Returns the most frequent opponents for a player ranked by number of matches

Path Parameter

ParameterType
{tourType}Requiredstring
ENUM("atp", "wta")
{player}Requiredstring
Player display name (URL-encoded)

Query Parameter

ParameterType
{includeAll}Optionalboolean
Include all historical data. Example: includeAll=false
{limit}Optionalinteger
Number of rivalries to return (default: 10). Example: limit=10
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/ms-api/h2h/rivalries/atp/Novak Djokovic' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'
Example Response: JSON
{
  "player": "Novak Djokovic",
  "rivalries": [
    {
      "opponentName": "Rafael Nadal",
      "playerWins": 31,
      "opponentWins": 29,
      "totalMatches": 60
    }
  ]
}

Get H2H Current Event Statistics

GET/tennis/v2/ms-api/h2h/current/{tourType}/{player1}/{player2}
Returns current event statistics between two players

Path Parameter

ParameterType
{tourType}Requiredstring
ENUM("atp", "wta")
{player1}Requiredstring
First player display name (URL-encoded)
{player2}Requiredstring
Second player display name (URL-encoded)
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/ms-api/h2h/current/atp/Francesco Passaro/Martin Krumich' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'
Example Response: JSON
{
  "winsCountOnWin1": 15,
  "winsCountOnWin2": 10,
  "name": "Francesco Passaro",
  "tourName": "Nordea Open - Bastad",
  "country": "SWE",
  "court": "Clay",
  "averageFirstServeSpeed": 0,
  "averageSecondServeSpeed": 0,
  "fastestServe": 0,
  "lastMatchTime": "1:48:10",
  "totalTime": "1:48:10",
  "matchesPlayed": 1,
  "totalPointsWon": 83,
  "totalPointsWonOf": 147,
  "unforcedErrors": 0,
  "breakPointsSaved": 2,
  "breakPointsSavedOf": 3,
  "breakPointsSavedPercentage": 67,
  "serviceHold": 11,
  "serviceHoldOf": 12,
  "serviceHoldPercentage": 92,
  "oppHold": 9,
  "oppHoldOf": 12,
  "oppHoldPercentage": 75,
  "decidingSetWin": 1,
  "decidingSetWinOf": 1,
  "decidingSetWinPercentage": 100,
  "tiebreakPerMatch": "0.00",
  "tiebreakWon": 0,
  "tiebreakWonOf": 0,
  "totalTBWinPercentage": 0,
  "avgOpponentRank": 0
}

Get H2H History

GET/tennis/v2/ms-api/h2h/history/{tourType}/{player1}/{player2}
Returns a full history of past matches played between two players

Path Parameter

ParameterType
{tourType}Requiredstring
ENUM("atp", "wta")
{player1}Requiredstring
First player display name (URL-encoded)
{player2}Requiredstring
Second player display name (URL-encoded)

Query Parameter

ParameterType
{surface}Optionalstring
Filter by surface: acrylic, hard, clay, grass, I.hard, carpet, clay. Example: surface=hard
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/ms-api/h2h/history/atp/Novak Djokovic/Carlos Alcaraz?surface=hard' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'
Example Response: JSON
{
  "singles": [
    {
      "roundId": 12,
      "result": "2-6 6-2 6-3 7-5",
      "date": "2026-02-01T00:00:00.000Z",
      "player1Id": 68074,
      "player2Id": 5992,
      "tournamentId": 21305,
      "draw": 1,
      "winner_entry": null,
      "winner_hand": null,
      "winner_ht": null,
      "winner_ioc": null,
      "winner_age": null,
      "loser_entry": null,
      "loser_hand": null,
      "loser_ht": null,
      "loser_ioc": null,
      "loser_age": null,
      "best_of": null,
      "poll_vote": "700",
      "player1": {
        "id": 68074,
        "name": "Carlos Alcaraz",
        "birthday": "2003-05-05T00:00:00.000Z",
        "countryAcr": "ESP",
        "currentRank": 2,
        "progress": 0,
        "points": 1612,
        "hardPoints": null,
        "hardTournament": null,
        "clayPoints": null,
        "clayTournament": null,
        "grassPoints": null,
        "grassTournament": null,
        "carpetPoints": null,
        "carterTournament": null,
        "prize": 60032046,
        "ch": 3650,
        "doublesPosition": null,
        "doublesProgress": null,
        "doublesPoints": null,
        "ihardPoints": null,
        "ihardTournament": null,
        "itf": 800446486,
        "height": null,
        "wikidata_id": null,
        "seed": "1",
        "odd": "1.33",
        "image": "/tennis/api2/uploads/Photo/atp/68074.jpg",
        "image_p_name": "/tennis/api2/uploads/Photo/atp_name/carlos_alcaraz.jpg",
        "stats": {
          "firstServe": 66,
          "firstServeOf": 101,
          "aces": 9,
          "doubleFaults": 2,
          "unforcedErrors": 27,
          "winningOnFirstServe": 51,
          "winningOnFirstServeOf": 66,
          "winningOnSecondServe": 20,
          "winningOnSecondServeOf": 35,
          "winners": 36,
          "breakPointsConverted": 5,
          "breakPointsConvertedOf": 16,
          "netApproaches": 14,
          "netApproachesOf": 20,
          "totalPointsWon": 118,
          "fastestServe": 207,
          "averageFirstServeSpeed": 189,
          "averageSecondServeSpeed": 160
        }
      },
      "player2": {
        "id": 5992,
        "name": "Novak Djokovic",
        "birthday": "1987-05-22T00:00:00.000Z",
        "countryAcr": "SRB",
        "currentRank": 8,
        "progress": 0,
        "points": 11540,
        "hardPoints": 135,
        "hardTournament": 5,
        "clayPoints": 628,
        "clayTournament": 7,
        "grassPoints": 165,
        "grassTournament": 2,
        "carpetPoints": 80,
        "carterTournament": 2,
        "prize": 191252375,
        "ch": 1520,
        "doublesPosition": 584,
        "doublesProgress": -2,
        "doublesPoints": 90,
        "ihardPoints": 395,
        "ihardTournament": 4,
        "itf": 800225217,
        "height": null,
        "wikidata_id": null,
        "seed": "4",
        "odd": "3.48",
        "image": "/tennis/api2/uploads/Photo/atp/05992.jpg",
        "image_p_name": "/tennis/api2/uploads/Photo/atp_name/novak_djokovic.jpg",
        "stats": {
          "firstServe": 85,
          "firstServeOf": 123,
          "aces": 4,
          "doubleFaults": 2,
          "unforcedErrors": 46,
          "winningOnFirstServe": 56,
          "winningOnFirstServeOf": 85,
          "winningOnSecondServe": 20,
          "winningOnSecondServeOf": 38,
          "winners": 32,
          "breakPointsConverted": 2,
          "breakPointsConvertedOf": 6,
          "netApproaches": 20,
          "netApproachesOf": 32,
          "totalPointsWon": 106,
          "fastestServe": 201,
          "averageFirstServeSpeed": 186,
          "averageSecondServeSpeed": 154
        }
      },
      "tournament": {
        "id": 21305,
        "name": "Australian Open - Melbourne",
        "courtId": 1,
        "date": "2026-01-19T00:00:00.000Z",
        "rankId": 4,
        "link": 20315,
        "countryAcr": "AUS",
        "prize": "A$49M",
        "ratingId": 100,
        "url": "https://www.australianopen.com/",
        "latitude": -37.49,
        "longitude": 144.58,
        "site": "580",
        "race": 100,
        "entry": 100,
        "singlesPrizeId": 7629,
        "doublesMoneyId": 7630,
        "tier": "Grand Slam",
        "reserveInt": null,
        "reserveChar": "australian-open",
        "live": null,
        "result": null,
        "draw_size": null,
        "court": {
          "id": 1,
          "name": "Hard"
        }
      }
    }
  ],
  "doubles": [],
  "qualifying": [],
  "singlesCount": 10
}