API for Rosstat statistics
A read-only REST API over the whole catalogue: 27,006 datasets and 52,157,396 values, refreshed every other day. Responses are JSON; every dataset also exports to CSV. The service is free, and browsing needs no key.
Base URL and formats
https://roschart.ru/api
All responses are UTF-8 JSON with Content-Type: application/json.
Dataset endpoints accept ?format=csv. The full contract is
published as OpenAPI 3.0 — point a code
generator at it and you have a client.
Endpoints
| Endpoint | What it returns |
|---|---|
GET /api/meta |
catalogue-wide counters and the timestamp of the current upload |
GET /api/sections |
list of sections with dataset counts |
GET /api/catalog |
search and filter: q, section,
kind, freq, limit,
offset, flat=1 for every edition |
GET /api/ids |
compact list of dataset ids, with since for incremental sync |
GET /api/dataset/{id} |
one dataset: periods, series, values; ?format=csv for a file |
GET /api/series/{id}/{n} |
a single series of a dataset |
GET /api/chart/{id} |
the chart specification the site itself renders: type, axes, series |
GET /api/revisions/{id} |
history of value revisions for a dataset |
GET /api/changes |
what changed in the last uploads |
Examples
# find datasets about wages
curl "https://roschart.ru/api/catalog?q=%D0%B7%D0%B0%D1%80%D0%BF%D0%BB%D0%B0%D1%82%D0%B0&limit=5"
# one dataset as JSON
curl "https://roschart.ru/api/dataset/<id>"
# the same dataset as CSV
curl "https://roschart.ru/api/dataset/<id>?format=csv" -o dataset.csv
# what changed since a given date
curl "https://roschart.ru/api/ids?since=2026-01-01"
Search still works on Russian words — titles are the ones Rosstat published. English titles are being added dataset by dataset and will become searchable as they land.
Keys and limits
Without a key: 20 requests per minute, 300 per day, up to 100 rows per page. A free key lifts that to 120 requests per minute and 1 000 rows per page. Keys are issued instantly at roschart.ru/docs/key (the form is in Russian; e-mail and a password is all it asks).
Send the key as a header:
curl -H "X-API-Key: <your key>" "https://roschart.ru/api/catalog?limit=1000"
Rate-limited responses come back as 429 with a
Retry-After header. Unknown paths under /api/
return 404 with a JSON error, never an HTML page.
Attribution
The data are official statistics of the Russian Federation published by Rosstat. If you use them, cite Rosstat as the source; a link back to roschart.ru is appreciated but not required. See the licence page for details.