Europa APIdata.ecb.europa.eu ↗
Access ECB statistical series via API: exchange rates, interest rates, monetary aggregates. List dataflows, fetch SDMX-JSON series, or get flat observations.
What is the Europa API?
This API exposes 3 endpoints for retrieving official European Central Bank statistical data, including exchange rates, interest rates, and monetary aggregates. The get_series endpoint returns full SDMX-JSON responses with dimensional metadata, observation arrays, and structural attributes, while get_observations delivers the same time series as a flat list of period, value, and period_name fields — no parsing of nested SDMX structures required.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/dd55e128-6946-45f4-91ec-d3e008d5d666/list_dataflows' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace data-ecb-europa-eu-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""ECB Data API — retrieve European Central Bank statistical series."""
from parse_apis.ecb_data_api import ECB, SeriesDetail, SeriesNotFound
client = ECB()
# List available dataflows (exchange rates, interest rates, monetary aggregates, etc.)
for flow in client.dataflows.list(limit=5):
print(flow.id, flow.name)
# Construct a dataflow and fetch simplified observations for USD/EUR exchange rate
exr = client.dataflow(id="EXR")
for obs in exr.observations(series_key="M.USD.EUR.SP00.A", limit=3):
print(obs.period, obs.value, obs.period_name)
# Retrieve full SDMX-JSON series data with detail control
series = exr.series(series_key="M.USD.EUR.SP00.A", last_n="5", detail=SeriesDetail.FULL)
print(series.header, len(series.data_sets))
# Handle a missing series gracefully
try:
bad_series = client.dataflow(id="EXR").series(series_key="X.INVALID.KEY.XX.X")
except SeriesNotFound as exc:
print(f"Series not found: {exc.flow_ref} / {exc.series_key}")
print("exercised: dataflows.list / dataflow.observations / dataflow.series / SeriesNotFound")
List all available dataflows (datasets) from the ECB. Returns identifiers, agency, version, and human-readable names for each dataflow. The full catalog typically contains 70+ dataflows covering exchange rates, monetary aggregates, interest rates, balance of payments, and more. No parameters required.
No input parameters required.
{
"type": "object",
"fields": {
"dataflows": "array of dataflow objects, each with id, agencyID, version, and name"
},
"sample": {
"data": {
"dataflows": [
{
"id": "EXR",
"name": "Exchange Rates",
"version": "1.0",
"agencyID": "ECB"
},
{
"id": "ICP",
"name": "Indices of Consumer Prices",
"version": "1.0",
"agencyID": "ECB"
},
{
"id": "FM",
"name": "Financial market data",
"version": "1.0",
"agencyID": "ECB"
}
]
},
"status": "success"
}
}About the Europa API
Available Endpoints
The API covers three operations. list_dataflows returns every dataset published on the ECB Data Portal, with each item carrying an id, agencyID, version, and human-readable name. Use this to discover the flow_ref values you need for the other two endpoints — for example, EXR for exchange rates or ICP for consumer price indices.
Fetching Series Data
get_series accepts a required flow_ref and series_key (e.g. M.USD.EUR.SP00.A for the monthly USD/EUR reference rate) and returns a full SDMX-JSON payload. The response contains a header with request metadata, a structure block describing all dimensions and attributes, and dataSets with observations indexed by integer keys. Optional parameters include start_period and end_period (ISO date strings) for time-range filtering, last_n or first_n to cap the number of observations, updated_after for incremental pulls, and detail to control response verbosity (full, dataonly, serieskeysonly, or nodata).
Simplified Observations
get_observations targets the same series but returns a flat array instead of nested SDMX structures. Each observation object contains a period date string, a value string, and a period_name human-readable label. The response also includes the resolved series_key and an observation_count integer. This endpoint is useful when you need tabular data without writing SDMX parsing logic.
Source and Data Coverage
All data originates from the ECB Data Portal (data.ecb.europa.eu), which publishes official euro-area statistics. Series frequency, dimension codes, and attribute values follow ECB SDMX conventions. Coverage spans historical exchange rates, short- and long-term interest rates, monetary aggregates, and consumer prices, among other dataflows discoverable via list_dataflows.
The Europa API is a managed, monitored endpoint for data.ecb.europa.eu — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when data.ecb.europa.eu changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official data.ecb.europa.eu API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track daily or monthly EUR/USD exchange rates using the EXR dataflow with series key M.USD.EUR.SP00.A
- Build an interest rate monitor by pulling ECB policy rate series and filtering with start_period and end_period
- Ingest euro-area monetary aggregate (M1, M2, M3) time series for macroeconomic research
- Populate a consumer price index dashboard using ICP dataflow observations with period and value fields
- Enumerate all available ECB datasets via list_dataflows to audit which statistical series are published
- Perform incremental data pipeline updates using the updated_after parameter on get_series
- Export flat observation arrays for spreadsheet or BI tool ingestion using get_observations without SDMX parsing
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.