Bundesbank Economic Time Series Scraper (SDMX, No API Key)
Pricing
from $0.50 / 1,000 results
Bundesbank Economic Time Series Scraper (SDMX, No API Key)
$0.5/1K π₯ Bundesbank scraper! German interest rates, money supply, FX & property price series. No key. JSON, CSV, Excel or API in seconds. Feed macro research & financial models β‘
Pricing
from $0.50 / 1,000 results
Rating
0.0
(0)
Developer
ninhothedev
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Download German economic time series straight from the Deutsche Bundesbank β policy and money-market interest rates, Bund yields, monetary aggregates (M1/M2/M3), balance of payments, residential and commercial real estate price indices and euro FX reference rates β as clean, dated, one-row-per-observation JSON/CSV/Excel.
The actor talks to the official Bundesbank SDMX REST service at https://api.statistiken.bundesbank.de/rest. It is free, needs no API key and no registration. The hard part β Bundesbank SDMX-JSON is index based β is solved for you: series keys like "0:0:0:0:0:0" and observation keys like "0" are resolved back to real dimension names and real time periods, so you get 2026-07-28 β 1.1367 instead of meaningless 0:0:0 labels.
- Cost: roughly $0.5 per 1,000 items (a single 512 MB compute unit fetches thousands of observations in seconds).
- Speed: one HTTP request per series; 100 observations of 3 series finish in a couple of seconds.
- Output: one dataset item per observation, plus a discovery mode that lists all 90+ Bundesbank dataflows.
How is this different from the ECB and Eurostat actors?
This actor scrapes the Deutsche Bundesbank's own statistics service β Germany's national central bank. That is a different institution, a different API host and a largely different universe of data than our other macro actors:
| Actor | Source | What it is best for |
|---|---|---|
This actor (bundesbank-scraper) | Deutsche Bundesbank SDMX (api.statistiken.bundesbank.de) | German national statistics: Bund yields and the German term structure, Bundesbank interest rate statistics, MFI/BSI banking data, German balance of payments, German residential + commercial property price indices, German external trade, plus the euro reference rates as republished by the Bundesbank. Deep German detail (regional property indices, Bundesbank base rate, HGB discount rates) that simply does not exist in the ECB or Eurostat feeds. |
ecb-exchange-rates-scraper | European Central Bank | Daily euro foreign exchange reference rates and currency conversion across the ECB currency list. |
eurostat-scraper | Eurostat | EU-wide harmonised statistics across all member states (HICP, GDP, unemployment, trade) for cross-country comparison. |
Rule of thumb: Germany-specific and central-bank-specific β this actor. Euro FX only β ECB actor. Cross-EU comparison β Eurostat actor.
What is a flowRef and a key?
Bundesbank data is addressed by two things:
https://api.statistiken.bundesbank.de/rest/data/{flowRef}/{key}BBEX3 D.USD.EUR.BB.AC.000
- flowRef β the dataflow, i.e. the statistical dataset. Examples:
BBEX3(exchange rates),BBSIS(yields on listed securities),BBBS2(monetary aggregates),BBIN1(central bank rates),BBIG1(money market rates),BBDY1(residential property indicator system),BBDR1(real estate prices),BBFBOPV(balance of payments),BBNZ1(national accounts). - key β the dot-separated list of dimension codes that pins down one series inside that dataflow. The first dimension is almost always the frequency (
D,M,Q,A). Every dataflow has its own number of dimensions βBBEX3has 6,BBIG1has 8,BBBS2has 11,BBFBOPVhas 17. A key with the wrong number of parts returns HTTP 404.
You write them together as FLOWREF/KEY, e.g. BBEX3/D.USD.EUR.BB.AC.000.
Find keys in the Bundesbank time series explorer: https://www.bundesbank.de/en/statistics/time-series-databases (each chart page shows its series code, e.g. BBEX3.D.USD.EUR.BB.AC.000 β just swap the first dot for a slash). The API docs live at https://www.bundesbank.de/en/statistics/time-series-databases/help-for-sdmx-web-service. You can also run this actor in catalog mode to dump all 90+ available dataflows with their English and German names.
Verified example series
All of these were live-tested and return data:
FLOWREF/KEY | Series |
|---|---|
BBEX3/D.USD.EUR.BB.AC.000 | ECB euro reference rate, USD per EUR, daily |
BBSIS/D.I.ZAR.ZI.EUR.S1311.B.A604.R09XX.R.A.A._Z._Z.A | Yield on Federal securities (Bunds), 9-year residual maturity, daily |
BBBS2/M.U2.Y.U.M30.X.1.U2.2300.Z01.E | Monetary aggregate M3, outstanding amounts, monthly |
BBIN1/M.D0.ECB.ECBMIN.EUR.ME | ECB main refinancing rate, end of month |
BBIN1/M.D0.ECB.ECBFAC.EUR.ME | ECB deposit facility rate, end of month |
BBIG1/M.D0.EUR.MMKT.EURIBOR.M03.AVE.MA | 3-month EURIBOR, monthly average |
BBDY1/Q.B10.N.G100.P0040.A | German owner-occupied housing price index (vdp), quarterly |
BBDR1/Q.5R51.N.GIP.GBUK.S.I22.A | German commercial property price index, offices, quarterly |
BBFBOPV/M.N.DE.4A.S1.S1.T.A.FA.P.F._Z.EUR._T.M.N.ALL | Balance of payments, portfolio investment abroad, monthly |
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | select | series | series = download observations, catalog = list all available dataflows |
seriesKeys | array of strings | 3 verified series | FLOWREF/KEY combinations to download |
lastNObservations | integer | 100 | Most recent N observations per series (max 5000) |
startPeriod | string | β | Optional first period, e.g. 2020-01-01, 2020-01, 2020 |
endPeriod | string | β | Optional last period, same format |
maxItems | integer | 1000 | Hard cap on pushed items (max 20000) |
{"mode": "series","seriesKeys": ["BBEX3/D.USD.EUR.BB.AC.000","BBIN1/M.D0.ECB.ECBMIN.EUR.ME"],"lastNObservations": 250,"maxItems": 1000}
Output
One item per observation (type: "observation"):
{"type": "observation","flow_ref": "BBEX3","series_key": "D.USD.EUR.BB.AC.000","resolved_key": "D.USD.EUR.BB.AC.000","series_name": "Daily | USD | EUR | BB | AC | 000","title": "Euro foreign exchange reference rate of the ECB / EUR 1 = USD ... / United States","dimensions": {"BBK_STD_FREQ": "Daily","BBK_STD_CURRENCY": "USD","BBK_ERX_PARTNER_CURRENCY": "EUR","BBK_ERX_SERIES_TYPE": "BB","BBK_ERX_RATE_TYPE": "AC","BBK_ERX_SUFFIX": "000"},"date": "2026-07-28","period_raw": "2026-07-28","value": 1.1367,"value_raw": "1.1367","unit": null,"frequency": "Daily","frequency_code": "D","obs_status": null,"attributes": { "BBK_ID": "BBEX3.D.USD.EUR.BB.AC.000", "BBK_DECIMALS": "4" },"source": "bundesbank","scraped_at": "2026-07-28T18:12:27.611241+00:00"}
Catalog mode pushes one item per dataflow (type: "dataflow") with flow_ref, name, name_de, description, agency, version, data_structure, url, source, scraped_at.
Notes on the fields:
dateis the ISO start date of the period;period_rawkeeps the original SDMX period (2026-Q1,2026-06,2026-07-28). Quarterly, monthly, half-yearly, weekly and annual periods are all mapped.valueis a float, ornullwhen the Bundesbank reports a missing observation (holidays in daily FX series, unpublished periods). Nulls are kept, not dropped, so your time index stays complete.series_nameis built from the resolved dimension names;titleis the Bundesbank's own English long title where available.- Every field is nullable β the dataset schema is permissive, so nothing breaks when a series lacks a unit or a status flag.
Use cases
- Macro research β build a German rates + money supply panel (policy rate, EURIBOR, Bund curve, M3) without touching a PDF.
- Financial modelling β feed discount curves and Bund yields into DCF, ALM or pension models; the HGB Β§253 discount rates flow (
BBSDI) is in here too. - German market analysis β track residential and commercial property price indices by region, German external trade and the German balance of payments.
- Economic dashboards β schedule the actor daily and pipe the dataset straight into BI tools, Google Sheets or a database via the Apify API.
Notes and limits
- Data is public and free; please stay polite with request volume. The Bundesbank returns HTTP 413 if a single query would return too many series β narrow your key instead of using wildcards everywhere.
- Wildcards are supported by the API: leave a dimension empty (
BBIN1/M......) to fetch every series in that slice β but the number of dots must match the dataflow's dimension count exactly. - A key that does not exist returns 404; the actor logs it, drops that series and continues with the rest.
Related actors
Development
python tests/test_smoke.py # 6 offline test groups, stdlib onlypython -m src.main # needs the Apify SDK + an input
Data source: Β© Deutsche Bundesbank. Use of the data is subject to the Bundesbank's terms of use.