ATP and WTA Tennis Rankings Scraper
Pricing
from $0.80 / 1,000 ranking entries
ATP and WTA Tennis Rankings Scraper
Current ATP and WTA tennis rankings from Flashscore: singles, doubles, the race to the finals and doubles team races. Rank, points, movement, country and player links. Filter by player or country. From $1 per 1,000 entries.
Pricing
from $0.80 / 1,000 ranking entries
Rating
0.0
(0)
Developer
CleanScrape
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
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:
| List | What it ranks | Size (Oct 2026) |
|---|---|---|
| ATP singles rankings | Men, 52-week ranking | 2,296 players |
| WTA singles rankings | Women, 52-week ranking | 1,547 players |
| ATP singles race | Men, this season (race to the ATP Finals) | 2,255 players |
| WTA singles race | Women, this season (race to the WTA Finals) | 373 players |
| ATP doubles rankings | Men's doubles, one entry per player | 2,801 players |
| WTA doubles rankings | Women's doubles, one entry per player | 1,800 players |
| ATP doubles team race | Men's doubles teams this season | 500 pairs |
| WTA doubles team race | Women's doubles teams this season | 159 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 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.
- In Ranking lists, choose one or more lists.
- Set Entries per list: 10 for the top 10, 100 for the top 100, 5000 for the whole list.
- Optional: fill in Only these players or Only these countries.
Open the Rankings view on the Output tab, then export to 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 }
Choose a ready-to-run example
Each example opens with its input filled in. Change the lists, players or countries and run it.
| Example | What it does |
|---|---|
| ATP and WTA top 100 rankings | The current top 100 of both singles rankings with points, movement and country. 200 entries, $0.20. |
| Where Sinner and Alcaraz stand in the ranking and the race | Two players' ATP ranking and race position. Type your own players. About $0.008. |
| All US players in the ATP and WTA rankings | Every American in both singles rankings (386 entries on Oct 19, 2026). Type another country or code. About $0.39. |
| ATP and WTA doubles team race standings | Every pair in both doubles team races with both partners. About 660 pairs, $0.66. |
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,sinnerandSinner Jannikall find the same player, andSwiatekfinds Ś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
Worldto 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
| Column | Meaning |
|---|---|
| Rank | Position in the list. Tied entries share a rank |
| Name | Player name as Flashscore writes it, usually surname first. Doubles teams: both partners, separated by / |
| Country | The player's country. Doubles teams: both countries. World means no national flag |
| Points | Ranking points |
| Previous rank | Rank in the previous edition. Empty for a new entry |
| Rank change | Places gained since the previous edition: positive moved up, negative moved down |
| Ranking list, Ranking name, Tour, Discipline, Race | Which list the entry comes from |
| Ranking date | Date of the ranking edition (YYYY-MM-DD) |
| Player ID, Player link | Flashscore player ID and page. Empty for doubles teams; see Players |
| Players | Each 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 at | When 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 Run report 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. Open it from the Output tab.
Pricing
You pay for each list that loads and for each saved entry:
| What is charged | Price |
|---|---|
| Ranking entry saved | $1.00 per 1,000 entries |
| Ranking list loaded | $0.002 per list |
For example:
| Run | Cost |
|---|---|
| One player in the ATP singles ranking (1 list, 1 entry) | $0.003 |
| Four players in the ATP and WTA rankings and races (4 lists, 8 entries) | $0.016 |
| Top 100 of the ATP and WTA singles rankings (2 lists, 200 entries) | $0.20 |
| All eight lists in full (8 lists, about 11,700 entries) | about $11.75 |
A list is charged when it loads, also when none of its entries match your players or countries; the run message then says how many lists were charged. Nothing is charged for input that can't run, for a list Flashscore did not return, or when the run stops before a list loads. Apify plan discounts apply to both prices: 10% on Bronze, 15% on Silver and 20% on Gold and higher.
Set a spending limit under Run options for large runs. The run stops cleanly before it reaches the limit and keeps everything saved so far.
Schedule it
The ATP and WTA publish new rankings every week, usually on Monday. Create a task with your lists and players, then add a schedule (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 an API or an AI agent
Run it from your code with the Apify API or a client library. For example, with curl (replace the token with your own):
curl -X POST "https://api.apify.com/v2/acts/cleanscrape~tennis-rankings-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"rankings": ["atp", "wta"], "maxEntries": 10}'
Or with Python (pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("cleanscrape/tennis-rankings-scraper").call(run_input={"rankings": ["atp", "atp-race"],"players": ["Jannik Sinner", "Carlos Alcaraz"],})for entry in client.dataset(run["defaultDatasetId"]).iterate_items():print(entry["rankingName"], entry["rank"], entry["name"], entry["points"])
It also works as a tool in Claude, Cursor and other AI assistants that support MCP, through Apify's MCP server. Add this server and sign in with your Apify account when asked:
https://mcp.apify.com?tools=cleanscrape/tennis-rankings-scraper
Then ask in plain words, for example: "Where are Jannik Sinner and Carlos Alcaraz in the ATP ranking and the race this week?" The assistant runs the Actor in your Apify account and reads the results. The prices are the same as in Console.
Match results and statistics
For match results, statistics, point-by-point, form and head-to-head, use the Flashscore Tennis Scraper for Match History 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.
Do I need a Flashscore account?
No. The rankings are public. No account, cookies or API key is used.
Can I export to Excel or Google Sheets?
Yes. Export the dataset as Excel (XLSX) or CSV from the Output tab, or connect Google Sheets through an Apify integration.
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.
How much does it cost?
$1 per 1,000 entries plus $0.002 per list. The top 100 of both singles rankings costs $0.20. See Pricing above.
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.
More tools from CleanScrape
- Flashscore Tennis Scraper: tennis results, statistics, point-by-point and head-to-head
- Kick Sponsor Tracker: which Kick streamers promote which brands, with codes and broadcast hours
- Whatnot Scraper: Whatnot listings with prices and seller stats, and live shows
- Whatnot Seller Tracker: top sellers per category, items sold, sales per day and followers over time
- TikTok Shop Product Scraper: US TikTok Shop prices, sellers and ratings
- Bilibili Scraper: Bilibili videos, danmaku, comments and creators
- App Store Reviews & Google Play Reviews Scraper: reviews from both app stores in one table
- Google Trends Scraper API: search interest over time, by region, related queries and trending searches
- Map Your Show Exhibitor List Scraper: trade show exhibitor lists and booth changes
- Shopify Product Reviews Scraper API: Judge.me and Okendo reviews from Shopify product links
- Google News Scraper and RSS Feed Reader: headlines from Google News and publisher feeds
- Google Jobs Scraper: job listings with salaries and apply links
- Pinterest Scraper API: keyword search, public pin links and board previews; search results may lack a pin link
- Google Hotels Scraper: hotel prices and booking offers for your dates
- Meta Threads Scraper: public Threads posts from accounts or post links
- Likee Scraper API: Likee videos and comments
- Casino Bonus Checker: the casino bonus each affiliate and review site shows, with promo codes, 18+ notices and affiliate IDs
- Career Page Jobs Scraper for Greenhouse, Lever and Ashby: open jobs from company career pages, with salaries and new or closed jobs per company
- Video Frame Extractor for Scene Changes and Thumbnails: still images from video files at scene changes, intervals or timestamps, with contact sheets
Support
Questions or a reproducible problem: use the Issues tab or email contact.cleanscrape@gmail.com with the run ID.
If the Actor was useful, an honest review on its Store page helps other people find it.