Tennis Live Scores Scraper: ATP, WTA, Sets & Stats
Pricing
from $0.59 / 1,000 tennis matches
Tennis Live Scores Scraper: ATP, WTA, Sets & Stats
Scrape live tennis scores, fixtures, rankings and match stats across ATP, WTA, Challenger and ITF. Set-by-set scores, surface, seeds, serve stats and point-by-point server data. Works with Google Sheets, Zapier, or as an MCP tool for AI agents. No login needed. From $0.79 per 1,000 results.
Pricing
from $0.59 / 1,000 tennis matches
Rating
0.0
(0)
Developer
GetAScraper
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
|
Every set, every surface, every serve: tennis data ready for your spreadsheet in seconds. Live scores, fixtures, rankings and point-by-point detail across ATP, WTA, Challenger and ITF. No login, no API key. |
|
๐พ All four tours ATP, WTA, Challenger and ITF match data in one Actor. |
๐๏ธ Full match context Surface, tour level, round, rankings and seeds on every row. |
๐ Deep serve stats Aces, double faults, break points and serve percentages. |
๐ฏ Point-by-point detail See who served every point of every game. |
This Actor pulls live tennis scores, fixtures, results, rankings and player search from a single, reliable source, no ATP or WTA login required. Every match row carries the surface, the tour level, the round name, both players' rankings and seeds, and a full set-by-set score with tiebreak sub-scores. Switch on match detail mode and you also get serve statistics and, if you want it, a point-by-point breakdown of who served every single point.
๐พ What does it do?
The Actor runs in five modes, picked with a single input field:
- Live: every in-play ATP, WTA, Challenger and ITF match right now, refreshed on demand.
- Schedule: fixtures and results across a date range, up to 31 days in one run.
- Match detail: serve statistics and an optional point-by-point breakdown for specific matches.
- Rankings: the current ATP or WTA singles ranking list.
- Search: look up a player by name and get their ID, ranking and profile link.
Every match record includes the surface (clay, hard or grass), the tour level, the round name, both players' current rankings and tournament seeds, and set-by-set scores with tiebreak points where they happened. Nothing is guessed or filled in: if a field is not yet known (an unranked qualifier, a set that has not started), it is left out of the record instead of being padded with a placeholder.
๐ค Who is it for?
- I am a sports betting analyst tracking live scores, set-by-set momentum and serve percentages across ATP and WTA matches to feed my in-play odds models.
- I am building an AI agent that needs live tennis scores and rankings as a callable tool, through the Apify MCP server, without maintaining my own data pipeline.
- I am a fantasy tennis app builder pulling player rankings, seeds and daily match schedules to keep my scoring engine current.
- I am a tennis coach scouting an upcoming opponent's serve statistics and point-by-point patterns before a match.
- I am a sports data journalist compiling tournament results and rankings across the ATP, WTA, Challenger and ITF tours for a weekly stats column.
๐ How to use it
|
STEP 1 Pick a mode Choose live scores, a date-range schedule, match detail, rankings or player search. |
STEP 2 Run the Actor No login or API key needed. Results save straight to your dataset as they come in. |
STEP 3 Export your data Download as JSON, CSV or Excel, or connect it to your own pipeline. |
To fetch match detail, first run Live or Schedule mode and copy the numeric id from the matches you want, then switch to Match detail mode and paste those IDs in.
๐ฅ Input
| Field | Type | Required | Description |
|---|---|---|---|
mode | enum | No | What to scrape. live returns every in-play match right now. schedule returns fixtures and results across a date range. matchDetail returns deep stats and point-by-point for specific matches. rankings returns the current ATP or WTA singles list. search looks up a player by name. Defaults to live. |
tourLevel | enum | No | Keep only matches from one tour: all tours, ATP, WTA, Challenger or ITF. Applies to Live and Schedule modes. Defaults to all tours. |
statusFilter | enum | No | Keep only matches with a given status: all, live, scheduled or finished. Applies to Live and Schedule modes. Defaults to all. |
dateFrom | string | No | First day to fetch fixtures and results for, in Schedule mode. Leave empty to use today. |
dateTo | string | No | Last day to fetch fixtures and results for, inclusive, in Schedule mode. Leave empty to match dateFrom. The range is capped at 31 days. |
matches | array of strings | No | Match IDs or full match URLs to fetch deep detail for in Match detail mode. Copy the numeric id field from a Live or Schedule mode result. |
includeStatistics | boolean | No | Attach serve statistics: aces, double faults, first and second serve percentage, break points and winners. Not available for every match. Defaults to true. |
includePointByPoint | boolean | No | Attach a full set, game and point breakdown, including tiebreak points and who served each game. Costs one extra request per match. Defaults to false. |
rankingTour | enum | No | Which singles ranking list to fetch in Rankings mode: ATP or WTA. Defaults to ATP. |
query | string | No | Name of a player to look up in Search mode. |
maxItems | integer | No | Maximum number of records to push to the dataset. Use 0 for no limit. You are billed per record returned. Defaults to 100. |
proxyConfiguration | object | No | Proxy settings. Residential proxy is required and set as the default; switching to datacenter typically returns zero results. |
๐ค Data table
Output fields vary slightly by mode. A rowType field on every record tells you which kind of row it is: match, matchDetail, ranking or searchResult. Fields that do not apply to a given row, or are not yet known (an unranked player, a set that has not started), are left out entirely.
| Field | Type | Description |
|---|---|---|
rowType | string | The kind of record: match, matchDetail, ranking or searchResult. |
id | integer | Unique match or event ID. Reuse this in matchDetail mode to fetch deeper stats. |
matchName | string | The two players' names, e.g. "C. Alcaraz vs N. Djokovic". |
tournament | string | Tournament name. |
tourLevel | string | Tour category: ATP, WTA, Challenger or ITF. |
surface | string | Court surface, e.g. "Red clay" or "Hardcourt outdoor". |
country | string | Country the tournament is held in. |
season | string | Season or tournament year. |
round | integer | Numeric round index. |
roundName | string | Round name, e.g. "Semifinals" or "Round of 32". |
statusType | string | Match status code: notstarted, inprogress or finished. |
statusDescription | string | Human-readable status, e.g. "2nd Set" or "Finished". |
startTimestamp | integer | Match start time as a Unix timestamp. |
startTime | string | Match start time in ISO format. |
homeTeam / awayTeam | string | Player or doubles team name. |
homeTeamId / awayTeamId | integer | Player ID, reusable in Search mode results. |
homeCountry / awayCountry | string | Player's country. |
homeRanking / awayRanking | integer | Player's current ranking at match time, when available. |
homeSeed / awaySeed | string | Tournament seed, e.g. "3" or "Q" for qualifier. |
homeSets / awaySets | integer | Sets won by each player. |
sets | array | Set-by-set score, with tiebreak sub-scores included for any set that went to a tiebreak. |
homeGamePoint / awayGamePoint | string | Live point score within the current game (0, 15, 30, 40, A), only present while a game is in progress. |
winnerCode | integer | Which player won: 1 for home, 2 for away. |
matchUrl | string | Direct link back to the match page. |
statistics | array | Serve and rally statistics: aces, double faults, first and second serve percentage, break points, winners and more. Match detail mode only. |
pointByPoint | array | Full set, game and point breakdown, including who served each game and every point score. Match detail mode with point-by-point enabled only. |
tour | string | ATP or WTA, on ranking rows. |
rank / previousRank | integer | Current and prior ranking position, on ranking rows. |
points | integer | Ranking points, on ranking rows. |
playerName | string | Player name, on ranking rows. |
playerId | integer | Player ID, on ranking and search rows. |
playerUrl | string | Link to the player's profile page. |
entityType | string | Whether a search result is a player or a team, on search rows. |
name | string | Matched name, on search rows. |
ranking | integer | Current ranking, on search rows. |
Example output (Live mode)
{"rowType": "match","id": 12836554,"matchName": "C. Alcaraz vs N. Djokovic","tournament": "Wimbledon","tourLevel": "ATP","surface": "Grass","country": "United Kingdom","season": "2026","round": 7,"roundName": "Final","statusType": "inprogress","statusDescription": "3rd Set","startTimestamp": 1721030400,"startTime": "2026-07-15T14:00:00Z","homeTeam": "C. Alcaraz","homeTeamId": 231205,"homeCountry": "Spain","homeRanking": 2,"homeSeed": "2","awayTeam": "N. Djokovic","awayTeamId": 39289,"awayCountry": "Serbia","awayRanking": 5,"awaySeed": "5","homeSets": 1,"awaySets": 1,"sets": [{ "set": 1, "homeGames": 6, "awayGames": 4 },{ "set": 2, "homeGames": 6, "awayGames": 7, "homeTiebreak": 5, "awayTiebreak": 7 }],"homeGamePoint": "40","awayGamePoint": "30","matchUrl": "https://www.sofascore.com/tennis/match/alcaraz-djokovic/12836554"}
๐ฐ Pricing
Pricing is pay per result and billed per row saved to your dataset. Empty runs cost nothing, and there are no subscriptions or fixed monthly fees. Turning on point-by-point detail adds one extra request per match, since it is a separate, deeper lookup.
โญ Enjoying Tennis Live Scores Scraper?
|
โญ โญ โญ โญ โญ This Actor turns hours of manual score tracking into a single scheduled run. A 5-star rating takes 10 seconds and helps other tennis data buyers find this Actor. Your feedback also tells us what to build next. |
| โ ย ย Rate this Actor on Apify |
๐ก Tips
- Use Schedule mode with a wide date range to build a historical results archive, then keep it current with a short daily Live mode run.
- Point-by-point detail is the most granular data this Actor offers. Turn it on only for the specific matches you need, since it costs one extra request per match.
- Combine Rankings mode with Search mode to resolve a player's name to their ID before pulling their match history.
โ FAQ
Does it get blocked?
No. The Actor routes requests through premium residential proxy, which keeps live and schedule data flowing reliably even during busy tournament days.
Does it need a login or API key?
No. Every mode, from live scores to rankings and player search, runs without an account, password or API key of any kind.
How fresh is the live data?
Live mode reflects match state at the moment the Actor runs, including the current game score while a match is in progress. Run it on a schedule for a near real-time feed.
Which tours and tournaments are covered?
ATP, WTA, Challenger and ITF tournaments worldwide, from Grand Slams down to lower-tier events. Filter by tour level in Live and Schedule modes to keep only what you need.
Can an AI agent call this directly?
Yes. This Actor is callable as a tool through the Apify MCP server, so an AI agent can pull live tennis scores or rankings mid-conversation without you building a custom integration.
๐ Other actors
- SofaScore Scraper: Live scores, stats and fixtures โ - the same live-score engine covering 13 sports, tennis included, in one generalist Actor.
- Cricket Data API: ESPNcricinfo StatsGuru Export โ - exports cricket statistics queries from ESPNcricinfo StatsGuru.
- Baseball Savant Scraper: Scheduled Statcast Data โ - pulls Statcast pitch and player data from Baseball Savant on a schedule.
- College Football Recruiting Rankings Scraper: Cross-Source Ratings & NIL โ - combines recruiting ratings and NIL data across multiple sources.
- ESPN News Monitor: Keyword Alerts โ - watches ESPN for keyword matches and sends alerts on new articles.