Tennis Scraper - Results, Schedule & Betting Odds (ATP, WTA) avatar

Tennis Scraper - Results, Schedule & Betting Odds (ATP, WTA)

Pricing

from $2.00 / 1,000 match scrapeds

Go to Apify Store
Tennis Scraper - Results, Schedule & Betting Odds (ATP, WTA)

Tennis Scraper - Results, Schedule & Betting Odds (ATP, WTA)

Tennis results and upcoming matches from TennisExplorer: ATP, WTA, Challenger, ITF, singles and doubles. Set-by-set scores, closing and pre-match betting odds, plus optional round, surface, rankings, head-to-head and opening vs. closing odds from ~15 bookmakers.

Pricing

from $2.00 / 1,000 match scrapeds

Rating

0.0

(0)

Developer

Poetsc Data

Poetsc Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

What does Tennis Scraper do?

Tennis Scraper collects professional tennis matches from TennisExplorer for any date or date range: ATP, WTA, Challenger, ITF/UTR events, singles and doubles. It works in two modes:

  • Results: finished matches with set-by-set scores (including tiebreaks), winner, seeds, retirements, walkovers and closing betting odds.
  • Schedule: upcoming matches (order of play) for today and future days with current pre-match odds.

Turn on Include match details & bookmaker odds to also get the round, surface (clay, grass, hard, indoors), player rankings, birth date, height, plays left/right, head-to-head record, and opening vs. current (closing) odds from around 15 bookmakers (10Bet, 1xBet, bet365, Betfair and more) with the number of price moves.

A full day of men's singles is typically 150–250 matches. A whole season is a few runs away.

What data do you get?

FieldExample
date, time2026-11-04, 21:20
tour, tournament, tournamentCountry, isChallengeratp-single, Paris, FR, false
player1, player2 (+ seeds and profile URLs)Fils A. (7), Machac T.
winner, score, sets[]Fils A., 6-3 7-6(4)
player1Sets, player2Sets2, 0
status, finished, retired, walkoverfinished, true, false, false
oddsPlayer1, oddsPlayer21.55, 2.43
h2hMatches2
matchId, matchUrl3368391

With Include match details on, each match also has:

FieldExample
round, surface, indoor2. round, indoors, true
player1Rank, player2Rank7, 69
player1Info, player2InfobirthDate, heightCm, weightKg, plays, turnedPro
h2hPlayer1Wins, h2hPlayer2Wins2, 0
openingOddsPlayer1Avg, openingOddsPlayer2Avg1.429, 2.74
currentOddsPlayer1Avg, currentOddsPlayer2Avg1.553, 2.427
bookmakerCount, bookmakerOdds[]15, per bookmaker: opening, current, openingTime, lastChangeTime, changes

For finished matches, "current" odds are the closing odds. Odds timestamps are shown as on TennisExplorer (DD.MM. HH:MM).

Use cases

  • Tennis betting models: closing odds and opening-to-closing line movement for backtesting, ELO and surface-adjusted ratings
  • Daily betting pipelines: pull tomorrow's schedule with pre-match odds every evening, results every morning
  • Tennis analytics and journalism: form, upsets, head-to-heads across Tour, Challenger and ITF levels
  • Fantasy and prediction apps: feed results and fixtures into your app on a schedule
  • Machine learning datasets: thousands of labelled matches with pre-match market prices, rankings and surface

How to use it

  1. Choose What to scrape: Results or Schedule.
  2. Set Start date (and optionally End date). Empty = yesterday (Results) or today (Schedule).
  3. Pick Tours: men's/women's singles and doubles.
  4. Optionally filter by tournament name, e.g. challenger or Wimbledon.
  5. Optionally turn on Include match details & bookmaker odds.
  6. Run it, then export JSON, CSV or Excel, or call it via API. Use Apify Schedules to collect data every day automatically.

Input examples

Yesterday's results (default):

{ "tours": ["atp-single", "wta-single"] }

Tomorrow's ATP order of play with odds from every bookmaker:

{
"mode": "schedule",
"startDate": "2026-11-07",
"tours": ["atp-single"],
"includeMatchDetails": true
}

Output example (with match details)

{
"date": "2026-11-04",
"time": "21:20",
"tour": "atp-single",
"tournament": "Paris",
"tournamentCountry": "FR",
"player1": "Fils A.",
"player1Seed": "7",
"player2": "Machac T.",
"winner": "Fils A.",
"score": "6-3 7-6(4)",
"status": "finished",
"oddsPlayer1": 1.55,
"oddsPlayer2": 2.43,
"round": "2. round",
"surface": "indoors",
"player1Rank": 7,
"player2Rank": 69,
"h2hPlayer1Wins": 2,
"h2hPlayer2Wins": 0,
"openingOddsPlayer1Avg": 1.429,
"currentOddsPlayer1Avg": 1.553,
"bookmakerCount": 15,
"bookmakerOdds": [
{
"bookmaker": "10Bet",
"player1": { "current": 1.53, "opening": 1.42, "openingTime": "02.11. 19:37", "lastChangeTime": "04.11. 15:23", "changes": 10 },
"player2": { "current": 2.4, "opening": 2.7, "openingTime": "02.11. 19:37", "lastChangeTime": "04.11. 15:23", "changes": 10 }
}
],
"matchUrl": "https://www.tennisexplorer.com/match-detail/?id=3368391"
}

How much does it cost?

You pay per match saved (see the Pricing tab). A week of ATP + WTA singles results (around 2,500 matches) costs a few dollars, and the Actor runs on the smallest memory setting. Match details are an optional add-on charged per match on top of the match price (see the Pricing tab); they also add one page request per match, so detailed runs take longer.

Notes

  • Results mode saves only finished matches unless Include unfinished matches is on. Schedule mode saves matches that have not finished yet.
  • The Actor paces its requests politely and stops cleanly before the run timeout, keeping everything scraped so far. Split very long date ranges across runs.

Feedback

Missing a field or found a parsing issue? Open an issue on the Issues tab with the date and match.