DEV Community

CleanScrape
CleanScrape

Posted on Fully Autonomous

How Sinner won Wimbledon 2025, in break points

The scoreline of the 2025 Wimbledon men's final says Jannik Sinner beat Carlos Alcaraz 4-6 6-4 6-4 6-4. It doesn't say how. For that you need the match statistics, and for a whole tournament you need them in one table, with the counts behind every percentage.

I built CleanScrape's Tennis Scraper API to get that table from Flashscore. I'm the developer, so this is a walkthrough of my own tool, not an independent review. An AI agent wrote this walkthrough from my run, and every number in it was checked against that run.

One line of input

Open the Actor and type Wimbledon 2025 into Tournaments, players or matches. Set Maximum matches to 500 and start.

You don't need a Flashscore account, cookies or an API key. You do need an Apify account to run the Actor. The same input as JSON:

{
  "targets": ["Wimbledon 2025"],
  "maxResults": 500
}
Enter fullscreen mode Exit fullscreen mode

The list takes other things too: a player (Sinner 2026), a draw (US Open women 2024), a common name (Roland Garros 2024) or any Flashscore link. The run report says how each line was read. Mine said: "Wimbledon 2025" was read as ATP Wimbledon 2025, WTA Wimbledon 2025.

What came back

478 singles matches, men's and women's, qualifying included. Each row has the round, the score with tiebreak points (7-6(2) 6-4 6-4), the status (finished, retired and so on), the match time, the umpire and the match statistics. All 478 had full statistics. The run took about nine minutes.

The statistics keep their counts. You don't just get "first serve points won: 75%", you get firstServePointsWonHome = 54 and firstServePointsPlayedHome = 72. That matters as soon as you add matches together, because you can't average percentages from matches of different lengths.

Adding it up

I took the men's main draw and summed each finalist's serve numbers over their seven matches:

Service games held Break points faced Break points saved
Sinner 93 of 99 23 17
Alcaraz 118 of 133 57 42

Sinner faced fewer than half as many break points as Alcaraz over the fortnight. In the final itself he saved 4 of 6.

Two caveats. Sinner's fourth-round match against Grigor Dimitrov ended in retirement with Dimitrov two sets up, so it counts with the statistics of the part that was played. And seven matches against different opponents isn't a controlled comparison. It's a description of how the two got through the draw, not a ranking of servers.

Point-by-point, form and head-to-head

Two switches add more. Point-by-point gives every game: who served, who won, whether serve was broken, and every point score with break points, set points and match points marked. The last game of the final went 15-0, 30-0, 40-0, 40-15, with match point flagged on the last two.

Form and head-to-head adds each player's latest matches, overall and on the surface, and their earlier meetings. It's meant for matches coming up. For a past match, the form lists are what Flashscore shows today, so they can include later matches. The row says so.

Export and check the report

Click Export, pick the Statistics view and download CSV or Excel. Use JSON when you want the nested data: per-set statistics, point-by-point and the form lists. Keep ID columns as text.

The run report shows how each line was read, how many matches it listed, matched and saved, how many had full, basic or no statistics, and why the run stopped.

Use it on what you actually care about

  • One tournament, several years: Wimbledon, with Editions per tournament at 5.
  • A player's season: Swiatek 2025, with point-by-point if you want it.
  • Yesterday's results: leave the list empty and pick Yesterday.
  • Upcoming matches: leave the list empty, pick Next 3 days, status Scheduled, and turn on form and head-to-head.

There are ready-made examples for Wimbledon 2025 with statistics, yesterday's results, upcoming matches with form and head-to-head and a player's season with point-by-point.

Cost and limits

The base price is $1.00 per 1,000 matches. Match details (statistics, set details or point-by-point) add $1.50 per 1,000, and form and head-to-head add $0.50 per 1,000, both only when Flashscore has them for that match. The Wimbledon run above, 478 matches with statistics, comes to about $1.20 before tier discounts. Check the Pricing tab for your account's rate and set a spending limit for big runs.

Coverage follows Flashscore. ATP, WTA, Challenger and Grand Slam matches have full statistics. Most ITF matches have scores but few or no statistics. Bookmaker odds and rankings aren't included, and live matches are a snapshot at collection time.

If you work with an AI assistant, there's also a free tennis research skill that explains the fields and how to add statistics up without mixing percentages.

Questions or a reproducible problem: use the Actor's Issues tab or email contact.cleanscrape@gmail.com. CleanScrape is independent of Flashscore, the ATP and the WTA.

Top comments (0)