Tennis on Polymarket is a category, not a niche. polymarket.com/sports/tennis lists match markets for ATP, WTA and ITF events plus tournament futures. Since 2026-08-03 Polymarket is the ATP Tour's official prediction-market partner. It streams ATP and Challenger matches to registered US users next to the market. This is the practical map. Where the markets are, how a match page is built, what settles the edge cases, and where live data changes the picture. It is a guide to the plumbing. It is not advice on what to trade.
Where tennis lives on Polymarket
| Page | URL | What you find |
|---|---|---|
| Tennis hub | polymarket.com/sports/tennis |
Games and Props tabs, plus futures (e.g. US Open winner) |
| All live/upcoming matches | polymarket.com/sports/tennis/games |
every tour in one list |
| Per tour | polymarket.com/sports/atp/games, /sports/wta/games, /sports/itf/games |
tour-filtered match lists (Challenger-level events appear under ATP) |
| A match | polymarket.com/sports/atp/atp-{player1}-{player2}-{YYYY-MM-DD} |
the moneyline market, order book, rules text |
| Category stats | polymarket.com/predictions/tennis |
headline count of live tennis markets (770 on 2026-08-23) |
All URLs above returned HTTP 200 on 2026-08-23. The match slug is the same key that the public Gamma API uses (atp-norrie-navone-2026-05-20, wta-..., itf-...). That is what lets software match a market to a live match by player names and date.
Anatomy of a match market
Each match is one event with one two-outcome market. The two player names are the outcomes. Each has a price between 0 and 1 that reads as the market's implied probability. The event page carries the resolution text, the order book, and the volume. The resolution text says who wins on a retirement, what happens on a walkover, and what "delayed beyond 7 days" does. Read the rules text before you trade a match. On polymarket.com it is the single source of truth for that market.
The same fields are public through the keyless Gamma API, so nothing here needs an account to read:
curl -s "https://gamma-api.polymarket.com/events?tag_id=864&closed=false&limit=50" \
| python3 -c "import json,sys; [print(e['slug'], '|', e['title']) for e in json.load(sys.stdin)]"
What settles a retirement, walkover or cancellation
This is polymarket.com's own market text (retrieved 2026-08-23). A match that begins but is not completed resolves to the player who advances on the opponent's retirement, default or disqualification. A walkover (withdrawal before the start) resolves 50-50. A match cancelled, tied, or delayed beyond 7 days without a winner also resolves 50-50. Polymarket US (the CFTC-regulated app) and Kalshi use different rules. A pre-serve walkover is the last fair market price on Polymarket US (ITF: $0.50) and a "fair price" on Kalshi (ITF: $0.50). The verbatim text for all three is in Polymarket & Kalshi tennis retirement/walkover rules (2026).
The practical consequence: a heavy favourite's contract at 0.90 settles at 0.50 on polymarket.com if the match never starts. Whether a match has started is therefore a data question, not a price question.
Trading itself: your account, your keys
Placing orders happens through Polymarket's own interface or its CLOB API with wallet-signed authentication (official client: py-clob-client). Fees, tick sizes, geographic restrictions and the current Terms of Use are Polymarket's and change, so read them at the source. Nothing in this article or in our tooling places orders, holds funds, or recommends a position.
The live-data layer: watching vs guessing
The market price tells you what the crowd believes. It does not tell you that the favourite was just broken, or that a medical timeout was called. It does not tell you that the second set went to a tiebreak, or that a player retired thirty seconds ago. That is the live-state layer, and it is what separates a trader who watches from one who guesses:
- Score, server, break point. The Live Tennis API free tier (30 req/min, 100 req/day, no card) returns live matches. Each carries the score line, who is serving and the break-point flag. Key at livetennisapi.com/subscribe/free.
- Retirement / walkover detection. The
outcome(retired,walkover,default,abandoned,completed) andevent_statusfields flag the branches that settle a market without a final score. - Market to match join. The open-source polymarket-tennis toolkit (MIT, observe-only) discovers the tennis markets on Gamma and matches each to the live match (refusing to guess on ambiguity). It then prints market price next to live score, server and break-point state in one line.
pip install polymarket-tennis
pmtennis discover --matches-only --moneyline-only # keyless
export LIVETENNIS_API_KEY=... # free key
pmtennis watch <event-slug-from-discover> # price vs live state, once a minute
If you would rather have an assistant build the watcher for you, the pillar guide contains a single Claude Code prompt and the verified result.
A sensible first week
- Pick one tournament and follow five matches a day on
polymarket.com/sports/atp/gameswithpmtennis watchrunning beside the page. - Read the rules text of every market you open. Check how walkovers and retirements resolve.
- Log, don't trade: record what the price did after each break of serve and each retirement. The toolkit's Arena mode keeps a paper book for exactly this.
- Only then decide whether any of it is worth real money. That decision, and every order, is yours.