ECB Data Portal API
Euro reference rates, yield curves and €STR over keyless SDMX — with vintages.
by European Central Bank
Last updated
What it is
The ECB Data Portal's web service is an SDMX 2.1 REST API at data-api.ecb.europa.eu/service/ —
the same service the portal's own browser front end calls. Queries take the shape
/service/data/{flowRef}/{key}, where the key is the dataflow's dimensions joined with dots:
EXR/D.USD.EUR.SP00.A is the daily US dollar reference rate against the euro.
Two operators make that key worth learning: omitting a dimension wildcards it, so D..EUR.SP00.A
returns every daily currency against the euro in one call, and + is an OR, so
D.USD+JPY.EUR.SP00.A returns dollar and yen together. /service/dataflow lists what exists —
214 dataflows on 19 September 2026.
Coverage is the euro area's monetary plumbing — exchange rates, policy and market interest rates, the yield curve, €STR, bank balance sheets and lending rates, securities issues, investment funds and the composite indicator of systemic stress.
Pricing
Free, keyless and anonymous, which an unauthenticated request confirms. No paid tier, and no rate limit stated anywhere in the API help. The portal login buys favourites, saved comparisons, dashboards and update notifications; it is not an API credential.
The copyright terms are short and worth reading before you build a product on this. Free use is conditional: cite the ECB, reproduce accurately, state any modification — and where the information goes into a document that is sold, tell buyers, before they pay and each time they access it, that it can be had free of charge from the ECB.
Data & coverage
Checked live on 19 September 2026: the daily USD/EUR reference rate (EXR) ran to 18 September at
1.1460, the ten-year AAA euro area government spot rate (YC) stood at 3.4875 for 17 September,
and €STR (EST) was 2.440 the same day. Daily series are current to the previous business day,
which is as fresh as official statistics get.
Two parameters do work you would otherwise write yourself. updatedAfter takes an ISO 8601
timestamp and returns only the observations added, revised or deleted since then, so a mirror
syncs deltas rather than re-downloading. includeHistory=true returns previous versions of the
data alongside the current one — point-in-time access on the ordinary endpoint, without a second
product or account.
The If-Modified-Since header the help pages offer as the coarser alternative does not behave the
way the documentation describes. Checked on 19 September 2026, the service answered 304 only when
the header repeated the Last-Modified value byte for byte; a later timestamp — including one
years in the future — got a full 200 and the whole series back. Under format=csvdata the
Last-Modified it sends is the moment the response was generated rather than the moment the data
changed, so it never matches twice. Use updatedAfter, which does what it says.
Output comes from format=: csvdata, jsondata, structurespecificdata or genericdata,
which is the default and the most verbose of the four.
Integrations
The ECB ships no client library in any language. ecbdata on PyPI is Luca Mingarelli's,
MIT-licensed, last released at 0.1.1 in March 2025; generic SDMX clients such as sdmx1 and
pandasdmx work too. The help pages point at the SDMX Connectors plug-ins for R, SAS, Excel,
Matlab, Stata and Java, and state plainly that the ECB supports none of them.
One thing not to copy: the official Python example passes verify=False to requests and the
curl examples use -k. The ECB's own documentation tells you to skip certificate verification
against its own host. Take the URLs and the Accept headers; leave that line behind.
Limitations
- SDMX key positions are the real cost. A series key is positional and dataset-specific, and getting it wrong returns a bare 400 rather than a hint — fetching the dataflow's structure first is not optional.
- The default response format is the worst one. Omit
formatand you get verbose SDMX-ML generic data; every practical integration setscsvdataorjsondata. - No published rate limit cuts both ways — nothing to plan against, and nothing to hold the ECB to if a throttle appears.
- It is not tradable data. The euro reference rates are a daily 14:15 CET fixing published for reference, and the ECB's disclaimer refuses liability for any loss arising from a decision taken in reliance on them. The yield curve is fitted, not quoted, and there is no bid, ask or volume anywhere in the service.
- Scope is the euro area, bar the exchange rates, which reach a few dozen currencies.
- The sold-document condition binds a paid product. Telling every buyer, on every access, that the numbers are free elsewhere is not a footnote most subscriptions are built to carry.
Alternatives
Eurostat API is the companion for European official statistics — prices,
national accounts, labour — where this card is monetary and financial. FRED
republishes a slice of these series with a documented throttle and an Excel add-in, and its ALFRED
side does the same vintage job as includeHistory. DBnomics mirrors the ECB
under one query shape alongside dozens of other providers. For anything priced or intraday, see
market data APIs.
Specs
- Interfaces
- API
- Export
- CSV, JSON, API
- Asset classes
- Forex, Bonds
- Markets
- EU
- Platforms
- Web
- AI features
- None
- Capabilities
- Charting, Alerts
- Pricing verified
- Capabilities verified
- Coverage verified
Also worth comparing
- FRED — The Fed's macro database — 851,100 series, a free key and 120 requests a minute.
- BLS Public Data API — CPI, payrolls and PPI from the agency that computes them. Free, 500 calls a day.
- DBnomics — Macro series from 93 statistics offices and central banks behind one open API.
- EconDB — 5,170 macro series and container-shipping data behind one API and one subscription.
- Eurostat API — EU statistics, keyless and free — 8,877 datasets, and the codes move under you.
- IMF Data — Free, keyless SDMX access to IMF macro statistics — WEO included, forecasts and all.
FAQ
Does the ECB Data Portal API need a key?
No. A plain request to data-api.ecb.europa.eu returns data anonymously — verified on 19 September 2026. Registering on the portal is for saving favourites and data comparisons, building dashboards and subscribing to update notifications; it has nothing to do with the web service. No rate limit appears anywhere in the API help pages either.
Can I get historical revisions from the ECB API?
Yes, and this is the feature that separates it from most free macro APIs. includeHistory=true returns previous versions of the matching data alongside the one currently in production, so you can see when a figure was released, revised or deleted. updatedAfter does the complementary job — it returns only the observations added, revised or deleted since a timestamp you supply.
Can I use ECB data in a commercial product?
Free of charge, with two conditions most people miss. The ECB must be cited as the source and the information must appear accurately; and where it goes into a document that is sold, you must tell buyers — before they pay, and each time they access the information — that it can be obtained free of charge from the ECB. Modifications such as seasonal adjustment or growth rates must be stated explicitly, and named-author working papers are excluded from free reproduction.
What format does the ECB API return by default?
SDMX-ML 2.1 generic data, which is verbose XML. Most people want ?format=csvdata or ?format=jsondata instead — the other options are structurespecificdata for the compact SDMX-ML flavour. Content negotiation through an Accept header works as an alternative to the query parameter.
Is this a source of tradable prices?
No. The daily euro foreign exchange reference rates are a 14:15 CET fixing published for reference, not a quote you can deal on — the ECB's own disclaimer accepts no liability for any decision taken in reliance on them. The yield curve is a fitted AAA euro area government curve. There is no order book, no bid or ask and no single security price.