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.

Source
ECB
Frequency
Monthly
Coverage
2003–Present
Unit
EUR millions

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

ColumnTypeDescription
dateYYYY-MM-DDFirst day of the reference month
loans_hh_eur_mfloatMFI 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))

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.

Cite This Dataset