Australian Home Loan Rates (RBA) avatar

Australian Home Loan Rates (RBA)

Pricing

Pay per usage

Go to Apify Store
Australian Home Loan Rates (RBA)

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

Huxley

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Apify Store Python 3.11+ LICENSE

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"
}
FieldPossible values
source_tableF5, F6
loan_purposeowner_occupier, investor
rate_typeall, variable, variable_discounted, fixed_3y, fixed_over_3y
segmentoutstanding_all, new_loans_all, lvr_low, lvr_high, size_small, size_mid, size_large, io, pi, indicator
institution_scopeall, 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 onwards
apify 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 LVR
apify call mrjerry/home-loan-rates --input '{
"segment":"lvr_low",
"institution_scope":"all"
}'
# Investor rates, all-in, last 24 months
apify 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 ApifyClient
client = 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

FieldTypeDefaultDescription
modestringratesrates (default) for the time series, latest for the most recent month only.
loan_purposestringallowner_occupier, investor, or all.
rate_typestringallvariable, variable_discounted, fixed_3y, fixed_over_3y, or all.
segmentstringallSee 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_scopestringallall = all institutions, large = the major banks, banks = the bank sector (F5), mortgage_managers = non-bank lenders, securitised = securitised loan book.
start_datestringISO YYYY-MM-DD; include only records on or after this date.
end_datestringISO YYYY-MM-DD; include only records on or before this date.
limitintegerCap the number of records pushed.
include_f5booleantrueWhether 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:

EndpointRecordsCadence
https://www.rba.gov.au/statistics/tables/csv/f6-data.csv83 date rows × 42 columnsMonthly
https://www.rba.gov.au/statistics/tables/csv/f5-data.csv810 date rows × 30 columnsMonthly

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:

  1. "What are owner-occupier variable rates right now?"mode: "latest", loan_purpose: "owner_occupier", rate_type: "variable", segment: "outstanding_all".
  2. "Show me new-loan rates broken down by LVR"segment: "lvr_low" then segment: "lvr_high" and compare.
  3. "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; use rba-statistics when 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

# Install
pip install -r requirements.txt
# Run with a test input
echo '{"mode":"latest"}' > storage/key_value_stores/default/INPUT.json
apify run
# Inspect
ls 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-statistics Actor.
  • Monthly cadence. Both F5 and F6 are published monthly; if you need weekly or daily data, see RBA's other tables (f11.1 for daily exchange rates, etc.).
  • No retry on transient errors. Add tenacity if the RBA is unreachable and you need resilience.
  • Series-breaks tables (f6-series-breaks, f5-series-breaks) aren't included. Pull them separately via rba-statistics if you need to reconstruct rate histories across methodology changes.

License

MIT.