Australian Home Loan Rates (RBA)
Pricing
Pay per usage
Australian Home Loan Rates (RBA)
Curated time series of Australian housing-lending rates from the RBA F5 (Indicator) and F6 (Lenders Interest Rates) tables. Filter by loan purpose, rate type, segment, and institution scope.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Huxley
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Curated, semantically-named time series of Australian housing-lending rates from the Reserve Bank of Australia. Two source tables, one clean output shape:
- F6 — Lenders' Interest Rates (monthly, ~44 series): the rates actually on the books, broken down by loan purpose, rate type, LVR, loan size, and institution scope.
- F5 — Indicator Lending Rates (monthly, ~30 series): the advertised rates the banks publish.
The RBA publishes these as wide CSVs with long, deeply-nested column names like "Lending rates; Housing credit; New loans funded in the month; Owner-occupied; Fixed-rate, by residual fixed term; Less than or equal to 3 years". The Actor maps a hand-picked subset to short semantic keys an LLM can reason about directly.
Output record shape
{"date": "2026-05-31","source_table": "F6","loan_purpose": "owner_occupier","rate_type": "variable","segment": "outstanding_all","institution_scope": "all","rate_pct": 6.2,"raw_column": "Lending rates; Housing credit; Outstanding; Owner-occupied; Variable-rate; All institutions","fetched_at": "2026-07-09T14:30:12Z"}
| Field | Possible values |
|---|---|
source_table | F5, F6 |
loan_purpose | owner_occupier, investor |
rate_type | all, variable, variable_discounted, fixed_3y, fixed_over_3y |
segment | outstanding_all, new_loans_all, lvr_low, lvr_high, size_small, size_mid, size_large, io, pi, indicator |
institution_scope | all, large, banks, mortgage_managers, securitised |
Quick start
# Most recent month, all curated series (12 records)apify call mrjerry/home-loan-rates --input '{"mode":"latest"}'# All owner-occupier variable outstanding rates, 2024 onwardsapify call mrjerry/home-loan-rates --input '{"loan_purpose":"owner_occupier","rate_type":"variable","segment":"outstanding_all","institution_scope":"all","start_date":"2024-01-01"}'# New loans only, broken down by LVRapify call mrjerry/home-loan-rates --input '{"segment":"lvr_low","institution_scope":"all"}'# Investor rates, all-in, last 24 monthsapify call mrjerry/home-loan-rates --input '{"loan_purpose":"investor","institution_scope":"all","start_date":"2024-07-01"}'# F5 only (advertised rates, no F6)apify call mrjerry/home-loan-rates --input '{"include_f5":true,"loan_purpose":"owner_occupier","segment":"indicator"}'
From Python:
from apify_client import ApifyClientclient = ApifyClient(token="YOUR_API_TOKEN")run = client.actor("mrjerry/home-loan-rates").call(run_input={"mode": "latest", "loan_purpose": "owner_occupier"},)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['date']} {item['segment']:18s} {item['rate_pct']}%")
Inputs
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | rates | rates (default) for the time series, latest for the most recent month only. |
loan_purpose | string | all | owner_occupier, investor, or all. |
rate_type | string | all | variable, variable_discounted, fixed_3y, fixed_over_3y, or all. |
segment | string | all | See the table above. outstanding_all = the average rate on all loans currently on the books. new_loans_all = the rate on loans funded in the most recent month. lvr_low/lvr_high = new loans at LVR <80% / ≥80%. size_small/size_mid/size_large = new loans under $600k / $600k–$1m / over $1m. io/pi = interest-only / principal-and-interest. indicator = the banks' advertised rates (F5). |
institution_scope | string | all | all = all institutions, large = the major banks, banks = the bank sector (F5), mortgage_managers = non-bank lenders, securitised = securitised loan book. |
start_date | string | — | ISO YYYY-MM-DD; include only records on or after this date. |
end_date | string | — | ISO YYYY-MM-DD; include only records on or before this date. |
limit | integer | — | Cap the number of records pushed. |
include_f5 | boolean | true | Whether to include the F5 (advertised) rates. Set to false to only get F6 (actual rates on the books). |
What's in the data
F6 (Lenders' Interest Rates) is the authoritative source for "what are people actually paying?" The data is reported by APRA from the banks. As of mid-2026:
- Owner-occupier variable outstanding: ~6.2%
- Owner-occupier fixed ≤3y outstanding: ~5.5% (banks discount fixed to attract new lending)
- Investor variable outstanding: ~6.4% (slightly higher than owner-occupier, by ~20bp)
- New loans funded in May 2026 (the most recent month) had a slightly lower variable rate than the outstanding average — banks are offering discounts to attract new business
F5 (Indicator Lending Rates) captures the rates the banks advertise (the headline figures in their marketing). These are typically:
- Owner-occupier standard variable: ~6.5–7.0% (banks vary)
- Owner-occupier 3-year fixed: ~6.5–7.0% (the "specials")
- Investor standard variable: ~6.7–7.2% (a small premium over owner-occupier)
F5 includes mortgage managers and the securitised-loan book in addition to the bank sector.
How it works
The Actor fetches two RBA CSV endpoints and curates the result:
| Endpoint | Records | Cadence |
|---|---|---|
https://www.rba.gov.au/statistics/tables/csv/f6-data.csv | 83 date rows × 42 columns | Monthly |
https://www.rba.gov.au/statistics/tables/csv/f5-data.csv | 810 date rows × 30 columns | Monthly |
Each CSV is parsed (handling RBA's mixed DD-Mon-YYYY and DD/MM/YYYY date formats), and a hand-curated list of ~40 useful series is matched by substring against the column names. The match maps the RBA's nested English column names to short semantic keys, then filters and pushes to the Apify Dataset.
Use as an LLM tool
Three natural agent tasks this Actor enables:
- "What are owner-occupier variable rates right now?" —
mode: "latest", loan_purpose: "owner_occupier", rate_type: "variable", segment: "outstanding_all". - "Show me new-loan rates broken down by LVR" —
segment: "lvr_low"thensegment: "lvr_high"and compare. - "How have rates moved over the last 12 months?" —
mode: "rates", start_date: "<12 months ago>", loan_purpose: "owner_occupier", rate_type: "variable".
Pairs well with
rba-statistics— the parent Actor that exposes all 213 RBA tables including F5 and F6 by their raw column names. Use this Actor when you want a curated, semantically-named view; userba-statisticswhen you want every column including the niche series we don't curate.cdr-register— lists which banks are on CDR. Combine with home-loan-rates to ask "of the 117 banking brands on CDR, what are their published variable rates?"
Local development
# Installpip install -r requirements.txt# Run with a test inputecho '{"mode":"latest"}' > storage/key_value_stores/default/INPUT.jsonapify run# Inspectls storage/datasets/default/cat storage/datasets/default/000000001.json
Limits & gotchas
- Curated subset. The Actor maps ~40 of the ~74 series across F5 and F6. The full RBA data is in the
rba-statisticsActor. - Monthly cadence. Both F5 and F6 are published monthly; if you need weekly or daily data, see RBA's other tables (
f11.1for daily exchange rates, etc.). - No retry on transient errors. Add
tenacityif the RBA is unreachable and you need resilience. - Series-breaks tables (
f6-series-breaks,f5-series-breaks) aren't included. Pull them separately viarba-statisticsif you need to reconstruct rate histories across methodology changes.
License
MIT.