# Ecb — Zapi reference > The ECB's dataflow catalogue — the vocabulary `series` takes as its `dataflow`. **Base URL:** `https://api.zpi.web.id` **Auth:** Send `x-api-key: YOUR_KEY` header on every request. Get a free key at https://zpi.web.id/dashboard/keys. **Response envelope:** `{ content, message, errors }` **Rate limit:** 60 req/min on free tier. **Related:** - Detail page: https://zpi.web.id/api/finance/ecb - Endpoint catalog: https://zpi.web.id/category/finance - Concise index: https://zpi.web.id/llms.txt - Full reference: https://zpi.web.id/llms-full.txt --- ## Ecb **Category:** finance · **Slug:** `ecb` **Detail page:** https://zpi.web.id/api/finance/ecb The ECB's dataflow catalogue — the vocabulary `series` takes as its `dataflow`. **Tags:** finance, ecb ### Dataflows The ECB's dataflow catalogue — the vocabulary `series` takes as its `dataflow`. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:ecb/dataflows` - **Cache TTL:** 86400s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `agency` | string | query | no | Maintenance agency of the dataflows. Default ECB. | | `query` | string | query | no | Case-insensitive filter over the dataflow id, name and data-structure id. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:ecb/dataflows?agency=ECB&query=yield" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:ecb/dataflows?agency=ECB&query=yield", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:ecb/dataflows?agency=ECB&query=yield", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 104, "items": [ { "name": "AGR", "agency": "ECB", "version": "1.0", "dataflow": "AGR", "structure": "ECB_BCS1" }, { "name": "AMECO", "agency": "ECB", "version": "1.0", "dataflow": "AME", "structure": "ECB_AME1" }, { "name": "Banknotes statistics", "agency": "ECB", "version": "1.0", "dataflow": "BKN", "structure": "ECB_BKN1" }, { "name": "Bank Lending Survey Statistics", "agency": "ECB", "version": "1.0", "dataflow": "BLS", "structure": "ECB_BLS1" }, { "name": "Shipments of Euro Banknotes Statistics (ESCB)", "agency": "ECB", "version": "1.0", "dataflow": "BNT", "structure": "ECB_BOP_BNT" }, { "name": "Euro Area Balance of Payments and International Investment Position Statistics", "agency": "ECB", "version": "1.0", "dataflow": "BOP", "structure": "ECB_BOP1" }, { "name": "Balance Sheet Items", "agency": "ECB", "version": "1.0", "dataflow": "BSI", "structure": "ECB_BSI1" }, { "name": "Balance Sheet Items Statistics (tables 2 to 5 of the Blue Book)", "agency": "ECB", "version": "1.0", "dataflow": "BSP", "structure": "ECB_BSI1" } ], "query": null, "total": 104, "agency": "ECB", "dataset": "dataflows", "provider": "ecb" } ``` --- ### Series Any of the ECB's 104 SDMX dataflows, by dataflow and series key. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:ecb/series` - **Cache TTL:** 3600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `dataflow` | string | query | yes | ECB dataflow id — EXR, FM, ICP, YC, BSI, MIR, BOP, GST, STS and 95 more. `dataflows` lists them. | | `key` | string | query | no | Series key: dimension values dot-joined in the dataflow's order, `+` to OR within one position, empty between dots for a wildcard. Default all series in the dataflow. | | `from` | string | query | no | First period, in the series' own period format (2026-08-20, 2026-08, 2026-Q2, 2026). | | `to` | string | query | no | Last period, same format as `from`. | | `last` | number | query | no | Return only the newest N observations per series. | | `first` | number | query | no | Return only the oldest N observations per series. | | `detail` | enum(full|dataonly|serieskeysonly|nodata) | query | no | full (default), dataonly (drops attributes), serieskeysonly or nodata — use the last two to resolve a wildcard key cheaply. | | `updatedAfter` | string | query | no | Only observations changed after this ISO timestamp. | | `history` | enum(true|false) | query | no | Return every point-in-time vintage instead of the current values, adding action, validFrom and validTo to each observation. Default false. | | `length` | number | query | no | Observations per series to return, newest first. Default 200, max 20000. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:ecb/series?dataflow=EXR&key=D.USD.EUR.SP00.A&from=2026-01-01&to=2026-08-20&last=10&first=10&detail=serieskeysonly&updatedAfter=2026-08-01T00%3A00%3A00Z&history=true&length=100" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:ecb/series?dataflow=EXR&key=D.USD.EUR.SP00.A&from=2026-01-01&to=2026-08-20&last=10&first=10&detail=serieskeysonly&updatedAfter=2026-08-01T00%3A00%3A00Z&history=true&length=100", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:ecb/series?dataflow=EXR&key=D.USD.EUR.SP00.A&from=2026-01-01&to=2026-08-20&last=10&first=10&detail=serieskeysonly&updatedAfter=2026-08-01T00%3A00%3A00Z&history=true&length=100", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "to": null, "key": null, "from": null, "count": 4027, "items": [ { "key": "EXR.A.ARS.EUR.SP00.A", "unit": "ARS", "count": 1, "title": "Argentine peso/Euro", "total": 1, "values": [ { "value": 53.8200352941176, "period": "2019", "status": "A", "comment": "Indicative rate" } ], "frequency": "A", "attributes": { "unit": "ARS", "title": "Argentine peso/Euro", "decimals": "5", "unitMult": "0", "collection": "A", "timeFormat": "P1Y", "titleCompl": "Indicative exchange rate, Euro/Argentine peso, 2:15 pm (C.E.T.)", "sourceAgency": "4F0" }, "dimensions": { "freq": "A", "exrType": "SP00", "currency": "ARS", "exrSuffix": "A", "currencyDenom": "EUR" }, "latestValue": 53.8200352941176, "latestPeriod": "2019" }, { "key": "EXR.A.ARS.EUR.SP00.E", "unit": "ARS", "count": 1, "title": "Euro/Argentine peso", "total": 1, "values": [ { "value": 67.2692, "period": "2019", "status": "A" } ], "frequency": "A", "attributes": { "unit": "ARS", "title": "Euro/Argentine peso", "decimals": "5", "unitMult": "0", "collection": "E", "timeFormat": "P1Y", "titleCompl": "Indicative exchange rate, Euro/Argentine peso, 2:15 pm (C.E.T.)", "sourceAgency": "4F0" }, "dimensions": { "freq": "A", "exrType": "SP00", "currency": "ARS", "exrSuffix": "E", "currencyDenom": "EUR" }, "latestValue": 67.2692, "latestPeriod": "2019" }, { "key": "EXR.A.AUD.EUR.SP00.A", "unit": "AUD", "count": 1, "title": "Australian dollar/Euro ECB reference exchange rate", "total": 1, "values": [ { "value": 1.75176, "period": "2025", "status": "A", "confidentiality": "F" } ], "frequency": "A", "attributes": { "unit": "AUD", "title": "Australian dollar/Euro ECB reference exchange rate", "decimals": "4", "unitMult": "0", "collection": "A", "timeFormat": "P1Y", "titleCompl": "ECB reference exchange rate, Australian dollar/Euro, 2.15 pm (C.E.T.)", "sourceAgency": "4F0" }, "dimensions": { "freq": "A", "exrType": "SP00", "currency": "AUD", "exrSuffix": "A", "currencyDenom": "EUR" }, "latestValue": 1.75176, "latestPeriod": "2025" }, { "key": "EXR.A.AUD.EUR.SP00.E", "unit": "AUD", "count": 1, "title": "Australian dollar/Euro ECB reference exchange rate", "total": 1, "values": [ { "value": 1.7581, "period": "2025", "status": "A", "confidentiality": "F" } ], "frequency": "A", "attributes": { "unit": "AUD", "title": "Australian dollar/Euro ECB reference exchange rate", "decimals": "4", "unitMult": "0", "collection": "E", "timeFormat": "P1Y", "titleCompl": "ECB reference exchange rate, Australian dollar/Euro, 2.15 pm (C.E.T.)", "sourceAgency": "4F0" }, "dimensions": { "freq": "A", "exrType": "SP00", "currency": "AUD", "exrSuffix": "E", "currencyDenom": "EUR" }, "latestValue": 1.7581, "latestPeriod": "2025" }, { "key": "EXR.A.BGN.EUR.SP00.A", "unit": "BGN", "count": 1, "title": "Euro/Bulgarian lev", "total": 1, "values": [ { "value": 1.9558, "period": "2025", "status": "A", "confidentiality": "F" } ], "frequency": "A", "attributes": { "unit": "BGN", "title": "Euro/Bulgarian lev", "decimals": "4", "unitMult": "0", "collection": "A", "timeFormat": "P1Y", "titleCompl": "ECB reference exchange rate, Euro/Bulgarian lev, 2:15 pm (C.E.T.)", "sourceAgency": "4F0" }, "dimensions": { "freq": "A", "exrType": "SP00", "currency": "BGN", "exrSuffix": "A", "currencyDenom": "EUR" }, "latestValue": 1.9558, "latestPeriod": "2025" }, { "key": "EXR.A.BGN.EUR.SP00.E", "unit": "BGN", "count": 1, "title": "Euro/Bulgarian lev", "total": 1, "values": [ { "value": 1.9558, "period": "2025", "status": "A", "confidentiality": "F" } ], "frequency": "A", "attributes": { "unit": "BGN", "title": "Euro/Bulgarian lev", "decimals": "4", "unitMult": "0", "collection": "E", "timeFormat": "P1Y", "titleCompl": "ECB reference exchange rate, Euro/Bulgarian lev, 2:15 pm (C.E.T.)", "sourceAgency": "4F0" }, "dimensions": { "freq": "A", "exrType": "SP00", "currency": "BGN", "exrSuffix": "E", "currencyDenom": "EUR" }, "latestValue": 1.9558, "latestPeriod": "2025" }, { "key": "EXR.A.BRL.EUR.SP00.A", "unit": "BRL", "count": 1, "title": "Brazilian real/Euro ECB reference exchange rate", "total": 1, "values": [ { "value": 6.3071674509804, "period": "2025", "status": "A", "confidentiality": "F" } ], "frequency": "A", "attributes": { "unit": "BRL", "title": "Brazilian real/Euro ECB reference exchange rate", "decimals": "4", "unitMult": "0", "collection": "A", "timeFormat": "P1Y", "titleCompl": "ECB reference exchange rate, Brazilian real/Euro, 2.15 pm (C.E.T.)", "sourceAgency": "4F0" }, "dimensions": { "freq": "A", "exrType": "SP00", "currency": "BRL", "exrSuffix": "A", "currencyDenom": "EUR" }, "latestValue": 6.3071674509804, "latestPeriod": "2025" }, { "key": "EXR.A.BRL.EUR.SP00.E", "unit": "BRL", "count": 1, "title": "Brazilian real/Euro ECB reference exchange rate", "total": 1, "values": [ { "value": 6.4364, "period": "2025", "status": "A", "confidentiality": "F" } ], "frequency": "A", "attributes": { "unit": "BRL", "title": "Brazilian real/Euro ECB reference exchange rate", "decimals": "4", "unitMult": "0", "collection": "E", "timeFormat": "P1Y", "titleCompl": "ECB reference exchange rate, Brazilian real/Euro, 2.15 pm (C.E.T.)", "sourceAgency": "4F0" }, "dimensions": { "freq": "A", "exrType": "SP00", "currency": "BRL", "exrSuffix": "E", "currencyDenom": "EUR" }, "latestValue": 6.4364, "latestPeriod": "2025" } ], "total": 4027, "detail": "full", "dataset": "series", "history": false, "dataflow": "EXR", "provider": "ecb" } ``` --- ### Exchange Rates ECB euro foreign-exchange reference rates. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:ecb/exchange-rates` - **Cache TTL:** 3600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `currency` | string | query | no | ISO currency codes, comma-separated, up to 40 in one call. Default USD. Rates are units per euro. | | `frequency` | enum(D|M|Q|A) | query | no | D daily, M monthly average, Q quarterly average or A annual average. Default D. | | `from` | string | query | no | First period, YYYY-MM-DD for daily, YYYY-MM for monthly, YYYY-Q1 for quarterly, YYYY for annual. | | `to` | string | query | no | Last period, same format as `from`. | | `asOf` | string | query | no | A single period. Overrides `from` and `to`. A day the ECB did not publish returns 404. | | `last` | number | query | no | Return only the newest N observations per currency. Default 30 when no window is given. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:ecb/exchange-rates?currency=USD%2CGBP%2CJPY&frequency=D&from=2026-08-01&to=2026-08-20&asOf=2026-08-20&last=5" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:ecb/exchange-rates?currency=USD%2CGBP%2CJPY&frequency=D&from=2026-08-01&to=2026-08-20&asOf=2026-08-20&last=5", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:ecb/exchange-rates?currency=USD%2CGBP%2CJPY&frequency=D&from=2026-08-01&to=2026-08-20&asOf=2026-08-20&last=5", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "to": null, "base": "EUR", "from": null, "count": 3, "items": [ { "base": "EUR", "count": 30, "title": "US dollar/Euro ECB reference exchange rate", "values": [ { "rate": 1.1681, "period": "2026-08-20", "status": "A" }, { "rate": 1.1605, "period": "2026-08-19", "status": "A" }, { "rate": 1.1576, "period": "2026-08-18", "status": "A" }, { "rate": 1.1593, "period": "2026-08-17", "status": "A" }, { "rate": 1.1567, "period": "2026-08-14", "status": "A" }, { "rate": 1.1534, "period": "2026-08-13", "status": "A" }, { "rate": 1.1545, "period": "2026-08-12", "status": "A" }, { "rate": 1.154, "period": "2026-08-11", "status": "A" } ], "currency": "USD", "latestRate": 1.1681, "latestPeriod": "2026-08-20" }, { "base": "EUR", "count": 30, "title": "Pound sterling/Euro ECB reference exchange rate", "values": [ { "rate": 0.85725, "period": "2026-08-20", "status": "A" }, { "rate": 0.85608, "period": "2026-08-19", "status": "A" }, { "rate": 0.85585, "period": "2026-08-18", "status": "A" }, { "rate": 0.855, "period": "2026-08-17", "status": "A" }, { "rate": 0.8545, "period": "2026-08-14", "status": "A" }, { "rate": 0.8549, "period": "2026-08-13", "status": "A" }, { "rate": 0.85358, "period": "2026-08-12", "status": "A" }, { "rate": 0.85483, "period": "2026-08-11", "status": "A" } ], "currency": "GBP", "latestRate": 0.85725, "latestPeriod": "2026-08-20" }, { "base": "EUR", "count": 30, "title": "Japanese yen/Euro ECB reference exchange rate", "values": [ { "rate": 185.45, "period": "2026-08-20", "status": "A" }, { "rate": 184.62, "period": "2026-08-19", "status": "A" }, { "rate": 184.87, "period": "2026-08-18", "status": "A" }, { "rate": 184.59, "period": "2026-08-17", "status": "A" }, { "rate": 183.93, "period": "2026-08-14", "status": "A" }, { "rate": 183.77, "period": "2026-08-13", "status": "A" }, { "rate": 183.67, "period": "2026-08-12", "status": "A" }, { "rate": 183.72, "period": "2026-08-11", "status": "A" } ], "currency": "JPY", "latestRate": 185.45, "latestPeriod": "2026-08-20" } ], "total": 90, "dataset": "exchange-rates", "missing": [], "provider": "ecb", "resolved": [ "GBP", "JPY", "USD" ], "frequency": "D", "currencies": [ "USD", "GBP", "JPY" ] } ``` --- ### Hicp Euro-area inflation — the Harmonised Index of Consumer Prices. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:ecb/hicp` - **Cache TTL:** 21600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `item` | string | query | no | COICOP item code — 000000 overall, 010000 food, 040000 housing, XEF000 excluding energy and food. Comma-separated for several. Default 000000. | | `area` | string | query | no | Reference area — U2 euro area, DE, FR, IT, ES and the other member states. Default U2. | | `measure` | enum(ANR|INX|ANR_S|MRR|CTG|CTG_S|WGT) | query | no | ANR annual rate of change, INX index level, ANR_S seasonally adjusted annual rate, MRR monthly rate, CTG contribution, CTG_S adjusted contribution, WGT weight. Default ANR. | | `from` | string | query | no | First month, YYYY-MM. | | `to` | string | query | no | Last month, YYYY-MM. | | `last` | number | query | no | Return only the newest N months per item. Default 24 when no window is given. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:ecb/hicp?item=000000&area=U2&measure=ANR&from=2025-01&to=2025-12&last=12" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:ecb/hicp?item=000000&area=U2&measure=ANR&from=2025-01&to=2025-12&last=12", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:ecb/hicp?item=000000&area=U2&measure=ANR&from=2025-01&to=2025-12&last=12", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "to": null, "area": "U2", "from": null, "count": 1, "items": [ { "area": "U2", "item": "000000", "unit": "PCCH", "count": 24, "title": "HICP - Overall index", "values": [ { "value": 1.9, "period": "2025-12" }, { "value": 2.1, "period": "2025-11" }, { "value": 2.1, "period": "2025-10" }, { "value": 2.2, "period": "2025-09" }, { "value": 2, "period": "2025-08" }, { "value": 2, "period": "2025-07" }, { "value": 2, "period": "2025-06" }, { "value": 1.9, "period": "2025-05" } ], "measure": "ANR", "latestValue": 1.9, "measureName": "Annual rate of change", "latestPeriod": "2025-12" } ], "total": 24, "dataset": "hicp", "measure": "ANR", "missing": [], "provider": "ecb", "resolved": [ "000000" ], "itemCodes": [ "000000" ], "latestPeriod": "2025-12" } ``` --- ### Key Rates The ECB's three policy rates and every date they changed. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:ecb/key-rates` - **Cache TTL:** 21600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `rate` | string | query | no | Policy rates, comma-separated: MRR_FR (main refinancing), DFR (deposit facility), MLFR (marginal lending facility). Default all three. | | `from` | string | query | no | First date, YYYY-MM-DD. The series is daily and repeats the level between changes. | | `to` | string | query | no | Last date, YYYY-MM-DD. | | `last` | number | query | no | Return only the newest N observations per rate. Default 20 when no window is given. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:ecb/key-rates?rate=MRR_FR%2CDFR&from=2024-01-01&to=2026-08-20&last=10" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:ecb/key-rates?rate=MRR_FR%2CDFR&from=2024-01-01&to=2026-08-20&last=10", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:ecb/key-rates?rate=MRR_FR%2CDFR&from=2024-01-01&to=2026-08-20&last=10", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "to": null, "from": null, "count": 2, "items": [ { "name": "Main refinancing operations - fixed rate", "rate": "MRR_FR", "unit": "percent per annum", "count": 20, "title": "Main refinancing operations  - fixed rate tenders (fixed rate) (date of changes) - Level", "values": [ { "date": "2026-08-21", "rate": 2.4 }, { "date": "2026-08-20", "rate": 2.4 }, { "date": "2026-08-19", "rate": 2.4 }, { "date": "2026-08-18", "rate": 2.4 }, { "date": "2026-08-17", "rate": 2.4 }, { "date": "2026-08-16", "rate": 2.4 }, { "date": "2026-08-15", "rate": 2.4 }, { "date": "2026-08-14", "rate": 2.4 } ], "latestDate": "2026-08-21", "latestRate": 2.4 }, { "name": "Deposit facility", "rate": "DFR", "unit": "percent per annum", "count": 20, "title": "Deposit facility  - date of changes (raw data) - Level", "values": [ { "date": "2026-08-21", "rate": 2.25 }, { "date": "2026-08-20", "rate": 2.25 }, { "date": "2026-08-19", "rate": 2.25 }, { "date": "2026-08-18", "rate": 2.25 }, { "date": "2026-08-17", "rate": 2.25 }, { "date": "2026-08-16", "rate": 2.25 }, { "date": "2026-08-15", "rate": 2.25 }, { "date": "2026-08-14", "rate": 2.25 } ], "latestDate": "2026-08-21", "latestRate": 2.25 } ], "rates": [ "MRR_FR", "DFR" ], "total": 40, "dataset": "key-rates", "provider": "ecb" } ``` --- _Generated: 2026-08-21T07:34:07.777Z_