# ATP Tour API

> ATP Tour returns men's singles rankings and tournament results as a workflow and API.

ATP Tour (ATP) returns men's singles rankings using a player name to find one player or a result count to list players. Get tournament results returns round-by-round singles match results, champion, dates, surface, and category for a tournament name or city and year.

- Page: https://fous.com/tools/atp-tour
- Handle: `@atp-tour`
- Category: [Sports](https://fous.com/tools/category/sports)
- Source website: https://atptour.com
- Last verified: Sep 29, 2026

## Methods

### Get rankings

Operation `get_rankings`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get ATP men's singles world rankings as of the latest published ranking date. Search for one ranked player by name or return up to 500 ranked players in rank order.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `player` | string | no | `"Carlos Alcaraz"` | Player name to find, for example Carlos Alcaraz. |
| `max_results` | integer | no | `125` | Maximum number of ranked players, for example 100 (up to 500). |

**Input schema**

```json
{
  "type": "object",
  "properties": {
    "player": {
      "type": "string",
      "default": "",
      "description": "Player name to find, for example Carlos Alcaraz.",
      "examples": [
        "Carlos Alcaraz"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 100,
      "maximum": 500,
      "minimum": 1,
      "description": "Maximum number of ranked players, for example 100 (up to 500).",
      "x-fous-developer": true,
      "examples": [
        125,
        500
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "player": "Carlos Alcaraz"
    },
    {
      "max_results": 125
    },
    {
      "max_results": 500
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `players` | array |  | Ranked singles players in ranking order. |
| `players[].age` | integer or null | `23` |  |
| `players[].rank` | integer | `3` |  |
| `players[].player` | string | `"Carlos Alcaraz"` |  |
| `players[].country` | string or null | `"Spain"` |  |
| `players[].places_moved` | integer | `0` | Positive means up in rank; negative means down. |
| `players[].profile_link` | string | `"https://www.atptour.com/en/players/carlos-alcaraz/a0e2/overview"` |  |
| `players[].ranking_points` | integer | `5060` |  |
| `players[].tournaments_played` | integer or null | `16` |  |
| `ranking_date` | string | `"2026-09-28"` | Date of the published rankings. |

**Example input**

```json
{
  "player": "Carlos Alcaraz"
}
```

**Example output**

```json
{
  "players": [
    {
      "age": 23,
      "rank": 3,
      "player": "Carlos Alcaraz",
      "country": "Spain",
      "places_moved": 0,
      "profile_link": "https://www.atptour.com/en/players/carlos-alcaraz/a0e2/overview",
      "ranking_points": 5060,
      "tournaments_played": 16
    }
  ],
  "ranking_date": "2026-09-28"
}
```

### Get tournament results

Operation `get_tournament_results`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get singles match results round by round for an ATP tournament and year, including the champion, dates, surface and category. If no year is given, uses the most recent listed edition.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `year` | integer | no | `2025` | Tournament year, such as 2025. Defaults to the most recent edition. |
| `tournament` | string | yes | `"Indian Wells"` | Tournament name or city, such as Wimbledon or Indian Wells. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "tournament"
  ],
  "properties": {
    "year": {
      "type": "integer",
      "description": "Tournament year, such as 2025. Defaults to the most recent edition.",
      "examples": [
        2025,
        2026
      ]
    },
    "tournament": {
      "type": "string",
      "description": "Tournament name or city, such as Wimbledon or Indian Wells.",
      "examples": [
        "Indian Wells",
        "Wimbledon"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "year": 2025,
      "tournament": "Indian Wells"
    },
    {
      "year": 2026,
      "tournament": "Wimbledon"
    },
    {
      "tournament": "Indian Wells"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `city` | string | `"Indian Wells"` |  |
| `link` | string | `"https://www.atptour.com/en/scores/archive/indian-wells/404/2025/results"` |  |
| `matches` | array |  |  |
| `matches[].link` | string | `"https://www.atptour.com/en/scores/archive/indian-wells/404/2025/results"` |  |
| `matches[].loser` | string | `"Holger Rune"` |  |
| `matches[].round` | string | `"Final"` |  |
| `matches[].score` | string | `"6-2 6-2"` |  |
| `matches[].winner` | string | `"Jack Draper"` |  |
| `matches[].loser_seed` | string or null | `"12"` |  |
| `matches[].winner_seed` | string or null | `"13"` |  |
| `surface` | string or null | `"Hard"` |  |
| `category` | string or null | `"ATP Masters 1000"` |  |
| `champion` | string or null | `"Jack Draper"` |  |
| `end_date` | string or null | `"2025-03-16"` |  |
| `start_date` | string or null | `"2025-03-05"` |  |
| `tournament_name` | string | `"ATP Masters 1000 Indian Wells"` |  |

**Example input**

```json
{
  "year": 2025,
  "tournament": "Indian Wells"
}
```

**Example output**

```json
{
  "city": "Indian Wells",
  "link": "https://www.atptour.com/en/scores/archive/indian-wells/404/2025/results",
  "matches": [
    {
      "link": "https://www.atptour.com/en/scores/archive/indian-wells/404/2025/results",
      "loser": "Holger Rune",
      "round": "Final",
      "score": "6-2 6-2",
      "winner": "Jack Draper",
      "loser_seed": "12",
      "winner_seed": "13"
    },
    {
      "link": "https://www.atptour.com/en/scores/archive/indian-wells/404/2025/results",
      "loser": "Carlos Alcaraz",
      "round": "Semi-finals",
      "score": "6-1 0-6 6-4",
      "winner": "Jack Draper",
      "loser_seed": "2",
      "winner_seed": "13"
    },
    {
      "link": "https://www.atptour.com/en/scores/archive/indian-wells/404/2025/results",
      "loser": "Daniil Medvedev",
      "round": "Semi-finals",
      "score": "7-5 6-4",
      "winner": "Holger Rune",
      "loser_seed": "5",
      "winner_seed": "12"
    }
  ],
  "surface": "Hard",
  "category": "ATP Masters 1000",
  "champion": "Jack Draper",
  "end_date": "2025-03-16",
  "start_date": "2025-03-05",
  "tournament_name": "ATP Masters 1000 Indian Wells"
}
```

## Quick start

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@atp-tour",
  "visibility": "public",
  "operation": "get_rankings",
  "version": 1,
  "input": {
    "player": "Carlos Alcaraz"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

body = json.loads("{\n  \"api\": \"@atp-tour\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_rankings\",\n  \"version\": 1,\n  \"input\": {\n    \"player\": \"Carlos Alcaraz\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=180) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_000),
  body: JSON.stringify({
  "api": "@atp-tour",
  "visibility": "public",
  "operation": "get_rankings",
  "version": 1,
  "input": {
    "player": "Carlos Alcaraz"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/atp-tour`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `get_rankings`: Get rankings. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `get_tournament_results`: Get tournament results. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-atp-tour https://api.fous.com/mcp/tools/atp-tour --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## Use cases

- Track men's singles ranking positions and points.
- Compare player rankings and movement.
- Review match scores by tournament round.
- Identify tournament champions, surfaces, and dates.

## FAQ

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this ATP Tour tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. With pay as you go, a credit costs 1¢. Monthly plans cost less per credit.

### Do I need a ATP Tour account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from atptour.com when you run it. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified on Sep 29, 2026.

### Who is ranked number one?

Use Get rankings to search for a player or return ranked players in rank order.

### How did players fare at a tournament?

Use Get tournament results with a tournament name or city and year to see singles results round by round.

## Related

- [PGA Tour API](https://fous.com/tools/pga-tour.md): PGA Tour provides official schedules and scores, defaulting to the latest available stroke-play event; unannounced purses and unavailable defending champions may be missing.
- [FIFA API](https://fous.com/tools/fifa.md): FIFA provides official men’s and women’s national-team rankings, excluding unranked teams, and year-specific tournament matches with scores, teams, stages and venues.
- [Chess.com API](https://fous.com/tools/chess-com.md): Chess.com returns public player profiles, ratings, records, puzzle scores, top-player rankings, and completed public games for a selected month, defaulting to the current UTC month.
- [Premier League API](https://fous.com/tools/premier-league.md): Premier League provides current/chosen-season tables and recent form, date-range fixtures/results (up to 380), player profiles and stats, and seasonal leaders; older-season stats may be limited.
- [NCAA API](https://fous.com/tools/ncaa.md): NCAA provides college sports scores and schedules from NCAA.com, including date-based games or football weeks, plus latest NCAA.com Top 25 rankings where published.
- [NBA API](https://fous.com/tools/nba.md): NBA provides up-to-seven-day schedules and scores, seasonal standings, player bios and available regular-season averages, plus matchup box scores, with undated matchups showing the latest.
- [ESPN API](https://fous.com/tools/espn.md): ESPN provides daily scores and schedules, team results, player statistics, matchup summaries, and latest topic-specific headlines; coverage and published details vary, especially for college and soccer.
- [Formula 1 API](https://fous.com/tools/formula-1.md): Formula 1 provides official calendars with session times and venues, completed race results defaulting to the latest current-season race, and driver and team standings through the last completed race.
- [All Sports tools](https://fous.com/tools/category/sports)
