The ATP Tour runs almost without a break from the January hard-court swing through the season finale in November, which makes men's tennis one of the steadiest sources of daily betting events anywhere in sport. Our ATP odds API covers that full calendar — tour-level events, Masters 1000s and the Grand Slams — returning every match on the schedule with its complete market tree in one request.
Covering more than the men's tour? The tennis odds API returns both the ATP and the WTA from a single sport-level request.
ATP Odds API Features
Tennis prices move on withdrawals, injury retirements and surface transitions rather than on lineups and injury reports, and they reset at every game once a match is under way. The Sports Game Odds ATP API is built for that, giving you fully customizable endpoints so you retrieve only the markets your application needs.
Available ATP betting markets include:
- Match winner (moneyline), settled on the set score
- Set winners, priced per set using the
1sthrough5speriod codes - Total games over/under, for the full match or an individual set
- Games handicap (spread), the tennis equivalent of a point spread
- Total sets over/under
- Serving aces — match totals and per-player lines
- Break points won — match totals and per-player lines
All markets are available pre-match and live. Odds refresh sub-minute on the Pro plan, with Rookie and the free Amateur tier updating on a longer interval — see pricing for the frequency on each tier.
ATP Player Markets
Tennis handles per-player markets differently from team sports, and it is worth knowing before you integrate. Each player occupies a participant slot on the event rather than a roster position, so what would be a "player prop" elsewhere is addressed here through the home and away entity slots rather than a player ID.
Request serving_aces-home-game-ou-over for one player's ace total, or serving_aces-all-game-ou-over for the combined match total. Break points won works the same way. See the player prop odds API for the full market list across every sport we cover.
Best-of-five formats at the Grand Slams change the shape of these markets considerably — ace totals in a five-set match are priced on a different scale than the same player's tour-level line, which is exactly the kind of context a model needs.
ATP Odds API with Results
Our API delivers ATP odds and match results together in a single response, with no secondary calls and no data stitching. Each response includes:
- Live, upcoming and completed ATP matches
- Both players as event participants
- Match statistics, including aces and break points won
- Full odds coverage: match winners, games totals and handicaps, set markets and serving props
- Final results and settlement data
Line movement tracking lets you monitor how ATP prices evolve from the moment a draw is released through to the first serve, giving you the market context needed for modelling, trading and analytics.
Try it Out
See live odds for an upcoming match
https://api.sportsgameodds.com/v2/eventsRequest Parameters
leagueID=NFLOnly NBA games
oddsAvailable=trueOnly games with available odds
includeAltLines=falseDon't return alt-lines
limit=1Number of games to return
Quick Start: Your First ATP Odds API Call
Fetching ATP odds takes a single HTTP request. Here's the quickest way to get upcoming men's tennis matches with full odds:
https://api.sportsgameodds.com/v2/events?apiKey=YOUR_API_KEY&oddsAvailable=true&leagueID=ATP&limit=10
This returns all available markets including match winners, games lines, set markets and serving props across the next 10 ATP matches.
To target a specific market, use the oddIDs parameter. This returns the total games line for every match on the slate:
https://api.sportsgameodds.com/v2/events?apiKey=YOUR_API_KEY&oddsAvailable=true&leagueID=ATP&oddIDs=games-all-game-ou-over,games-all-game-ou-under
To pull the first-set version of the same market, swap the period code:
https://api.sportsgameodds.com/v2/events?apiKey=YOUR_API_KEY&oddsAvailable=true&leagueID=ATP&oddIDs=games-all-1s-ou-over,games-all-1s-ou-under
OddIDs follow the format {statID}-{statEntityID}-{periodID}-{betTypeID}-{sideID}.
Tips to keep your ATP queries fast and efficient:
- Use
games, notpoints, for totals and handicaps —pointscarries the set score,gamescarries the game count - Add
bookmakerID=bet365,pinnacleto focus on the sportsbooks most relevant to your market - Use
includeOpposingOdds=trueso you only need to specify one side of a market and automatically receive both - Note: 1 object = 1 event regardless of how many markets are returned, so 10 ATP matches = 10 objects
What an ATP response looks like
Every match returns an odds object keyed by oddID. Here's a trimmed total games market, with the bookmaker list cut to two books:
{
"eventID": "...",
"leagueID": "ATP",
"odds": {
"games-all-game-ou-over": {
"oddID": "games-all-game-ou-over",
"opposingOddID": "games-all-game-ou-under",
"marketName": "Total Games Over/Under",
"statID": "games",
"statEntityID": "all",
"periodID": "game",
"betTypeID": "ou",
"sideID": "over",
"fairOdds": "-105",
"fairOverUnder": "22.5",
"bookOdds": "-110",
"bookOverUnder": "22.5",
"byBookmaker": {
"bet365": { "odds": "-110", "overUnder": "22.5", "available": true },
"pinnacle": { "odds": "-104", "overUnder": "23.5", "available": true }
}
}
}
}
The two books above are on different lines, not just different prices — Pinnacle is a full game higher at 23.5. That gap is common in tennis because games totals depend heavily on the surface and on how each book models a player's hold percentage, so compare the overUnder alongside the price when you build a consensus.
ATP Odds API Technical Specifications
API Architecture
- REST API — standard HTTP endpoints returning clean JSON responses
- WebSocket feeds — real-time push updates with no polling required
- Rate limits — scalable plans matched to your usage volume
- Authentication — secure API key access
Data Update Speed
- Odds updates — sub-minute refresh on Pro; longer intervals on Rookie and Amateur
- Live scores — updated in real time, game by game and set by set
Developer Resources
- Interactive documentation — live examples and copy-paste snippets
- SDKs & libraries — JavaScript/TypeScript, Python, Ruby, Go and Java
- Postman collection — pre-built requests ready to run
- Dedicated technical support across paid plans
Use Cases
Odds Comparison Platforms — Display ATP match odds and games lines from 85+ bookmakers in one place. Books disagree more on early-round tour matches than on marquee ties, so the comparison earns its keep.
Arbitrage & +EV Tools — Late withdrawals and injury retirements create short-lived pricing gaps between books, particularly in the smaller tour-level draws. See also positive EV betting.
Live & In-Play Products — Tennis suits in-play better than almost any sport, because the scoring structure creates a natural pricing checkpoint at every game and set. Set-level period codes make those markets addressable directly.
Pricing Models & Algorithmic Trading — Feed serving and return data into surface-adjusted models. Hold and break percentages behave differently on clay than on hard courts, and headline match odds alone will not tell you that.
Sports Analytics & Research — Analyse how ATP markets respond to draw releases, seedings and surface transitions across a season that runs nearly year-round.
ATP API Documentation
Our interactive documentation covers everything you need to integrate ATP odds into your application:
- Full endpoint reference with parameters and response schemas
- Live request and response examples
- Code snippets in Python, JavaScript and more
- Authentication setup and API key management
- Webhook configuration
- Error handling and troubleshooting
For a practical, step-by-step walkthrough of querying the /v2/events endpoint, see our API documentation.