TourneyRadar puts 1,100+ upcoming chess tournaments across 80+ countries on one interactive map, updated weekly.
Chess tournaments are scattered across Chess-Results.com, federation websites, and club newsletters. TourneyRadar puts them all in one place. Filter by country, time control, and FIDE rating status. No account needed.
![]() |
![]() |
| Interactive World Map - All tournaments at a glance with clustered pins | Paginated List - Browse and search tournaments by country, format, rating |
- Interactive Leaflet map with real-time tournament clusters
- Zoom to any region: Europe, Asia, Americas
- Click pins for instant tournament details
- No login required
- Filter by country, time control, FIDE rating status
- Search tournaments by name, organizer, venue
- Upcoming tournaments sorted by date
- Discover new events in your region
- Complete info: venue, prize pool, time control, rounds, registration link
- Contact organizer via email or WhatsApp
- External links to Chess-Results and federation websites
- Tournament status (ongoing, completed, upcoming)
- Visit
/statsfor tournament frequency, popular formats, and regional breakdowns - No authentication required
- Updated weekly as new tournaments are scraped
| Component | Technology |
|---|---|
| Frontend | Next.js 16, React 19, TypeScript |
| Styling | Tailwind CSS v4 |
| Maps | Leaflet + react-leaflet-cluster |
| Backend | Supabase (PostgreSQL) |
| Data Pipeline | Puppeteer scraper (GitHub Actions weekly) |
| Deployment | Vercel |
- Node.js 20+
- npm or yarn
-
Clone and install:
git clone https://github.com/AnayDhawan/tourneyradar.git cd tourneyradar npm install -
Set up environment variables:
cp .env.local.example .env.local
Fill in your Supabase project URL and keys. See
.env.local.examplefor all required variables. -
Run dev server:
npm run dev
-
Lint code:
npm run lint
Tournament data is freely available: no auth, no key, no cost.
Base URL: https://tourneyradar-api.vercel.app
| Endpoint | Method | Description |
|---|---|---|
/v1/tournaments |
GET | List tournaments (filter by country, category, upcoming, fide_rated) |
/v1/tournaments/:id |
GET | Single tournament details |
/v1/countries |
GET | All countries with tournament data |
curl "https://tourneyradar-api.vercel.app/v1/tournaments?country=IN&upcoming=true"Response:
[
{
"id": "tour-001",
"name": "Bangalore Open 2026",
"location": "Bangalore, India",
"country": "India",
"country_code": "IN",
"lat": 12.9716,
"lng": 77.5946,
"date": "2026-06-15",
"fide_rated": true,
"time_control": "90+30",
"prize_pool": "₹5,00,000"
}
]Full API docs: tourneyradar-api
A Puppeteer scraper hits Chess-Results.com weekly across 140+ federation codes, parses tournament details, geocodes locations via Google Maps, and upserts everything into Supabase. Runs automatically via GitHub Actions with no manual intervention needed.
| Route | Description |
|---|---|
/ |
Interactive world map |
/tournaments |
Paginated list of all tournaments |
/tournaments/[id] |
Tournament detail page |
/country/[code] |
Tournaments filtered by country code |
/stats |
Public analytics dashboard |
| Route | Description |
|---|---|
/player/login |
Sign in |
/player/register |
Create account |
/player/wishlist |
Saved tournaments |
| Route | Method | Description |
|---|---|---|
/api/tournaments |
GET | List tournaments |
/api/tournaments/upcoming |
GET/POST | Paginated upcoming tournaments |
/api/wishlist |
GET/POST/DELETE | Player favorites |
/api/cron/scrape-tournaments |
POST | Vercel cron trigger |
See CONTRIBUTING.md.
Good first issues: add a new data source, add a missing country, improve the map UI.
Apache-2.0. Use freely, give credit where it's due.
Questions? Open an issue or reach out at tourneyradar.com.


