Tennis Abstract Player Match Scraper avatar

Tennis Abstract Player Match Scraper

Pricing

from $15.00 / 1,000 results

Go to Apify Store
Tennis Abstract Player Match Scraper

Tennis Abstract Player Match Scraper

Extract comprehensive Tennis Abstract player profiles, historical match logs, surface splits (Clay/Hard/Grass), Elo ratings, and match charting stats alongside real-time live tennis scores, odds, and tournament draw history.

Pricing

from $15.00 / 1,000 results

Rating

0.0

(0)

Developer

Mikolabs

Mikolabs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

What does Tennis Abstract Player Match Scraper do?

Tennis Abstract Player Match Scraper is a high-performance data extraction tool designed to collect comprehensive, real-time, and historical professional tennis data from Tennis Abstract and SofaScore. It automatically resolves player identity mappings and extracts historical player match logs, Elo ratings, surface performance splits, Match Charting Project (MCP) metrics, head-to-head records, live match scores, date-level betting odds, and full tournament season draws.

Running on the Apify platform, Tennis Abstract Player Match Scraper provides:

  • Automated Scheduling: Run scraper jobs periodically (e.g., daily ranking updates or real-time live score updates) using Apify Schedules.
  • REST API & Webhooks: Seamlessly integrate Tennis Abstract player profiles, Elo statistics, and pro match datasets into your analytical database, sports application, or betting algorithm.
  • Anti-Bot & Proxy Rotation: Pre-configured with Chrome TLS fingerprint impersonation and Apify residential proxy support to bypass Cloudflare anti-scraping challenges.
  • Multi-Format Data Exports: Export datasets instantly in JSON, CSV, Excel, XML, or HTML.

Unofficial Scraper: This independent Actor is not affiliated with or endorsed by Tennis Abstract or SofaScore.


Why use Tennis Abstract Player Match Scraper?

Extracting data from Tennis Abstract and live sports feeds manually or through fragile custom scrapers is challenging due to complex JavaScript fragments (jsfrags), varied naming conventions, and strict anti-bot firewalls. Tennis Abstract Player Match Scraper bridges this gap by automatically indexing player registries, parsing JS data fragments, and delivering clean, normalized, and structured records on demand.

Key Use Cases

  • Predictive Sports Analytics & AI Models: Train machine learning models with historical player match logs, career and 52-week surface splits (Hard, Clay, Grass), dominance ratios, and Elo ratings.
  • Match Charting Project (MCP) Insights: Access detailed tactical charting metrics including serve speed distributions, winners vs. unforced errors, rally length breakdowns, and net frequency points.
  • Betting Intelligence & Odds Monitoring: Combine historical player form with live set, game, and point scores alongside decimal and fractional odds to detect value betting opportunities.
  • Player Scouting & Rivalry Tracking: Analyze head-to-head records, tiebreak win percentages, break point conversion efficiency, and year-end ranking trajectories across ATP, WTA, Challenger, and ITF levels.

How to use Tennis Abstract Player Match Scraper

Getting started takes less than two minutes:

  1. Sign up or log in to your free Apify Console.
  2. Navigate to the Tennis Abstract Player Match Scraper Actor page and click Try for free.
  3. Select your desired Scraper mode under the Input tab (e.g., Player details, Live matches, Tournaments, Point by point, Tournament seasons, or Tournament details).
  4. Fill in the required or optional parameters (e.g., playerId: 275923 for Carlos Alcaraz or 206570 for Jannik Sinner).
  5. Click Start to run the Actor.
  6. When the run finishes, navigate to the Dataset tab to view, filter, or download your structured records.

Input

Tennis Abstract Player Match Scraper accepts a clean JSON configuration with mode-specific fields. You can configure it directly via the visual form in Apify Console or via API request payload.

Scraper Modes Overview

ModeTitleDescriptionKey Parameters
playerDetailsPlayer profile & career analyticsHistorical match logs, Elo ratings, surface splits, charting stats & H2HsplayerId (positive integer)
liveMatchesLive matches & oddsInstantaneous snapshots of pro tour matches in progress with live scores & oddsmaxMatches (optional cap)
tournamentsScheduled tournaments by dateDiscover all tournaments scheduled on a calendar date across ATP/WTA/ITFdate (YYYY-MM-DD)
pointByPointPoint-by-point match progressionFull set, game, and point progression with server & period statisticsmatchId (positive integer)
tournamentSeasonsAvailable tournament seasonsRetrieve all past and active season IDs for any unique tournamenttournamentId (positive integer)
tournamentDetailsTournament details & match drawTournament metadata, defending champions, and full match draw listtournamentId, seasonId (optional)

JSON Input Example: Player Analytics (playerDetails)

{
"mode": "playerDetails",
"playerId": 275923
}

JSON Input Example: Live Matches (liveMatches)

{
"mode": "liveMatches",
"maxMatches": 10
}

Input Fields Specification

  • mode (string, default: "playerDetails"): Selects one of the six data extraction operations.
  • playerId (integer, required for playerDetails): Positive SofaScore player ID (e.g., 275923 for Carlos Alcaraz, 206570 for Jannik Sinner, 14882 for Novak Djokovic). The Actor automatically resolves the corresponding Tennis Abstract profile.
  • maxMatches (integer, optional for liveMatches): Maximum number of live matches to extract. Leave empty or set to 0 for no limit.
  • date (string, required for tournaments): Calendar date in YYYY-MM-DD format (e.g., "2024-09-11").
  • matchId (integer, required for pointByPoint): Positive SofaScore match ID.
  • tournamentId (integer, required for tournamentSeasons and tournamentDetails): Positive tournament ID (e.g., 2361 for Wimbledon).
  • seasonId (integer, optional for tournamentDetails): Positive season ID. Omit to automatically resolve the newest season.
  • proxyConfiguration (object, optional): Apify Proxy configuration settings.

Output

Every run produces structured dataset records pushed directly to the default Apify Dataset. You can download the dataset in various formats such as JSON, HTML, CSV, Excel, or XML.

Sample Output: Player Match Record (playerDetails)

{
"id": 275923,
"fullName": "Carlos Alcaraz",
"country": "ESP",
"currentRank": 3,
"recordType": "recentResult",
"date": "31-Aug-2026",
"tournament": "US Open",
"surface": "Hard",
"round": "QF",
"rank": 3,
"opponentRank": 9,
"result": "L",
"opponentName": "Ben Shelton",
"opponentCountry": "USA",
"score": "6-7(5) 6-1 6-3 1-6 7-6(7)",
"dominanceRatio": 1.12,
"acePercentage": 8.4,
"doubleFaultPercentage": 2.8,
"firstServeInPercentage": 67.2,
"firstServeWonPercentage": 74.5,
"secondServeWonPercentage": 56.1,
"breakPointsSaved": "5/7",
"time": "4:28"
}

Sample Output: Player Profile Summary (playerDetails)

{
"id": 275923,
"url": "https://www.tennisabstract.com/cgi-bin/player.cgi?p=CarlosAlcaraz",
"fullName": "Carlos Alcaraz",
"country": "ESP",
"dateOfBirth": "2003-05-05",
"heightCm": 183,
"handedness": "Right-handed",
"backhand": "Two-handed",
"currentRank": 3,
"peakRank": 1,
"eloRank": 2,
"eloRating": 2147,
"recordType": "playerProfile"
}

Sample Output: Live Match & Odds (liveMatches)

{
"id": 16979794,
"slug": "barrientos-kestelboim-behar-romboli",
"url": "https://www.sofascore.com/barrientos-kestelboim-behar-romboli/16979794",
"matchType": "doubles",
"surface": "Clay",
"status": "2nd set",
"tournamentName": "Seville, Spain, Doubles",
"firstToServe": "home",
"score": {
"home": 1,
"away": 0,
"homePoint": "40",
"awayPoint": "30",
"sets": [
{ "set": 1, "home": 6, "away": 4 },
{ "set": 2, "home": 3, "away": 2 }
]
},
"odds": {
"home": { "fractional": "4/6", "decimal": 1.67 },
"away": { "fractional": "6/5", "decimal": 2.2 }
}
}

Data Table

The table below outlines the primary data fields extracted across Tennis Abstract Player Match Scraper modes:

Field NameCategoryTypeDescription
idIdentifierintegerUnique ID of the player, match, or tournament
fullNameProfilestringPlayer full legal name
countryProfilestringPlayer nationality / country code
currentRank / peakRankRankingintegerCurrent official pro ranking and career-high ranking
eloRank / eloRatingRatingintegerTennis Abstract Elo rating and global Elo ranking
recordTypeMetadatastringRecord type ("playerProfile", "recentResult", "tourLevelSeason", "careerTourLevelSplit", "matchChartingServe", etc.)
tournamentSchedulestringTournament name
surfaceEnvironmentstringCourt surface ("Hard", "Clay", "Grass", "Indoors")
roundSchedulestringRound stage ("F", "SF", "QF", "R16", "R32", "R64", "R128")
opponentNameMatchstringOpponent's full name
opponentRankMatchintegerOpponent's pro ranking at match date
resultMatchstringMatch outcome ("W" for win, "L" for loss)
scoreMatchstring/objectFinal match scoreline or live set/game score
dominanceRatioAnalyticsnumberRatio of return points won % to service points lost %
firstServeWonPercentageAnalyticsnumberFirst serve points won percentage
breakPointsSavedAnalyticsstringBreak points saved ratio (e.g. "5/7")
winnersAndUnforcedErrorsMCPobjectTotal winners, unforced errors, rally ratios, and forehand/backhand winners
serveSpeedTrackingobjectAverage 1st/2nd serve speeds, max speed, and T/Wide placement distributions
oddsBettingobjectDecimal and fractional odds for home and away sides

Pricing / Cost estimation

Tennis Abstract Player Match Scraper executes lightweight, asynchronous HTTP requests using direct JSON and fragment parsing rather than spawning resource-heavy browser sessions, making it fast and economical.

  • Average Run Time: 1 to 4 seconds per request.
  • Memory Allocation: 512 MB to 1024 MB is optimal for all modes.
  • Compute Unit (CU) Consumption: Approximately 0.0002 to 0.001 CU per execution.
  • Free Tier Coverage: With Apify's monthly free tier ($5 credit), you can execute thousands of player and match queries every month completely free of charge.

Tips or Advanced options

  1. Chain Player & Match Discovery: Use tournaments or tournamentDetails to discover active playerId and matchId parameters, then pass those into playerDetails or pointByPoint for automated data enrichment pipelines.
  2. Automate with Schedules: Under the Actor's Schedules tab, configure recurring runs (e.g., 0 6 * * * for daily morning ranking updates or */10 * * * * during Grand Slam matches).
  3. Apify Residential Proxies: While Tennis Abstract requests run smoothly without proxies, high-volume SofaScore requests benefit from Apify Residential Proxies ({ "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }).
  4. API & Webhook Integrations: Stream output records directly to your web server using Apify Webhooks triggered upon run completion.

FAQ, disclaimers, and support

Yes. Tennis Abstract Player Match Scraper collects publicly accessible pro sports records and tournament statistics. It does not access private user accounts or confidential data. Please ensure your data consumption respects local legal frameworks and source terms of use.

How does Tennis Abstract mapping work?

When you supply a positive SofaScore playerId, the Actor matches the player's name and demographic profile against Tennis Abstract's indexed registry (mwplayerlist.js), extracting complete historical splits, Elo rankings, and charting metrics.

What if a query returns zero rows?

If liveMatches is executed during off-peak hours with no active tournament sessions, or tournaments is checked on a date with no scheduled events, the Actor completes cleanly with an empty dataset.

Support & Custom Development

Need assistance, additional analytical splits, or customized tennis scraping features? Feel free to open a ticket on the Actor's Discussion tab in Apify Console.