Tennis Abstract Player Match Scraper
Pricing
from $15.00 / 1,000 results
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
Maintained by CommunityActor 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:
- Sign up or log in to your free Apify Console.
- Navigate to the Tennis Abstract Player Match Scraper Actor page and click Try for free.
- Select your desired Scraper mode under the Input tab (e.g., Player details, Live matches, Tournaments, Point by point, Tournament seasons, or Tournament details).
- Fill in the required or optional parameters (e.g.,
playerId: 275923for Carlos Alcaraz or206570for Jannik Sinner). - Click Start to run the Actor.
- 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
| Mode | Title | Description | Key Parameters |
|---|---|---|---|
playerDetails | Player profile & career analytics | Historical match logs, Elo ratings, surface splits, charting stats & H2Hs | playerId (positive integer) |
liveMatches | Live matches & odds | Instantaneous snapshots of pro tour matches in progress with live scores & odds | maxMatches (optional cap) |
tournaments | Scheduled tournaments by date | Discover all tournaments scheduled on a calendar date across ATP/WTA/ITF | date (YYYY-MM-DD) |
pointByPoint | Point-by-point match progression | Full set, game, and point progression with server & period statistics | matchId (positive integer) |
tournamentSeasons | Available tournament seasons | Retrieve all past and active season IDs for any unique tournament | tournamentId (positive integer) |
tournamentDetails | Tournament details & match draw | Tournament metadata, defending champions, and full match draw list | tournamentId, 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 forplayerDetails): Positive SofaScore player ID (e.g.,275923for Carlos Alcaraz,206570for Jannik Sinner,14882for Novak Djokovic). The Actor automatically resolves the corresponding Tennis Abstract profile.maxMatches(integer, optional forliveMatches): Maximum number of live matches to extract. Leave empty or set to0for no limit.date(string, required fortournaments): Calendar date inYYYY-MM-DDformat (e.g.,"2024-09-11").matchId(integer, required forpointByPoint): Positive SofaScore match ID.tournamentId(integer, required fortournamentSeasonsandtournamentDetails): Positive tournament ID (e.g.,2361for Wimbledon).seasonId(integer, optional fortournamentDetails): 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 Name | Category | Type | Description |
|---|---|---|---|
id | Identifier | integer | Unique ID of the player, match, or tournament |
fullName | Profile | string | Player full legal name |
country | Profile | string | Player nationality / country code |
currentRank / peakRank | Ranking | integer | Current official pro ranking and career-high ranking |
eloRank / eloRating | Rating | integer | Tennis Abstract Elo rating and global Elo ranking |
recordType | Metadata | string | Record type ("playerProfile", "recentResult", "tourLevelSeason", "careerTourLevelSplit", "matchChartingServe", etc.) |
tournament | Schedule | string | Tournament name |
surface | Environment | string | Court surface ("Hard", "Clay", "Grass", "Indoors") |
round | Schedule | string | Round stage ("F", "SF", "QF", "R16", "R32", "R64", "R128") |
opponentName | Match | string | Opponent's full name |
opponentRank | Match | integer | Opponent's pro ranking at match date |
result | Match | string | Match outcome ("W" for win, "L" for loss) |
score | Match | string/object | Final match scoreline or live set/game score |
dominanceRatio | Analytics | number | Ratio of return points won % to service points lost % |
firstServeWonPercentage | Analytics | number | First serve points won percentage |
breakPointsSaved | Analytics | string | Break points saved ratio (e.g. "5/7") |
winnersAndUnforcedErrors | MCP | object | Total winners, unforced errors, rally ratios, and forehand/backhand winners |
serveSpeed | Tracking | object | Average 1st/2nd serve speeds, max speed, and T/Wide placement distributions |
odds | Betting | object | Decimal 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
- Chain Player & Match Discovery: Use
tournamentsortournamentDetailsto discover activeplayerIdandmatchIdparameters, then pass those intoplayerDetailsorpointByPointfor automated data enrichment pipelines. - 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). - Apify Residential Proxies: While Tennis Abstract requests run smoothly without proxies, high-volume SofaScore requests benefit from Apify Residential Proxies (
{ "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }). - API & Webhook Integrations: Stream output records directly to your web server using Apify Webhooks triggered upon run completion.
FAQ, disclaimers, and support
Is it legal to scrape tennis data?
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.