Baseline Rank API
Built for agencies who manage dozens of player sites. Use a single API key to keep every profile current, whether you deploy static pages or a headless CMS.
https://api.baselinerank.com
Quickstart
Paste a key, call the endpoint, and render the response in your player page.
Authorization: Bearer {API_KEY}
Keys are scoped to your organization and roster.
curl -H "Authorization: Bearer {API_KEY}" \
https://api.baselinerank.com/players/a0e2
Drop this into a build step or a serverless function.
{
"data": {
"atp_id": "a0e2",
"name_short": "C. Alcaraz",
"country": "Spain",
"rank": 1,
"points": 13550,
"coach": "Samuel Lopez",
"career_titles": 26
}
}
Wrap in your player page template and you're done.
Endpoints
All endpoints require Authorization: Bearer <API_KEY>.
curl -H "Authorization: Bearer <API_KEY>" \
https://api.baselinerank.com/players/a0e2
{
"data": {
"atp_id": "a0e2",
"name_short": "C. Alcaraz",
"country": "Spain",
"dob": "2003-05-05",
"height_cm": 183,
"weight_kg": 74,
"plays": "Right-Handed, Two-Handed Backhand",
"coach": "Samuel Lopez",
"turned_pro": 2018,
"rank": 1,
"points": 13550,
"movement": 0,
"tournaments_played": 17,
"career_high_rank": 1,
"career_wins": 292,
"career_losses": 65,
"career_titles": 26,
"ytd_prize_money": "$3,301,730",
"career_prize_money": "$63,333,776",
"scraped_at": "2026-03-03T21:03:09Z"
}
}
{
"error": "Player not found"
}
curl -H "Authorization: Bearer <API_KEY>" \
"https://api.baselinerank.com/players/su87/ranking/history?limit=52"
{
"data": {
"atpId": "su87",
"type": "singles",
"history": [
{ "date": "2026-03-02", "rank": 64 },
{ "date": "2026-02-23", "rank": 65 },
{ "date": "2026-02-16", "rank": 60 },
{ "date": "2026-02-09", "rank": 60 },
{ "date": "2026-02-02", "rank": 40 },
{ "date": "2026-01-19", "rank": 40 }
]
}
}
{
"error": "Player not found"
}
curl -H "Authorization: Bearer <API_KEY>" \
https://api.baselinerank.com/v1/rosters/acme/rankings
{
"agency": "Baseline Sports Group",
"updatedAt": "2026-02-23",
"players": [
{ "name": "Coco Gauff", "rank": 3, "trend": 1 },
{ "name": "Carlos Alcaraz", "rank": 2, "trend": 0 }
]
}
{
"events": ["rank.updated"],
"callbackUrl": "https://yoursite.com/hooks/rank"
}
{
"data": {
"atp_id": "a0e2",
"name_short": "C. Alcaraz",
"country": "Spain",
"dob": "2003-05-05",
"height_cm": 183,
"weight_kg": 74,
"plays": "Right-Handed, Two-Handed Backhand",
"coach": "Samuel Lopez",
"turned_pro": 2018,
"rank": 1,
"points": 13550,
"movement": 0,
"tournaments_played": 17,
"career_high_rank": 1,
"career_wins": 292,
"career_losses": 65,
"career_titles": 26,
"ytd_prize_money": "$3,301,730",
"career_prize_money": "$63,333,776",
"scraped_at": "2026-03-03T21:03:09Z"
}
}
Search by player name — select one to get a live response from the API.
// Search for a player above to get a live response
Reference
Authentication, rate limits, errors, and SDKs.
Authentication
Use Bearer tokens for server or client-side requests.
Authorization: Bearer {API_KEY}
Rate limits
Default: 600 requests / minute per key.
X-RateLimit-Limit: 600
X-RateLimit-Remaining: 542
Error handling
Structured errors with consistent status codes.
{
"error": "not_found",
"message": "Player ID not recognized"
}
SDKs Coming soon
Native clients for JavaScript and Python are in development. Until then, the API is fully usable with fetch, curl, or any HTTP client.
const res = await fetch(
"https://api.baselinerank.com/players/a0e2",
{ headers: { Authorization: "Bearer " + API_KEY } }
);
const { data } = await res.json();
Response schema
Field definitions for /players/{atpId}.
a0e2.
C. Alcaraz.
Spain.
$3,301,730.
Ranking history schema
Field definitions for /players/{atpId}/ranking/history.
singles or doubles.
2026-03-02.
Error codes
- not_found — Player ID is not recognized.
- unauthorized — Missing or invalid API key.
- rate_limited — Too many requests in a short window.
- invalid_request — Malformed parameters.
Versioning
The API is versioned under /v1. Future versions will ship behind a new
base path. Breaking changes will be announced in the changelog with a deprecation
window before removal.
Use cases for agency teams
Keep every player surface accurate without a content rewrite.
Player microsites
Embed live rankings on every player profile without redeploys.
Agency dashboards
Track every athlete in a roster view.
Sponsor reports
Export rank history for partner updates.
Press kits
Embed live rankings into media pages.
Official data, no manual updates
Daily refresh directly from the official tour tables.
Built for scale
One key supports dozens or hundreds of player sites.
Clear audit trail
Every response includes the publish date.
Roster tiers
Plans tuned to player volume and support requirements.
Starter
Up to 10 players
Email support, shared infrastructure.
Agency
Up to 100 players
Webhooks + 99.9% uptime SLA.
Enterprise
Unlimited players
Dedicated support and custom SLA.
FAQ
Everything you need before connecting player sites.
How often are rankings updated?
Daily, directly from official ATP and WTA rankings tables.
Can I request multiple players at once?
Yes, the roster endpoint returns all players in one response.
Do you offer webhooks?
Rank-change webhooks are available on Agency and Enterprise tiers.
Is the data official?
Yes, the dataset is sourced daily from official tour tables.
Get your API key
Start with a trial key. No credit card required.
Need help? Talk to sales.
Changelog
API and documentation updates.
API status
Current status of Baseline Rank API services.
Last checked just now. View status page