Tennis Player Match Stats Scraper - ATP & WTA Results avatar

Tennis Player Match Stats Scraper - ATP & WTA Results

Pricing

from $8.32 / 1,000 results

Go to Apify Store
Tennis Player Match Stats Scraper - ATP & WTA Results

Tennis Player Match Stats Scraper - ATP & WTA Results

Scrape ATP and WTA player match results with serve and return stats: aces, double faults, 1st serve %, break points, opponent, surface, round, score and career summary. Export to JSON, CSV or Excel.

Pricing

from $8.32 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 hours ago

Last modified

Share

Tennis Player Match Stats Scraper - ATP & WTA Results

Tennis Player Match Stats Scraper - ATP & WTA Results

Scrape a complete, match-by-match career log for any ATP or WTA player, with full serve and return statistics for both the player and the opponent in every match. Built for tennis analytics, betting models, media and research.

Here is one real result row (Carlos Alcaraz vs Jannik Sinner, ATP Finals 2025):

{
"recordType": "match",
"playerName": "Carlos Alcaraz",
"playerId": "CarlosAlcaraz",
"tour": "atp",
"playerHand": "R",
"playerCountry": "ESP",
"playerHeightCm": 183,
"playerDob": "2003-05-05",
"tourneyName": "Tour Finals",
"tourneyId": "2025-0605",
"matchId": "2025-0605-385",
"tourneyDate": "2025-11-09",
"year": 2025,
"tourneyLevel": "Tour Finals",
"tourneyLevelCode": "F",
"surface": "Hard",
"round": "F",
"bestOf": 3,
"result": "L",
"score": "7-6(4) 7-5",
"sets": 2,
"minutes": 135,
"opponentName": "Jannik Sinner",
"opponentId": "206173",
"opponentRank": 2,
"opponentSeed": 2,
"opponentHand": "R",
"opponentCountry": "ITA",
"opponentHeightCm": 191,
"opponentAgeAtTime": 24.2,
"playerRankAtTime": 1,
"playerSeed": 1,
"playerAgeAtTime": 22.5,
"aces": 5,
"doubleFaults": 0,
"servePoints": 72,
"firstServeIn": 49,
"firstServeWon": 36,
"secondServeWon": 13,
"serviceGames": 12,
"bpSaved": 0,
"bpFaced": 2,
"firstServePct": 68.1,
"firstServeWonPct": 73.5,
"secondServeWonPct": 56.5,
"servicePointsWonPct": 68.1,
"bpSavedPct": 0,
"acePct": 6.9,
"dfPct": 0,
"opponentAces": 8,
"opponentDoubleFaults": 5,
"opponentServePoints": 78,
"opponentFirstServeIn": 43,
"opponentFirstServeWon": 36,
"opponentSecondServeWon": 19,
"opponentBpSaved": 2,
"opponentBpFaced": 3,
"opponentFirstServePct": 55.1,
"opponentFirstServeWonPct": 83.7,
"opponentSecondServeWonPct": 54.3,
"returnPointsWonPct": 29.5,
"chartUrl": "https://www.tennisabstract.com/charting/20251116-M-Tour_Finals-F-Carlos_Alcaraz-Jannik_Sinner.html",
"sourceUrl": "https://www.tennisabstract.com/cgi-bin/player-classic.cgi?p=CarlosAlcaraz",
"source": "tennisabstract",
"observedAt": "2026-08-16T22:11:34.407Z"
}

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Tours Output Billing

What you get

The most complete tennis player match-stats export available. For every player you request, the actor returns one row per singles match across their whole career, and each row carries far more than the score:

  • Match context: tournament, tournament level (Grand Slam, Masters 1000, WTA 1000, Tour, Finals, Olympics), surface, round, date, best-of, score, sets and match duration in minutes.
  • Opponent detail: name, ranking at match time, seed, entry, playing hand, country, height and age, plus opponent id for head-to-head joins.
  • Player serve and return stats: aces, double faults, serve points, first serves in, first and second serve points won, service games, break points saved and faced, plus derived first serve %, first serve won %, second serve won %, service points won %, break points saved %, ace % and double fault %.
  • Opponent serve and return stats: the same full stat block for the opponent, so you can model both sides of every match, including your player's return points won %.
  • Player bio: hand, country, height and date of birth, plus ranking and age at the time of each match.
  • Optional career summary (add-on): one aggregated record per player with wins and losses overall and by surface, titles, finals reached, record versus the top 10, career serve and return averages, current ranking and career-high ranking.
  • Optional AI scouting report (add-on): playing style, strengths, weaknesses, surface preference and current form, generated from the aggregated numbers.

Filter by season, year range, surface, opponent (for an instant head-to-head log) or tour-level events only. Pass a single player or a list of players to batch many in one run. Empty or failed lookups are never charged.

Who is it for

  • Sports bettors and traders building serve, return and surface edges for ATP and WTA match markets.
  • Tennis analysts, coaches and scouts studying an opponent's patterns, form and head-to-head record.
  • Media, bloggers and stats accounts that need clean, exportable match data and career splits.
  • Data scientists and quants training tennis prediction models on rich per-match serve and return features.
  • Fantasy tennis and product teams that need a reliable player match-log feed.

How to use it

  1. Enter one or more players by full name or Tennis Abstract id, for example Carlos Alcaraz, Novak Djokovic, Iga Swiatek, Aryna Sabalenka.
  2. Set tour to atp or wta to match the players.
  3. Optionally filter by season, year from/to, surface, opponent (head-to-head) or match type (tour-level only).
  4. Set max matches and, on a paid plan, toggle the career summary and AI scouting report add-ons.
  5. Run and export the results to JSON, CSV or Excel.

Input reference

FieldTypeDescription
playersarrayOne or more players by full name or Tennis Abstract id. A single string is accepted too.
tourselectatp or wta. Default atp.
seasonintegerOptional. Only matches from this single year.
yearFromintegerOptional. Only matches in or after this year.
yearTointegerOptional. Only matches in or before this year.
surfaceselectOptional. Hard, Clay, Grass or Carpet.
opponentstringOptional. Only matches against this opponent (name substring) for a head-to-head log.
matchTypeselectall or tour-level (excludes Challenger and ITF events).
maxMatchesintegerMax match rows across all players. Free plans are capped at 10.
includeCareerSummarybooleanPaid add-on. Adds one aggregated career record per player.
withAiReportbooleanPaid add-on. Adds an AI scouting report per player.

Output reference

Each match row includes playerName, tour, tourneyName, tourneyDate, tourneyLevel, surface, round, score, sets, minutes, result, the opponent block (opponentName, opponentRank, opponentSeed, opponentCountry, opponentHand, opponentHeightCm, opponentId), the player context (playerRankAtTime, playerSeed, playerAgeAtTime, playerHand, playerCountry, playerHeightCm, playerDob), and the full serve and return stat blocks for both players with derived percentages. Career-summary and AI-report records add aggregated and qualitative fields. See the Output schema for every field.

Use cases

  • Scrape ATP match results and WTA match results with serve stats for betting and trading models.
  • Build a tennis head-to-head database (H2H) between any two players across surfaces.
  • Analyze serve statistics like aces, first serve percentage, break points saved and service hold rates.
  • Track surface splits (hard, clay, grass) and form for ATP and WTA players.
  • Power tennis analytics dashboards, fantasy tennis tools and sports-data products.
  • Feed tennis prediction models and machine learning pipelines with per-match features.
  • Monitor a player's ranking at match time, seedings and results versus top-10 opponents.
  • Export career stats, titles and win-loss splits for player profiles and media.

Billing

This actor is pay per event, with no subscription and no charge for empty or failed runs.

EventPrice (USD)When it is charged
result0.008Per match row returned.
career_summary0.008Once per player, only when the career summary add-on is enabled and produced.
ai_scouting_report0.012Once per player, only when the AI scouting report add-on returns usable output.

Free Apify accounts are capped at 10 match rows per run and cannot use the paid add-ons. Anti-bot handling and proxying are managed internally, so no login or configuration is required.

Data sources

Match logs, serve and return statistics and player bios are compiled from public Tennis Abstract player pages. The actor loads the full career match data for each player and enriches every row with derived serving and returning percentages that the raw pages do not expose.

FAQ

Which players are covered? Any player with a Tennis Abstract page on the ATP or WTA tour, current or historical.

Do I get the full career or just recent matches? The full singles career log is returned by default. Use the season or year filters to narrow it.

Can I get a head-to-head? Yes. Set the opponent field to return only matches against that opponent.

Is the opponent's data included? Yes. Every row carries the opponent's full serve and return stats plus their ranking, seed, hand, country and height.

How do I export? Download the dataset as JSON, CSV or Excel, or pull it from the Apify API.


Built by scrapers.lat. Not affiliated with, endorsed by or connected to the ATP, WTA, or Tennis Abstract. All data is public information.