RBNZ data via eolas
The Reserve Bank of New Zealand publishes the canonical NZ money-and-banking statistics. eolas serves 32 datasets from RBNZ, organised by the RBNZ's own letter-numbered table system (B1, B2, …, C series, M series).
If you do anything involving mortgages, exchange rates, NZ monetary aggregates, or balance-of-payments — RBNZ is the source.
What's in the catalogue
The 32 datasets cover RBNZ's statistical-release tables. The naming convention is rbnz_<table_code>_<topic>, e.g. rbnz_b1_exchange_rates_daily.
Interest rates
| Dataset | Description |
|---|---|
rbnz_b1_exchange_rates_daily |
Daily TWI and bilateral exchange rates (NZD vs major currencies). |
rbnz_b1_exchange_rates_monthly |
Monthly averages of the same. |
rbnz_b2_wholesale_rates_daily |
Wholesale rates, end-of-day close — OCR, bank bills, government bond yields, swap rates. |
rbnz_b2_wholesale_rates_monthly |
Monthly averages of the same (close basis). |
rbnz_b3_retail_rates |
Retail / household rates (term deposits, lending). |
rbnz_b20_mortgage_rates |
Mortgage rates by fixed term and lender. |
Money supply, credit, banking
| Dataset | Description |
|---|---|
rbnz_c5_credit_extended |
Credit extended to households, business, and agriculture. |
rbnz_c31_new_mortgage_lending |
New mortgage lending by LVR band and borrower type — useful for housing-market analysis. |
rbnz_c33_mortgage_by_purpose |
New mortgage lending by purpose (first-home, investor, owner-occupier). |
rbnz_c40_monetary_aggregates |
New residential mortgage lending by debt-to-income (DTI) band. (The monetary_aggregates id is a historical misnomer — the content is DTI lending.) |
rbnz_c71_residential_mortgage_lending |
Residential mortgage lending by rate type (fixed/floating mix). |
Macro + external
| Dataset | Description |
|---|---|
rbnz_m7_balance_of_payments |
Current account, capital account, NIIP. |
rbnz_m8_overseas_trade |
Goods and services exports / imports. |
rbnz_m9_labour_market |
Employment, wages, productivity proxies (RBNZ's view; differs slightly from Stats NZ). |
For the full list, browse eolas.nz/datasets?source=RBNZ.
Refresh schedule
Daily for the rate/FX tables (B1 exchange rates, B2 wholesale rates), daily checks with monthly/quarterly source cadence for the rest (the pipeline's change detection skips unchanged source files). rbnz_m13_inflation_expectations is quarterly from 1995 to the latest survey. RBNZ renamed the table from M13 to H1 (Tara-ā-Whare Household Expectations Survey) in 2022, and the dataset now follows H1; the name is unchanged. The 5-year-ahead question was reworded in March 2022, so the 5-year series have a break there.
License
RBNZ statistics are published under the Reserve Bank's terms of use (the copyright section; the same page is served at rbnz.govt.nz/copyright). Unless otherwise indicated, material on the Bank's website is the copyright of the Reserve Bank of New Zealand. It may be reproduced on these conditions:
- When the material is published or issued to others, the Reserve Bank is acknowledged as the source and copyright owner.
- The material is reproduced accurately and is not used in a misleading way.
Those conditions do not impose a non-commercial restriction on the statistics themselves. They do not cover material identified as the copyright of a third party.
Recommended attribution: "Source: Reserve Bank of New Zealand, via eolas (eolas.nz)."
The M1 Consumers Price Index, M5 GDP and M9 employment tables are Statistics New Zealand data that RBNZ republishes. Statistics NZ holds the copyright in those series. The M1 table also includes a house price index from PropertyIQ and factor models produced by the Reserve Bank; those parts are outside Statistics NZ's copyright.
Recommended attribution for the Statistics NZ series in M1, M5 and M9: "Source: Statistics New Zealand, republished by the Reserve Bank of New Zealand, via eolas (eolas.nz)."
Common patterns
OCR + 90-day rate
The two interest rates every analyst tracks:
import pandas as pd
import matplotlib.pyplot as plt
rates = client.rbnz("rbnz_b2_wholesale_rates_daily", start="2018-01-01")
# Tables are WIDE: one column per series, snake_cased from RBNZ's headers.
rates.plot(x="date",
y=["cash_rate_official_cash_rate_ocr", "bank_bill_yields_90_days"],
figsize=(10, 4), title="OCR vs 90-day bank bill")
plt.show()
library(tidyr)
library(ggplot2)
rates <- eolas_get_rbnz("rbnz_b2_wholesale_rates_daily", start = "2018-01-01")
# Tables are wide: one column per series, snake_cased from RBNZ's headers.
ggplot(rates, aes(date)) +
geom_line(aes(y = cash_rate_official_cash_rate_ocr, colour = "OCR")) +
geom_line(aes(y = bank_bill_yields_90_days, colour = "90-day")) +
labs(y = "Rate (%)", colour = NULL)
Mortgage rates by term
LVR composition of new lending
lvr = client.rbnz("rbnz_c31_new_mortgage_lending", start="2018-01-01")
# High-LVR (>80%) share of all new lending — the RBNZ's macroprudential target
lvr["high_lvr_share_pct"] = (
lvr["higher_than_80_pct_lvr_lending_b1_all_borrower_types_b2_b3_b4_b5"]
/ lvr["total_lending_a1_all_borrower_types_a2_a3_a4_a5"] * 100
)
lvr.plot(x="date", y="high_lvr_share_pct",
title="High-LVR share of new mortgage lending (%)")
Pipeline use
RBNZ datasets are full-snapshot — each RBNZ release replaces the whole table. Most RBNZ tables are small (exchange-rate datasets are a few hundred KB; the larger balance-sheet tables top out around 5 MB), so full re-downloads are fast.
Use sync_bulk / eolas_sync_bulk to keep a local file fresh — it issues a lightweight HEAD check and only re-downloads when the snapshot has changed. In weeks where RBNZ hasn't published a new release, the call returns "unchanged" and transfers zero bytes.
See the Bulk downloads guide for cron and Airflow recipes.
Source-specific notes
- Naming: dataset names follow
rbnz_<rbnz_table_code>_<topic>so they cross-reference cleanly to RBNZ's own Statistics page — if you read a "B2" release on RBNZ's website, the eolas dataset isrbnz_b2_*. - Wide format: tables are one row per date with one column per series, snake_cased from RBNZ's multi-row Excel headers (e.g.
cash_rate_official_cash_rate_ocr). No pivoting needed for charting; usedf.melt()/tidyr::pivot_longer()if you want long format. - Cloudflare: RBNZ's site is Cloudflare-protected. Our pipeline uses residential-proxy fallback to fetch reliably; you don't see this — just clean data. If you're scraping RBNZ directly without proxies you'll see 403s from Fargate-IP-range addresses.
- Recent retirement: RBNZ retired 8 legacy tables in May 2026 (404s on the source). We removed those from our schedule rather than report broken pipelines; if you have older code referencing them, the dataset names will 404 from us too.
Where to find more
- RBNZ datasets on eolas: eolas.nz/datasets?source=RBNZ
- RBNZ's own statistics page: www.rbnz.govt.nz/statistics — original Excel tables, methodology notes
- RBNZ OCR decisions: www.rbnz.govt.nz/monetary-policy/about-monetary-policy/ocr-decisions
Related
- Stats NZ source guide — for the labour, GDP and BOP datasets Stats NZ publishes (overlaps with RBNZ's M-series)
- Examples — worked code recipes