Flashscore Tennis Scraper: Stats & Rankings avatar

Flashscore Tennis Scraper: Stats & Rankings

Pricing

from $0.85 / 1,000 matches

Go to Apify Store
Flashscore Tennis Scraper: Stats & Rankings

Flashscore Tennis Scraper: Stats & Rankings

Scrape tennis from Flashscore: ATP, WTA, Challenger & ITF results and fixtures with set scores, serve stats, point-by-point, odds, full tournament draws and complete ATP/WTA rankings (2,000+ players). Any day, tournament or past edition. No API key.

Pricing

from $0.85 / 1,000 matches

Rating

0.0

(0)

Developer

Elena Vance

Elena Vance

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Scrape tennis from Flashscore: ATP, WTA, Challenger and ITF results and fixtures with set-by-set scores, tiebreaks and durations, plus optional serve & return statistics, full point-by-point, and betting odds from dozens of bookmakers. It also scrapes complete tournament draws and whole ranking lists: the full ATP list is 2,000+ players in a single request.

All of it comes from one Actor with one flat output format. You don't need an API key, login, browser or proxy. Export to JSON, CSV, Excel or use the API.


What can it scrape?

ModeInputOne row per
Matches by daydays from 7 back to 7 ahead, tour categoriesmatch
Matches by tournamenta tournament URL, any past edition (majors back to 1990)match
Matches by URL/IDmatch URLs or ids, with both players' ranking at match timematch
RankingsATP/WTA singles, doubles and race lists, or live rankingsranked player
Drawstournament URLs: main draw, qualifying or bothbracket slot

Each match can be enriched with three add-ons, which you pay for only on the matches that actually have that data:

  • Statistics: aces, double faults, 1st serve %, 1st/2nd serve points won, break points saved and converted, return points, total points, and service/return games won. You get these for the whole match and for each set.
  • Point-by-point: every game with its server, the winner, whether serve was broken, and the point sequence, with break, set and match points flagged. Tiebreaks come point by point with mini-breaks marked.
  • Odds: each bookmaker's moneyline, main set handicap, main game handicap and main total-games line, with opening prices and margin. You also get the best and average moneyline for each player.

Output example

A finished ATP match with statistics and point-by-point (abridged):

{
"recordType": "match",
"eventId": "0lgU6PM7",
"eventUrl": "https://www.flashscore.com/match/0lgU6PM7/",
"category": "ATP - SINGLES",
"tournament": "Chengdu (China)",
"surface": "hard",
"round": "Quarter-finals",
"startTime": "2026-09-27T05:05:00Z",
"status": "finished",
"homeName": "Brooksby J.",
"awayName": "Basilashvili N.",
"homePlayers": [{ "name": "Brooksby J.", "id": "MoOtVkbN", "country": "USA" }],
"winner": "away",
"homeSets": 0,
"awaySets": 2,
"score": "4-6, 6-7(4)",
"sets": [
{ "set": 1, "homeGames": 4, "awayGames": 6, "homeTiebreak": null, "awayTiebreak": null, "duration": "0:39" },
{ "set": 2, "homeGames": 6, "awayGames": 7, "homeTiebreak": 4, "awayTiebreak": 7, "duration": "0:55" }
],
"duration": "1:34",
"homeAces": 3, "awayAces": 9,
"homeDoubleFaults": 2, "awayDoubleFaults": 1,
"homeFirstServePct": 81, "awayFirstServePct": 58,
"homeBreakPointsSaved": 5, "homeBreakPointsSavedOf": 7,
"statistics": { "match": { "aces": { "home": 3, "away": 9 }, "…": {} }, "set1": {}, "set2": {} },
"games": 22, "tiebreaks": 1, "homeBreaks": 1, "awayBreaks": 2,
"pointByPoint": [
{ "set": 1, "game": 1, "server": "home", "winner": "away", "brokeServe": true,
"homeGames": 0, "awayGames": 1,
"points": [{ "score": "0:15" }, { "score": "0:30" }, { "score": "0:40", "breakPoint": true }] }
]
}

A ranking row:

{ "recordType": "ranking", "ranking": "atp", "rankingDate": "2026-09-21", "rank": 1, "previousRank": 1,
"rankChange": 0, "playerName": "Sinner Jannik", "playerId": "6HdC3z4H", "country": "Italy",
"points": 11500, "tournamentsPlayed": 17 }

A draw row:

{ "recordType": "draw", "tournament": "Chengdu (China)", "season": "2026", "stage": "Singles - Main",
"round": "1/16-finals", "roundNumber": 1, "drawPosition": 2, "homeName": "Harris L.", "homeEntry": "Q",
"homeCountry": "South Africa", "awayName": "Kovacevic A.", "awayCountry": "USA",
"homeSets": 2, "awaySets": 0, "winner": "home", "eventId": "Ecz6wUvp" }

The Console's dataset tab has ready-made table views for Matches, Serve statistics, Odds, Rankings and Draws.


How to use it

Yesterday's ATP and WTA results with full stats:

{ "days": ["-1"], "categories": ["atp-singles", "wta-singles"], "status": "finished",
"includeStatistics": true, "includePointByPoint": true }

Every match of the last three US Opens:

{ "tournamentUrls": ["https://www.flashscore.com/tennis/atp-singles/us-open/"],
"seasons": ["2023", "2024", "2025"], "maxMatches": 1000 }

Today's and tomorrow's matches with German bookmakers' odds:

{ "days": ["0", "1"], "categories": ["atp-singles", "wta-singles"], "status": "scheduled",
"includeOdds": true, "oddsCountry": "DE" }

The complete ATP and WTA rankings:

{ "mode": "rankings", "rankings": ["atp", "wta"], "maxRank": 0, "maxItems": 10000 }

Main and qualifying draws of a tournament:

{ "mode": "draws", "tournamentUrls": ["https://www.flashscore.com/tennis/wta-singles/beijing/"],
"drawStages": "all" }

Tips

  • Days are UTC calendar days. Flashscore only lists 7 days back and 7 days ahead. For anything older, use a tournament URL with seasons.
  • Categories filter by prefix, so atp covers ATP singles and doubles and challenger covers all four Challenger lists. Leave the list empty to get everything. An ITF-heavy day can run to several hundred matches.
  • Match URLs add rankings. Scraping by match URL or id also returns each player's ranking at the time of the match, and the round.
  • Draws for upcoming events can list only qualifying until the main draw is published. The run tells you when that is the case.
  • homeName and awayName follow Flashscore's order (the first-listed player is "home"). winner says who won.

Pricing

Pay per event. You are charged only for rows you receive:

EventPrice
Match$0.001
+ statistics (per match that has them)$0.001
+ point-by-point (per match that has it)$0.002
+ odds (per match with odds)$0.001
Ranking entry$0.0002
Draw slot$0.0005

Some examples:

  • 1,000 matches with no add-ons cost $1.
  • 100 fully enriched matches (all three add-ons) cost $0.50.
  • The complete ATP ranking (2,291 players) costs $0.46.
  • A Grand Slam main draw (127 slots) costs $0.06.

Invalid input and unknown match ids are never charged. The run stops cleanly when it reaches your maximum charge.


FAQ

Is it legal to scrape Flashscore? This Actor only collects publicly visible sports data, without logging in. You are responsible for how you use the data. Check Flashscore's terms and your local laws before using it commercially.

Why are some statistics or point-by-point missing? Flashscore doesn't cover every match at the same depth. ATP, WTA and most Challenger matches have both. Lower ITF levels often have only the score. A match without the data is not charged for that add-on.

Can I get live scores? Yes. Set status to live and days to 0. Live matches carry their current set scores and stage (for example Set 2 - Tiebreak). You can schedule the Actor every few minutes.

Do you have other sports? See the other Flashscore and Sofascore Actors on this account: odds comparison, standings, match statistics and more.


Ready-made examples

Open one, press Try for free, and change the input to your own:

More Flashscore Actors

Same data source, same flat rows and pay-per-result pricing: