ECB Data Portal API

Euro reference rates, yield curves and €STR over keyless SDMX — with vintages.

by European Central Bank

Last updated

From
Free
Latency
Eod
Non-US markets
Yes
Platforms
Web

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 format and you get verbose SDMX-ML generic data; every practical integration sets csvdata or jsondata.
  • 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

  • FREDThe Fed's macro database — 851,100 series, a free key and 120 requests a minute.
  • BLS Public Data APICPI, payrolls and PPI from the agency that computes them. Free, 500 calls a day.
  • DBnomicsMacro series from 93 statistics offices and central banks behind one open API.
  • EconDB5,170 macro series and container-shipping data behind one API and one subscription.
  • Eurostat APIEU statistics, keyless and free — 8,877 datasets, and the codes move under you.
  • IMF DataFree, 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.