BYTETOOLS

TourneyRadar API

Free chess tournament API with no key: upcoming events aggregated from 140+ national federations, plus a country index and keyword search. Tested example included.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the TourneyRadar API?

TourneyRadar aggregates upcoming chess tournaments from more than 140 national federations into one keyless JSON API. The countries endpoint returns the federations currently covered as ISO code and name pairs.

Chess federations each publish their calendar in their own format, in their own language, on their own site — which is why finding tournaments abroad is such a chore. TourneyRadar does the aggregation and normalises everything into one schema, so a player planning a trip can query one endpoint instead of reading forty federation websites.

Starting from `/v1/countries` rather than `/v1/tournaments` is the right approach, and the reason is coverage. Federations get added and removed as sources come and go, so the country list is the live statement of what is actually available right now — building a filter dropdown from a hard-coded ISO list will offer users countries that return nothing. The response is a flat `data` array of code and name pairs, with the country names in English regardless of the federation's own language.

Quick facts

Base URL
https://tourneyradar-api.vercel.app/v1
Authentication
No API key and no account.
Rate limit
No published limit. Tournament calendars change slowly — cache for hours.
Pricing
Free.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the TourneyRadar API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. List the covered chess federations

GET https://tourneyradar-api.vercel.app/v1/countries

curl
curl 'https://tourneyradar-api.vercel.app/v1/countries'
JavaScript (fetch)
const res = await fetch("https://tourneyradar-api.vercel.app/v1/countries");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://tourneyradar-api.vercel.app/v1/countries", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "data": [
    {
      "country_code": "AM",
      "country": "Armenia"
    },
    {
      "country_code": "AO",
      "country": "Angola"
    },
    {
      "country_code": "AR",
      "country": "Argentina"
    },
    {
      "country_code": "AT",
      "country": "Austria"
    },
    {
      "country_code": "AZ",
      "country": "Azerbaijan"
    },
    {
      "country_code": "BR",
      "country": "Brazil"
    },
    {
      "country_code": "CA",
      "country": "Canada"
    },
    {
      "country_code": "CH",
      "country": "Switzerland"
    },
    {
      "country_code": "CN",
      "country": "China"
    },
    {
      "country_code": "CY",
      "country": "Cyprus"
    },
    {
      "country_code": "CZ",
      "country": "Czech Republic"
    },
    {
      "country_code": "DE",
      "country": "Germany"
    },
    {
      "country_code": "EG",
      "country": "Egypt"
    },
    {
      "country_code": "ES",
      "country": "Spain"
    },
    {
      "country_code": "FI",
      "country": "Finland"
    },
    {
      "country_code": "FR",
      "country": "France"
    },
    {
      "country_code": "GB",
      "country": "England"
    },
    {
      "country_code": "GR",
      "country": "Greece"
    },
    {
      "country_code": "HR",
      "country": "Croatia"
    },
    {
      "country_code": "HU",
      "country": "Hungary"
    },
    {
      "country_code": "ID",
      "country": "Indonesia"
    },
    {
      "country_code": "IL",
      "country": "Israel"
    },
    {
      "country_code": "IN",
      "country": "India"
    },
    {
      "countr

Parameters

ParameterTypeRequiredDescription
(none)n/aOptionalThe countries endpoint takes no parameters.
/tournamentspathOptionalThe main listing endpoint, filterable by country.
/searchpathOptionalKeyword search across tournament names, taking a `q` parameter.

Response fields

dataarray
The covered federations, sorted by country code.
data[].country_codestring
ISO 3166-1 alpha-2 code, for example `AM` or `BR`.
data[].countrystring
English country name, regardless of the federation's own language.

What you can build with the TourneyRadar API

  • Build a country picker that only offers federations with actual coverage
  • Find upcoming tournaments abroad for a travelling player
  • Track how many federations publish machine-readable calendars
  • Feed a chess club's noticeboard with regional events

Common errors and how to fix them

Country returns no tournaments

That federation is covered but currently has nothing upcoming.

Fix: An empty list is a valid answer. Distinguish it from an unsupported country by checking the countries endpoint first.

Country missing from the list

Coverage depends on which federations publish usable calendars.

Fix: Do not hard-code an ISO country list. Build your filter from this endpoint so it always matches reality.

Stale event data

Tournaments are aggregated from upstream federation sites on a schedule.

Fix: Cache for hours and always link back to the federation listing as the authority.

TourneyRadar API — frequently asked questions

Is the TourneyRadar API free?

Yes, free with no key and no account. It aggregates publicly published federation calendars.

How many federations are covered?

More than 140, but the exact set changes as sources come and go. The countries endpoint is the live answer at any moment.

Why start with the countries endpoint?

Because coverage is not universal. Building a filter from a static ISO list will offer users countries with no data behind them; building it from this endpoint cannot.

Can I search by tournament name?

Yes. The `/v1/search?q=` endpoint runs a keyword search across the aggregated tournament listings.

Tools that pair with this API

TourneyRadar is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.