FIDE Ratings

HTTP API

Public JSON API (CORS enabled). Base URL is this site’s origin, e.g. https://your-domain/. Query params use date=YYYY-MM and type=standard|rapid|blitz where noted.

API call creator

Pick an endpoint, fill the fields, then Run. The URL updates automatically. Tables below still click-fill path + query.

1. Endpoint

2. Parameters

Raw path & query (edit manually if you like)

Choose a recipe, adjust fields, Run.

Quick: · · · ·

Lists & players

MethodPathDescription
GET/api/listsAvailable list dates and types
GET/api/lists/:date/:typeFull list; optional ?limit=, ?format=csv — type path manually (get date from /api/lists first)
GET/api/top/:viewTop players: open, women, juniors, girls; ?date=&type=&limit=
GET/api/country/:fedTop by federation (e.g. USA); ?date=&type=&limit=. Each player includes represents_since (YYYY-MM start of current stint) and fed_always when another federation appears in data.
GET/api/gainsBiggest rating gains vs previous list
GET/api/lossesBiggest rating losses
GET/api/titles/:titleTitle holders (GM…WCM or ALL); ?date=&type=&limit=&fed=; first_title_list per player
GET/api/player/:idPlayer in a list (?date= default latest) — sample FIDE ID
GET/api/player/:id/historyRating history; ?type=&limit=
GET/api/player/:id/currentCurrent standard/rapid/blitz snapshot
GET/api/player/:id/profileProfile + current ratings
GET/api/search?q= — current + previous names (from history), FIDE ID; ?type= for rating column
GET/api/federationsFederation codes / names
GET/api/compare-countriesCompare federations on a list
GET/api/lists/overviewList overview payload for the in-app lists UI
GET/api/list-changes/new-titlesNew titles vs previous list; ?list=YYYY-MM (default latest)
GET/api/list-changes/fed-changesFederation changes; ?list=YYYY-MM
GET/api/list-changes/gender-changesGender changes; ?list=YYYY-MM&type=; optional name_changed=1
GET/api/titles-past/:titlePast title holders; ?type=&fed= (ALL, GM…WCM)
GET/api/playerprofile/:fideIdWidget-oriented profile JSON; optional include_history=true&history_limit= (max 5000)

Tools player info

Matches the Tools dropdown: each mode is available with ?mode=. Batch URL supports the same mode for every ID. Create PGN file is separate (POST to your app’s PGN route from the Tools page), not this JSON API.

?mode= (same as Tools)

modeTools labelAlwaysExtra by mode
fullFull infonameLatest row only, or add history[] (monthly lists for chosen type) with include_history=true
standardStandard ratingmode, name, fideidstandard_elo
averageAverage 12 momode, name, fideidaverage_rating_12m, months_used
peakPeakmode, name, fideidpeak_rating, peak_numeric_date, peak_month_year
peak12monthsPeak 12 momode, name, fideidpeak_rating, peak_numeric_date, peak_month_year, months_in_window

Batch: each element of players[] matches the same field set as one single-player response for that mode.

Endpoints

MethodPathNotes
GET/api/player/:id/info?mode=, ?type=standard|rapid|blitz. For mode=full, add include_history=true to append monthly history[].
GET/api/players/info?fideids= (max 80) + same mode for all. errors if not found or no history (for average/peak modes).
GET/player/:id/infoSame as /api/player/:id/info (Tools page).

Fields (one player object)

Each value is either a string or a number. Missing data uses the string "N/A" (same as Tools CSV).

JSON fieldTools columnDescription
nameNamePlayer name.
standard_eloStandard ratingCurrent classical rating as string, or N/A.
rapid_eloRapidCurrent rapid rating.
blitz_eloBlitzCurrent blitz rating.
world_rank_active_playersWorld rank (active)World rank on the latest standard list (active players), or N/A.
world_rank_rapid_active_playersWorld rank on latest rapid list (API only; same idea as standard).
world_rank_blitz_active_playersWorld rank on latest blitz list.
federationFederationThree-letter federation code.
birth_yearBirth yearFour-digit year when available.
sexSexM / F or N/A.
titleTitleFIDE + women’s title combined (e.g. GM, IM WGM).
fideidFIDE IDPresent when resolved; matches Tools row ID for numeric lookups.

Optional history[] (full mode only)

Default is current list only (no big array). Set include_history=true when you want every month’s rating for the chosen type in one response.

FieldDescription
historyOnly if include_history=true and mode=full. One entry per list month (same order as /api/player/:id/history?type=).
history[].standardRating that month (string; name kept for Tools CSV).
history[].numeric_dateYYYYMM for that list.

Stats

Paths under /api/stats/…. Most chart/table stats accept ?type=standard|rapid|blitz and inactive=1 where the server aggregates open lists — exceptions called out below. Responses are often cached in api_cache after first compute.

PathNotes
/api/stats/adult-improvers?age=30|40|50|60&max_rating=1800–2600&country=XYZ&limit= (optional cap)
/api/stats/age-rating-recordsStandard only (type ignored). ?age=5–100&women=1&limit=≤200&inactive=1
/api/stats/avg-age?top=10|100&women=1&inactive=1
/api/stats/avg-games?top=10|100&women=1&inactive=1
/api/stats/avg-rating?top=10|100&women=1&inactive=1
/api/stats/birth-year-cohortStandard only (type ignored). ?year= calendar birth year; cohort=overall|u20|u16|u14|u12; limit=10|100; women=1
/api/stats/birthdays-on-day?date=YYYY-MM-DD (year ignored) or ?month=&day=
/api/stats/country-in-top?top=10|100&women=1&fed=; inactive=1
/api/stats/country-in-top-players?top=&women=1&fed= (no inactive on this route)
/api/stats/fold-from-list-statsReads bundled fold_from_list_stats JSON from disk (404 if not generated)
/api/stats/gender-changesAll-time list; optional name_changed=1
/api/stats/generational-success?top=10|100&women=1
/api/stats/milestone-crossings?metric=rating|world_rank|women_rank&threshold=&women=1&title=GM&inactive=1
/api/stats/most-games-yearStandard only. ?mode=year|all|period&year= or from=&to= (YYYY-MM), title=, min_rating=, limit= (empty = all rows up to 200)
/api/stats/number-ones?women=1&inactive=1
/api/stats/player-count?activity=active|inactive|all&fed= (uses activity, not global inactive)
/api/stats/rating-decline?min_peak=&women=1
/api/stats/rating-distributionStandard only. ?year=; inactive=1
/api/stats/rating-threshold?min_rating=&title=GM|…|WCM&inactive=1
/api/stats/rating-type-presenceNo type (all list types). inactive=1
/api/stats/revoked-titles?title=ALL|GM|…
/api/stats/title-age-stats?title=&type=
/api/stats/title-counts-over-timeStandard lists only (path always uses standard title data). inactive=1
/api/stats/title-yearly?title= (no rating type)
/api/stats/top10-everFull open / women arrays (everyone with a career month in world top 10). inactive=1
/api/stats/women-percentage?pool=all|gm|im|…|1000&cohort=all|women|men&inactive=1
/api/stats/women-percentage-by-age?pool=&cohort=&inactive=1
/api/stats/women-percentage-by-rating-band?pool=&cohort=&inactive=1
/api/stats/women-percentage-age-ratingIntersection band; age_band + rating_band required (fixed vocabulary — see app UI)

CSV helpers

PathDescription
/api/csv/listsList export params
/api/csv/playerPlayer CSV
/api/csv/searchSearch CSV

Other