Tennis Predictions API
Upcoming & Predictions
This module covers upcoming match data with odds and predictions, including match filters, match odds, match predictions, and top matches today. All endpoints use the Tennis Predictions API product.
β οΈ
Plan Restriction
Predictions and Odds endpoints (including matchodds, match-prediction) are only available to ULTRA and MEGA plan subscribers. If you encounter access errors, please upgrade your plan or contact support.
Upcoming Matches
Product: Tennis Predictions API (
Base path:
tennis-predictions-api.p.rapidapi.com)Base path:
/tennis/v2/ms-api/upcoming/...Player Images: Some endpoints return player image paths (e.g.,
image, image_p_name). These can be accessed via the proxy at /tennis/v2/ms-api/uploads/Photo/{type}/{id}.jpg. Example: https://tennis-stats-api.p.rapidapi.com/tennis/v2/ms-api/uploads/Photo/atp/05992.jpgEndpoint Summary
| Method | Path | Description |
|---|---|---|
| GET | .../upcoming/matches | All upcoming matches (no tour filter) |
| GET | .../upcoming/matches/{type} | Upcoming matches by tour |
| GET | .../upcoming/matchodds/{type} | Upcoming match odds by tour |
| GET | .../upcoming/filters | Available filter options (all tours) |
| GET | .../upcoming/filters/{type} | Filter options by tour |
| GET | .../upcoming/match-prediction/{type}/{player1}/{player2} | Match prediction between two players |
| GET | .../upcoming/top-tennis-matches-today/{tnType} | Top matches today |
Filter Options
GET
/tennis/v2/ms-api/upcoming/filters/{type}
Returns available filter values (tournaments, rounds, surfaces) for upcoming matches
Path Parameters
| Parameter | Type | Description |
|---|---|---|
type Optional | string | atp or wta β omit for all tours |
Example Request
cURL
curl --request GET \
--url 'https://tennis-predictions-api.p.rapidapi.com/tennis/v2/ms-api/upcoming/filters/atp' \
--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
--header 'X-RapidAPI-Host: tennis-predictions-api.p.rapidapi.com'
Example Response
JSON
{
"tournaments": ["Wimbledon", "Eastbourne"],
"rounds": ["First Round", "Second Round", "Quarter-Final"],
"surfaces": ["Grass", "Hard"]
}
Response Properties
| Property | Type | Description |
|---|---|---|
tournaments | array<string> | Tournaments currently active |
rounds | array<string> | Available rounds |
surfaces | array<string> | Surfaces in play |
All Upcoming Matches
GET
/tennis/v2/ms-api/upcoming/matches
Returns all upcoming scheduled matches across both ATP and WTA tours
Query Parameters
| Parameter | Type | Description |
|---|---|---|
page Optional | number | Page number (default: 1) |
limit Optional | number | Results per page |
tournament Optional | string | Filter by tournament name |
Example Request
cURL
curl --request GET \
--url 'https://tennis-predictions-api.p.rapidapi.com/tennis/v2/ms-api/upcoming/matches?limit=10' \
--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
--header 'X-RapidAPI-Host: tennis-predictions-api.p.rapidapi.com'
Example Response
JSON
{
"total": 10,
"matches": [
{
"tournament": {
"id": 21332,
"name": "Boss Open - Stuttgart",
"date": "2026-06-08T00:00:00.000Z",
"rankId": 2,
"country": "GER",
"court": {
"name": "Grass"
}
},
"court": "Grass",
"roundId": 10,
"rank": 2,
"date": "2026-06-12T20:30:00.000Z",
"type": "atp",
"odds": {
"id_b_o": 2,
"total"null,
"k1": 1.885,
"k2": 1.885
},
"player1": {
"name": "Yannick Hanfmann/Jan-Lennard Struff",
"odd": "1.85",
"countryAcr": "N/A",
"image": "/tennis/api2/uploads/Photo/atp/95126.jpg",
"id": 95126
},
"player2": {
"id": 129144,
"name": "Vasil Kirkov/Lucas Miedler",
"odd": "1.833",
"countryAcr": "N/A"
}
}
]
}
Response Properties
| Property | Type | Description |
|---|---|---|
total | number | Total matches |
matches | array | Array of match objects |
matches[].tournament | object | Tournament information |
matches[].tournament.id | number | Tournament ID |
matches[].tournament.name | string | Tournament name |
matches[].tournament.country | string | Country code |
matches[].court | string | Court surface |
matches[].roundId | number | Round ID |
matches[].date | string | Match date (ISO 8601) |
matches[].type | string | Tour type (atp/wta) |
matches[].odds | object | Betting odds |
matches[].player1 | object | Player 1 information |
matches[].player1.name | string | Player name |
matches[].player1.odd | string | Betting odds |
matches[].player1.image | string | Player image path |
matches[].player2 | object | Player 2 information |
matches[].player2.name | string | Player name |
matches[].player2.odd | string | Betting odds |
Match Odds
GET
/tennis/v2/ms-api/upcoming/matchodds/{type}
Returns upcoming matches enriched with betting odds data for the specified tour
Path Parameters
| Parameter | Type | Description |
|---|---|---|
type Required | string | atp or wta |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
tournamentId Optional | number | Filter by tournament ID (e.g. 21331) |
roundId Optional | number | Filter by round ID (e.g. 9) |
player1Id Optional | number | Filter by player 1 ID (e.g. 40434) |
player2Id Optional | number | Filter by player 2 ID (e.g. 28898) |
Example Request
cURL
curl --request GET \
--url 'https://tennis-predictions-api.p.rapidapi.com/tennis/v2/ms-api/upcoming/matchodds/atp?tournamentId=21331&roundId=9&player1Id=40434' \
--header 'Content-Type: application/json' \
--header 'x-rapidapi-host: tennis-predictions-api.p.rapidapi.com' \
--header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY'
Example Response
JSON
{
"odds": [
{
"id_b_o": "1",
"id1_o": "40434",
"id2_o": "28898",
"id_t_o": "21331",
"id_r_o": 9,
"k1": 1.32,
"k2": 3.36,
"total": 23,
"ktm": 1.833,
"ktb": 2.16,
"f1": -6,
"f2": 6
}
]
}
Response Properties
| Property | Type | Description |
|---|---|---|
odds | array | Array of odds objects |
odds[].id_b_o | string | Bookmaker ID |
odds[].id1_o | string | Player 1 ID |
odds[].id2_o | string | Player 2 ID |
odds[].id_t_o | string | Tournament ID |
odds[].id_r_o | number | Round ID |
odds[].k1 | number | Odds for player 1 to win |
odds[].k2 | number | Odds for player 2 to win |
odds[].total | number | Total games/sets line |
odds[].ktm | number | Odds for match total over |
odds[].ktb | number | Odds for match total under |
odds[].f1 | number | Handicap for player 1 |
odds[].f2 | number | Handicap for player 2 |
Upcoming Matches
GET
/tennis/v2/ms-api/upcoming/matches/{type}
Returns all upcoming scheduled matches for the specified tour
Path Parameters
| Parameter | Type | Description |
|---|---|---|
type Required | string | atp or wta |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
page Optional | number | Page number (default: 1) |
limit Optional | number | Results per page |
tournament Optional | string | Filter by tournament name |
Example Request
cURL
curl --request GET \
--url 'https://tennis-predictions-api.p.rapidapi.com/tennis/v2/ms-api/upcoming/matches/atp?limit=5' \
--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
--header 'X-RapidAPI-Host: tennis-predictions-api.p.rapidapi.com'
Example Response
JSON
{
"total": 10,
"matches": [
{
"tournament": {
"id": 21332,
"name": "Boss Open - Stuttgart",
"date": "2026-06-08T00:00:00.000Z",
"rankId": 2,
"country": "GER",
"court": {
"name": "Grass"
}
},
"court": "Grass",
"roundId": 10,
"rank": 2,
"date": "2026-06-12T20:30:00.000Z",
"type": "atp",
"odds": {
"id_b_o": 2,
"total"null,
"k1": 1.885,
"k2": 1.885
},
"player1": {
"name": "Yannick Hanfmann/Jan-Lennard Struff",
"odd": "1.85",
"countryAcr": "N/A",
"image": "/tennis/api2/uploads/Photo/atp/95126.jpg",
"id": 95126
},
"player2": {
"id": 129144,
"name": "Vasil Kirkov/Lucas Miedler",
"odd": "1.833",
"countryAcr": "N/A"
}
}
]
}
Response Properties
| Property | Type | Description |
|---|---|---|
total | number | Total matches |
matches | array | Array of match objects |
matches[].tournament | object | Tournament information |
matches[].tournament.id | number | Tournament ID |
matches[].tournament.name | string | Tournament name |
matches[].court | string | Court surface |
matches[].roundId | number | Round ID |
matches[].date | string | Match date (ISO 8601) |
matches[].type | string | Tour type (atp/wta) |
matches[].odds | object | Betting odds |
matches[].player1 | object | Player 1 information |
matches[].player1.name | string | Player name |
matches[].player1.odd | string | Betting odds |
matches[].player1.image | string | Player image path |
matches[].player2 | object | Player 2 information |
matches[].player2.name | string | Player name |
matches[].player2.odd | string | Betting odds |
Match Prediction
GET
/tennis/v2/ms-api/upcoming/match-prediction/{type}/{player1}/{player2}
Returns a data-driven prediction for an upcoming match between two players
Path Parameters
| Parameter | Type | Description |
|---|---|---|
type Required | string | atp or wta |
player1 Required | string | First player (lastname-firstname) |
player2 Required | string | Second player (lastname-firstname) |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
includeAll Optional | boolean | Use all historical data for prediction |
onlyImp Optional | boolean | Return only the most important prediction factors |
Example Request
cURL
curl --request GET \
--url 'https://tennis-predictions-api.p.rapidapi.com/tennis/v2/ms-api/upcoming/match-prediction/atp/djokovic-novak/alcaraz-carlos' \
--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
--header 'X-RapidAPI-Host: tennis-predictions-api.p.rapidapi.com'
Example Response
JSON
{
"player1": "djokovic-novak",
"player2": "alcaraz-carlos",
"player1WinProbability": 44.2,
"player2WinProbability": 55.8,
"predictedWinner": "alcaraz-carlos",
"h2hTotal": 8,
"h2hPlayer1": 3,
"h2hPlayer2": 5,
"recentFormPlayer1": "WLWWL",
"recentFormPlayer2": "WWWWL"
}
Response Properties
| Property | Type | Description |
|---|---|---|
player1 / player2 | string | Player slugs as passed in the request |
player1WinProbability | number | Predicted probability (0β100) that player1 wins |
player2WinProbability | number | Predicted probability (0β100) that player2 wins |
predictedWinner | string | Slug of the predicted match winner |
h2hTotal | integer | Total meetings in their head-to-head history |
h2hPlayer1 / h2hPlayer2 | integer | H2H wins for each player |
recentFormPlayer1 / recentFormPlayer2 | string | Last 5 results for each player as a string (W = win, L = loss) |
Top Matches Today
GET
/tennis/v2/ms-api/upcoming/top-tennis-matches-today/{tnType}
Returns the most significant matches scheduled today, ranked by importance
Path Parameters
| Parameter | Type | Description |
|---|---|---|
tnType Required | string | atp or wta |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
limit Optional | number | Number of matches to return (default: 10) |
Example Request
cURL
curl --request GET \
--url 'https://tennis-predictions-api.p.rapidapi.com/tennis/v2/ms-api/upcoming/top-tennis-matches-today/atp?limit=5' \
--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
--header 'X-RapidAPI-Host: tennis-predictions-api.p.rapidapi.com'
Example Response
JSON
[
{
"player1": "Carlos Alcaraz",
"player2": "Jannik Sinner",
"tournament": "Wimbledon",
"round": "Semi-Final",
"importanceScore": 98
}
]
Response Properties
| Property | Type | Description |
|---|---|---|
player1 / player2 | string | Display names of the two players |
tournament | string | Tournament name |
round | string | Round of the match |
importanceScore | integer | Score (0β100) used to rank match importance β higher = more significant |
Looking for live data? Live Events, Live Score, and Point-by-Point Stats have moved to the Tennis Live API page.