European Central Bank
ECB Data Portal — The FRED of Europe: euro-area rates, inflation, money and bank lending, SDMX under the hood
Any euro-area question — the deposit facility rate, HICP, M3, bank lending, government yields, the euro's reference rates — where you want the ECB's own series rather than a mirror. National detail (Germany, Italy, Spain) is here too, keyed by REF_AREA.
Reach for it when…
Any euro-area question — the deposit facility rate, HICP, M3, bank lending, government yields, the euro's reference rates — where you want the ECB's own series rather than a mirror. National detail (Germany, Italy, Spain) is here too, keyed by REF_AREA.
Not for: EU statistics that are not monetary (Eurostat: GDP, unemployment, national CPIs), UK data (Bank of England), anything before 1999 (national central banks or FRED's historical series).
Units, revisions, traps
Units. Rates in percent, HICP as an annual rate of change (ANR) or an index — the last key segment says which. Exchange rates are units of currency per euro.
Revisions. Monetary aggregates and lending are revised for two months; HICP flash estimates are replaced by final figures two weeks later.
- Three policy rates (DFR, MRO, MLF); since 2024 the deposit facility rate is the operational one.
- Series keys are long dotted strings; copy them from the series page URL rather than guessing.
- csvdata puts the value in OBS_VALUE and the period in TIME_PERIOD; the JSON format is SDMX-JSON and awkward in pandas.
Classic mistake: Quoting the main refinancing rate as 'the ECB rate' after 2024.
Three recipes
- Recipe 1 · Euro-area inflation, monthly, as a rate
- Recipe 2 · The deposit facility rate, daily
- Recipe 3 · Reference exchange rates: dollars per euro
Each recipe: Python · Excel · Sheets, with how to read the result. Python recipes run under pandas; recipe 1 is re-run by the weekly check where the source allows it.
How to use it in your own work
Copy the snippet, change the series id, read the result the way the footer says. Replace YOUR_…_KEY with your own key where one is needed.
Recipe 1Euro-area inflation, monthly, as a rate
# HICP all-items, annual rate of change, euro area (already a rate)
import pandas as pd
u = "https://data-api.ecb.europa.eu/service/data/ICP/M.U2.N.000000.4.ANR?format=csvdata&startPeriod=2015-01"
df = pd.read_csv(u)
s = df.set_index(pd.PeriodIndex(df.TIME_PERIOD, freq="M").to_timestamp())["OBS_VALUE"]
print(s.tail(6))- Data → From Web → the same URL → Load (the CSV has one row per month).
=IMPORTDATA("https://data-api.ecb.europa.eu/service/data/ICP/M.U2.N.000000.4.ANR?format=csvdata&startPeriod=2015-01")Recipe 2The deposit facility rate, daily
import pandas as pd
u = "https://data-api.ecb.europa.eu/service/data/FM/B.U2.EUR.4F.KR.DFR.LEV?format=csvdata&startPeriod=2019-01-01"
df = pd.read_csv(u)
s = df.set_index(pd.to_datetime(df.TIME_PERIOD))["OBS_VALUE"]
print(s.drop_duplicates().tail(8)) # only the changes- From Web with the same URL.
=IMPORTDATA with the same URL.Recipe 3Reference exchange rates: dollars per euro
import pandas as pd
u = "https://data-api.ecb.europa.eu/service/data/EXR/D.USD.EUR.SP00.A?format=csvdata&startPeriod=2024-01-01"
df = pd.read_csv(u)
s = df.set_index(pd.to_datetime(df.TIME_PERIOD))["OBS_VALUE"]
print(s.tail())- From Web with the same URL; change USD to JPY, GBP or KRW.
=IMPORTDATA with the same URL.Series → question map
The ids we use from ECB Data Portal, each with the question it answers. The catalog's compare view reads the concept tags behind these rows.
| Series | Answers | Region | Concept |
|---|---|---|---|
| FM.B.U2.EUR.4F.KR.DFR.LEV | What is the ECB's policy rate? (deposit facility) | euro area | policy_rate |
| ICP.M.U2.N.000000.4.ANR | What is euro-area inflation? (HICP, annual rate) | euro area | cpi |
| EXR.D.USD.EUR.SP00.A | Dollars per euro, daily reference | euro area | fx_usd |
| BSI.M.U2.Y.V.M30.X.1.U2.2300.Z01.E | Is M3 growing? | euro area | money_supply |
| BSI.M.U2.Y.U.A20.A.1.U2.2250.Z01.E | Are banks lending to households? | euro area | bank_lending |
| IRS.M.U2.L.L40.CI.0000.EUR.N.Z | Euro-area 10-year government yield | euro area | yield_10y |
Compare with
Same question, different source: FRED, BOK ECOS, Eurostat API. The compare view lines up coverage, frequency, history and access side by side and lists what the combination makes possible.
Open compare: ECB Data Portal · FRED · BOK ECOS →
Curated: Policy rate and inflation for a country.
Questions readers ask
Is the ECB Data Portal free?
Yes, no key. Very long queries can time out — add startPeriod to keep the response small.
Which ECB rate is 'the' rate?
Since the 2024 operational framework change, the deposit facility rate. The main refinancing rate sits 15 basis points above it by design.
How do I find a series key?
Open the series on data.ecb.europa.eu; the key (e.g. ICP.M.U2.N.000000.4.ANR) is in the page URL and the download link.
From the paper
Educational only — we explain, we never advise · snippet licence: public domain · corrections to [email protected], fixed within a day and logged in the changelog.