BYTETOOLS

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.

No API key requiredCORS enabledHTTPSFree tier

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
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'
JavaScript (fetch)
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);
Python (requests)
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())
Response — HTTP 200 (truncated)
{
  "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

ParameterTypeRequiredDescription
dataset codepath segmentRequiredEurostat dataset identifier, for example `prc_hicp_manr` for HICP annual rates of change. prc_hicp_manr
formatqueryOptional`JSON` for JSON-stat, `SDMX-CSV` for a flat CSV that is much easier to parse. JSON
geoqueryOptionalGeographic filter — a country code, or `EA` for the euro area and `EU27_2020` for the EU. EA
lastTimePeriodqueryOptionalReturn only the most recent N periods. Essential for keeping responses small. 3
timequeryOptionalSpecific periods instead of the most recent N. 2026-06
unit / coicop / other dimensionsqueryOptionalDataset-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

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.

APIWhat it doesAuthCORSLast verified
CoinGeckoFree 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 keyYes19 Aug 2026
Binance Public APIBinance 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 keyYes19 Aug 2026
Coinbase Exchange RatesCoinbase 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 keyYes19 Aug 2026
FrankfurterFree 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 keyYes19 Aug 2026
FDIC BankFindFree 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 keyYes21 Aug 2026
Gate.ioFree 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 keyYes21 Aug 2026
All Finance & Crypto APIs

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.