ATPTennis

ATP Odds API

Pull real-time ATP Tour odds into your platform through a fast, reliable REST API. Match winners, games handicaps, set-by-set markets and serving props from 85+ sportsbooks worldwide.

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 1s through 5s period 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

SportsGameOdds API
GEThttps://api.sportsgameodds.com/v2/events

Request Parameters

leagueID=NFL

Only NBA games

oddsAvailable=true

Only games with available odds

includeAltLines=false

Don't return alt-lines

limit=1

Number 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, not points, for totals and handicaps — points carries the set score, games carries the game count
  • Add bookmakerID=bet365,pinnacle to focus on the sportsbooks most relevant to your market
  • Use includeOpposingOdds=true so 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

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.

What ATP betting markets does the API cover?
Match winner on the set score, set winners priced per set, total games over/under for the match or an individual set, games handicaps, total sets, and serving markets covering aces and break points won — both pre-match and live.
How often is ATP odds data updated?
Odds refresh sub-minute on the Pro plan, with Rookie and the free Amateur tier updating on a longer interval. Live scores update in real time, game by game and set by set, on every plan.
Should I use points or games for tennis totals?
Use games. The points stat carries the set score and decides the match, so match-winner markets settle on it, while the games stat carries the game count and is what totals and handicaps are priced on. Requesting points-all-game-ou-over when you meant a games total is the most common tennis integration mistake.
How do I request a single set rather than the full match?
Swap the period code in the oddID. Use 1s through 5s for individual sets and game for the full match. For example, games-all-1s-ou-over returns the first-set games total, a heavily traded in-play market.
How are ATP player markets addressed?
Each player occupies a participant slot on the event rather than a roster position, so per-player markets use 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.
Is there a free trial?
Yes. The free Amateur tier lets you query real ATP data before committing to a paid plan, and the Rookie and Pro plans each include a 7-day trial.
How does object-based pricing work for ATP?
Each ATP match counts as one object regardless of how many markets are returned. Ten matches = 10 objects, even if each one returns set markets, games handicaps and serving props.