BYTETOOLS

Deutsche Bundesbank Time Series API

Free Deutsche Bundesbank time series API with no key: exchange rates, interest rates and German macro series as CSV, JSON or SDMX-ML. Tested example and live response.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the Deutsche Bundesbank Time Series API?

The Deutsche Bundesbank serves its published statistics through a free REST API at api.statistiken.bundesbank.de with no key. Any series is addressed by its Bundesbank key and can be returned as CSV, SDMX-JSON or SDMX-ML.

Everything in the Bundesbank's statistical catalogue is addressable by a structured key, and once you can read a key you can reach any series without hunting through a UI. `BBEX3/D.USD.EUR.BB.AC.000` decomposes into the dataset, the frequency, the currency, the base, the source and the type — so the euro reference rate against sterling is the same key with `GBP` substituted. Learn one key and you have learned several thousand.

The CSV format is not a bare table. Roughly a dozen metadata rows precede the data, carrying the decimal places, unit, category and a bilingual comment, and only then do the dated observations begin. A naive CSV reader will treat the metadata block as rows and produce nonsense. Skip until you reach the first line whose leading field parses as a date, or request SDMX-JSON, which keeps metadata and observations in separate structures.

Quick facts

Base URL
https://api.statistiken.bundesbank.de/rest/data
Authentication
No key or registration. Published by the Bundesbank as open statistical data.
Rate limit
No documented limit. Daily series update once per working day.
Pricing
Free.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the Deutsche Bundesbank Time Series API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Last five daily EUR/USD reference rates

GET https://api.statistiken.bundesbank.de/rest/data/BBEX3/D.USD.EUR.BB.AC.000?lastNObservations=5&format=csv

curl
curl 'https://api.statistiken.bundesbank.de/rest/data/BBEX3/D.USD.EUR.BB.AC.000?lastNObservations=5&format=csv'
JavaScript (fetch)
const res = await fetch("https://api.statistiken.bundesbank.de/rest/data/BBEX3/D.USD.EUR.BB.AC.000?lastNObservations=5&format=csv");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.statistiken.bundesbank.de/rest/data/BBEX3/D.USD.EUR.BB.AC.000?lastNObservations=5&format=csv", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
"";BBEX3.D.USD.EUR.BB.AC.000;BBEX3.D.USD.EUR.BB.AC.000_FLAGS
"";Euro-Referenzkurs der EZB / 1 EUR = ... USD / Vereinigte Staaten;
BBK_UNIT_ENG;;
Dezimalstellen;4;
Dimension;Eins;
Einheit;USD;
Format der Zeitangabe;P1D;
Kategorie;WEDE;
Kommentar;Die EZB veröffentlicht tägliche Referenzkurse, die auf Grundlage der Konzertation zwischen Zentralbanken um 14.15 Uhr ermittelt werden.;
Kommentar (en

Parameters

ParameterTypeRequiredDescription
dataset/keypath segmentRequiredBundesbank dataset code followed by the dotted series key. BBEX3/D.USD.EUR.BB.AC.000
formatqueryOptional`csv`, `json` (SDMX-JSON) or `sdmx` (SDMX-ML). Defaults to SDMX-ML. csv
lastNObservationsqueryOptionalReturn only the most recent N observations instead of the whole series. 5
startPeriod / endPeriodqueryOptionalRestrict the series to a date window, in the series' own period format. 2026-01-01
langqueryOptional`en` or `de` for metadata labels. en

Response fields

Header block (CSV)rows
Around a dozen metadata rows before the data — decimal places, unit, category, frequency and comments. Skip them before parsing.
Data rows (CSV)rows
Date, value and a flag column per observation, oldest first.
BBK_UNIT_ENG / Einheitmetadata
The unit the observations are expressed in.
Format der Zeitangabemetadata
ISO 8601 duration giving the observation frequency, `P1D` for daily.
Flags columnstring
Observation status flags; an empty flag means a normal published value.

What you can build with the Deutsche Bundesbank Time Series API

  • Pull the ECB euro reference rate for a currency straight from an official source
  • Chart German interest rate or macro series without scraping a PDF
  • Fetch only the last N observations for a lightweight dashboard refresh
  • Load a long series into a spreadsheet using the CSV format

Common errors and how to fix them

Nonsense first rows after CSV parse

The metadata preamble was read as data.

Fix: Skip rows until the first field parses as a date, or use `format=json` where metadata is structurally separate.

404

The dataset or series key does not exist.

Fix: Keys are case-sensitive and positional. Confirm the exact key in the Bundesbank time series database before hard-coding it.

Empty result with HTTP 200

The `startPeriod`/`endPeriod` window contains no observations.

Fix: Widen the window, and remember daily series skip weekends and German public holidays.

Deutsche Bundesbank Time Series API — frequently asked questions

Is the Bundesbank time series API free?

Yes. It needs no key or registration and serves the full published statistics catalogue in CSV, SDMX-JSON and SDMX-ML.

How do I find the key for a series I want?

Browse the Bundesbank time series database and copy the key shown against the series. Keys are structured, so once you have one from a family you can usually derive its siblings by substituting a dimension.

Why does the CSV have text at the top instead of a header row?

The Bundesbank ships series metadata as leading rows in the same file — units, decimals, category and comments. Skip to the first date-shaped row, or switch to `format=json`.

Are the euro reference rates here the same as the ECB's?

The BBEX3 family republishes the ECB reference rates, as the series description in the response states. It is the same fixing reached through a different API.

Tools that pair with this API

Deutsche Bundesbank Time Series is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.