Tennis Results & Odds Scraper - ATP, WTA, Challenger, ITF avatar

Tennis Results & Odds Scraper - ATP, WTA, Challenger, ITF

Pricing

from $0.95 / 1,000 match returneds

Go to Apify Store
Tennis Results & Odds Scraper - ATP, WTA, Challenger, ITF

Tennis Results & Odds Scraper - ATP, WTA, Challenger, ITF

Every tennis match TennisExplorer lists for the days you pick: tour, level, tournament, surface, round, both players, set scores with tiebreaks, winner, retirements and average odds. Upcoming matches come with odds too. Filter by tour, level, tournament, player or surface.

Pricing

from $0.95 / 1,000 match returneds

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

Share

Tennis Results & Odds Scraper

Pick a day, or a run of days, and get every tennis match TennisExplorer lists for it, one row per match: date and start time, tour, singles or doubles, level, tournament, surface, round, both players with their seeds, the score set by set with tiebreaks, the winner, how it ended, and the average odds. Days that haven't happened yet give the schedule, with odds and the head-to-head count.

It reads TennisExplorer's public pages. There's no key to get and nothing to log in to.

For scale: TennisExplorer lists 170 finished matches for Saturday 12 September 2026, from the US Open women's final down to ITF events in Egypt and Tunisia.

What it doesn't do

  • No live scores. A match being played when the run reads its day is left out, and the status message counts them. Run it again once they're over.
  • No point-by-point or serve stats. The odds are the match-winner market only.
  • Men's ITF matches come without their tournament. TennisExplorer files all of them under one "Futures" heading, so their surface and round stay empty unless you turn on Match details, which fills both in.
  • The schedule runs a day or two ahead, not more. On 13 September 2026 TennisExplorer had 183 matches for the next day, about 45 for the day after and none further out.
  • Retirements are read from the score. TennisExplorer puts the winner first but doesn't write "retired" in its results. So a finished match whose last set stopped short is marked retired, and one with no games at all walkover. A player who pulls out between two sets of a best-of-five match reads as an ordinary win.

Input

Last days. The last few full days of results, ending yesterday. Set it to 1 on a daily schedule and each run brings in yesterday's matches.

Upcoming days. Today's matches plus the schedule after it. 1 is today only, 2 adds tomorrow.

From date, To date. A fixed range instead, written like 2026-09-01, up to 366 days per run. Leave To date empty and the run goes up to today.

Match types. Men's singles, men's doubles, women's singles, women's doubles. Empty means all four.

Levels. ATP and WTA tour events (Grand Slams included), Challenger, ITF, other lower-level events, and exhibitions. Challenger and ITF are known from the tournament's name, the rest from TennisExplorer's tour calendar.

Tournaments, Players. Part of a name as TennisExplorer writes it (US Open, Sinner), or a link to the tournament's or the player's TennisExplorer page. For players either side counts, doubles partners included. Accents and capitals don't matter.

Surfaces. Hard, clay, grass, indoors.

Average odds. On unless you turn it off.

Round. On unless you turn it off. It reads each tournament's page once, and the qualifying page when a match isn't in the main draw. Turning it off makes long ranges finish sooner.

Match details. Off unless you turn it on. It opens each match's own page and adds the players' full names, rankings, birth dates, height and playing hand, plus every bookmaker's price with its opening price. That's one more page per match, so a run with details stops at 2,000 matches.

Player countries. Off unless you turn it on. One page per player, read once per run.

Maximum matches. 1,000 unless you change it, up to 25,000 per run.

{
"lastDays": 7,
"matchTypes": ["atp-single"],
"levels": ["challenger"],
"surfaces": ["clay"],
"maxMatches": 2000
}

Output

One row per match, day by day, in the order TennisExplorer lists them.

FieldExampleNotes
matchId3321141TennisExplorer's id for the match
date2026-09-12the day TennisExplorer puts the match on, in Prague time
time22:15start time in Prague time, empty when TennisExplorer has none
startTimeUtc2026-09-12T20:15:00Zthe same moment in UTC
statusfinishedor scheduled
outcomecompletedretired, walkover, or empty on a match not played yet
tourWTAATP for men, WTA for women
matchTypesinglesor doubles
leveltourchallenger, itf, other-lower, exhibition, or empty when unknown
tournamentUS Openas TennisExplorer names it
tournamentCountryCodeUSwhere the tournament is played
surfacehardclay, grass or indoors
roundfinalas TennisExplorer writes it, such as 1. round or Qualification - 2. round
player1, player2Rybakina E., Sabalenka A.in TennisExplorer's order, winner first on a finished match. A doubles team reads Latinovic S. / Poljicak M.
player1Seed, player2Seed2, 1empty when unseeded
winnerRybakina E.
score6-4, 5-7, 6-2from player 1's side. A tiebreak shows the loser's points: 7-6(3)
player1Sets, player2Sets2, 1TennisExplorer's sets column. On a retirement it counts the unfinished set for the winner
sets[{"player1":6,"player2":4,"tiebreak":null}, …]games per set
player1Odds, player2Odds2.26, 1.64the bookmakers' average. For a finished match, their last prices before it started
player1H2H, player2H2H5, 0head-to-head wins, on scheduled matches
player1Url, player2Url, tournamentUrl, urlthe TennisExplorer pages

With Match details on, each row also carries player1FullName, player1Rank, player1BirthDate, player1HeightCm and player1Plays, the same for player 2, bookmakerOdds (each bookmaker's price for both players and its opening price) and detailsRead. On a doubles match the full names cover both partners, and rank, birth date, height and hand stay empty, since one value can't describe two players. With Player countries on: player1Country and player2Country.

The run also leaves RUN_REPORT in its key-value store: what each day listed and returned, what was left out and why, and why the run stopped.

What you pay

Each match in your dataset is one charge. Nothing else costs anything: not a day with no matches, not a day TennisExplorer didn't answer, and not a match your filters left out or one still being played. With Match details on, a match whose own page couldn't be read comes back without the details and isn't charged. If you set a maximum charge for the run, it stops when that's reached, and every row you get has been paid for. The price is on the Pricing tab.

Limits

  • 366 days and 25,000 matches per run, 2,000 with Match details on.
  • The actor reads one page a second. A day is one page. Round adds one page per tournament, Match details one page per match, Player countries one page per player.
  • The date is the one TennisExplorer gives the match, in Prague time. A match that starts at 00:30 in Prague sits on that new day, even when it was still the evening before where it was played.
  • When TennisExplorer stops answering for a while, the actor waits two minutes and carries on. If a day still can't be read, the status names it and nothing is charged for it.

Where the data comes from

TennisExplorer, tennisexplorer.com. What you do with the data is up to you, and TennisExplorer's own terms of use apply to its content.

Questions

How do I get yesterday's results every morning? Schedule the actor with Last days set to 1.

How do I get tomorrow's matches with odds? Set Upcoming days to 2 for today's and tomorrow's schedule. Odds keep moving until a match starts, so run it close to when you need them.

Why is the round empty on some matches? Round is off, or it's a men's ITF match, or a UTR event (they come without rounds), or the tournament's pages didn't list that match. Match details fill in the round for any match that has one.