Back to Claude Scientific Skills

ECB Statistical Data Warehouse (SDW) REST API Reference

scientific-skills/database-lookup/references/ecb.md

2.38.06.2 KB
Original Source

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

HeaderValueDescription
Acceptapplication/vnd.sdmx.data+json;version=2.0.0JSON format (recommended)
Acceptapplication/vnd.sdmx.data+csvCSV format
Acceptapplication/vnd.sdmx.data+xmlSDMX-ML XML (default)
Accept-EncodinggzipCompressed response

Key Endpoints

1. Get Data (Time Series)

GET /data/{flowRef}/{key}?{parameters}
ComponentDescription
flowRefDataflow ID (e.g., EXR for exchange rates, BSI for balance sheet items)
keyDot-separated dimension values. Use + for OR, . to skip a dimension (wildcard).

Query Parameters:

ParameterRequiredDescription
startPeriodNoStart date: YYYY, YYYY-MM, or YYYY-MM-DD
endPeriodNoEnd date: same formats
updatedAfterNoISO 8601 timestamp; returns only data updated after this time
detailNofull (default), dataonly, serieskeysonly, nodata
firstNObservationsNoReturn only first N observations per series
lastNObservationsNoReturn only last N observations per series
dimensionAtObservationNoTypically TIME_PERIOD (default)

Exchange Rate Key Structure (EXR dataflow): {frequency}.{currency}.{currency_denom}.{exr_type}.{exr_suffix}

PositionDimensionCommon Values
1FrequencyD (daily), M (monthly), A (annual)
2CurrencyUSD, GBP, JPY, CHF, CNY, etc.
3Currency denominatorEUR (usually)
4Exchange rate typeSP00 (spot), EN00 (average)
5Exchange rate suffixA (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):

json
{
  "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

DataflowDescription
EXRExchange rates
BSIBalance sheet items (monetary financial institutions)
MIRMFI interest rates
ILMInternal liquidity management
SECSecurities issues statistics
BOPBalance of payments
STPStructural financial indicators
CBDConsolidated banking data
ICPIndex of consumer prices (HICP)
FMFinancial market data
YCYield 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=dataonly parameter omits attributes and reduces response size.
  • Historical data availability varies by dataflow; exchange rates go back to 1999 (euro introduction).