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.
$ 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 matches
Every ATP and WTA match since 1968 — main draws, qualifying, Challengers, and ITF — with set scores and serve stats.
5,566,184 ranking rows
Every published weekly ranking Monday for both tours, queryable by exact date.
137,410 players
Bios, handedness, countries, activity status, and career statistics with surface and year filters.
57,910 tournaments
Editions with tier, surface, dates, season calendars, and round-by-round draw brackets.
Head-to-head engine
Any two players in history — or a whole group via the H2H matrix — with surface, finals, and Slam splits.
Live scoreboards
In-progress matches with per-match detailed state, plus recent results the moment they finish.