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 21 Aug 2026

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 21 Aug 2026, 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

Alternatives to TourneyRadar API

If TourneyRadar does not fit, these sports & fitness apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.

APIWhat it doesAuthCORSLast verified
TheSportsDBFree sports database API with a public test key: teams, players, leagues, fixtures and results across football, basketball, cricket and more, with images. Tested.No keyYes19 Aug 2026
NHL Web APIFree NHL API with no key: live scores, standings, team rosters, player statistics and schedules from the official NHL data service. Tested curl example.No keyNo19 Aug 2026
OpenLigaDBFree OpenLigaDB API with no key: Bundesliga fixtures, results, tables and goalscorers, plus other leagues. Community-maintained open data. Tested example.No keyNo19 Aug 2026
wger Workout ManagerFree wger fitness API with no key for public data: exercise database with muscles worked, equipment, categories, images and nutrition information. Tested.No keyYes19 Aug 2026
DiscGolfAPIFree disc golf course API with no key: mapped courses by country with coordinates, region codes, operator details and explicit licence metadata. Tested example included.No keyYes21 Aug 2026
F1API.devFree Formula 1 API with no key: current season calendar, race results, driver and constructor standings, circuits and historical champions. Tested example included.No keyYes21 Aug 2026
All Sports & Fitness APIs

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