6.5 KiB
title, task, lineage_type, upstream_source, upstream_sha, imported_at, prompt_class, upstream_changes, author, validated
| title | task | lineage_type | upstream_source | upstream_sha | imported_at | prompt_class | upstream_changes | author | validated |
|---|---|---|---|---|---|---|---|---|---|
| ECB Statistical Data Warehouse (SDW) REST API Reference | import | https://github.com/K-Dense-AI/scientific-agent-skills/blob/9c9bd2e9/skills/database-lookup/references/ecb.md | 9c9bd2e9 | 2026-06-26 | prompt | accepted | upstream | false |
ECB Statistical Data Warehouse (SDW) REST API Reference
Overview
The ECB SDW API provides access to European Central Bank statistical data: exchange rates, monetary aggregates, interest rates, balance of payments, banking statistics, and more. It follows the SDMX (Statistical Data and Metadata eXchange) RESTful web services standard.
Base URL
https://data-api.ecb.europa.eu/service
Note: The legacy URL https://sdw-wsrest.ecb.europa.eu/service still works but the above is the current endpoint.
Authentication
No API key required. The API is fully open and public.
Rate Limits
- No formal rate limits published.
- ECB asks users to be respectful: avoid excessive parallel requests.
- For bulk downloads, use compressed responses (
Accept-Encoding: gzip).
Common Headers
| Header | Value | Description |
|---|---|---|
Accept |
application/vnd.sdmx.data+json;version=2.0.0 |
JSON format (recommended) |
Accept |
application/vnd.sdmx.data+csv |
CSV format |
Accept |
application/vnd.sdmx.data+xml |
SDMX-ML XML (default) |
Accept-Encoding |
gzip |
Compressed response |
Key Endpoints
1. Get Data (Time Series)
GET /data/{flowRef}/{key}?{parameters}
| Component | Description |
|---|---|
flowRef |
Dataflow ID (e.g., EXR for exchange rates, BSI for balance sheet items) |
key |
Dot-separated dimension values. Use + for OR, . to skip a dimension (wildcard). |
Query Parameters:
| Parameter | Required | Description |
|---|---|---|
startPeriod |
No | Start date: YYYY, YYYY-MM, or YYYY-MM-DD |
endPeriod |
No | End date: same formats |
updatedAfter |
No | ISO 8601 timestamp; returns only data updated after this time |
detail |
No | full (default), dataonly, serieskeysonly, nodata |
firstNObservations |
No | Return only first N observations per series |
lastNObservations |
No | Return only last N observations per series |
dimensionAtObservation |
No | Typically TIME_PERIOD (default) |
Exchange Rate Key Structure (EXR dataflow):
{frequency}.{currency}.{currency_denom}.{exr_type}.{exr_suffix}
| Position | Dimension | Common Values |
|---|---|---|
| 1 | Frequency | D (daily), M (monthly), A (annual) |
| 2 | Currency | USD, GBP, JPY, CHF, CNY, etc. |
| 3 | Currency denominator | EUR (usually) |
| 4 | Exchange rate type | SP00 (spot), EN00 (average) |
| 5 | Exchange rate suffix | A (average), E (end of period) |
Example -- Daily USD/EUR spot rate, 2024:
GET https://data-api.ecb.europa.eu/service/data/EXR/D.USD.EUR.SP00.A?startPeriod=2024-01-01&endPeriod=2024-12-31
Accept: application/vnd.sdmx.data+json;version=2.0.0
Example -- Monthly GBP and JPY vs EUR, last 12 observations:
GET https://data-api.ecb.europa.eu/service/data/EXR/M.GBP+JPY.EUR.SP00.A?lastNObservations=12
Accept: application/vnd.sdmx.data+json;version=2.0.0
Example -- All daily exchange rates for a specific date (wildcard):
GET https://data-api.ecb.europa.eu/service/data/EXR/D..EUR.SP00.A?startPeriod=2024-06-01&endPeriod=2024-06-01
Accept: application/vnd.sdmx.data+json;version=2.0.0
JSON Response Structure (SDMX-JSON v2.0):
{
"meta": { "schema": "...", "id": "...", "prepared": "2024-11-01T12:00:00Z" },
"data": {
"dataSets": [
{
"action": "Information",
"series": {
"0": {
"attributes": [0, 0, ...],
"observations": {
"0": [1.0856],
"1": [1.0791],
"2": [1.0834]
}
}
}
}
],
"structures": [
{
"dimensions": {
"series": [...],
"observation": [
{
"id": "TIME_PERIOD",
"values": [
{"id": "2024-01-02", "name": "2024-01-02"},
{"id": "2024-01-03", "name": "2024-01-03"}
]
}
]
}
}
]
}
}
Note: Observation values are indexed arrays. Match observation index to TIME_PERIOD values in structures.dimensions.observation.
CSV Response (simpler to parse):
Accept: application/vnd.sdmx.data+csv
Returns standard CSV with columns: DATAFLOW, FREQ, CURRENCY, CURRENCY_DENOM, EXR_TYPE, EXR_SUFFIX, TIME_PERIOD, OBS_VALUE, etc.
2. Get Dataflow Definitions (Available Datasets)
GET /dataflow/{agencyID}/{resourceID}/{version}
Example -- List all ECB dataflows:
GET https://data-api.ecb.europa.eu/service/dataflow/ECB
Accept: application/vnd.sdmx.structure+json;version=2.0.0
Example -- Get EXR dataflow definition:
GET https://data-api.ecb.europa.eu/service/dataflow/ECB/EXR
Accept: application/vnd.sdmx.structure+json;version=2.0.0
3. Get Data Structure Definition (Dimensions & Codes)
GET /datastructure/{agencyID}/{resourceID}/{version}?references=children
Example:
GET https://data-api.ecb.europa.eu/service/datastructure/ECB/ECB_EXR1?references=children
Accept: application/vnd.sdmx.structure+json;version=2.0.0
This returns all dimensions, their code lists, and allowed values -- essential for constructing valid keys.
Common Dataflow IDs
| Dataflow | Description |
|---|---|
EXR |
Exchange rates |
BSI |
Balance sheet items (monetary financial institutions) |
MIR |
MFI interest rates |
ILM |
Internal liquidity management |
SEC |
Securities issues statistics |
BOP |
Balance of payments |
STP |
Structural financial indicators |
CBD |
Consolidated banking data |
ICP |
Index of consumer prices (HICP) |
FM |
Financial market data |
YC |
Yield curve data |
Notes
- The SDMX-JSON format is verbose. For simpler parsing, use
Accept: application/vnd.sdmx.data+csv. - When a dimension is unknown, leave it empty (e.g.,
D..EUR.SP00.A) to get all values for that dimension. - Use
+to request multiple values for one dimension (e.g.,USD+GBP). - The
detail=dataonlyparameter omits attributes and reduces response size. - Historical data availability varies by dataflow; exchange rates go back to 1999 (euro introduction).