Tennis Explorer Stats Scraper avatar

Tennis Explorer Stats Scraper

Pricing

from $5.46 / 1,000 results

Go to Apify Store
Tennis Explorer Stats Scraper

Tennis Explorer Stats Scraper

Get ATP and WTA match results, upcoming fixtures with odds, rankings, and player profiles by name, not an internal ID. No login needed. Built for fantasy tennis players, bettors, analysts, and journalists who need clean, accurate tennis data fast.

Pricing

from $5.46 / 1,000 results

Rating

0.0

(0)

Developer

Fabricio

Fabricio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Tennis Stats Scraper

Get ATP and WTA match results, upcoming fixtures, betting odds, rankings and full player profiles. Search by player name, not an internal ID. No login, no API key.

Who uses it?

WhoWhy
Fantasy tennis playersFresh results and player form to set a lineup.
BettorsOdds alongside results to backtest a model, plus pre-match odds on upcoming fixtures.
AnalystsRankings, head to head records and match detail for building historical datasets.
JournalistsDaily results and player bios to write up quickly, without digging through a site by hand.

What it does

  • Match results, by date or date range, filtered by tour (ATP or WTA, singles or doubles). Every row has the score set by set, who won, and the odds that were listed for both players.
  • Upcoming fixtures, the same way, for matches that have not been played yet, with pre-match odds where the market is already open.
  • Rankings, ATP and WTA, current or from a past year.
  • Player profiles, searched by name: country, height, weight, age, plays which hand, and current plus career-best rank in both singles and doubles.
  • An optional match detail add-on for Match results and Upcoming fixtures: the court surface, the round, the head to head record between the two players, and average plus best odds across every bookmaker tracked. This is the one thing none of the other tennis scrapers on Apify pull together in a single run.

What data you get

ModeRow shape
Match resultsTournament, date, time, both players, score, winner, odds. With match detail: surface, round, head to head, aggregated odds.
Upcoming fixturesSame shape as Match results, before the match is played: no score or winner yet.
RankingsRank, move since last update, player, country, points, tour, year.
Player profilesName, country, height, weight, age, plays, current and career-best rank in singles and doubles, photo.

Use cases

A daily results feed.

{ "mode": "results", "date": "yesterday", "tour": "atp-single" }

Betting research with odds aggregated across every bookmaker tracked.

{ "mode": "results", "date": "2026-08-09", "tour": "atp-single", "includeMatchDetail": true }

Every row also carries best_odds_player1 / best_odds_player2 (the best price found across every bookmaker tracked) and avg_odds_player1 / avg_odds_player2 (the average across all of them), not just one bookmaker's number.

Tomorrow's card with pre-match odds.

{ "mode": "upcoming", "date": "today", "tour": "wta-single" }

A player's current form.

{ "mode": "players", "playerNames": ["Carlos Alcaraz", "Iga Swiatek"] }

Where a player stood at a specific point in history.

{ "mode": "rankings", "rankingTour": "atp-men", "rankingYear": 2020 }

How the input is organised

SectionApplies toKey fields
ModeEvery runmode: results, upcoming, rankings, or players.
Match results and Upcoming fixturesresults and upcomingdate (or dateFrom/dateTo), tour, includeMatchDetail.
RankingsrankingsrankingTour, rankingYear (optional, leave empty for the current table).
Player profilesplayersplayerNames (searched by name) or playerIds (a known ID from a previous run).

maxItems applies to every mode and caps how many rows the run writes.

Limits and responsible use

  • Match statistics like aces or double faults are not tracked by this Actor. The source does not consistently publish them for every match, especially lower-tier events, so a field that is empty most of the time was left out rather than shipped half-working.
  • Match detail's odds are a summary (best price and average across tracked bookmakers), not a full line-movement history for every bookmaker. That level of detail is a lot of nested data for a use case almost nobody needs; if you do need it, say so and it can be added.
  • Odds are whatever was listed at scrape time. Pre-match odds move right up until a match starts, and this Actor does not guarantee it caught the final price.
  • This Actor reads only public pages. It respects reasonable request rates and does not require or store any login.

Local development

bun install
bun test # unit tests against saved sample pages
bun run src/main.ts # local run, reads storage/key_value_stores/default/INPUT.json