Tennis Rankings Scraper — ATP & WTA Rankings
Pricing
from $1.00 / 1,000 ranking records
Tennis Rankings Scraper — ATP & WTA Rankings
Scrape current ATP (men's) and WTA (women's) world tennis rankings: rank, previous rank, rank change, points, player name, age and country. Pulls the full official top-150 per tour from ESPN's public JSON API. HTTP-only, MCP-ready.
Pricing
from $1.00 / 1,000 ranking records
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
Tennis Rankings Scraper pulls the current world rankings for both the ATP (men's) and WTA (women's) professional tennis tours, straight from ESPN's public JSON API. Each run returns one record per player with rank, previous rank, rank change, points, player name, age and country. It is HTTP-only, needs no API key or login, and is MCP-ready for structured JSON output.
Best fit and connected workflows
Use this Actor when your workflow needs an up-to-date, machine-readable view of the world's top tennis players.
Common routing patterns:
- ATP + WTA in one run — the full official top-150 for both tours as a single dataset.
- Single tour — just men's or just women's rankings.
- Top-N only — cap
maxResultsPerTourto keep just the top 10, 50, etc. to save on billing. - Rich player rows —
includeAthleteDetailsadds age, birthplace, headshot and the ESPN player URL.
The output is a clean flat table that works well for dashboards, podcasts, sports-alert services, research pipelines, and AI agent workflows that need a dependable rankings tool call with a simple dataset readback.
Practical scenario
An analyst named Priya wants this week's ATP top 50 for a client briefing. She sets tours to ['atp'], maxResultsPerTour to 50, and maxResults to 50. The dataset returns rows like { rank: 1, playerName: 'Jannik Sinner', points: 13450, country: 'Italy', rankChange: 0 }, which she drops straight into a slide. Runs every Monday, she gets a fresh, citable rankings table with no API key or scraping setup.
Input
| Field | Type | Purpose |
|---|---|---|
tours | array | Tours to scrape: atp, wta, or both. Defaults to both. |
maxResultsPerTour | integer | Cap on player records per tour, in rank order. Defaults to 150 (full list). |
maxResults | integer | Global cap on billable player records for the run. Defaults to 300. |
includeAthleteDetails | boolean | Add extended fields (age, birthplace, headshot, player URL). Defaults to true. |
proxyConfiguration | object | Optional proxy. Not needed by default; ESPN's rankings API is public. |
Focused JSON example
{"tours": ["atp", "wta"],"maxResultsPerTour": 150,"maxResults": 300,"includeAthleteDetails": true}
Output
Each dataset record is one player ranking row. Key fields:
| Field | Type | Meaning |
|---|---|---|
tour | string | atp or wta |
tourName | string | Human tour name |
rank | integer | Current world ranking position (1 = No. 1) |
previousRank | integer | Previous ranking position |
rankChange | integer | Movement (+N up, -N down, 0 held) |
trend | string | up, down, or same |
points | number | Ranking points |
playerId | string | Stable ESPN player identifier |
playerName | string | Player display name |
firstName / lastName | string | Split player name |
country / countryCode | string | Full country name and ISO alpha-3 code |
age / birthPlace | integer / string | Player age and birthplace (when includeAthleteDetails) |
headshotUrl / playerUrl | string | Headshot image and ESPN player page (when includeAthleteDetails) |
scrapedAt | string | ISO 8601 UTC scrape timestamp |
Example record:
{"tour": "atp","tourName": "ATP (men)","rank": 1,"previousRank": 1,"rankChange": 0,"trend": "same","points": 13450,"playerId": "3623","playerName": "Jannik Sinner","firstName": "Jannik","lastName": "Sinner","country": "Italy","countryCode": "ITA","age": 24,"birthPlace": "San Candido, Italy","headshotUrl": "https://a.espncdn.com/i/headshots/tennis/players/full/3623.png","playerUrl": "https://www.espn.com/tennis/player/_/id/3623/jannik-sinner","scrapedAt": "2026-08-17T14:00:00.000Z"}
Pricing
This Actor is pay-per-event (usage pass-through):
- Actor start — a small fixed charge per run, scaled by allocated RAM.
- Ranking record — charged once per player row delivered to the dataset.
Browse results for free on the dataset preview; you only pay per record you actually keep.
Limitations
- Rankings reflect the latest snapshot ESPN publishes; there can be a short lag after ranking releases.
- The published list is the top 150 per tour.
maxResultsPerTourtherefore caps at 150.