TennisExplorer Results, Odds, Match Stats & Players Scraper
Pricing
from $0.85 / 1,000 results
TennisExplorer Results, Odds, Match Stats & Players Scraper
ATP, WTA, Challenger and ITF match results with set scores and tiebreaks, bookmaker odds per match (winner, over/under, handicap, correct score; opening and closing), player profiles, and SofaScore serve/return match statistics with point-by-point.
Pricing
from $0.85 / 1,000 results
Rating
0.0
(0)
Developer
Artsiom Kunitsyn
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Tennis results, bookmaker odds and player profiles from TennisExplorer, plus match statistics and point-by-point from SofaScore, for betting models, research and fantasy tools. ATP, WTA, Challenger, WTA 125, UTR and ITF, singles and doubles, day by day back to the 1990s.
What you get
entityType: "matches" (default): one row per finished match
| Field | Example |
|---|---|
date, time_cet, tour | 2025-06-20, 17:05, atp-single |
tournament, tournament_level, tournament_country | Halle, tour, DE |
winner, winner_seed, loser, loser_seed | Khachanov K., 8, Etcheverry T. |
score, winner_sets, loser_sets | 7-6(2), 6-3, 2, 0 |
sets (per set: games and tiebreak points) | [{"winner_games": 7, "loser_games": 6, "tiebreak_loser": 2}, ...] |
winner_odds_avg, loser_odds_avg (average closing odds) | 1.36, 3.12 |
Turn on Include match details to add the round, the surface, and both players' ranking at the time, birthdate, height, weight and playing hand.
entityType: "odds": one row per match, bookmaker and market
Markets: match winner, over/under (sets and games), Asian handicap and correct score, from up to ~20 bookmakers (bet365, Pinnacle, Betfair, 1xBet, Unibet, William Hill and more). Each row has the opening odds and their time, the closing odds, and when the line last moved.
| Field | Example |
|---|---|
player1, player2 (winner first), market, line | Khachanov K., Etcheverry T., asian_handicap, -1.5 |
bookmaker | 1xBet |
selection1_opening_odds → selection1_odds | 1.35 → 1.38 |
selection2_opening_odds → selection2_odds | 3.27 → 3.12 |
selection1_opening_time, selection1_last_change | 2025-06-19T19:00, 2025-06-20T16:21 |
entityType: "players": player profiles from the ATP/WTA rankings
Name, country, birthdate, height, weight, playing hand, current and highest singles and doubles ranking, ranking points.
entityType: "matchStats": match statistics and point-by-point (from SofaScore)
One row per finished match, with both players' serve and return statistics for the whole match, the same
statistics per set (statistics_by_set), and the point-by-point record (point_by_point).
| Field | Example |
|---|---|
date, start_time_utc, tournament, category, round, surface | 2026-10-10, 2026-10-10T12:45+00:00, Shanghai, ATP, Round of 64, Hardcourt outdoor |
player1, player2, player1_country, player1_seed | Sebastián Báez, Valentin Vacherot, ARG, null (unseeded) |
winner, score, sets, status | Valentin Vacherot, 4-6, 6-7(5), per set games and tiebreak points, Ended / Retired / Walkover |
player1_aces, player1_double_faults | 5, 0 |
player1_first_serve_in / _total | 52 / 68 |
player1_first_serve_points_won / _total, player1_second_serve_points_won / _total | 34 / 52, 11 / 16 |
player1_break_points_saved / _total, player1_break_points_converted | 1 / 3, 1 |
player1_service_games_played, player1_service_games_won, player1_return_games_played | 11, 9, 11 |
player1_first_serve_return_points_won / _total, player1_second_serve_return_points_won / _total | 7 / 42, 8 / 22 |
player1_points_total, player1_service_points_won, player1_return_points_won, player1_games_won | 60, 45, 15, 10 |
player1_max_points_in_row, player1_max_games_in_row, player1_tiebreaks_won | 6, 2, 0 |
Every player1_ column has a player2_ twin. point_by_point has one entry per game: set, game, who served,
who won it, whether it was a break or a tiebreak, the games score after it, and the running point score with
each point's winner and ace / double fault flags.
Two ways to choose matches:
- By day (the default: yesterday and today), from 2026-01-01 on. SofaScore's robots.txt disallows its date pages for earlier seasons, so a date range before 2026 returns nothing.
- By player: put SofaScore player URLs or ids in SofaScore players (e.g.
https://www.sofascore.com/tennis/player/sinner-jannik/206570) for their full match history, back to about 2016. Add dates to narrow it down.
Statistics and point-by-point exist for ATP, WTA (Grand Slams included), WTA 125, Challenger and most UTR matches. ITF matches come with the score only.
Input
| Field | Default | Used by | What it does |
|---|---|---|---|
entityType | matches | matches, odds, players or matchStats. | |
tours | ATP and WTA singles | all | ATP/WTA singles and doubles. Each tour includes its Challenger, WTA 125, UTR and ITF events. |
dateFrom, dateTo | yesterday and today | matches, odds, matchStats | Day range. matchStats lists days from 2026-01-01 on. |
levels | all | matches, odds, matchStats | tour, challenger, itf, utr, team. |
tournaments | all | matches, odds, matchStats | Keep tournaments whose name contains one of these words. |
players | all | matches, odds | TennisExplorer player slugs or URLs. |
includeMatchDetails | off | matches | Round, surface and both players' rank, birthdate, height, weight and hand (one extra page per match). |
markets | winner, over/under, handicap | odds | Which bookmaker markets to return; add correct score if needed. |
sofascorePlayers | none | matchStats | SofaScore player URLs or ids: their match history instead of a day range. |
includePointByPoint | on | matchStats | Add the point-by-point record. Off = statistics only. |
maxItems | 50 | all | Row cap. Clear it for everything in range. |
mode | auto | matches, matchStats | Daily schedules with Max results cleared return only matches not returned before. |
concurrency | 10 | all | Pages (or SofaScore requests) fetched in parallel. |
impersonate | chrome | all | Browser fingerprint. Change only if requests start failing. |
proxyConfiguration | off | matches, odds, players | TennisExplorer needs no proxy. |
sofascoreProxyConfiguration | Apify Proxy (datacenter) | matchStats | SofaScore blocks most IPs; the Actor finds proxy IPs that work and reuses them. Proxy traffic is included in the price. |
How to use it
- Yesterday's and today's results (the default): just run it.
- A whole season:
dateFrom: 2024-01-01,dateTo: 2024-12-31, clear Max results. - Only the main tours: Levels = ATP / WTA tour. Only Grand Slams: Tournament names =
Wimbledon,Roland Garros,US Open,Australian Open. - One player's matches: Players =
sinner-8b8e8(the slug from their TennisExplorer URL). - Closing and opening odds for backtesting:
entityType: "odds", pick the markets you need. - Serve/return stats for yesterday's matches:
entityType: "matchStats", Levels = ATP / WTA tour and Challenger. - A player's career stats:
entityType: "matchStats", SofaScore players = their SofaScore URL, clear Max results. Turn off Include point-by-point if you only need the statistics. - Daily schedule: run every day with the default dates and Max results cleared;
mode: autoreturns only matches not returned before (formatchesandmatchStats).
Good to know
- Times are Central European time, as on the site.
- Results pages list finished matches; a match still being played appears once it's over.
- Average odds exist for most main-tour matches; small ITF matches often have none.
- Bookmaker coverage varies by match: big matches have ~20 books, small ones a handful or none.
- The odds rows carry opening and closing odds, not every move in between.
matches,oddsandplayersneed no proxy.matchStatsgoes through Apify Proxy, because SofaScore blocks most IPs: the Actor finds proxy IPs that get through and keeps reusing them. Proxy traffic is included in the price.- In
matchStats, player 1 and player 2 follow SofaScore's order (home/away), not winner first;winnerandwinner_codesay who won.
Related sports data scrapers
- Smarkets Betting Exchange Scraper — betting exchange back and lay odds, matched volume, results and traded-price history.
- Action Network Scraper — US sportsbook odds, public betting splits, line movement, props, injuries and futures.
- Sports Odds History Scraper — opening and closing lines per sportsbook since 2021 and ATS results since 2006.
- Kalshi & Polymarket Scraper — prediction market odds, settled results and price history for sports, politics, economics and crypto.
- SofaScore Scraper — results, team statistics, lineups with player ratings, incidents and odds for football, basketball, hockey, tennis and 17 more sports.
- Flashscore Scraper — results, statistics, lineups, incidents and opening/closing odds from ~20 bookmakers for 17 sports.