Best Prediction Market Botsranked & reviewed · 2026 Open Kairos

Infrastructurelibraryfree

polymarket-tennis: what it does, how it matches, where it stops

Last checked 2026-09-08

VenuesPolymarket
PricingOpen source (MIT).
Typelibrary
GitHub stars326

polymarket-tennis is a Python package from the team behind the Live Tennis API. It discovers tennis markets on Polymarket's keyless Gamma API, pairs each market with a live match or fixture using name and date heuristics with a confidence score, and builds one snapshot that shows market prices next to the score line, the server and a break-point flag.

It is observe-only by design and says so repeatedly: no order execution, no wallet or key handling, no strategy advice. Everything downstream of the joined view is yours to build.

What it does

Three modules: discovery (tennis tag, per-match events, futures, doubles, normalized to plain objects), matching (both name orientations, diacritics folded, a one-day date gate, returns None on ambiguity instead of guessing), and join (a LiveMarketView with staleness timestamps for both feeds).

The CLI is pmtennis with discover, match and watch. The README counted 400 or more open singles moneyline markets on the Gamma API on 2026-08-18.

  • pip install polymarket-tennis; Python 3.10+; single runtime dependency httpx
  • Doubles markets rejected in v0.1 unless you pass an explicit match id
  • Fixture-driven tests with zero network; a Claude Code skill and an MCP plugin ship alongside
  • A paper-only strategy arena (pmtennis arena) with a synthetic committed tape

Strategy

None. The README's boundary is explicit: this is the data layer, not a bot, and execution is permanently out of scope. The one-prompt Claude Code example it ships builds a paper-only watcher on top.

Setup and requirements

Market discovery needs no key. Live scores need a Live Tennis API key; the free tier is 30 requests per minute and 100 per day with no card. pmtennis watch spends one request per poll, so the default 60-second cadence covers about 100 minutes of watching per day and a 300-second cadence about 8 hours.

Activity and maintenance

326 stars and 285 forks as of 2026-09-08. Created 2026-08-18, last push 2026-09-05, 3 open issues. MIT licensed, Python. The PyPI page returned 200 on the check date.

The README carries a vendor disclosure: it is built and maintained by the Live Tennis API team, and paid tiers of that API exist.

Where it falls short

It watches. Trading a tennis market off a break-point flag means opening Polymarket, or a cross-venue terminal, and doing it fast. The free quota is sized for a handful of matches at a gentle cadence, not continuous polling of a tournament.

Tennis only, Polymarket only, and match identity resolution that refuses ambiguous cases will leave some markets unmatched by design.

Who should use it

A developer building a tennis bot who wants discovery and market-to-match matching solved, with honest quota math, before writing signals and execution.

Not a bot, and not useful outside tennis.

Questions about polymarket-tennis

Does polymarket-tennis place trades?

No. It is observe-only with no order code, no wallets and no keys other than the tennis API key.

Is polymarket-tennis free?

The package is MIT. The Live Tennis API free tier allows 30 requests per minute and 100 per day; paid tiers add history and in-play stats.

Does polymarket-tennis work with Kalshi?

No. It reads Polymarket's Gamma API. The vendor's blog covers Kalshi tennis rules separately.

How does polymarket-tennis match markets to matches?

By folded player names in both orientations gated by the slug date within one day, with a confidence score. Ambiguous cases return None.

signalsizefilledge

Bots die in execution. Terminals are execution.

Wanted a bot for speed and cross-venue vision? The free Kairos terminal trades Kalshi, Polymarket and Predict.fun from one book, no keys to manage.