Euro Area Bank Loans Households — Daily CSV Download
ECB Dataset · Credit & Spreads
Euro Area Bank Loans to Households (2003–2026)
MFI loans to euro area households (S.14 + S.15) — outstanding amounts. Approximately 75% are housing loans. The most direct transmission channel of ECB interest rate policy to household consumption and housing demand.
The household credit channel
In the euro area, households are overwhelmingly bank-financed — unlike in the US where mortgage-backed securitization dominates. When the ECB raises the Deposit Facility Rate, it directly increases banks’ funding costs, which are passed through to new mortgage rates within weeks. Outstanding variable-rate mortgages (common in Spain, Portugal, and some Nordic countries) reprice even faster.
The stock of household loans currently stands near €6.9 trillion, dominated by housing loans. Growth slowed sharply in 2023–2024 as higher rates reduced mortgage demand — new lending volumes fell by ~30% from the 2022 peak in several countries. The deceleration has been most pronounced in Germany and the Netherlands (where fixed-rate mortgages repriced abruptly) and less severe in France (where longer-term fixed rates provided a buffer).
What this series tells you
Rising stock = credit expansion, supporting housing demand and consumption. Falling growth rate = credit tightening, signaling potential economic slowdown. The year-over-year growth rate of this series (computable from the stock data) is the most direct measure of whether ECB policy is transmitting to the real economy.
CSV Data Dictionary
| Column | Type | Description |
|---|---|---|
| date | YYYY-MM-DD | First day of the reference month |
| loans_hh_eur_m | float | MFI loans to households, outstanding amounts, EUR millions |
Python Code Example
import pandas as pd
from io import StringIO
import requests
url = "https://data-api.ecb.europa.eu/service/data/BSI/M.U2.N.A.A20.A.1.U2.2250.Z01.E"
resp = requests.get(url, params={"format": "csvdata"})
raw = pd.read_csv(StringIO(resp.text))
df = raw[["TIME_PERIOD", "OBS_VALUE"]].copy()
df.columns = ["date", "loans_hh_eur_m"]
df["date"] = pd.to_datetime(df["date"] + "-01")
df = df.sort_values("date").set_index("date")
df.plot(title="Euro Area Loans to Households", figsize=(12, 5))Related ECB Datasets
Source & Methodology
Source: ECB — MFI Balance Sheet Statistics (BSI)
Series key: BSI/M.U2.N.A.A20.A.1.U2.2250.Z01.E
License: ECB open data — free reuse with attribution.
