tennisapi.dev / tennis betting api

The data layer under serious tennis betting models

Models are only as good as their history. Feed yours 1.7M results, complete head-to-heads, surface splits, and every ranking week since the 1970s — honestly labeled: this is modeling data, not an odds feed.

Get a free API key Read the docs
$ curl "https://api.citoapi.com/api/v1/tennis/h2h?player1_id=atp_103819&player2_id=atp_104745" \
    -H "x-api-key: YOUR_API_KEY"

{ "player1": { "name": "Roger Federer", "wins": 17 },
  "player2": { "name": "Rafael Nadal",  "wins": 24 },
  "summary": { "total_matches": 41, "grand_slam_matches": 14 } }

What we are — and aren't

Straight answer, because bettors deserve one: tennisapi.dev does not currently sell bookmaker odds feeds. What it sells is the historical and live data layer that betting products are built on — results, head-to-heads, rankings, form, and surface performance — clean enough to backtest against and fast enough to run live.

Features your model actually wants

Surface-specific head-to-heads. Ranking differentials on the exact date a match was played (5.5M weekly rows make point-in-time joins trivial — no lookahead bias). Recent-form windows from the results archive. Round and tier context. Five-set versus three-set splits. Every one of these is a query, not an ETL project.

Backtest deep, run live

Fifty-eight seasons of results means your training set isn't three years of one scraper's output. When the model goes live, the same schema serves in-progress scoreboards and instant post-match results for settlement-adjacent logic.

The dataset behind it

1,730,276 matchesEvery ATP and WTA match since 1968 — main draws, qualifying, Challengers, and ITF — with set scores and serve stats.
5,566,184 ranking rowsEvery published weekly ranking Monday for both tours, queryable by exact date.
137,410 playersBios, handedness, countries, activity status, and career statistics with surface and year filters.
57,910 tournamentsEditions with tier, surface, dates, season calendars, and round-by-round draw brackets.
Head-to-head engineAny two players in history — or a whole group via the H2H matrix — with surface, finals, and Slam splits.
Live scoreboardsIn-progress matches with per-match detailed state, plus recent results the moment they finish.

Frequently asked

Do you provide betting odds?

Not currently — no bookmaker odds feeds. We provide the underlying match, ranking, and head-to-head data that betting models consume.

Can I get point-in-time rankings for backtesting?

Yes — rankings are queryable by exact historical date, which eliminates lookahead bias in features.

Is live data available for in-play logic?

Live scoreboards and per-match state are available over REST, with WebSocket and webhook delivery.

Your first call is thirty seconds away

Free tier to prove it, production tiers when you ship.

More tennis API resources