Tennis Scraper
Pricing
from $0.50 / 1,000 results
Tennis Scraper
ATP and WTA match results from ESPN, one row per singles or doubles match with the round, games per set, tiebreak points and ESPN's result line. 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.
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 hours ago
Last modified
Categories
Share
Tennis Scraper reads ESPN's ATP and WTA scoreboards and returns one row per match: tournament, draw, round, both players or doubles pairs with their countries, games per set with tiebreak points, and ESPN's result line, such as (2) Andrey Rublev (RUS) bt Kyrian Jacquet (FRA) 7-6 (7-0) 6-1. Pick a date, raise Maximum rows above the prefilled 100 and click Start: every tournament running that day comes back with its whole draw, qualifying included. 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 match row contain?
| Field | Description |
|---|---|
league, name | Tour (atp or wta) and tournament name, e.g. AITO Hangzhou Open. |
draw | The event within the tournament: Men's Singles, Men's Doubles, Women's Singles or Women's Doubles. |
round | Round as ESPN names it, from Qualifying 1st Round and Qualifying Final through Round 1, Round 2, Quarterfinal and Semifinal to Final. |
status, statusDetail, completed | pre, 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. |
period | Sets played so far. |
home, away | The 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.tiebreaks | Games won in each set, and the tiebreak points of each set, null where a set had no tiebreak. |
result | ESPN's score line with seeds in brackets, ret after a retirement and w/o for a walkover. null before the match starts. |
startsAt | Scheduled start in UTC. |
venue.name | City and country of the tournament, e.g. Hangzhou, China PR. |
url | The 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.
How to scrape ATP and WTA results
- In Leagues, keep
atpandwtaor remove one. Each tour includes singles and doubles. - Leave What to return on Matches and results, or pick Tennis news for ESPN's latest tennis stories.
- 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.
- Set Game status to Finished for results only, or to Not started yet for upcoming matches.
- 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.
How much does it cost to scrape tennis results?
| Free plan | Starter | Scale | Business | |
|---|---|---|---|---|
| 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.
Limits
- There are no rankings, player statistics such as aces or break points, point-by-point data, court surface or prize money. Seeds appear only inside
result. - ESPN listed no betting lines for ATP or WTA matches in September 2026, so
oddsstaysnull. - Canceled matches come back as
postwithcompletedset tofalseand noresult. Finished leaves them out. - One date can hold several hundred matches. Tours are read in the order given, so once
atpalone fills Maximum rows,wtais 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.
venuegives the city and country only, without the court.
FAQ
Is it legal to scrape tennis results from ESPN?
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.
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.
Related scrapers
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.