Bundesbank Economic Time Series Scraper (SDMX, No API Key) avatar

Bundesbank Economic Time Series Scraper (SDMX, No API Key)

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Bundesbank Economic Time Series Scraper (SDMX, No API Key)

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

ninhothedev

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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:

ActorSourceWhat 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-scraperEuropean Central BankDaily euro foreign exchange reference rates and currency conversion across the ECB currency list.
eurostat-scraperEurostatEU-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 β€” BBEX3 has 6, BBIG1 has 8, BBBS2 has 11, BBFBOPV has 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/KEYSeries
BBEX3/D.USD.EUR.BB.AC.000ECB euro reference rate, USD per EUR, daily
BBSIS/D.I.ZAR.ZI.EUR.S1311.B.A604.R09XX.R.A.A._Z._Z.AYield on Federal securities (Bunds), 9-year residual maturity, daily
BBBS2/M.U2.Y.U.M30.X.1.U2.2300.Z01.EMonetary aggregate M3, outstanding amounts, monthly
BBIN1/M.D0.ECB.ECBMIN.EUR.MEECB main refinancing rate, end of month
BBIN1/M.D0.ECB.ECBFAC.EUR.MEECB deposit facility rate, end of month
BBIG1/M.D0.EUR.MMKT.EURIBOR.M03.AVE.MA3-month EURIBOR, monthly average
BBDY1/Q.B10.N.G100.P0040.AGerman owner-occupied housing price index (vdp), quarterly
BBDR1/Q.5R51.N.GIP.GBUK.S.I22.AGerman commercial property price index, offices, quarterly
BBFBOPV/M.N.DE.4A.S1.S1.T.A.FA.P.F._Z.EUR._T.M.N.ALLBalance of payments, portfolio investment abroad, monthly

Input

FieldTypeDefaultDescription
modeselectseriesseries = download observations, catalog = list all available dataflows
seriesKeysarray of strings3 verified seriesFLOWREF/KEY combinations to download
lastNObservationsinteger100Most recent N observations per series (max 5000)
startPeriodstring–Optional first period, e.g. 2020-01-01, 2020-01, 2020
endPeriodstring–Optional last period, same format
maxItemsinteger1000Hard 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:

  • date is the ISO start date of the period; period_raw keeps the original SDMX period (2026-Q1, 2026-06, 2026-07-28). Quarterly, monthly, half-yearly, weekly and annual periods are all mapped.
  • value is a float, or null when 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_name is built from the resolved dimension names; title is 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.

Development

python tests/test_smoke.py # 6 offline test groups, stdlib only
python -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.