ATP & WTA Tennis Scraper avatar

ATP & WTA Tennis Scraper

Pricing

from $0.50 / 1,000 results

Go to Apify Store
ATP & WTA Tennis Scraper

ATP & WTA Tennis Scraper

ATP and WTA tennis from ESPN: match results with set scores and tiebreaks, the weekly singles rankings and a tournament calendar with champions. One date returns the full draws of every tournament running that day, qualifying rounds included.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

deriverge s.r.o.

deriverge s.r.o.

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Share

ATP & WTA Tennis Scraper reads ESPN's tennis data in three forms: one row per match with the draw, round, games per set, tiebreak points and ESPN's result line; the current ATP and WTA singles rankings, top 150 of each; and a tournament calendar with dates, location and the winners of finished finals. Pick a date, raise Maximum rows above the prefilled 100 and click Start to get every match of that day. Doubles rankings, point-by-point data and player statistics are not included. It costs $1.00 per 1,000 results on the Free plan ($0.50 on Business), and the $5 of monthly credit in Apify's Free plan covers about 5,000 results.

What does a row contain?

Match rows

FieldDescription
league, nameTour (atp or wta) and tournament name, e.g. AITO Hangzhou Open.
drawThe event within the tournament: Men's Singles, Men's Doubles, Women's Singles or Women's Doubles.
roundRound as ESPN names it, from Qualifying 1st Round and Qualifying Final through Round 1, Round 2, Quarterfinal and Semifinal to Final.
status, statusDetail, completedpre, in or post. After a match statusDetail reads Final, Retired, Walkover or Canceled, during one 2nd Set, and before one the start time in US Eastern time.
periodSets played so far.
home, awayThe two sides in the order ESPN lists them, since tennis has no home player. Each has kind (athlete in singles, pair in doubles), name, location (the country) and winner.
home.periodScores, home.tiebreaksGames won in each set, and the tiebreak points of each set, null where a set had no tiebreak.
resultESPN's score line with seeds in brackets, ret after a retirement and w/o for a walkover. null before the match starts.
startsAtScheduled start in UTC.
venue.nameCity and country of the tournament, e.g. Hangzhou, China PR.
urlThe tournament's scoreboard on espn.com.

A doubles pair is one side. Its name joins both players (Francisca Jorge / Matilde Jorge), location joins their countries when they differ (Great Britain / Poland), and a deciding match tiebreak shows up as a third set won 1 to 0, as in 6-3 3-6 1-0 (10-3). Tennis news rows carry ESPN's tennis stories with title, summary, publishedAt and url.

Ranking rows

FieldDescription
type, rankingranking, and the list: ATP singles or WTA singles.
rank, previousRank, rankChangePosition now and in the previous weekly list, and the places gained (positive) or lost (negative): 8, 11 and 3 for Novak Djokovic on 11 October 2026.
pointsRanking points, 11000 for the ATP number 1 on that day.
rankingDateRelease date of the ranking, ISO 8601.
name, athleteId, country, countryCode, age, urlPlayer, ESPN's player ID, country (Italy, ITA), age in years and the player page on espn.com.

Tournament rows

FieldDescription
type, tournamentId, nametournament, ESPN's ID of the edition (5-2026) and the name, e.g. Kinoshita Group Japan Open Tennis Championships.
startDate, endDate, locationTournament dates in UTC and the city, e.g. Tokyo, Japan.
status, statusDetail, majorpre, in or post, ESPN's status text, and true for the four Grand Slams.
drawsEvents played there, e.g. Men's Singles and Men's Doubles.
championsWinner of each finished final with draw and country: Carlos Alcaraz (Spain) in Men's Singles at Tokyo. Empty until a final is played.

How to scrape ATP and WTA results

  1. In Leagues, keep atp and wta or remove one. Each tour includes singles and doubles.
  2. Leave What to return on Matches and results, or pick ATP and WTA singles rankings, Tournament calendar or Tennis news. Rankings need no dates.
  3. For matches, enter the same date in From date and To date. ESPN answers with the draws of every tournament running that day, so one date covers a tournament week, and a longer range adds the following weeks with each match once. For the calendar, the dates pick every tournament that overlaps them, up to a year; left empty, they run from a week ago to 60 days ahead.
  4. Set Game status to Finished for results only, or to Not started yet for upcoming matches.
  5. Click Start. The Output tab shows the matches as a table; download it as CSV, Excel or JSON, or call the actor through the API:
{
"leagues": ["atp", "wta"],
"mode": "scoreboard",
"dateFrom": "2026-09-28",
"dateTo": "2026-09-28",
"statusFilter": "final",
"maxItems": 1000
}

Example output

A men's singles semifinal from a run on 28 September 2026. Jacquet is home only because ESPN lists him first.

{
"key": "espn:atp:183374",
"type": "game",
"sport": "tennis",
"league": "atp",
"leagueName": "ATP Tour",
"gameId": "183374",
"name": "AITO Hangzhou Open",
"shortName": "AITO Hangzhou Open",
"round": "Semifinal",
"startsAt": "2026-09-28T09:40:00.000Z",
"status": "post",
"statusDetail": "Final",
"completed": true,
"period": 2,
"clock": null,
"seasonYear": 2026,
"seasonType": null,
"home": {
"id": "7509",
"kind": "athlete",
"name": "Kyrian Jacquet",
"shortName": "K. Jacquet",
"location": "France",
"score": null,
"winner": false,
"record": null,
"position": 1,
"homeAway": "home",
"periodScores": [
6,
1
],
"tiebreaks": [
0,
null
],
"logo": "https://a.espncdn.com/i/teamlogos/countries/500/fra.png"
},
"away": {
"id": "2642",
"kind": "athlete",
"name": "Andrey Rublev",
"shortName": "A. Rublev",
"location": "Russia",
"score": null,
"winner": true,
"record": null,
"position": 2,
"homeAway": "away",
"periodScores": [
7,
6
],
"tiebreaks": [
7,
null
],
"logo": "https://a.espncdn.com/i/teamlogos/countries/500/rus.png"
},
"venue": {
"name": "Hangzhou, China PR",
"city": null,
"state": null,
"country": null,
"indoor": null
},
"attendance": null,
"neutralSite": null,
"broadcasts": [],
"odds": null,
"url": "https://www.espn.com/tennis/scoreboard/tournament/_/eventId/1001-2026/competitionType/1",
"draw": "Men's Singles",
"result": "(2) Andrey Rublev (RUS) bt Kyrian Jacquet (FRA) 7-6 (7-0) 6-1"
}

How ESPN lists a tournament week

A request for one day returns every match ESPN has for each tournament running on it: finished rounds, matches in play and scheduled ones. On 27 September 2026 a run without dates returned 505 matches from 9 tournaments, the Chengdu Open and the AITO Hangzhou Open on the ATP side and seven WTA events, among them the Korea Open and the Singapore Tennis Open. Later rounds are listed before their players are known, with TBD as the name and the unfilled text M/d - 'TBD' in statusDetail, and they fill in as the draw moves on.

For a live feed, turn on Return only what changed since the last run, give the run a Watch name and schedule it. Each run returns new matches and matches whose status text, games per set, tiebreak points or winner changed since the run before. A match in play therefore comes back as its games move, and a later-round match comes back when ESPN puts a player in its TBD slot.

Rankings and the tournament calendar

ESPN updates each tour's singles ranking once a week and lists the top 150. On 11 October 2026 the ATP list was dated 1 October and the WTA list 24 September, so rankingDate tells how fresh a list is. Schedule a weekly run with Return only what changed since the last run on, and only players whose rank or points moved come back.

A calendar run on 11 October 2026 returned 41 tournaments, 12 from the ATP feed and 29 from the WTA feed, which includes WTA 125 events. Combined events such as the China Open appear in both feeds with all four draws. In the change mode, a tournament returns when its status moves or a final produces a champion.

How much does it cost to scrape tennis results?

Free planStarterScaleBusiness
1,000 results$1.00$0.80$0.65$0.50

You pay only for the events in the table. There is no start fee, and compute time and proxies are included.

The 505 matches of that run cost $0.505 on the Free plan and $0.2525 on Business. Both singles rankings, 300 rows, cost $0.30.

Limits

  • Rankings are singles only, top 150 per tour, as ESPN lists them. There are no doubles rankings, player statistics such as aces or break points, point-by-point data, court surface or prize money. Seeds appear only inside result.
  • Tournament rows have no draw size or surface, and champions comes from finals ESPN marks as finished.
  • ESPN listed no betting lines for ATP or WTA matches in September 2026, so odds stays null.
  • Canceled matches come back as post with completed set to false and no result. Finished leaves them out.
  • One date can hold several hundred matches. Tours are read in the order given, so once atp alone fills Maximum rows, wta is not read at all: runs for 25 September 2026 with the prefilled 100 returned ATP matches only. A run without the field stops at 2,000.
  • A run covers at most 120 days.
  • venue gives the city and country only, without the court.

FAQ

Results, draws and schedules are public sports facts that ESPN shows to anyone, and the actor reads them from ESPN's public JSON feeds without an account. Player names appear because they are part of the result; nothing else about the players is collected. You are responsible for how you use and republish the data.

Where do the rankings come from?

From ESPN, the same source as the matches. ESPN republishes the ATP and WTA singles lists once a week, and rankingDate is the date of the list it shows. The actor does not read the tours' own websites.

How are retirements and walkovers shown?

statusDetail says Retired or Walkover, completed is true and the winner flag is set. A retirement keeps the games played so far, e.g. 6-2 1-0 ret; a walkover has empty set scores and w/o at the end of result.

Support

This actor is built and maintained by deriverge s.r.o., a software company based in the Czech Republic. If a run fails or a field you need is missing, please open an issue in the Issues tab or write to us at info@deriverge.com. We respond in English and Czech. Runs can be scheduled in Apify Console or started from the API tab, which has examples for Python, JavaScript and cURL and works with Make, Zapier, n8n and the Apify MCP server. If the actor saves you time, a short review helps other people find it.