ATP and WTA Tennis Rankings Scraper

CleanScrape · @cleanscrape

Current ATP and WTA rankings from Flashscore: singles, doubles and the races, with points, movement and country, by player or country.

About

Download the current ATP and WTA tennis rankings from Flashscore as CSV, Excel or JSON. Every entry has the rank, ranking points, last week's rank and the movement, the country, and a link to the player.

Eight lists are available:

ListWhat it ranksSize (Oct 2026)
ATP singles rankingsMen, 52-week ranking2,296 players
WTA singles rankingsWomen, 52-week ranking1,547 players
ATP singles raceMen, this season (race to the ATP Finals)2,255 players
WTA singles raceWomen, this season (race to the WTA Finals)373 players
ATP doubles rankingsMen's doubles, one entry per player2,801 players
WTA doubles rankingsWomen's doubles, one entry per player1,800 players
ATP doubles team raceMen's doubles teams this season500 pairs
WTA doubles team raceWomen's doubles teams this season159 pairs

Take the top 100, a whole list, or only the players or countries you follow. A list takes a few seconds; all eight in full take under a minute.

It is built for fantasy and betting models, tennis media and federations, coaches tracking their players, and anyone who needs ranking data in a spreadsheet or an app. No Flashscore account, cookies, proxy or API key is needed. This is an independent tool, maintained by CleanScrape, and not affiliated with Flashscore, the ATP or the WTA.

Start with a small run

The form opens with the ATP and WTA singles rankings, top 100 each. Start it as it is to see the output, then change the lists.

  1. In Ranking lists, choose one or more lists.
  2. Set Entries per list: 10 for the top 10, 100 for the top 100, 5000 for the whole list.
  3. Optional: fill in Only these players or Only these countries.

The entries are in the run's dataset; download it as CSV, Excel or JSON.

Examples

The top 100 of both singles rankings:

{ "rankings": ["atp", "wta"], "maxEntries": 100 }

Every list in full, for a weekly snapshot:

{
  "rankings": [
    "atp",
    "wta",
    "atp-race",
    "wta-race",
    "atp-doubles",
    "wta-doubles",
    "atp-doubles-race",
    "wta-doubles-race"
  ],
  "maxEntries": 5000
}

Where some players stand in the ranking and in this season's race:

{
  "rankings": ["atp", "atp-race", "wta", "wta-race"],
  "players": ["Jannik Sinner", "Carlos Alcaraz", "Coco Gauff", "Iga Swiatek"]
}

Every Spanish and American player in the singles rankings:

{ "rankings": ["atp", "wta"], "countries": ["ESP", "USA"], "maxEntries": 5000 }

Players and countries

Players: type a name or paste a Flashscore player link, one per line.

  • Names match in any order, without accents and regardless of case: Jannik Sinner, sinner and Sinner Jannik all find the same player, and Swiatek finds Świątek.
  • A single surname finds everyone with that surname. Type the full name or paste the link to be exact.
  • Links from any Flashscore site work, with or without https://.

Countries: country names or the three-letter codes used by the ATP and WTA, one per line. ESP, Spain, USA, United States, GBR, UK, Czechia and CZE all work.

  • Flashscore lists Russian and Belarusian players under the country World (they play without a national flag). Type World to get them. A search for Russia finds nothing, and the run says so.

An entry is kept when it matches any of your players or any of your countries. A doubles pair is kept when either partner matches. With players or countries, the whole list is searched, and Entries per list caps how many matches are saved from each list.

If a player or country is not in any of the chosen lists, the run message names it, for example Not found in the chosen lists: Roger Federer. The other entries are still saved.

What each entry contains

ColumnMeaning
RankPosition in the list. Tied entries share a rank
NamePlayer name as Flashscore writes it, usually surname first. Doubles teams: both partners, separated by /
CountryThe player's country. Doubles teams: both countries. World means no national flag
PointsRanking points
Previous rankRank in the previous edition. Empty for a new entry
Rank changePlaces gained since the previous edition: positive moved up, negative moved down
Ranking list, Ranking name, Tour, Discipline, RaceWhich list the entry comes from
Ranking dateDate of the ranking edition (YYYY-MM-DD)
Player ID, Player linkFlashscore player ID and page. Empty for doubles teams; see Players
PlayersEach player of the entry with name, ID, country and link: one for players, two for teams. In CSV these are the players/0/… and players/1/… columns
Collected atWhen the list was read (UTC)

One entry in JSON:

{
  "rankingList": "atp-race",
  "rankingName": "ATP singles race",
  "tour": "atp",
  "discipline": "singles",
  "race": true,
  "rankingDate": "2026-10-19",
  "rank": 2,
  "previousRank": 2,
  "rankChange": 0,
  "points": 7950,
  "name": "Sinner Jannik",
  "country": "Italy",
  "playerId": "6HdC3z4H",
  "playerUrl": "https://www.flashscore.com/player/sinner-jannik/6HdC3z4H/",
  "players": [
    {
      "name": "Sinner Jannik",
      "playerId": "6HdC3z4H",
      "country": "Italy",
      "playerUrl": "https://www.flashscore.com/player/sinner-jannik/6HdC3z4H/"
    }
  ],
  "sourceUrl": "https://www.flashscore.com/tennis/rankings/atp-race/",
  "collectedAt": "2026-10-23T08:08:10.011Z"
}

A doubles team entry has "name": "Dabrowski Gabriela / Luisa Stefani", "country": "Canada / Brazil" and both partners under players.

Every run also saves a SUMMARY record (JSON) in its key-value store with each list's edition date, how many entries it has, how many matched your filters, how many were saved, and why the run stopped.

Pricing

$12 a month to rent it, after a 7-day free trial, long enough to see one weekly ranking update. Cancel at any time; access runs to the end of the month you paid for.

Runs use compute, paid from your Bytewells credit at Bytewells' rates, separately from the rental. No proxy is used. In tests on Bytewells, the top 100 of both singles rankings (200 entries) used $0.0004 of credit, all eight lists in full (9,834 entries) $0.0009, and four players across four lists $0.0005.

There is no charge per list or per entry, so weekly snapshots of every list in full cost the same rental.

Schedule it

The ATP and WTA publish new rankings every week, usually on Monday. Add a Bytewells schedule with your lists and players (for example every Monday at 12:00 UTC) to collect each new edition. Each entry has the Ranking date, so weekly runs build a history you can chart.

Use it from the API

The Actor runs through the Bytewells API, which works with Apify's API clients: point the client's base URL at Bytewells (see Bytewells docs) and call cleanscrape/tennis-rankings-scraper with an input from the examples above. The entries are in the run's default dataset.

Match results and statistics

For match results, statistics, point-by-point, form and head-to-head, use the Flashscore Tennis Scraper for Tennis Matches and Stats. Both use the same Flashscore player IDs, so rankings and matches can be joined on playerId.

Common questions

How current are the rankings?

They are the edition Flashscore shows when the run starts, usually Monday's official ranking. The Ranking date column says which edition you have.

Can I get past rankings?

No. Flashscore shows the current edition only. A weekly schedule builds your own history from now on.

Are live or projected rankings included?

No. The lists are the published editions.

Why does a doubles team race have pairs while doubles rankings have players?

That is how the tours rank them. The doubles rankings rank each player on their own results with any partner. The team races rank fixed pairs for the season finals.

Is there an official ATP or WTA rankings API?

Not a free public one that we know of. The ATP and WTA show the rankings on their own websites. This Actor reads the same rankings from Flashscore's public pages and gives them to you as a table, CSV or JSON.

What does a run cost on top of the rental?

Only the compute it uses, from your Bytewells credit. Test runs used $0.0004 to $0.0009 each.

Is it legal to scrape tennis rankings?

The Actor reads public pages that anyone can open without an account, at a gentle pace, and it does not get around bot checks. Rankings are facts about public sporting results. Check the rules that apply to how you use and publish the data. This is not legal advice.

Good to know

  • Times are UTC.
  • The ATP doubles team race lists up to 500 pairs, as Flashscore publishes it.
  • If Flashscore changes its data feed or refuses requests, the run stops with a clear message instead of saving empty or wrong rows.

Support

CleanScrape maintains this Actor and fixes it when Flashscore changes. If something looks wrong, email [email protected] with the run ID and the list affected. Never include API tokens or private data.

Disclaimer

This Actor is an independent tool developed by CleanScrape. It is not affiliated with, endorsed by, or sponsored by Flashscore, the ATP or the WTA. Trademarks belong to their owners and are used only to identify the source.

More tools from CleanScrape

FAQ

How current are the rankings?
They are the edition Flashscore shows when the run starts, usually Monday's official ranking. The Ranking date column says which edition you have.
Can I get past rankings?
No. Flashscore shows the current edition only. A weekly schedule builds your own history from now on.
Can I follow only some players or countries?
Yes. Type names or paste Flashscore player links under Only these players, or country names or codes under Only these countries.
Why a 7-day trial?
The rankings change once a week, so the trial covers one new edition.
What does a run cost on top of the rental?
Only the compute it uses, from your Bytewells credit. Test runs used $0.0004 to $0.0009 each.

More Actors from the same publisher.

View all from @cleanscrape