Eurostat API
Free Eurostat dissemination API with no key: HICP inflation, GDP, unemployment and thousands of EU datasets as JSON-stat, filtered by dimension. Tested example included.
Endpoint tested and returned HTTP 200 on 21 Aug 2026
What is the Eurostat API?
Eurostat serves its entire statistical database through a free JSON API with no key. A request names a dataset code and filters it by dimension values, returning JSON-stat 2.0 with the observations and their dimension metadata.
This one API covers the whole of Eurostat: HICP inflation, GDP, unemployment, trade, energy, demography — several thousand datasets addressed by short codes like `prc_hicp_manr`. Filtering happens through dimension parameters rather than a query language, so `geo=EA&coicop=CP00&unit=RCH_A` narrows a multi-million-cell dataset to the euro area headline annual rate in one request.
JSON-stat 2.0 is the part that needs a moment. `value` is not an array of observations — it is a **sparse object keyed by a flattened index** into the cross-product of the dimensions listed in `id`, with `size` giving the extent of each. Decoding it means computing that index yourself, and a missing key means a genuinely missing observation rather than a zero. Add `lastTimePeriod` while developing, because an unfiltered dataset request can return an enormous payload.
Quick facts
- Base URL
https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/data- Authentication
- No key or registration. Published under the European Commission's open data policy.
- Rate limit
- No published per-key limit, but unfiltered requests on large datasets are rejected for size. Filter by dimension.
- Pricing
- Free.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the Eurostat 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. Euro area annual HICP inflation, last three months
GET https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/data/prc_hicp_manr?format=JSON&lang=EN&coicop=CP00&unit=RCH_A&geo=EA&lastTimePeriod=3
curl 'https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/data/prc_hicp_manr?format=JSON&lang=EN&coicop=CP00&unit=RCH_A&geo=EA&lastTimePeriod=3'const res = await fetch("https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/data/prc_hicp_manr?format=JSON&lang=EN&coicop=CP00&unit=RCH_A&geo=EA&lastTimePeriod=3");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/data/prc_hicp_manr?format=JSON&lang=EN&coicop=CP00&unit=RCH_A&geo=EA&lastTimePeriod=3", timeout=20)
res.raise_for_status()
print(res.json()){
"version": "2.0",
"class": "dataset",
"label": "HICP - monthly data (annual rate of change)",
"source": "ESTAT",
"updated": "2026-02-06T23:00:00+0100",
"value": {
"0": 2.1,
"1": 2.1,
"2": 2.0
},
"id": [
"freq",
"unit",
"coicop",
"geo",
"time"
],
"size": [
1,
1,
1,
1,
3
],
"dimension": {
"freq": {
"label": "Time frequency",
"category": {
"index": {
"M": 0
},
"label": {
"M": "Monthly"
}
}
},
"unit": {
"label": "Unit of measure",
"category": {
"index": {
"RCH_A": 0
},
"label": {
"RCH_A": "Annual rate of change"
}
}
},
"coicop": {
"label": "Classification of individual consumption by purpose (COICOP)",
"category": {
"index": {
"CP00": 0
},
"label": {
"CP00": "All-items HICP"
}
}
},
"geo": {
"label": "Geopolitical entity (reporting)",
"category": {
"index": {
"EA": 0
},
"label": {
"EA": "Euro area (EA11-1999, EA12-2001, EA13-2007, EA15-2008, EA16-2009, EA17-2011, EA18-2014, EA19-2015, EA20-2023, EA21-2026)"
}
}
},
"time": {
"label": "Time",
"category": {
"index": {
"2025-10": 0,
"2025-11": 1,
"2025-12": 2
},
"label": {
"2025-10": "2025-10",
"2025-11": "2025-11",
"2025-12": "2025-12"
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
dataset code | path segment | Required | Eurostat dataset identifier, for example `prc_hicp_manr` for HICP annual rates of change. prc_hicp_manr |
format | query | Optional | `JSON` for JSON-stat, `SDMX-CSV` for a flat CSV that is much easier to parse. JSON |
geo | query | Optional | Geographic filter — a country code, or `EA` for the euro area and `EU27_2020` for the EU. EA |
lastTimePeriod | query | Optional | Return only the most recent N periods. Essential for keeping responses small. 3 |
time | query | Optional | Specific periods instead of the most recent N. 2026-06 |
unit / coicop / other dimensions | query | Optional | Dataset-specific dimension filters. Each dataset defines its own set. RCH_A |
Response fields
labelstring- Human-readable dataset title.
updatedstring- When Eurostat last refreshed this dataset.
idarray- Ordered list of dimension names. The order defines how the flattened index into `value` is computed.
sizearray- Extent of each dimension, in the same order as `id`.
valueobject- Sparse map from flattened index to observation. A missing key means no observation, not zero.
dimension.{name}.category.indexobject- Maps each dimension code to its position, which you need to compute the flattened index.
dimension.{name}.category.labelobject- Human-readable label for each dimension code.
statusobject- Observation flags such as provisional or estimated, keyed the same way as `value`.
What you can build with the Eurostat API
- Show euro area or national HICP inflation on a dashboard
- Compare unemployment rates across EU member states
- Pull GDP or trade series for economic analysis
- Request SDMX-CSV instead of JSON-stat when you just want a flat table
Common errors and how to fix them
400 with a size complaint
The request would return too many cells.
Fix: Add dimension filters and `lastTimePeriod`. Eurostat refuses very large extractions rather than truncating them.
Empty `value` object
The dimension filter combination matches no data.
Fix: Check codes against `dimension.*.category.index` from a less filtered request; codes are dataset-specific and case-sensitive.
Observations misaligned
The flattened index was computed in the wrong dimension order.
Fix: Use the order given by `id`, not the order you sent parameters in. They are unrelated.
Eurostat API — frequently asked questions
Is the Eurostat API free and key-free?
Yes. The dissemination API requires no key or registration and covers the whole Eurostat database under the Commission's open data policy.
What is JSON-stat and why is value an object?
JSON-stat is a compact statistical format. Observations live in a sparse object keyed by a flattened index into the cross-product of the dimensions listed in `id`, sized by `size`. Missing keys mean missing observations.
Is there an easier format than JSON-stat?
Yes — `format=SDMX-CSV` returns a flat table with one row per observation and named dimension columns. It is larger on the wire but far quicker to work with.
How do I find a dataset code?
Browse the Eurostat data browser and take the code from the dataset URL. `prc_hicp_manr` is HICP annual rates of change; codes follow a themed prefix convention.
Tools that pair with this API
Inflation Calculator
See how inflation erodes purchasing power over time, or what a past amount is worth today. Enter an amount, rate and years. Free, private inflation tool.
JSON Path Finder
Evaluate a dot/bracket path against your JSON and list every leaf path for discovery. Free online JSON path finder that runs 100% in your browser.
CSV to JSON Converter
Convert CSV to a JSON array of objects online. Header-row detection, comma/semicolon/tab delimiters and pretty-printed output — 100% in your browser.
Alternatives to Eurostat API
If Eurostat does not fit, these finance & crypto 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.
| API | What it does | Auth | CORS | Last verified |
|---|---|---|---|---|
| CoinGecko | Free cryptocurrency price API covering 10,000+ coins. Live prices, market cap and volume in any currency, no API key on the public tier. Tested curl example. | No key | Yes | 19 Aug 2026 |
| Binance Public API | Binance public market data API needs no API key: live ticker prices, order books, klines and 24h stats for every trading pair. Tested curl example and response. | No key | Yes | 19 Aug 2026 |
| Coinbase Exchange Rates | Coinbase public exchange rates API with no key: convert any cryptocurrency to 100+ fiat currencies in a single request. Tested curl example and live JSON. | No key | Yes | 19 Aug 2026 |
| Frankfurter | Free currency exchange rate API with no key, built on European Central Bank data. Latest and historical rates, time series and conversion. Tested curl example. | No key | Yes | 19 Aug 2026 |
| FDIC BankFind | Free FDIC BankFind API with no key: every US insured bank with assets, deposits, branches, location and charter details, plus the historical failed bank list. Tested example. | No key | Yes | 21 Aug 2026 |
| Gate.io | Free Gate.io public API with no key: spot tickers with 24-hour high, low, volume and change for thousands of pairs, in one request or per pair. Tested example included. | No key | Yes | 21 Aug 2026 |
Eurostat 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.