Tennis Match Data — Live, Fixtures, Results & Model-Ready Stats avatar

Tennis Match Data — Live, Fixtures, Results & Model-Ready Stats

Pricing

from $10.00 / 1,000 model-ready rows

Go to Apify Store
Tennis Match Data — Live, Fixtures, Results & Model-Ready Stats

Tennis Match Data — Live, Fixtures, Results & Model-Ready Stats

Tennis data for ATP, WTA, Challenger & ITF: live scores, fixtures, results, rankings and model-ready pre-match feature rows (form, H2H, surface splits).

Pricing

from $10.00 / 1,000 model-ready rows

Rating

0.0

(0)

Developer

Max

Max

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Tennis Match Data — Live Scores, Fixtures, Results & Model-Ready Stats

Tennis data API for ATP, WTA, Challenger and ITF: live scores, fixtures, results, rankings — and the only tennis scraper on Apify that outputs model-ready pre-match feature rows: current form, head-to-head, surface record, fatigue indicators and market form, merged and computed for you. Built for betting models, fantasy tools, live scoreboards and tennis analytics.

Why this Actor?

Raw tennis scrapers give you match listings. Prediction models need features. Before you can model a match you normally have to collect each player's recent results, surface splits, head-to-head and schedule density yourself. This Actor does that work in one call:

{ "mode": "model-ready", "day": 0, "tours": ["ATP"] }

→ one row per upcoming singles match, with both players' form already computed:

FeatureExample (real output)
Rank / career high226 / 214
Last 10 matches7–3
Surface record, last 12 months30–9 on hard
Days since last match14
Matches / sets in last 14 days1 / 2
Comeback after 30+ day breakfalse
Retired in last matchfalse
Avg. closing odds, last 51.50
Head-to-head (overall / this surface)2–0 / 1–0

Every row carries a dataQuality block (complete flag + notes), so your pipeline knows exactly what it got.

Modes

ModeWhat you getTypical use
model-readyOne feature row per upcoming singles matchPrediction models, betting analytics
fixturesUpcoming matches: players, tournament, surface, start timeSchedules, draft lobbies
resultsFinished matches: set scores, duration, retirements/walkoversResults digests, training datasets
liveMatches in play: current sets/games, statusLive scoreboards
rankingsCurrent ATP or WTA ranking list (rank, player, country, points)Enrichment, seeding
allEvery match of the day, any statusBulk ingestion

All modes cover singles and doubles (doubles opt-in via includeDoubles) across ATP, WTA, Challenger, ITF, UTR and exhibitions, filterable with tours.

Input

{
"mode": "model-ready",
"day": 0,
"tours": ["ATP", "WTA"],
"includeDoubles": false,
"maxItems": 100
}
  • mode — see table above.
  • day — day offset: 0 today, -1 yesterday, 1 tomorrow. Results reach ~7 days back; fixtures ~1 day ahead.
  • tours — filter: ATP, WTA, CHALLENGER, ITF, UTR, EXHIBITION. Empty = all.
  • includeDoubles — include doubles/mixed (default false).
  • rankingTouratp or wta (mode rankings only).
  • maxItems — hard cap on output rows (cost control).

Example output (fixtures)

{
"matchId": "fivcpwcn",
"source": "flashscore",
"tournament": {
"tour": "ATP", "discipline": "SINGLES", "name": "Winston-Salem",
"location": "USA", "surface": "hard", "tourGroup": "ATP"
},
"home": { "name": "Altmaier D.", "slug": "altmaier-daniel", "country": "Germany" },
"away": { "name": "Comesana F.", "slug": "comesana-francisco", "country": "Argentina" },
"status": "scheduled",
"startTime": "2026-08-25T00:10:00.000Z",
"setsWon": { "home": null, "away": null },
"setScores": []
}

Export as JSON, CSV, Excel or XML, or read it straight from the API. Nested keys flatten to columns (playerA.rank, h2h.overallA, …) in tabular exports.

Use it from code or AI agents

Run via the Apify API from any language, schedule it daily in two clicks, or connect it to your AI agent — this Actor works as an MCP tool, so agents can query tennis data and pay per result automatically.

curl "https://api.apify.com/v2/acts/<ACTOR_ID>/run-sync-get-dataset-items?token=<TOKEN>" \
-X POST -H 'Content-Type: application/json' \
-d '{"mode":"model-ready","tours":["ATP"]}'

Honest notes on the data

  • Day pages are rolling windows: day: -1 can include matches that started up to two days earlier (late finishes, suspended matches). Filter on startTime if you need strict dates.
  • The fixtures window is short (~1 day ahead). For longer horizons, run daily on a schedule.
  • model-ready resolves players across two sources by name; rare unresolvable players are reported in dataQuality.notes instead of being silently dropped. Rows where neither player resolves are skipped and never charged.
  • Rankings and player histories come from public tennis statistics pages; live scores and fixtures from a public scores feed. Sources can change without notice — a daily automated health check watches for this, and fixes ship fast (check the Issues tab response time).

Pricing

Pay per event: you are charged per delivered row (see the Pricing tab). model-ready rows cost more than raw rows because each one bundles 4–6 upstream lookups plus feature computation — typically still >10× cheaper than tennis data API subscriptions ($29–99/month) for moderate volumes, with no monthly commitment.

FAQ

Which tournaments are covered? Everything on the public scores feed: ATP, WTA, Challenger, ITF (men/women), UTR and exhibitions — singles and doubles.

Can I get historical data? results reaches ~7 days back per run. For deep history, run daily on a schedule and accumulate — or open an issue and tell us what you need.

How fresh is live? Each run is a snapshot. Poll every 30–60 s for near-real-time boards.

Point-by-point data? Not yet — it is on the roadmap. Tell us in the Issues tab if you need it; user requests set the priority.

Something broke? Open an issue — the daily health check usually catches source changes before users do, and fixes are typically same-day.