Tennis Scraper API avatar

Tennis Scraper API

Pricing

from $0.80 / 1,000 matches

Go to Apify Store
Tennis Scraper API

Tennis Scraper API

Tennis match data from Flashscore. Type a tournament or player name, paste a link, or collect by day. Scores with tiebreaks, statistics with counts, set durations, point-by-point, form and head-to-head. From $1 per 1,000 matches.

Pricing

from $0.80 / 1,000 matches

Rating

0.0

(0)

Developer

CleanScrape

CleanScrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Share

Download tennis match data from Flashscore as CSV, Excel or JSON. Type a tournament or player name, paste a Flashscore link, or leave the list empty to collect matches by day.

Each match comes with the score including tiebreaks, the round and an exact status. Optional extras:

  • match statistics with counts
  • set durations and the umpire
  • point-by-point
  • recent form and head-to-head

It is built for people who model, analyse or write about tennis. The numbers keep their counts ("58 of 80 first-serve points won"), and every row says what Flashscore had for that match. Nothing is filled in by guesswork.

No Flashscore account, cookies or API key is needed. This is an independent tool, maintained by CleanScrape.

Here is a walkthrough with Wimbledon 2025: every singles match with statistics, and what the totals say about how Sinner won. Type your own tournament or player for another project.

Start with a small run

The form opens with Wimbledon 2025 and a maximum of 20 matches. That gives you the men's final, semi-finals and quarter-finals with statistics. Start it as it is to see the output, then change the list.

  1. In Tournaments, players or matches, type what you want, one per line. Leave it empty to collect by day.
  2. If the list is empty, pick the Days.
  3. Set Maximum matches and start the run. With several lines, the maximum is shared evenly between them.

Open the Matches, Statistics or Form and head-to-head view, then export. Use JSON when you need the nested data (per-set statistics, point-by-point, form lists).

What you can type

You typeYou get
Wimbledon 2025The 2025 men's and women's singles draws, including qualifying
WimbledonThe latest edition. Set Editions per tournament to 5 for the last five years
US Open women 2024, Australian Open doubles, Wimbledon juniorsJust those draws
Sinner, Swiatek 2025The player's matches, newest first, or only that year
A Flashscore linkThe tournament, player or match it points to. Any page of it works (results, draw, summary), from any Flashscore site, with or without https
A match ID such as Glwf9adKThat match

Common names work too: Roland Garros finds the French Open and ATP Finals finds Turin. The run report shows how each line was read, for example "Wimbledon 2025" was read as ATP Wimbledon 2025, WTA Wimbledon 2025. If a name is unclear, the report says so and nothing unrelated is collected. Paste the Flashscore link in that case.

Collect by day

Leave the list empty and choose Days: yesterday, today, tomorrow, the last or next 3 or 7 days, or custom dates. Flashscore's daily lists go 7 days back and 7 days ahead (UTC). For anything older, add the tournament or player to the list.

Tours, Match type and Match status narrow the days. The defaults are ATP and WTA, singles and finished matches. Tours also decide which draws a tournament name gives you. A pasted tournament link, a player or a match link is not limited by tour.

Examples

Yesterday's ATP and WTA singles with statistics:

{ "dayRange": "yesterday", "maxResults": 100 }

The last five Wimbledon editions, men and women:

{ "targets": ["Wimbledon"], "seasons": 5, "maxResults": 3000 }

A player's 2026 matches with point-by-point:

{ "targets": ["Sinner 2026"], "pointByPoint": true, "maxResults": 200 }

Upcoming matches with form and head-to-head:

{ "dayRange": "next-3-days", "statuses": ["scheduled"], "statistics": false, "setDetails": false, "formAndH2H": true }

What each match contains

ColumnMeaning
Start (UTC), StatusScheduled start in UTC. Status is finished, retired, walkover, scheduled, live, cancelled, postponed, interrupted, abandoned or awarded
Tour, Type, Tournament, Country, Surface, Round, Qualifying, SeasonEvent details. Round is, for example, Final or 1/16-finals; qualifying rounds start with Qualification
Home player, Away playerAs listed by Flashscore. Doubles show both names and have partner columns
Winner, Sets won (home/away), ScoreThe home player comes first in the score. A tiebreak score in brackets is the points of the player who lost the set: 7-6(5) 6-7(5) 6-2. Retirements end with ret., walkovers show w/o
Sets (JSON)Games, tiebreak points and duration for each set
Duration (min), UmpireMatch duration and the chair umpire, when Set durations and umpire is on
IDs and linksMatch, player and tournament IDs and links. Keep ID columns as text in spreadsheets
Coverage notesWhat was not available for this match, in plain words

Statistics (Match statistics on)

Each statistic has a home and an away column. Ratios keep both numbers, so firstServePointsWonHome = 58 and firstServePointsPlayedHome = 80.

  • Service: aces, double faults, first serve in (%), first-serve and second-serve points won and played, break points saved and faced.
  • Return: first-return and second-return points won and played, break points converted and opportunities.
  • Points and games: service, return and total points; service, return and total games.
  • Bigger events also have: winners, unforced errors, net points, average first and second serve speed (km/h) and distance covered (m).

The same statistics for each set are in setStatistics. statisticsLevel is full, basic (only a couple of counters) or none.

Point-by-point (optional)

For every set, each game has its server, its winner, whether serve was broken, and every point score. Points that were break points, set points or match points are marked. Tiebreaks are listed point by point with the server of each point.

Form and head-to-head (optional)

  • Head-to-head matches and the win count for each side. Each earlier meeting's sets are given from the current match's sides, so 2-1 means the home player won two sets.
  • Each player's latest matches, overall and on the current surface: date, tournament, opponent, result and score.
  • Summary columns (homeFormWon of homeFormPlayed and so on) for quick filtering.

Form lists are Flashscore's latest lists at collection time. For a past match they can include matches played after it.

Coverage

What Flashscore publishes depends on the level of the event:

EventScore and statusStatisticsPoint-by-pointForm and H2H
ATP, WTA, Challenger, Grand SlamsYesFullYesYes
ITFYesUsually none or basicSometimesYes
WalkoverStatus onlyNoneNoneYes
ScheduledStart timeAfter the matchAfter the matchYes

Matches from earlier years keep their details on Flashscore, so tournament and player history comes with statistics too. Round names come from the tournament's own lists. A few events, such as the Laver Cup, have no round names.

Every run saves a Run report: how each line was read, what it returned, how many matches matched your settings, detail coverage, and why the run stopped. Open it from the Output tab.

Pricing

You pay per result, with no start fee:

What is savedPrice per 1,000
Match$1.00
Match details: statistics, set details or point-by-point, when Flashscore has them$1.50
Form and head-to-head$0.50

Details and form are charged only when they are actually saved for that match. For example:

  • 100 matches with statistics cost $0.25.
  • A full Grand Slam draw (239 matches) with statistics costs about $0.60.

Apify tier discounts apply. Set a spending limit for large runs; the run stops cleanly when it is reached.

Common questions

Where can I get tennis match statistics?

This Actor exports them from Flashscore: aces, double faults, serve and return points, break points and more, with the counts behind each percentage. Type a tournament or player name, or collect every match by day.

Which tours are covered?

ATP, WTA, Challenger, ITF, juniors, team events such as the Davis Cup, and exhibitions. Choose them under Tours.

Can I get past seasons?

Yes. Add a year (Wimbledon 2019) or set Editions per tournament to collect several years. Detailed statistics are mostly available for recent seasons.

Does it include betting odds?

No. It collects results, statistics, point-by-point, form and head-to-head.

How much does it cost?

$1 per 1,000 matches, plus $1.50 per 1,000 for statistics or other match details and $0.50 per 1,000 for form and head-to-head. 100 matches with statistics cost $0.25. See Pricing above.

Good to know

  • Times are UTC.
  • Live matches are a snapshot at collection time.
  • Bookmaker odds and world rankings are not included.
  • The maximum is a limit, not a promise that so many matches exist.
  • If Flashscore changes its data feed, the run stops with a clear message instead of saving empty rows.

Questions or a reproducible problem: use the Issues tab or email contact.cleanscrape@gmail.com with the run ID.

CleanScrape is independent of Flashscore, the ATP, the WTA and the ITF. Match data comes from Flashscore's public pages.

More tools from CleanScrape