Built for serious tennis products

Exceptional tennis data. Affordable pricing.

Build more insightful tennis products with live scores, extensive historical records, detailed player statistics, deep head-to-head analysis, odds and predictions - all through one API.

Explore menโ€™s and womenโ€™s tennis across Grand Slams, Masters, ATP and WTA tours, Challengers and ITF events. Our historical match archive reaches back as far as 1930, with detailed match statistics from 2003, plus point-by-point and historical odds records from 2010.

๐Ÿ“œ

Extensive Tennis History

Explore results, players, tournament draws and past meetings across the major tours and lower-level events. Historical match records dating back as far as 1930 provide context for player profiles, tournament histories and match analysis.

โš”๏ธ

Deep Player & Head-to-Head Analysis

Go beyond wins and losses. Compare previous meetings, surface records, recent form, career performance and detailed serving, returning and break-point statistics - including how each player performs against other opponents.

๐Ÿ“Š

Detailed Match Statistics & Point-by-Point

Analyse past performances with detailed match statistics from 2003 and point-by-point records from 2010. Explore the numbers behind a result and follow how the scoring unfolded within each game.

โšก

Live Scores & Match Tracking

Bring matches to life with live scores, the current server, set-by-set statistics, point-by-point scoring and game summaries. Connect upcoming fixtures to live match data, with streaming updates available on MEGA.

๐Ÿ’ฐ

Odds & Predictions

Compare pre-match prices from up to 10 bookmakers, follow live odds from supported bookmakers, and explore historical Pinnacle and Marathonbet odds from 2010. Add model win probabilities and written match analysis on eligible plans.

Historical start dates refer to the earliest available records. Coverage varies by competition, year, match and data type.

Start building: Explore the API | Upcoming Matches | Head-to-Head Analysis

One API. Live data, deep stats, odds, predictions and the infrastructure to build at scale. If you need support, please contact us at api@tennis-api.com

Ready to integrate?

Use the Getting Started guide for your first request, then the FAQ if a path, query, or identifier looks wrong. All endpoints are available on RapidAPI.

One listing includes every path family

If you subscribe to Tennis API - ATP WTA ITF, core, advanced, and live routes share that product. Every REST route is on every plan, except the model win probabilities (Ultra or Mega) and Socket.IO plus the written predictions (Mega). Listing: RapidAPI product page. Do not mix another product's host with a path from this listing.

Understanding Tennis API

Pick a category by what you need (Where do I go?), then use one host and the matching path family โ€” Core or name-based (/tennis/v2/), or Live (/extend/api/). Details: Getting Started and FAQ.

URL Structure

Every Tennis API endpoint follows the same URL structure:

https://{host}/tennis/v2/{feature-specific-path}

You only need to determine:

  1. The correct host for your subscribed product.
  2. The correct feature-specific path after /tennis/v2/.
ProductHostPath PrefixWhat it contains
Tennis API - ATP WTA ITFtennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/
/tennis/v2/extend/api/
One subscription. Keep this host and pick the prefix for the data you need:
  • /tennis/v2/ โ€” Core fixtures, players, rankings, tournament seasons. Append {atp|wta}/ then the module (e.g. /atp/fixtures). Players are numeric IDs.
  • /tennis/v2/ followed by a module name (e.g. /profile/โ€ฆ, /h2h/โ€ฆ, /tournament/โ€ฆ, /upcoming/โ€ฆ) โ€” name-based stats, H2H, draws and predictions. Players are display names (or numeric IDs).
  • /tennis/v2/extend/api/ โ€” Live & Odds (live scores, point-by-point, odds). Live event IDs are not core fixture IDs.

Feature-Specific Paths

Data typePathExamples
Core/tennis/v2/atp/fixtures, wta/ranking/singles
Name-based stats & predictions/tennis/v2/ + profile, h2h, tournament, upcomingโ€ฆH2H, career statistics, calendar, draws, match predictions
Live & odds/tennis/v2/extend/api/Live scores, live odds, point-by-point

Round Reference

Every roundId value the API returns (on fixtures, results, draws, live rows and GET /tennis/v2/round). Qualifying rounds are 0โ€“3 plus the rare 22, 25 and 24; the main draw runs 4 โ†’ 12 (Final). IDs are codes, not an order: sort main-draw rounds as First, Second, Third, Fourth, 1/4, 1/2, Final.

roundIdLabel returnedStageMeaning
0Pre-qQualifyingPre-qualifying round (before qualifying round 1).
1Q1QualifyingQualifying round 1. When a qualifying draw has only one round (e.g. some WTA 125 and ITF events), Q1 is also the last qualifying round.
2Q2QualifyingQualifying round 2.
3Q3QualifyingQualifying round 3 (the final qualifying round at most tour events).
22Q4QualifyingQualifying round 4 (older ITF events with large qualifying draws).
25Q5QualifyingQualifying round 5 (older ITF events).
24QFQualifyingLegacy label found only in old ITF data. Not the main-draw quarterfinal โ€” that is 9 (1/4).
4FirstMain drawMain-draw first round (e.g. R128 at a Grand Slam, R32 at a 250 event).
5SecondMain drawMain-draw second round.
6ThirdMain drawMain-draw third round.
7FourthMain drawMain-draw fourth round (round of 16 at a Grand Slam).
91/4Main drawQuarterfinal.
101/2Main drawSemifinal.
12FinalMain drawMain-draw final. Only the tournament final uses 12; the last qualifying match is Q1โ€“Q3.
8RobinTeam / specialRound-robin group match (e.g. Tour Finals, Laver Cup, United Cup).
11BronzeTeam / specialBronze-medal match (Olympics).
13Rubber 1Team / specialTeam competition (Davis Cup / Billie Jean King Cup): rubber 1 of the tie.
14Rubber 2Team / specialTeam competition: rubber 2 of the tie.
15Rubber 3Team / specialTeam competition: rubber 3 of the tie.
16Rubber 4Team / specialTeam competition: rubber 4 of the tie.
17Rubber 5Team / specialTeam competition: rubber 5 of the tie.
21EROtherReserved code; not used by any match in the current data.
23CROtherReserved code; not used by any match in the current data.
20N/AOtherRound not specified.
-1N/AOtherRound not specified.
Player ID or name โ€” on every route

Every player parameter accepts the numeric player ID or the display name (URL-encoded). IDs are the most reliable choice. Slugs such as sinner-jannik are not accepted. See identifiers.

Odds Coverage

Access tennis odds from 10 bookmakers. Coverage includes pre-match, live, and historical odds, depending on the bookmaker.

Supported Bookmakers

10

Live Socket

Bet365

Live odds updates via socket

Bookmaker Availability

Pinnacle and Marathonbet support pre-match and historical odds only. Live odds are not available for these two bookmakers through our API.

Bet365

ID: 1

Pre-match + LiveLive socket

Live socket updates; REST/API refresh every 10s.

MelBet

ID: 18

Pre-match + Live

DraftKings

ID: 11

Pre-match + Live

FonBet

ID: 13

Pre-match + Live

BWin

ID: 4

Pre-match + Live

10Bet

ID: 2

Pre-match + Live

BetFair

ID: 5

Pre-match + Live

VBet

ID: 15

Pre-match + Live

Pinnacle

ID: 19

Pre-match + Historical

No live odds.

Marathonbet

ID: 20

Pre-match + Historical

No live odds.

Understanding Odds Fields

Each odds row contains both prices in od1 and od2. Their meaning depends on the market.

Meaning of od1, od2, and line for each tennis odds market
Marketod1od2line
Full Time ResultPlayer 1 / Home win oddsPlayer 2 / Away win oddsNot used
Asian HandicapPlayer 1 / Home handicap oddsPlayer 2 / Away handicap oddsHandicap value
Over UnderOver oddsUnder oddsTotal threshold, e.g. 22.5

In tennis, Home and Away refer to the first and second participants in the API response. They do not indicate where the match is played. For Over Under, od1 and od2 refer to Over and Under, not to individual players.

Over Under example
{
  "market": "Over Under",
  "line": "22.5",
  "od1": "1.90",
  "od2": "1.95"
}
  • od1 = 1.90: the odds for Over 22.5.
  • od2 = 1.95: the odds for Under 22.5.
  • line = 22.5: the threshold being compared, not an odds price.

If the market is confirmed as Total Games, Over 22.5 means 23 or more games, and Under 22.5 means 22 or fewer. The line alone does not identify whether the market counts games, sets, or another total.

Update Methods
Bet365 โ€” Live Socket

Live Bet365 odds are delivered through the live socket connection as updates become available.

Pinnacle & Marathonbet โ€” Pre-Match and Historical Only

Access pre-match odds and historical odds records from these bookmakers. Live odds and live socket updates are not provided for either bookmaker.

Availability varies by event, market, and bookmaker. The 1-minute interval describes the refresh schedule; it does not guarantee that odds change or become available every minute.

Versioning

The current API version is v2. The two canonical prefixes are /tennis/v2/ (core and name-based routes) and /tennis/v2/extend/api/ (live and odds).

Type values (atp / wta)

Core and many advanced routes take {atp|wta} in the path. These are the technical dataset keys: use atp for men's matches and wta for women's matches.

ValueDatasetDescription
atpMenMen's tennis dataset across all supported levels, not only the ATP Tour
wtaWomenWomen's tennis dataset across all supported levels, not only the WTA Tour

Supported coverage can include Grand Slams, ATP/WTA events, Challengers and ITF events. There is no separate itf type value (HTTP 400). Filter ITF or Challenger rows with TourRank from GET /ranking.

Authentication

This API is distributed through RapidAPI. Every request must include two headers:

HeaderValue
X-RapidAPI-KeyYour RapidAPI subscription key
X-RapidAPI-HostE.g: tennis-api-atp-wta-itf.p.rapidapi.com
โ„น๏ธ
Where to get your key Subscribe to the Tennis API on RapidAPI to receive your X-RapidAPI-Key. Free and paid tiers are available.

Rate Limits

Rate limits depend on your RapidAPI plan: FREE 50 requests/day (4/sec), PRO 150,000/month (10/sec), ULTRA 1,200,000/month (25/sec), MEGA 3,800,000/month (50/sec). Exceeding a limit returns HTTP 429 Too Many Requests.

Error Codes

HTTP StatusMeaning
200Success โ€” the body contains the data. When nothing matches (an unknown player, tournament or match, or no rows for a date, filter or page) the response is still 200 with an empty result: {} for single objects, or the endpoint's usual list shape with an empty list (e.g. {"data": []}). Empty is not an error.
400Bad Request โ€” invalid parameters (e.g. wrong date format, unknown query parameter, unsupported value). Body: {"error": true, "message": "โ€ฆ"}.
401Unauthorized โ€” missing or invalid X-RapidAPI-Key.
403Forbidden โ€” wrong host header, or the endpoint is not in your plan. Plan restrictions return {"error": "plan_restricted", "message", "requiredPlan", "upgradeUrl"}.
404Not Found โ€” the URL does not match any endpoint (check the path). A valid request for something that does not exist returns 200 with an empty result instead.
429Too Many Requests โ€” rate limit exceeded.
500Internal Server Error โ€” unexpected server issue.