Tennis Scraper: Scores, Rankings, Stats & Odds (160+ Books) avatar

Tennis Scraper: Scores, Rankings, Stats & Odds (160+ Books)

Pricing

from $1.00 / 1,000 matches

Go to Apify Store
Tennis Scraper: Scores, Rankings, Stats & Odds (160+ Books)

Tennis Scraper: Scores, Rankings, Stats & Odds (160+ Books)

Every ATP, WTA, Challenger and ITF match (singles and doubles): live scores, set-by-set results with tiebreaks, retirements, ATP/WTA rankings, match statistics and odds from 160+ bookmakers with fair odds, value and arbitrage. No browser, fast and cheap.

Pricing

from $1.00 / 1,000 matches

Rating

0.0

(0)

Developer

Elie Rusak

Elie Rusak

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 days ago

Last modified

Categories

Share

Get every ATP, WTA, Challenger and ITF match — singles and doubles — for the days you choose, with:

  • Live scores and results: set-by-set games, tiebreak points, sets won, winner, retirements, walkovers, cancellations, start and end time.
  • Tournament details: tour, tournament, country, surface, indoor, qualification.
  • ATP / WTA rankings: current singles rank and points of both players (free).
  • Match statistics (optional): aces, double faults, first serve %, serve and return points won, break points saved and converted, games won... for the match and for each set.
  • Odds from 160+ bookmakers in 40+ countries (optional): match winner, set winner, set and game handicaps, total sets, total games, correct score, odd/even — with best price, opening odds, margins, margin-free fair odds, value bets and arbitrage (surebets).

The Actor reads FlashScore's data feeds directly — no browser: a whole day of tennis (150+ matches) takes about 10 seconds.

What can you do with it?

  • Live score and results feeds for apps, bots, dashboards and websites.
  • Tennis models and backtests: results with rankings, statistics and closing odds of the last 7 days, or schedule the Actor daily to build your own history.
  • Odds comparison and value betting research: best price per outcome across all bookmakers of your country, compared with the fair odds of the whole market.
  • Arbitrage scanning on upcoming matches.

Input

FieldDescription
Days ahead / Past daysToday up to 7 days ahead, and up to 7 days back.
ToursATP, WTA, Challenger (men/women), ITF (men/women), Other (team events, juniors, exhibitions). Empty = all.
Singles / doublesEmpty = both.
Match statusesUpcoming, live, finished (finished includes retirements, walkovers and cancellations).
TournamentsOptional: part of the name or FlashScore URL (Shanghai, /tennis/wta-singles/wuhan/).
PlayersOptional: part of a player's name, accents ignored (Sinner, Swiatek).
Maximum matchesCost cap (earliest matches first).
Include rankings / statistics / oddsEnrichments, see pricing.
Bookmaker countries, markets, periodsWhich bookmakers and markets to compare when odds are included.

Example — today's and tomorrow's ATP and WTA singles with statistics and UK + French odds:

{
"daysAhead": 1,
"tours": ["ATP", "WTA"],
"matchTypes": ["singles"],
"includeStatistics": true,
"includeOdds": true,
"countries": ["GB", "FR"]
}

Output

One item per match (real run, shortened):

{
"matchId": "xUS4LN7s",
"url": "https://www.flashscore.com/match/tennis/munar-jaume-bgno6t9s/jacquet-kyrian-W6pg4Kwf/?mid=xUS4LN7s",
"kickoff": "2026-10-04T02:10:00Z",
"endTime": "2026-10-04T03:50:36Z",
"status": "finished",
"tour": "ATP",
"matchType": "singles",
"competition": "ATP - SINGLES: Tokyo (Japan), hard",
"tournament": "Tokyo",
"tournamentCountry": "Japan",
"surface": "hard",
"indoor": false,
"qualification": false,
"homePlayer": "Munar J.",
"awayPlayer": "Jacquet K.",
"homePlayers": [{"name": "Munar J.", "playerId": "zZieQm4D", "country": "Spain",
"url": "https://www.flashscore.com/player/munar-jaume/zZieQm4D/"}],
"homeSets": 2,
"awaySets": 0,
"sets": [{"home": 6, "away": 4}, {"home": 6, "away": 2}],
"winner": "home",
"homeRank": 49, "homeRankingPoints": 1100,
"awayRank": 76, "awayRankingPoints": 781,
"bestHome": 1.67, "bestBookmakerHome": "bet365", "fairHome": 1.727,
"bestAway": 2.3, "bestBookmakerAway": "William Hill", "fairAway": 2.375,
"winnerMarginPercent": 6.62,
"bookmakerCount": 20,
"statistics": {
"match": {
"aces": {"home": 3, "away": 1},
"double_faults": {"home": 2, "away": 1},
"first_serve_percentage": {"home": "60%", "away": "52%"},
"first_serve_points_won": {"home": "67% (26/39)", "away": "59% (20/34)"}
},
"set1": {"aces": {"home": 1, "away": 0}}
},
"odds": {
"countries": ["GB"],
"valueBets": [],
"arbitrages": [],
"markets": [
{
"market": "winner", "period": "match", "line": null,
"outcomes": [
{"outcome": "home", "bestOdds": 1.67, "bestBookmaker": "bet365", "fairOdds": 1.727,
"fairProbability": 0.5789, "valuePercent": -3.32, "outlier": false,
"odds": {"10bet": 1.6, "7BetUK": 1.66, "bet365": 1.67},
"openingOdds": {"10bet": 1.55, "7BetUK": 1.57, "bet365": 1.62}}
],
"fairOddsBookmakerCount": 20,
"averageMarginPercent": 6.62,
"lowestMarginBookmaker": "Betway",
"arbitrage": null
}
]
},
"scrapedAt": "2026-10-05T21:47:54Z"
}

Tiebreaks appear as tiebreakHome / tiebreakAway in the set they decided ({"home": 7, "away": 6, "tiebreakHome": 7, "tiebreakAway": 4}). Doubles list both players of each team in homePlayers / awayPlayers. Handicap lines are given from the first player's side (line: -1.5 = player 1 -1.5 / player 2 +1.5). Rankings are the current ones, not those at the time of past matches.

How fair odds, value and arbitrage are computed

  1. For each bookmaker that prices both outcomes of a line, its margin is removed (proportional method by default, or the power method).
  2. The fair probability is the median over bookmakers, normalised to 100 %. Fair odds = 1 / fair probability.
  3. Value % = best price × fair probability − 1, computed when at least 3 bookmakers price the line.
  4. Arbitrage is reported when the best prices of both outcomes add up to less than 100 %, with the stake share for each.
  5. A best price more than 25 % above fair odds is marked outlier (stale price or palpable error) and is never flagged.
  6. Value bets and arbitrage are flagged for upcoming matches only. For live and finished matches you get each bookmaker's last price (closing odds), taken at slightly different moments.

Pricing

Pay per result, no subscription:

EventWhen
Matcheach match saved (scores, players, tournament, rankings included)
Oddseach match saved with bookmaker odds (only when Include bookmaker odds is on)
Statisticseach match saved with statistics (only when Include match statistics is on)

Matches skipped with Only matches with odds are free. Set Maximum matches to cap the cost of a run.

Tips

  • Upcoming start times are FlashScore's schedule; matches later in a day's order of play often start after the time shown.
  • Odds markets per set (set 1, set 2…) are only offered by some bookmakers.
  • Schedule the Actor (for example every 15 minutes during play) and use webhooks or the API for live data.

FAQ

Is it legal to scrape this data? The Actor collects publicly visible scores, statistics and prices, with no personal data beyond players' public names. Check the terms of the source website and your local laws for your use case.

Is this betting advice? No. Value and arbitrage flags are price comparisons against the market consensus. Bookmakers can change prices, void obvious errors and limit accounts. Gamble responsibly — 18+ only. UK: GamCare 0808 8020 133.

Is this Actor affiliated with FlashScore, the ATP, the WTA or the bookmakers? No.

Something is missing or broken? Open an issue in the Issues tab — fixes are usually quick.