1,506 chess openings and defences covering all 500 ECO codes (A00–E99) — free JSON/CSV, CC-BY 4.0.
The structured data behind Chess Openings — a free encyclopedia with a complete guide for every opening in the ECO. Each row is one publishable opening article: move order, strategic ideas for both sides, traps, famous practitioners, history and popularity/difficulty ratings.
Use it to seed opening tables, repertoire apps, chess GUIs, search filters, autocomplete, LLM fine-tuning, research — attribution is the only ask.
| File | Rows | Size | Description |
|---|---|---|---|
data/openings.json |
1,506 | ~1.2 MB | Full dataset, one object per opening |
data/openings.csv |
1,506 | ~0.8 MB | Flat CSV (arrays joined with ; ) |
- 69 opening families — the top-level systems (Najdorf, Ruy Lopez, King's Indian…), with full strategic write-ups
- 937 named variations — sub-lines grouped under their family
- 500 ECO code entries — one for every code A00–E99
JavaScript / TypeScript
const res = await fetch("https://raw.githubusercontent.com/Maahi420/chess-openings-data/main/data/openings.json");
const openings = await res.json();
console.log(openings.filter(o => o.eco.startsWith("B")).length); // 348 semi-open entriesPython
import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/Maahi420/chess-openings-data/main/data/openings.csv")
print(df[df.eco == "B90"].to_dict("records"))| Field | Type | Description |
|---|---|---|
name |
string | Full display name ("Sicilian Defence, Najdorf Variation") |
kind |
family | variation | eco |
Article type |
eco |
string | ECO code, "A00"–"E99" |
moves |
string | Main line in SAN from the initial position, e.g. "1.e4 c5 2.Nf3 d6 3.d4 cxd4 4.Nxd4 Nf6 5.Nc3 a6" |
side |
white | black | either |
Side the opening belongs to |
style |
enum | Aggressive / Positional / Solid / Sharp / Tricky / Universal |
tags |
string[] | Up to 3 of 25 tags (gambit, hypermodern, fianchetto, trap-heavy…) |
popularity |
1–5 | 5 = world-class main line |
difficulty |
1–5 | 5 = thickest theory |
description |
string | What the opening is and why it's played |
white_ideas |
string | Strategic plans for White (families) |
black_ideas |
string | Strategic plans for Black (families) |
traps |
string[] | Named traps with one-line explanations (families) |
famous_players |
string[] | Notable practitioners (families) |
history |
string | Short history (families) |
url |
string | The full guide on chess-openings.sryze.cc |
{
"name": "Sicilian Defence, Najdorf Variation",
"kind": "family",
"eco": "B90",
"moves": "1.e4 c5 2.Nf3 d6 3.d4 cxd4 4.Nxd4 Nf6 5.Nc3 a6",
"side": "black",
"style": "Sharp",
"tags": ["counter-attacking", "elite-favourite", "tactical"],
"popularity": 5,
"difficulty": 5,
"description": "The Najdorf is chess at its most ferocious...",
"traps": ["..."],
"famous_players": ["Bobby Fischer", "Garry Kasparov"],
"url": "https://chess-openings.sryze.cc/opening/sicilian-defence-najdorf-variation-b90"
}- Complete: every ECO code, not a highlights reel
- Rich: strategic ideas and traps per opening, not bare move lists
- Clean: consistent schema, typed fields, machine-readable from day one
- Living: maintained as part of chess-openings.sryze.cc, where every row links to its full interactive guide
CC BY 4.0 — free for any use, including commercial, with attribution:
Chess Openings Dataset by chess-openings.sryze.cc/, licensed under CC BY 4.0.
Contact: amysinclaire944@gmail.com — questions, licensing, or corrections welcome.
Used it? A link back to https://chess-openings.sryze.cc/ helps others find the full guides — and do open an issue to say hi. 🤝