# ATP Odds API | ATP Odds, Player Props & Results
URL: https://sockodds.com/leagues/atp-odds-api/

> Our ATP odds API delivers ATP odds, player props and results for every match from 24 bookmakers, 20 Australian. Free tier available.

Our ATP odds API delivers ATP Tour – men's tennis odds, player props, status and results for every match from 24 bookmakers, 20 of them Australian. `leagueID=ATP`. Free tier available.

Whether you're building a betting app, an odds comparison tool or a pricing model, the ATP odds API gives you structured data in the SportsGameOdds v2 shape so you can move fast.

Covering more than ATP? The [Tennis](https://sockodds.com/sports/tennis-odds-api/) returns [WTA](https://sockodds.com/leagues/wta-odds-api/) and ATP from a single sport-level request.

## ATP Odds API Features

Every endpoint is filterable, so you pull exactly the markets you need. Coverage spans 21 teams and 12 events currently carried, with 3 market families.

Available ATP betting markets include:

- Head to head / moneylines (2-way and 3-way markets)
- Lines, spreads and handicaps
- Totals (over/under)
- Alternative lines
- Player props and game props
- Period-specific markets (full game)

All market data is pre-match, refreshed every ~2 minutes; see [pricing](https://sockodds.com/pricing/) for what each plan can see.

## ATP Player Props API

The Australian books price ATP at match and team level today; player props arrive in the same shape (the `playerID` in the `statEntityID` slot) as soon as a covered book offers them.

## ATP Odds API with Results

SockOdds delivers ATP odds and event data together in one response — no need to stitch data from multiple sources. Each response includes:

- Upcoming ATP events with status flags
- Home and away team data with ids
- Players with production ids where present
- Full odds coverage: lines, totals, head to head, props and alternative lines
- Results and `scoringSupported` flags where the source grades

Line movement tracking is yours to build: every bookmaker entry carries `lastUpdatedAt`, and finished events are retained.

## Quick start: your first ATP odds API call

Getting ATP odds takes a single HTTP request:

```
https://api.sockodds.com/v2/events?apiKey=YOUR_API_KEY&oddsAvailable=true&leagueID=ATP&limit=10
```

This returns all available markets — lines, totals, head to head and props — for upcoming ATP events.

To narrow to a specific market, use the `oddID` parameter:

```
https://api.sockodds.com/v2/events?apiKey=YOUR_API_KEY&oddsAvailable=true&leagueID=ATP&oddID=points-all-game-ou-over&includeOpposingOdds=true
```

OddIDs follow the format `{statID}-{statEntityID}-{periodID}-{betTypeID}-{sideID}`, where the entity is a player for props and `home`, `away` or `all` for team and game markets.

Tips to keep responses fast:

- Add `bookmakerID=betfocus,mintbet` to limit to the bookmakers you care about
- Use `includeOpposingOdds=true` so you only need to specify one side of a market
- Keep your `oddID` list tight — only request markets you're actively using

### What a ATP response looks like

Every event returns an `odds` object keyed by `oddID`. Here's a real market from the feed with the bookmaker list cut to two books:

```json
{
  "eventID": "atp_2026-08-20_alexei_popyrin_vs_hugo_gaston",
  "leagueID": "ATP",
  "odds": {
    "points-away-game-ml-away": {
      "oddID": "points-away-game-ml-away",
      "opposingOddID": "points-home-game-ml-home",
      "marketName": "Moneyline",
      "statID": "points",
      "statEntityID": "away",
      "periodID": "game",
      "betTypeID": "ml",
      "sideID": "away",
      "fairOdds": null,
      "bookOdds": "+170",
      "byBookmaker": {
        "dabble": {
          "odds": "+165",
          "available": true
        },
        "playup": {
          "odds": "+170",
          "available": true
        }
      }
    }
  }
}
```

Two things worth noting. Odds values are strings, not numbers, so `-108` arrives as `"-108"` — that keeps the leading `+` intact on underdog prices — and every book also carries `decimal`, because Australian books quote decimal. `bookOdds` is the consensus with the vig left in; `fairOdds` is the de-vigged price on Base and above, `null` where it cannot be computed.

## ATP Odds API Technical Specifications

### API Architecture

- **REST API** — Simple HTTP endpoints with JSON responses, identical to the SportsGameOdds v2 paths
- **Polling, not push** — the feed refreshes every ~2 minutes; `/v2/stream/events` is reserved and answers 501 rather than pretending
- **Rate limits** — per-key, per-minute meters that bind under concurrency; plans sized to your usage
- **Authentication** — secure API key access via the `x-api-key` header or `apiKey` query parameter

### Data Update Speed

- **Odds updates** — every ~2 minutes across every bookmaker lane
- **Event status** — `status` flags and `info.stale` tell you exactly how current a price is

### Developer Resources

- [Interactive documentation](https://sockodds.com/docs/) — live examples, copy-paste snippets and an [AI (vibe coding)](https://sockodds.com/docs/info/ai-vibe-coding/) context
- [SDKs & libraries](https://sockodds.com/docs/sdk/) — the SportsGameOdds SDKs for TypeScript, Python, Ruby, Go and Java work unchanged with the base URL pointed here
- [Postman collection](https://sockodds.com/postman-collection/) — pre-built requests ready to run
- [Support](https://sockodds.com/docs/help/) — email support on every plan, priority on paid plans

### ATP betting market coverage in the SockOdds API, by category

| Market category | Example markets | Markets | Availability | Typical bookmakers |
| --- | --- | --- | --- | --- |
| **Full game lines** | Points / score O/U, Points / score line, Points / score | 6 oddIDs | Pre-match | [BetFocus](https://sockodds.com/bookmakers/betfocus-odds-api/), [MintBet](https://sockodds.com/bookmakers/mintbet-odds-api/), [Dabble](https://sockodds.com/bookmakers/dabble-odds-api/), [Picklebet](https://sockodds.com/bookmakers/picklebet-odds-api/), [BetDeluxe](https://sockodds.com/bookmakers/betdeluxe-odds-api/), [Betfair Exchange](https://sockodds.com/bookmakers/betfairexchange-odds-api/) |
| **Team & game specials** | Games O/U, Games line | 4 oddIDs | Pre-match | [BetDeluxe](https://sockodds.com/bookmakers/betdeluxe-odds-api/), [BetFocus](https://sockodds.com/bookmakers/betfocus-odds-api/), [BetRight](https://sockodds.com/bookmakers/betright-odds-api/), [CrownBet](https://sockodds.com/bookmakers/crownbet-odds-api/), [MintBet](https://sockodds.com/bookmakers/mintbet-odds-api/), [Pinnacle](https://sockodds.com/bookmakers/pinnacle-odds-api/) |

**See every ATP market with its exact oddID** in the [markets browser](https://sockodds.com/docs/data-types/markets/?league=ATP).

## Use Cases

- [Arbitrage](https://sockodds.com/use-cases/arbitrage-betting-api/) & [+EV tools](https://sockodds.com/use-cases/positive-ev-betting-api/) — compare ATP odds across every Australian bookmaker to uncover arbitrage opportunities and positive expected value angles.
- [Odds comparison platforms](https://sockodds.com/use-cases/odds-comparison-api/) — display ATP odds from every book side by side for comprehensive line shopping.
- **Pricing models & trading** — use ATP market data as inputs for proprietary pricing algorithms and betting strategies.
- [Sports analytics & research](https://sockodds.com/use-cases/sports-betting-machine-learning/) — examine ATP line movements and betting-market patterns, and build predictive models on retained events.
- [Betting automation](https://sockodds.com/use-cases/odds-alert-bot-api/) — build systems that monitor ATP lines across bookmakers and trigger actions when your target odds appear.
- [Sportsbook & fantasy apps](https://sockodds.com/use-cases/sports-betting-app-api/) — power your ATP product with reliable odds, status and bet-slip deeplinks.

## ATP Odds API Documentation

Our interactive documentation covers everything you need to integrate ATP odds into your project:

- Full endpoint reference with parameters and response schemas
- Live request and response examples
- Code snippets in Python, JavaScript, Ruby, Go and Java
- Authentication setup and API key management
- Rate limiting and the `notice` field
- Error handling and troubleshooting

[View documentation](https://sockodds.com/docs/)

For more on querying `/v2/events` with ATP-specific examples, see the [API documentation](https://sockodds.com/docs/basics/).

## Frequently asked questions

### What ATP betting markets does the API cover?

10 distinct markets right now: Points / score, Games and more — pre-match, across 24 bookmakers.

### Does the API cover props, status and results in one feed?

Yes, from the same request. A single `/v2/events` call returns the game lines, the props, the event status and the results the source has, so there is no separate results API to reconcile. Each market carries `scoringSupported` and the event carries `status.finalized`.

### How often is ATP odds data updated?

Every ~2 minutes across every bookmaker lane. Each bookmaker entry carries `lastUpdatedAt`.

### Can I get historical ATP odds data?

Finished events are retained, so your archive starts when you start pulling. Opening and closing lines are not snapshotted yet.

### Is there a free trial?

Yes — a free Lite key covers AFL and NRL; Base unlocks every league including ATP. [Get a key →](https://sockodds.com/signup/)

### Which bookmakers are included?

24 bookmakers price ATP, 20 of them Australian: BetFocus, MintBet, BetDeluxe, BetRight, Dabble, Picklebet, Pinnacle, Sportsbet and more.

### Are live ATP odds available?

Event status is live; prices are pre-match first and refresh every ~2 minutes.

### How are markets identified in the API?

Every market uses a structured oddID in the format `{statID}-{statEntityID}-{periodID}-{betTypeID}-{sideID}` — for example `points-all-game-ou-over`. The same pattern lets you construct, filter and parse markets programmatically.

### Can I compare bookmaker odds?

Yes — every market returns prices from every supporting bookmaker under one `oddID`, so lining up the best available price across BetFocus, MintBet, BetDeluxe, BetRight and the rest is straightforward.

## Start building today

Free plan available. Set up in 5 minutes. Scale when you're ready.
