Get All Upcoming Matches

GET/tennis/v2/ms-api/upcoming/matches
Returns all upcoming scheduled matches across both ATP and WTA tours

Query Parameter

ParameterType
{tournament}Optionalstring
Filter by tournament name. Example: tournament=EFG%20Swiss%20Open%20-%20Gstaad
{limit}Optionalinteger
Number of rivalries to return (default: 10). Example: limit=10
{page}Optionalinteger
Page number (default: 1). Example: page=1
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/ms-api/upcoming/matches?tournament=EFG%20Swiss%20Open%20-%20Gstaad&limit=10&page=1' \
	--header 'x-rapidapi-host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY'
Example Response: JSON
{
  "total": 10,
  "matches": [
    {
      "tournament": {
        "id": 21340,
        "name": "EFG Swiss Open - Gstaad",
        "date": "2026-07-13T00:00:00.000Z",
        "rankId": 2,
        "country": "SUI",
        "court": {
          "name": "Clay"
        }
      },
      "court": "Clay",
      "roundId": 4,
      "rank": 2,
      "date": "2026-07-13T11:00:00.000Z",
      "type": "atp",
      "odds": {
        "id_b_o": null,
        "total": null,
        "k1": null,
        "k2": null,
        "ktb": null,
        "ktm": null
      },
      "player1": {
        "name": "Quentin Halys/Pierre-Hugues Herbert",
        "odd": "1.091",
        "countryAcr": "N/A",
        "seed": "3",
        "image": "/tennis/api2/uploads/Photo/atp/24147.jpg",
        "image_p_name": "/tennis/api2/uploads/Photo/atp_name/quentin_halys/pierre-hugues_herbert.jpg",
        "id": 124147
      },
      "player2": {
        "id": 79124,
        "name": "Ignacio Carou/Juan Manuel Cerundolo",
        "odd": "5.85",
        "countryAcr": "N/A",
        "seed": null,
        "image": "/tennis/api2/uploads/Photo/atp/79124.jpg",
        "image_p_name": "/tennis/api2/uploads/Photo/atp_name/ignacio_carou/juan_manuel_cerundolo.jpg"
      },
      "h2h": "0-0"
    }
  ]
}

Get Top Tennis Matches Today

GET/tennis/v2/ms-api/upcoming/top-tennis-matches-today/{tourType}
Returns the most significant matches scheduled today, ranked by importance

Path Parameter

ParameterType
{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/upcoming/top-tennis-matches-today/atp' \
	--header 'x-rapidapi-host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY'

Get Match Prediction Data

GET/tennis/v2/ms-api/upcoming/match-prediction/{tourType}/{player1}/{player2}
Returns a data-driven prediction for an upcoming match 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/upcoming/match-prediction/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
{
  "paragraph": "<ul style='line-height: 1.5rem'><li>Francesco Passaro and Martin Krumich, will play for the 1st time in their careers on Monday, with the current Head to Head score being 0-0. Here we will analyse all the stats, and predict the winner of The Q3 round match at Nordea Open - Bastad.</li>\n\n<li>The last appearance of Martin Krumich at this event was 2024, and he made the Q1 round, falling to Andrea Pellegrino with 4-6 7-5 6-1</li>\n\n<li>Looking at overall career stats, Francesco Passaro has won 6 titles, and Martin Krumich has won 6 titles, Francesco Passaro coming into this match with a ranking of 182, and Martin Krumich ranked 278. Francesco Passaro has a career high ranking of 89 (2025), while the best ranking of Martin Krumich was 268 (2026).</li>\n\n<li>In their entire career Francesco Passaro has won 48% (2645 of 5461) of points played while Martin Krumich has won 0% (0 of 0), and as an indication of performance in pressure situations, Francesco Passaro has a career tiebreak record of 47% (9 of 19) </li>\n\n<li>Of the last 10 matches played by Francesco Passaro, he has won 3.\n\n<li>In the event before this one, Martin Krumich reached the Q1 round at Nordea Open - Bastad, while Francesco Passaro played BCI Seguros Chile Open - Santiago and won the tournament.</li><li>In his last 3 events, Francesco Passaro has made these rounds: First round, Second round, First round, while   Martin Krumich has made the Q1 round, in the last 1 events he has played.</li>\n\n<li>In terms of the biggest wins of their careers, the best ranked opponents that Francesco Passaro has beaten are 10th ranked Grigor Dimitrov (2025), 15th ranked Grigor Dimitrov (2025), 26th ranked Tallon Griekspoor (2024), 29th ranked Lorenzo Musetti (2024).</li> <li>The highest ranked opponents that Martin Krumich has won against are 157th ranked Ugo Blanchet (2026), 172nd ranked Jesper De Jong (2022), 181st ranked Clement Chidekh (2026), 203rd ranked Dan Added (2026).</li>\n\n<li>The most wins that Francesco Passaro achieved in a single year was 5 in 2025, in which he had a Win Loss record of 38% (5/8).</li> <li>Predicting tennis matches with accuracy relies on complex modeling and if you want to find out more have a look at <a href='https://www.researchgate.net/publication/330883807_Predicting_the_Outcome_of_a_Tennis_Tournament_Based_on_Both_Data_and_Judgments' target='_blank'>this PDF</a>.</li>\n\n</ul>"
}

Get Filters By Tour Type

GET/tennis/v2/ms-api/upcoming/filters/{tourType}
Returns available filter values (tournaments, rounds, surfaces) for upcoming matches

Path Parameter

ParameterType
{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/upcoming/filters/atp' \
	--header 'x-rapidapi-host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY'
Example Response: JSON
[
  {
    "rankId": 3,
    "name": "Masters series"
  },
  {
    "rankId": 5,
    "name": "Davis/Fed Cup"
  },
  {
    "rankId": 1,
    "name": "Challengers/ITF tournaments > $10K"
  },
  {
    "rankId": 2,
    "name": "Main tour"
  },
  {
    "rankId": 6,
    "name": "Non ATP/WTA Events + Juniors"
  },
  {
    "rankId": 0,
    "name": "Futures/Satellites/ITF tournaments $10K"
  }
]

Get Filters All

GET/tennis/v2/ms-api/upcoming/filters
Returns available all filter values (tournaments, rounds, surfaces) for upcoming matches
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/ms-api/upcoming/filters' \
	--header 'x-rapidapi-host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY'
Example Response: JSON
[
  {
    "rankId": 3,
    "name": "Masters series"
  },
  {
    "rankId": 1,
    "name": "Challengers/ITF tournaments > $10K"
  },
  {
    "rankId": 2,
    "name": "Main tour"
  },
  {
    "rankId": 6,
    "name": "Non ATP/WTA Events + Juniors"
  },
  {
    "rankId": 0,
    "name": "Futures/Satellites/ITF tournaments $10K"
  },
  {
    "rankId": 5,
    "name": "Davis/Fed Cup"
  }
]

Get Upcoming Matches By Tour Type

GET/tennis/v2/ms-api/upcoming/matches/{tourType}
Returns all upcoming scheduled matches by tour type.

Path Parameter

ParameterType
{tourType}Requiredstring
ENUM("atp", "wta")

Query Parameter

ParameterType
{group}Optionalstring
Filter by group. Enum("singles", "doubles"). Example: group=singles
{limit}Optionalinteger
Number of rivalries to return (default: 10). Example: limit=10
{page}Optionalinteger
Page number (default: 1). Example: page=1
{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/upcoming/matches/atp' \
	--header 'x-rapidapi-host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY'
Example Response: JSON
{
  "total": 10,
  "matches": [
    {
      "tournament": {
        "id": 21340,
        "name": "EFG Swiss Open - Gstaad",
        "date": "2026-07-13T00:00:00.000Z",
        "rankId": 2,
        "country": "SUI",
        "court": {
          "name": "Clay"
        }
      },
      "court": "Clay",
      "roundId": 4,
      "rank": 2,
      "date": "2026-07-13T11:00:00.000Z",
      "type": "atp",
      "odds": {
        "id_b_o": null,
        "total": null,
        "k1": null,
        "k2": null,
        "ktb": null,
        "ktm": null
      },
      "player1": {
        "name": "Quentin Halys/Pierre-Hugues Herbert",
        "odd": "1.091",
        "countryAcr": "N/A",
        "seed": "3",
        "image": "/tennis/api2/uploads/Photo/atp/24147.jpg",
        "image_p_name": "/tennis/api2/uploads/Photo/atp_name/quentin_halys/pierre-hugues_herbert.jpg",
        "id": 124147
      },
      "player2": {
        "id": 79124,
        "name": "Ignacio Carou/Juan Manuel Cerundolo",
        "odd": "5.85",
        "countryAcr": "N/A",
        "seed": null,
        "image": "/tennis/api2/uploads/Photo/atp/79124.jpg",
        "image_p_name": "/tennis/api2/uploads/Photo/atp_name/ignacio_carou/juan_manuel_cerundolo.jpg"
      },
      "h2h": "0-0"
    }
  ]
}