New · lists back to 1973

The ATP and WTA rankings of any week, as data.

Today's top 100, the list of any past week, or every weekly list of a whole season, one row per player with rank, points, movement since the previous list, country and age. ATP lists go back to 1973, WTA lists to 2001. Ask for the layout of Jeff Sackmann's atp_rankings and wta_rankings CSV files and code that reads his files keeps working; a second mode returns every ATP and WTA player in his atp_players and wta_players columns.

Independent tool, not affiliated with Jeff Sackmann, Tennis Abstract, Flashscore, the ATP, the WTA or the ITF.

default run · measured22 Oct 2026

ATP and WTA top 100, the current lists 2 s

rows
200 (100 per tour)
run time
2 seconds
cost
~$0.20
a season of weekly top-100 lists
4,200 rows per tour
rank · previousRank · rankChange · points
on every row, with name, country and age
since 1973ATP lists of any week
since 2001WTA lists of any week
top Npay only for the ranks you keep
his columnsatp_rankings and atp_players layout
all listssingles, race and doubles
Live data

Straight from the tennis database.

What your runs read: the weekly ranking lists stored for each tour, and the players behind them. The latest list is read the week it is published.

What you get

A row per player, a list per week.

The standard layout has one named field per fact. With rankingFormat set to sackmann the rows carry Jeff Sackmann's atp_rankings columns plus the player's name, official id and list.

Ranking row

  • list
  • rankingDate
  • rank
  • previousRank
  • rankChange
  • points
  • tournamentsPlayed

Player

  • name
  • playerId
  • officialId
  • country
  • birthDate

Sackmann ranking layout

  • ranking_date
  • rank
  • player
  • points
  • name
  • official_id
  • list

Player list mode: playerList

  • player_id
  • name_first
  • name_last
  • hand
  • dob
  • ioc
  • height
  • official_id
  • tour

Ways to run it

rankingLists

Every list

ATP and WTA singles, season race and doubles rankings.

rankingDate

Any week

Give a date, get the list of the week containing it: ATP from 1973, WTA from 2001.

rankingDate · rankingDateTo

A whole season

Every weekly list between two dates in one run. Keep the top N with maxRank.

mode · playerList

All players

Every official ATP and WTA player with ids and names, plus hand, birth date, country and height where known.

Use cases

Rank histories without maintaining a scraper.

modellers

Prediction models

The rank and points a player had in the week of a match.

researchers & journalists

Rank histories

How long a player stayed in the top 10, ranking movement by season.

apps & fantasy sites

A current top 100

A top-100 table on your site, refreshed with one scheduled task.

AI agents

Who was number 1?

"Who was number 1 on 1 January 2000?" answered from the list itself.

How to run

From a date to a ranking table.

  1. 01

    Open it on Apify

    Sign in with a free Apify account. No card needed to try.

  2. 02

    Pick lists and dates

    Set rankingLists, a rankingDate (and rankingDateTo for a range), and maxItems above the rows you expect.

  3. 03

    Export or schedule

    Download CSV, Excel or JSON, or schedule a weekly task to keep a dataset current.

More inputs to try

  • { "rankingLists": ["atp"], "rankingDate": "2000-01-01", "maxRank": 100, "maxItems": 100 }the ATP top 100 of one past week
  • { "rankingLists": ["wta"], "rankingDate": "2025-01-01", "rankingDateTo": "2025-12-31", "maxRank": 50, "rankingFormat": "sackmann", "maxItems": 3000 }weekly WTA top-50 lists of 2025, his wta_rankings columns
  • { "mode": "playerList", "rankingLists": ["atp"], "maxItems": 500 }500 players of the ATP list
  • { "rankingLists": ["atp-race", "wta-race"], "maxRank": 50 }the race rankings, top 50 of each
{
  "rankingLists": ["atp"],
  "rankingDate": "2024-01-01",
  "rankingDateTo": "2024-12-31",
  "maxRank": 100,
  "rankingFormat": "sackmann",
  "maxItems": 6000
}

Every weekly ATP top-100 list of 2024 in the columns of Jeff Sackmann's atp_rankings files.

Reliability

Runs that don't break.

The same factory promises as every CrawlPlant Actor. How the factory works

Current

The latest list is read the week it is published.

A season in seconds

A default run of 200 rows takes 2 seconds; a whole season of weekly top-100 lists is about 4,200 rows per tour.

Official lists

Ranks come from the official ATP and WTA ranking lists and player profiles.

Drop-in columns

The Sackmann layout keeps code written against his files working.

A summary every run

Each run writes a summary with the rows saved and any warnings.

Pricing

Pricing

$1.00per 1,000 ranking rows

Down to $0.70 per 1,000 ranking rows on Apify's Gold plan. Player lists are $3.00 per 1,000. Platform usage is included.

  • The current ATP and WTA top 100, 200 rows: about $0.20
  • The ATP top 100 of one past week, 100 rows: about $0.10
  • A season of weekly top-100 lists, about 4,200 rows per tour: about $4.20
  • 500 players of the ATP list: about $1.50
  • No subscription. The free plan is enough to try it
Events and prices per 1,000, on Apify's Free and Gold plans
eventFreeGold
ranking row one player in one list$1.00$0.70
player one row of the player list$3.00$2.10
FAQ

About this Actor.

General questions are on the home page. Need match results, odds or Elo too? See Flashscore Tennis. Something else? piotr@crawlplant.com

How far back does it go?

ATP lists from 1973 and WTA lists from 2001.

Which date do I give for a weekly list?

Any day: you get the list of the week containing it. For every list in a period, give rankingDate and rankingDateTo and set maxItems above the total.

Is this Jeff Sackmann's data?

No. It is an independent reader of the official ATP and WTA ranking lists and player profiles. With rankingFormat: "sackmann" the rows come in the same column layout as his atp_rankings files, so code written for them keeps working.

Does maxRank apply to the player list?

No: the player list returns players, not ranks. Use maxItems to cap it.

Can an AI agent use it?

Yes. Add https://mcp.apify.com?tools=crawlplant/tennis-rankings to any MCP client and the agent can answer "who was number 1 on 1 January 2000?" from the list itself.