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, and since 2026-08-03 Polymarket is the ATP Tour's official prediction-market partner, streaming 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 — 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; 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 the public Gamma API uses — atp-norrie-navone-2026-05-20, wta-…, itf-… — which 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, and each has a price between 0 and 1 that reads as the market's implied probability. The event page carries the resolution text (who wins on a retirement, what happens on a walkover, what "delayed beyond 7 days" does), the order book, and the volume. 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
On polymarket.com, from the market text itself (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; 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, that a medical timeout was called, 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 with 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 ↔ match join — the open-source polymarket-tennis toolkit (MIT, observe-only) discovers the tennis markets on Gamma, matches each to the live match (refusing to guess on ambiguity), and 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. Note 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.