Tennis Scraper: Live Scores, Results & Odds from 40+ Books
Pricing
Pay per usage
Tennis Scraper: Live Scores, Results & Odds from 40+ Books
Every ATP, WTA, Challenger and ITF match: live scores, results with tiebreaks, current rankings, opening and closing odds from up to 42 bookmakers, no-vig consensus and line movement. Optional serve stats and point-by-point. Recent matches or full tournament history with odds back to 2009.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Sports Odds Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 hours ago
Last modified
Categories
Share
Tennis Scraper: Live Scores, Results & Odds from 40+ Bookmakers
🎁 Free until 8 October 2026. Press Start — the prefilled input returns 30 matches with odds in under a minute.

Get every ATP, WTA, Challenger and ITF match with opening and closing match-winner odds from up to 42 bookmakers, a no-vig market consensus, line movement, live scores (server and points of the current game), current ATP/WTA rankings, set scores with tiebreaks, optional serve/return statistics and optional point-by-point progression — one clean row per match, ready for a spreadsheet, a database or a model.
Most tennis scrapers give you scores. Most odds scrapers cover US sports. This Actor joins the two for tennis, including the ITF and Challenger levels where historical odds are hardest to find.
Two modes:
- Recent matches — every tour, from 7 days back to 7 days ahead (upcoming matches with current prices)
- Tournament history — complete past editions of any tournament (qualifying included), with odds back to 2009;
ATP: allcovers every ATP tournament
What you get for each match
- Match: start time (UTC), tour (ATP / WTA / Challenger / ITF / team events), singles or doubles, tournament, surface, players and their countries, Flashscore IDs and link
- Result: status (finished, retired, walkover, cancelled, live, scheduled), set-by-set score with tiebreak points, sets won, winner, end time
- Live: for matches in progress, who is serving and the points of the current game (
live) — run it every few minutes for a live scoreboard - Rankings: current ATP / WTA singles ranking of both players (
player1Rank,player2Rank), recent matches only - Odds per bookmaker: opening price and latest price for both players, plus the bookmaker margin. Once a match has started the latest price is the closing line
- Market consensus (median across bookmakers, margin removed):
- fair opening and closing odds for both players
- win probability at the open and at the close
- line movement in percentage points
- best available odds at the open and at the close
- median bookmaker margin
- Statistics (optional): aces, double faults, first-serve %, first/second serve points won, break points saved/converted, return points won, service and return games won and more
- Point-by-point (optional): every game — server, winner, break or hold, and the score before each point with break, set and match points marked — plus every tiebreak point, for finished and live matches
Tournament history: odds back to 2009
List tournaments and years and get every match of those editions — main draw and qualifying — with the opening and closing odds each bookmaker published at the time.
| Edition | Bookmakers per match (examples) |
|---|---|
| 2009 – 2013 | 7–9 (Wimbledon ATP and WTA) · 6–7 (Challenger Genova) |
| 2015 – 2019 | 8–10 (Wimbledon, French Open WTA, Challenger Genova) |
| 2023 | up to 10 (ITF M15 Monastir) |
| 2024 and later | 17–18 (Wimbledon) |
Tournaments are named as on Flashscore: ATP: Wimbledon, WTA: French Open (Roland Garros), ATP: Indian Wells, Challenger Men: Genova, ITF Women: W15 Monastir — or paste the tournament's Flashscore URL. ATP: all expands to every ATP tournament. Years can be single (2024) or ranges (2015-2024).
A Grand Slam edition (239 matches with qualifying) takes about 2 minutes. For many tournaments and years, raise the run timeout (the default is 6 hours).
Coverage
Measured on a sample of 250 matches (all levels, singles and doubles):
| Level | Share of matches with odds | Bookmakers per match (avg.) |
|---|---|---|
| ATP singles | 100% | ~35 |
| WTA singles | 100% | ~37 |
| Challenger singles | 100% | ~36 |
| ITF singles | 98% | ~20 |
| Doubles (all levels) | 93–100% | 10–36 |
Bookmakers include 1xBet, 7BetUK, Betway, bwin, BetMGM, Betclic, Betfred, Betano, bet365, DraftKings, FanDuel, Fanatics, Interwetten, Ladbrokes, Midnite, Neobet, Skybet, Stake, STS, Superbet, Winamax and more (up to 42 listings, depending on the match). Brands that appear under several licences (Betano .br / .ca / .de / .dk, BetMGM .uk / .us…) are counted once in the consensus (brandCount), so they cannot outvote the rest.
Use cases
- Build and backtest tennis models — train on closing-line probabilities, the most efficient price the market produces
- Closing Line Value (CLV) — compare the price you bet with the consensus close to measure whether you beat the market
- Line movement and steam — find matches where the market moved sharply between open and close
- Market research — compare bookmaker margins, find the best price, study how efficient ITF markets are
- Live dashboards and alerts — poll live matches (
statuses: ["live"]) for the score, the server and the current game - Point-by-point models — hold/break rates, pressure points (break, set and match points) and tiebreak performance per player
- Your own odds history — schedule the Actor daily and keep appending to a dataset; after a few weeks you own a history nobody else sells for these levels
How to use it
- Pick the days (up to 7 back and 7 ahead), tours, singles/doubles and statuses. With Max matches set, the most important matches are kept first (ATP and WTA, then Challenger, team events and ITF).
- Click Start. A typical day of ATP + WTA + Challenger finishes in about a minute; a full day including ITF in a few minutes.
- Download the results as JSON, CSV or Excel, or read them through the Apify API.
Tip — build a history automatically: create a Schedule that runs every morning with daysBack: 1, daysAhead: 0, statuses: ["finished"]. Each run adds yesterday's matches with their closing lines.
Ready-made examples
One click, preconfigured — open, press Start, adjust if you like:
- Wimbledon odds history since 2009
- Grand Slam odds history (ATP and WTA)
- Every ATP tour match of a season with closing odds
- Yesterday's tennis results with closing odds
- Today's tennis matches with odds from 40+ bookmakers
- ITF and Challenger odds with results
Input example — recent matches
{"daysBack": 1,"daysAhead": 0,"tours": ["ATP", "WTA", "CHALLENGER"],"formats": ["SINGLES"],"statuses": ["finished"],"includeOdds": true,"includeStats": true,"onlyWithOdds": true}
Input example — tournament history
{"mode": "tournaments","tournaments": ["ATP: Wimbledon", "WTA: Wimbledon", "ATP: Indian Wells"],"years": ["2015-2024"],"includeQualifying": false,"includeStats": true}
Output example (shortened)
{"matchId": "8079sqDc","startTime": "2026-09-23T03:05:00Z","tour": "WTA","format": "SINGLES","tournament": "Seoul (South Korea)","surface": "hard","player1": "Tararudee L.","player2": "Park S.","player1Rank": 92,"player2Rank": 187,"status": "finished","score": "7-6 6-0","sets": [[7, 6], [6, 0]],"tiebreaks": [[7, 4], null],"winner": 1,"endTime": "2026-09-23T04:41:12Z","live": null,"consensus": {"bookmakerCount": 39,"consensusOpeningProb1": 0.8283,"consensusLastProb1": 0.8393,"fairLastOdds1": 1.192,"fairLastOdds2": 6.221,"probMovementPts": 1.09,"bestLastOdds1": 1.14,"bestLastOdds2": 7.2,"medianMarginPct": 6.09},"odds": [{"bookmaker": "1xBet", "opening1": 1.15, "opening2": 5.4, "last1": 1.13, "last2": 5.9, "lastMarginPct": 5.44},{"bookmaker": "7BetUK", "opening1": 1.13, "opening2": 5.0, "last1": 1.13, "last2": 5.0, "lastMarginPct": 8.5}],"stats": {"aces": {"player1": 2, "player2": 0},"firstServePointsWon": {"player1": {"pct": 78, "won": 25, "total": 32}, "player2": {"pct": 57, "won": 17, "total": 30}}},"pointByPoint": [{"set": 1, "type": "game", "score": "0-1", "server": 2, "winner": 2, "break": false, "points": ["0:15", "15:15", "15:30", "15:40"]},{"set": 1, "type": "game", "score": "1-1", "server": 1, "winner": 1, "break": false, "points": ["15:0", "30:0", "30:15", "40:15"]},{"set": 1, "type": "tiebreak", "score": "7-4", "winner": 1, "points": ["1:0", "…", "6:4 SP"], "servers": [1, 2, "…"]}]}
A live match looks like this: "status": "live_set_2", "score": "6-4 3-2", "live": {"server": 1, "points1": "30", "points2": "15", "currentSetSince": "2026-09-25T17:18:20Z"}.
Pricing
🎾 Free until 8 October 2026 — during the launch period you only pay Apify's platform usage, typically well under $0.01 per run.
From 9 October 2026 you pay per match saved — platform usage included, nothing else:
| Apify plan | Price per 1,000 matches |
|---|---|
| Free | $5.00 |
| Starter | $4.50 |
| Scale | $4.00 |
| Business and higher | $3.50 |
💡 On Apify's free plan the monthly $5 platform credit covers about 1,000 matches — enough to try the data properly before paying anything.
Every match comes with the odds of all bookmakers that priced it, the consensus and (optionally) the statistics, at no extra cost. Nothing is charged for matches you filter out: turn on Skip matches without odds to pay only for priced matches. Set a spending limit on the run if you want a hard cap — the Actor stops as soon as the limit is reached.
FAQ
What is the "closing line"? The last price before the match starts. For finished and live matches the last1 / last2 fields are the closing odds; for scheduled matches they are the current prices.
How is the consensus calculated? For each bookmaker the margin is removed proportionally, then the median is taken across bookmaker brands (each brand once, via its lowest-margin listing). The median keeps one stale or mispriced book from skewing the result.
How far back can I go? In Recent matches mode 7 days back and 7 ahead. In Tournament history mode every edition Flashscore lists — odds go back to 2009 (fewer bookmakers in older editions, see the table above).
Which time zone? All timestamps are UTC.
How fresh are live scores? As fresh as the Flashscore scoreboard at the moment of the run. For a live feed, schedule the Actor every few minutes with statuses: ["live"], daysBack: 0, includeOdds: false.
Which ranking is player1Rank? The current ATP or WTA singles ranking at the time of the run (not added to doubles or to past tournament editions).
Is Pinnacle included? No — the source does not list Pinnacle. The consensus of 20–40 books is a solid reference, and the Actor reports the best available price as well.
Where does the data come from? From publicly available match and odds information shown on Flashscore. This Actor is not affiliated with Flashscore or any bookmaker.
More from Sports Odds Lab
- ⚽ Football Odds Scraper — 1,000+ competitions, 1X2, over/under, BTTS and Asian handicap, seasons back to 2005
- 🏀 NBA, NFL, MLB & NHL Odds — moneyline, spread and total history back to 2009, DraftKings, FanDuel, BetMGM
- 📊 Polymarket & Kalshi Scraper — prediction market odds, price history and results in one table, full Kalshi archive since 2021
⭐ Did this Actor save you time? A short review on this page helps other bettors and analysts find it — and tells us what to build next.
Changelog
- 0.4 — Live scores (server and points of the current game), current ATP/WTA rankings, tiebreak points per set, match end time, optional point-by-point (games, breaks, break/set/match points, tiebreak points); new Live scoreboard dataset view.
- 0.3 — Tournament history mode: complete past editions of any tournament with opening/closing odds back to 2009,
ATP: all, year ranges;seasonandqualificationfields; Include qualifying option. - 0.2 — faster and cheaper runs (about 2× less CPU per request); the consensus counts each bookmaker brand once (
brandCount); Max matches keeps the most important matches first; new tour option Other (exhibitions, juniors). - 0.1 — first release (free launch period): ATP, WTA, Challenger, ITF and team events; singles and doubles; opening/closing odds from up to 42 bookmakers; no-vig consensus and line movement; optional match statistics.