Overview
tourneyradar-api is a free, open-source REST API serving the same tournament data that powers the map on this site. No authentication, no API key, no cost.
Base URL: https://tourneyradar-api.vercel.app
Coverage grows every week as the scraper runs. See Site Analytics for current tournament and country counts. Licensed Apache-2.0.
Endpoints
| Endpoint | Params | Description |
|---|---|---|
GET /v1/tournaments | country, category, upcoming, fide_rated, limit, page | Paginated tournament list |
GET /v1/tournaments/:id | — | Single tournament by ID |
GET /v1/countries | — | All countries with tournament data |
GET /v1/search | q (required), limit, page | Full-text search across name, organizer, location |
q has PostgREST filter characters ((, ), ,) stripped before matching, so they can't break the query.
Quick Start
const res = await fetch(
'https://tourneyradar-api.vercel.app/v1/tournaments?country=IN&upcoming=true&limit=5'
)
const { data, meta } = await res.json()
console.log(`Found ${meta.total} tournaments`)
console.log(data.map((tournament) => tournament.name))curl "https://tourneyradar-api.vercel.app/v1/tournaments?country=IN&upcoming=true&limit=5"import requests
BASE_URL = 'https://tourneyradar-api.vercel.app'
res = requests.get(
f'{BASE_URL}/v1/tournaments',
params={'country': 'IN', 'upcoming': 'true', 'limit': 5},
timeout=15,
)
res.raise_for_status()
payload = res.json()
print(f"Found {payload['meta']['total']} tournaments")
print([t['name'] for t in payload['data']])Response Shape
List endpoints return data plus a meta block for pagination:
{
"data": [
{
"id": "cr_1234567",
"name": "Chennai Open 2026",
"city": "Chennai",
"country": "India",
"country_code": "IN",
"date": "2026-06-01",
"end_date": "2026-06-07",
"category": "Classical",
"fide_rated": true,
"rounds": 9,
"format": "Swiss",
"lat": 13.0827,
"lng": 80.2707,
"source_url": "https://chess-results.com/..."
}
],
"meta": { "page": 1, "limit": 5, "total": 248, "hasMore": true }
}A missing tournament returns HTTP 404 with:
{ "error": "Tournament not found", "status": 404 }Rate Limiting
There is currently no rate limiting. Responses are cached at the edge, so hammering the same query gains you nothing. Be reasonable.
Need bulk access? Open an issue on the API repo and say what you're building. Any future limits will be announced in that repo's changelog before they're enforced.
Building Something With This?
The API is its own open-source repo, separate from this site. A star helps it get found by other developers looking for chess tournament data, and issues (bug reports, feature requests, bulk-access asks) go straight to the person who maintains it.