# ATP top 10 by Elo with player profiles

**Use case:** 

The top 10 ATP players on Tennis Abstract's Elo list with surface Elo, plus current and best official rank, date of birth, height, playing hand, backhand and country from each player's page.

## Input

```json
{
  "tours": [
    "atp"
  ],
  "maxPlayersPerTour": 10,
  "includeProfile": true,
  "surface": "overall",
  "alsoReturnRankings": false
}
```

## Output

```json
{
  "rowType": {
    "label": "Row Type",
    "format": "string"
  },
  "tour": {
    "label": "Tour",
    "format": "string"
  },
  "eloRank": {
    "label": "Elo Rank",
    "format": "string"
  },
  "playerName": {
    "label": "Player Name",
    "format": "string"
  },
  "elo": {
    "label": "Elo",
    "format": "string"
  },
  "hardElo": {
    "label": "Hard Elo",
    "format": "string"
  },
  "clayElo": {
    "label": "Clay Elo",
    "format": "string"
  },
  "grassElo": {
    "label": "Grass Elo",
    "format": "string"
  },
  "peakElo": {
    "label": "Peak Elo",
    "format": "string"
  },
  "officialRank": {
    "label": "Official Rank",
    "format": "string"
  },
  "matchup": {
    "label": "Matchup",
    "format": "string"
  },
  "surface": {
    "label": "Surface",
    "format": "string"
  },
  "player1Name": {
    "label": "Player1 Name",
    "format": "string"
  },
  "player2Name": {
    "label": "Player2 Name",
    "format": "string"
  },
  "player1WinProbability": {
    "label": "Player1 Win Probability",
    "format": "string"
  },
  "player2WinProbability": {
    "label": "Player2 Win Probability",
    "format": "string"
  },
  "source": {
    "label": "Source",
    "format": "string"
  },
  "status": {
    "label": "Status",
    "format": "string"
  },
  "note": {
    "label": "Note",
    "format": "string"
  },
  "scrapedAt": {
    "label": "Scraped At",
    "format": "string"
  },
  "player1Id": {
    "label": "Player1 Id",
    "format": "string"
  },
  "player1Elo": {
    "label": "Player1 Elo",
    "format": "string"
  },
  "player1EloRank": {
    "label": "Player1 Elo Rank",
    "format": "string"
  },
  "player2Id": {
    "label": "Player2 Id",
    "format": "string"
  },
  "player2Elo": {
    "label": "Player2 Elo",
    "format": "string"
  },
  "player2EloRank": {
    "label": "Player2 Elo Rank",
    "format": "string"
  },
  "eloDifference": {
    "label": "Elo Difference",
    "format": "string"
  },
  "player1FairDecimalOdds": {
    "label": "Player1 Fair Decimal Odds",
    "format": "string"
  },
  "player2FairDecimalOdds": {
    "label": "Player2 Fair Decimal Odds",
    "format": "string"
  },
  "player1WinProbabilityOverallElo": {
    "label": "Player1 Win Probability Overall Elo",
    "format": "string"
  },
  "formula": {
    "label": "Formula",
    "format": "string"
  },
  "ratingsDate": {
    "label": "Ratings Date",
    "format": "string"
  },
  "playerId": {
    "label": "Player Id",
    "format": "string"
  },
  "playerUrl": {
    "label": "Player Url",
    "format": "string"
  },
  "age": {
    "label": "Age",
    "format": "string"
  },
  "hardEloRank": {
    "label": "Hard Elo Rank",
    "format": "string"
  },
  "clayEloRank": {
    "label": "Clay Elo Rank",
    "format": "string"
  },
  "grassEloRank": {
    "label": "Grass Elo Rank",
    "format": "string"
  },
  "peakEloMonth": {
    "label": "Peak Elo Month",
    "format": "string"
  },
  "rankLogDiff": {
    "label": "Rank Log Diff",
    "format": "string"
  },
  "currentOfficialRank": {
    "label": "Current Official Rank",
    "format": "string"
  },
  "bestOfficialRank": {
    "label": "Best Official Rank",
    "format": "string"
  },
  "bestRankFirstDate": {
    "label": "Best Rank First Date",
    "format": "string"
  },
  "bestRankLastDate": {
    "label": "Best Rank Last Date",
    "format": "string"
  },
  "dateOfBirth": {
    "label": "Date Of Birth",
    "format": "string"
  },
  "heightCm": {
    "label": "Height Cm",
    "format": "string"
  },
  "plays": {
    "label": "Plays",
    "format": "string"
  },
  "backhand": {
    "label": "Backhand",
    "format": "string"
  },
  "country": {
    "label": "Country",
    "format": "string"
  },
  "active": {
    "label": "Active",
    "format": "string"
  },
  "profileStatus": {
    "label": "Profile Status",
    "format": "string"
  },
  "query": {
    "label": "Query",
    "format": "string"
  },
  "sourceUrl": {
    "label": "Source Url",
    "format": "string"
  }
}
```

## About this Actor

This example demonstrates how to use [Tennis Elo Ratings Scraper - ATP & WTA Surface Elo, Win Odds](https://apify.com/neverempty/tennis-elo-ratings-scraper.md) with a specific input configuration. Visit the [Actor detail page](https://apify.com/neverempty/tennis-elo-ratings-scraper.md) to learn more, explore other use cases, and run it yourself.


## How to integrate an Actor?

This Task's input is already configured above. Use it as-is rather than inventing a new one.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For full API examples (JavaScript, Python, CLI, MCP, OpenAPI), see this Task's Actor page: https://apify.com/neverempty/tennis-elo-ratings-scraper.md

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).
