TennisExplorer Scraper — ATP/WTA Results, Rankings, Players avatar

TennisExplorer Scraper — ATP/WTA Results, Rankings, Players

Pricing

Pay per event

Go to Apify Store
TennisExplorer Scraper — ATP/WTA Results, Rankings, Players

TennisExplorer Scraper — ATP/WTA Results, Rankings, Players

Extract ATP, WTA, Challenger and ITF match results, upcoming schedules, player profiles and rankings from TennisExplorer, with derived match status and a pinned UTC day boundary.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Oswaldo Carabano

Oswaldo Carabano

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

TennisExplorer Results, Schedule, Players & Rankings Scraper

Extract ATP, WTA, Challenger and ITF tennis data from TennisExplorer: finished match results with set-by-set scores, upcoming schedules, player profiles with career history, and ranking tables going back to 1995.

🚧 Pre-release. Not published yet.

What makes this one different

1. Match status you can actually filter on. TennisExplorer does not label retirements or walkovers anywhere — an unfinished match just shows a scoreline that never closes. This Actor derives a status field (completed, retired, walkover) and it works for best-of-3 and best-of-5 alike, without needing to know which is which. Validated against 2,364 matches across nine tournaments with different formats, including Davis Cup, which mixes both on the same page. About 4.6 % of matches are affected.

retired means exactly the match started and did not finish — retirement, injury, default, or an abandoned dead rubber. The source does not distinguish them, so neither do we.

2. A day boundary that does not move. The site decides which matches belong to which day from a timezone cookie. The same date returned 227 matches in one timezone and 269 in another during testing. Every request here is pinned to UTC, so two runs of the same date return the same set of matches. Every time field is UTC and named start_time_utc.

3. Full names in doubles. The site truncates the visible team name ("Roger-Vas"). This Actor reads the full name from the underlying attribute. That is 17.4 % of all rows.

4. History back to 1995. The same input works for any past date. A full season is around 148,000 matches — that is measured, not estimated.

Input

entityType picks what the run collects, and it decides which of the other fields apply. Everything has a default, so {} returns yesterday's finished matches across all four tours.

FieldApplies toDefaultWhat it does
entityTyperesultsSee the four values below
dateFrom / dateToresults, scheduleyesterdayDay range, YYYY-MM-DD or relative
toursresults, scheduleall fourWhich tours to include
includeOddsresults, schedulefalseHome/Away odds from the results table
includeMatchDetailresults, schedulefalseRound, surface, rankings, head-to-head. One extra request per match
rankingTourrankingsatp-menWhich ranking table
rankingTyperankingssinglesSingles, doubles or race
rankingDaterankingslatestA published ranking week
playerUrlsplayersnonePlayer pages to read
playerMatchHistoryYearsplayers0Past seasons of match history per player. Each year is one extra request
maxItemsall10000Hard cap on delivered rows. You are charged only for rows delivered

The four entityType values

ValueWhat you get
resultsFinished matches (150–600 per day)
scheduleUpcoming and in-progress matches (~200 per day)
playersPlayer profiles, optionally with match history
rankingsATP or WTA tables, 50 rows per page

One entity type per run, on purpose: the four have genuinely different shapes, and mixing them would give you a file full of empty columns.

tours — the four values

atp-single (ATP singles) · atp-double (ATP doubles) · wta-single (WTA singles) · wta-double (WTA doubles).

All four are selected by default, and leaving them that way is the cheapest option: the site serves all four in a single request per day, so deselecting some saves you nothing and can only lose you rows.

rankingTour and rankingType

FieldValues
rankingTouratp-men (ATP, men) · wta-women (WTA, women)
rankingTypesingles · doubles · race

race is the current-season race table, so it only exists for the season in progress — asking for a race from a past season gives you an empty table, not an error.

Dates: dateFrom, dateTo and rankingDate

dateFrom and dateTo take either an absolute YYYY-MM-DD or a relative date: today, yesterday, tomorrow, -7d, +3d. Use the relative form in a scheduled task — a fixed date keeps returning rows forever, but they stop being yesterday's.

Days are cut at 00:00 UTC, always. The site's own day boundary moves with the visitor's timezone; pinning it to UTC is what makes two runs of the same range comparable.

rankingDate is different: it has to be one of the weeks the site actually publishes, which are Mondays, not any date you like. Leave it empty for the latest table. If you pass a date that is not a published week, the run does not fail — the site serves the nearest table and the log tells you which one it used and lists the weeks available.

Output

One entity type per run, so the file you download has one clean shape:

entityTypeRowsTypical size
resultsFinished matches for a date range150–600 per day
scheduleUpcoming and in-progress matches~200 per day
playersProfiles, optionally with match history1 per player
rankingsATP or WTA tables, singles / doubles / race50 per page

A single day of results costs one request. A full season is 365.

Pricing

Two tiers, so bulk history is actually affordable:

  • $0.0015 per result for the first 10,000 rows of a run
  • $0.0003 per result after that
  • $0.0024 surcharge per match when includeMatchDetail is on
  • Free to start a run
  • Failed requests are never charged. They go to the ERRORS record instead.

A week of results is about $4. A full season of ~148,000 matches is about $56.

Betting odds are off by default

includeOdds is off on purpose. The odds on this site come from bookmakers, not from the site itself, and redistributing them sits in a very different position from match scores. Turn it on only if you have your own basis for using them.

Data notes

  • All times and dates are UTC.
  • Players under 18 are returned with birth_year instead of a full birthdate, and without a photo URL.
  • For a match that did not finish, the site's result column is a won/lost flag, not a set count — it reads 1-0 no matter how many sets were played. home_sets and away_sets are recounted from the scoreline in that case, so they are never the flag. sets always carries the raw scoreline.
  • maxConcurrency is capped to what fits in the memory the run was given. Give a backfill 1024 MB or more if you want it to go fast.

Not affiliated

This Actor is an independent tool. It is not affiliated with, endorsed by, or connected to TennisExplorer or its operator.

Privacy requests: privacy@actorstack.dev