Discover/ATP Tour API
live

ATP Tour APIatptour.com ↗

Access ATP Tour player profiles, career stats, rankings breakdowns, and match results via 10 endpoints. Filter by surface, year, rank range, and match type.

Endpoint health
verified 4d ago
get_player_profile
get_player_stats
get_player_rankings
list_rankings
list_rankings_breakdown
10/10 passing latest checkself-healing
Endpoints
10
Updated
5d ago

What is the ATP Tour API?

The ATP Tour API exposes 10 endpoints covering player profiles, serve and return statistics, rankings tables, and match-by-match activity from atptour.com. get_player_profile returns biographical fields including coach, handedness, backhand style, height, and weight keyed by ATP player ID. list_rankings lets you page through the official rankings table by rank range and historical week, while bulk endpoints like list_rankings_breakdown and list_rankings_activity aggregate data for entire rank windows in a single call.

This call costs1 credit / call— charged only on success
Try it
ATP player ID (e.g. 's0ag' for Jannik Sinner, 'a0e2' for Carlos Alcaraz). Found in the player's profile URL on atptour.com.
→ api.parse.bot/scraper/1935c3a3-665d-4c07-a20e-34cb2f37c676/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/1935c3a3-665d-4c07-a20e-34cb2f37c676/get_player_profile?player_id=s0ag' \
  -H 'X-API-Key: $PARSE_API_KEY'
All endpoints · 10 totalmissing one? ·

Retrieve a player's biographical details, current ranking, career win-loss record, titles, and prize money. Returns one player per call keyed by their ATP player ID.

Input
ParamTypeDescription
player_idrequiredstringATP player ID (e.g. 's0ag' for Jannik Sinner, 'a0e2' for Carlos Alcaraz). Found in the player's profile URL on atptour.com.
Response
{
  "type": "object",
  "fields": {
    "age": "integer",
    "coach": "string or null",
    "plays": "string — handedness description",
    "backhand": "string — backhand style",
    "height_cm": "integer",
    "is_active": "boolean",
    "last_name": "string",
    "player_id": "string — uppercase ATP player ID",
    "weight_kg": "integer",
    "birth_city": "string",
    "birth_date": "string — ISO datetime",
    "first_name": "string",
    "turned_pro": "integer — year turned professional",
    "nationality": "string — country name",
    "profile_url": "string — relative URL to player profile",
    "doubles_rank": "integer or null",
    "singles_rank": "integer or null",
    "singles_ytd_won": "integer",
    "ytd_prize_money": "string — formatted with currency symbol",
    "nationality_code": "string — 3-letter country code",
    "singles_ytd_lost": "integer",
    "doubles_high_rank": "integer",
    "singles_high_rank": "integer",
    "career_prize_money": "string — formatted with currency symbol",
    "singles_career_won": "integer",
    "singles_ytd_titles": "integer",
    "singles_career_lost": "integer",
    "singles_career_titles": "integer",
    "doubles_high_rank_date": "string — ISO datetime",
    "singles_high_rank_date": "string — ISO datetime"
  },
  "sample": {
    "data": {
      "age": 24,
      "coach": "Simone Vagnozzi, Darren Cahill",
      "plays": "Right-Handed",
      "backhand": "Two-Handed",
      "height_cm": 191,
      "is_active": true,
      "last_name": "Sinner",
      "player_id": "S0AG",
      "weight_kg": 77,
      "birth_city": "San Candido, Italy",
      "birth_date": "2001-08-16T00:00:00",
      "first_name": "Jannik",
      "turned_pro": 2018,
      "nationality": "Italy",
      "profile_url": "/en/players/jannik-sinner/s0ag/overview",
      "doubles_rank": null,
      "singles_rank": 1,
      "singles_ytd_won": 44,
      "ytd_prize_money": "$6,853,344",
      "nationality_code": "ITA",
      "singles_ytd_lost": 3,
      "doubles_high_rank": 124,
      "singles_high_rank": 1,
      "career_prize_money": "$64,837,801",
      "singles_career_won": 365,
      "singles_ytd_titles": 6,
      "singles_career_lost": 89,
      "singles_career_titles": 30,
      "doubles_high_rank_date": "2021-09-27T00:00:00",
      "singles_high_rank_date": "2024-06-10T00:00:00"
    },
    "status": "success"
  }
}

About the ATP Tour API

Player Data

get_player_profile returns a single player record per call, identified by the ATP player ID found in the player's profile URL (e.g. s0ag for Jannik Sinner). Fields include age, coach, plays (handedness), backhand, height_cm, weight_kg, birth_city, and is_active. get_player_stats adds serve and return statistics — aces, double faults, first-serve percentage, break points converted, and return games won — filterable by year (a four-digit string or 'all' for career totals) and surface. get_player_activity returns match-by-match tournament results for a given year and match type (sgl or dbl), including totals for won, lost, titles, and prize_money alongside a nested tournaments array.

Rankings Endpoints

list_rankings returns the ATP rankings table for a configurable rank_range (e.g. '0-100') and optional historical date_week (ISO Monday date). Each row includes rank, rank_tied, rank_change (negative when dropped), player identity fields, and points. get_player_rankings goes deeper: it accepts up to five comma-separated player IDs and returns a breakdown array showing each tournament's point contribution, plus ytd_won, ytd_lost, ytd_titles, and ytd_prize. The rank_type parameter switches between the rolling 52-week ATP Rankings ('roll') and the season ATP Race To Turin ('race').

Bulk / Batch Endpoints

Three bulk endpoints reduce round trips when you need data for a range of players. list_rankings_breakdown returns the Official Points breakdown for every player in a rank window in one call, and surfaces a failed_players array so you can identify any missing records. list_rankings_breakdown_with_matches extends that by embedding match-level detail (round, opponent, score) inside each tournament entry. list_rankings_activity returns a full season of match activity for every player in the range and additionally dates each match; it reports both failed_players and failed_results (tournament editions whose result pages could not be fetched).

Tournament Coverage

list_tournaments_by_country lists ATP Tour and ATP Challenger Tour events held in a given country during a season. It accepts a country parameter (name or 3-letter code), a tour filter ('atp', 'ch', or 'all'), and a year. When details_available is true, each tournament row includes surface, indoor/outdoor flag, draw sizes, and prize money. Coverage spans seasons from 2015 onward.

Reliability & maintenanceVerified

The ATP Tour API is a managed, monitored endpoint for atptour.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when atptour.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official atptour.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
4d ago
Latest check
10/10 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a live ATP rankings leaderboard pulling rank, rank_change, and points via list_rankings.
  • Track a player's serve performance across surfaces using get_player_stats with the surface filter.
  • Generate season-over-season win-loss trend charts from get_player_activity across multiple years.
  • Display a player profile card with coach, handedness, height, and nationality from get_player_profile.
  • Identify which tournaments contribute the most points to a player's ranking using the breakdown array from get_player_rankings.
  • Map ATP and Challenger tournament locations by country and season using list_tournaments_by_country.
  • Batch-fetch match histories for the top 100 players in a single call via list_rankings_activity.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does ATP Tour have an official developer API?+
ATP Tour does not publish a public developer API or document one at atptour.com. This Parse API is the structured way to access the data the site exposes.
What does get_player_rankings return beyond a player's current rank?+
It returns a breakdown array listing each tournament's point contribution to the player's ranking, along with ytd_won, ytd_lost, ytd_titles, and ytd_prize. You can switch between the 52-week ATP Rankings and the ATP Race To Turin with the rank_type parameter ('roll' or 'race'), and request up to five players in one call by passing comma-separated player IDs.
Can I retrieve historical rankings for a specific past date?+
list_rankings accepts a date_week parameter (an ISO Monday date, e.g. '2026-08-24') to retrieve rankings for a past week. list_rankings_breakdown and list_rankings_breakdown_with_matches reflect the current live rankings only and do not accept a historical date parameter.
Does the API cover doubles rankings and match results?+
Yes. Every rankings and activity endpoint accepts a match_type parameter. Pass 'dbl' for doubles or 'sgl' for singles. Both ranking types (ATP Rankings and ATP Race To Turin) are available for doubles via the rank_type parameter in get_player_rankings.
Are live in-progress match scores or draw brackets available?+
Not currently. The API covers completed match results (rounds, opponents, scores) via get_player_activity and list_rankings_activity, and tournament listings via list_tournaments_by_country, but does not include live scores or draw bracket data. You can fork this API on Parse and revise it to add an endpoint targeting the site's live scores or draw pages.
Page content last updated . Spec covers 10 endpoints from atptour.com.
Related APIs in SportsSee all →
fotmob.com API
Get live football scores, detailed match results, and comprehensive league statistics across multiple competitions. Access player and team performance data, browse upcoming fixtures by date, and dive into in-depth analytics for your favorite leagues and matches.
statshub.com API
Access detailed football match statistics including xG, xGA, and possession metrics across multiple leagues, plus retrieve fixtures by date and current league standings. Get comprehensive season-level and match-level performance data to analyze team and player statistics in depth.
tennisexplorer.com API
Access comprehensive tennis data from TennisExplorer, including player profiles, ATP rankings, tournament schedules, and today's match listings across ATP and WTA tours at all competition levels.
flashscore.com API
Search teams and competitions, pull daily fixtures and live scores, and retrieve match details including events, statistics, and league standings from FlashScore.
europeantour.com API
Track detailed hole-by-hole scorecards and round-by-round statistics for DP World Tour players to analyze performance across European Tour tournaments. Monitor individual player scores, course difficulty, and scoring patterns to gain insights into competitive golf results.
stats.ncaa.org API
Access comprehensive NCAA sports statistics to search for players, teams, and coaches, view game box scores and play-by-play data, and review team schedules, rosters, and rankings. Get detailed head coach records and scoreboard information to analyze performance across college sports.
maxpreps.com API
Access high school sports data from MaxPreps. Search for schools, retrieve team rosters and schedules, look up athlete profiles, and browse national or state rankings across all sports.
futbin.com API
Search and retrieve FIFA Ultimate Team player data including market prices, detailed statistics, and performance metrics. Analyze market trends and compare player values across the full EA FC player catalog.