Reserve Bank of Australia
RBA statistical tables — Australia's cash rate, yields and exchange rates as stable CSV tables
For Australian rates and FX from the source — the cash rate target (F1.1), yields (F2), exchange rates (F11) — each a CSV whose URL never changes.
Reach for it when…
For Australian rates and FX from the source — the cash rate target (F1.1), yields (F2), exchange rates (F11) — each a CSV whose URL never changes.
Not for: Australian CPI, GDP and jobs (the Australian Bureau of Statistics), ASX prices, anything intraday.
Units, revisions, traps
Units. Rates in percent; AUD/USD in US dollars per Australian dollar (note the direction); TWI as an index.
Revisions. Not revised.
- Ten metadata rows above the data; the row starting 'Series ID' is the header. Daily tables (F1, F2) use DD-Mon-YYYY dates; monthly tables (F1.1, F11.1) use DD/MM/YYYY.
- AUD/USD is quoted as USD per AUD — the opposite direction from most Asian currencies.
- A generic scripted User-Agent gets 403; a declared one is accepted.
Classic mistake: Reading a rising AUD/USD as a weaker Australian dollar.
Three recipes
- Recipe 1 · The cash rate target, daily
- Recipe 2 · AUD/USD and the TWI
- Recipe 3 · Government bond yields
Each recipe: Python · Excel · Sheets, with how to read the result. Python recipes run under pandas; recipe 1 is re-run by the weekly check where the source allows it.
How to use it in your own work
Copy the snippet, change the series id, read the result the way the footer says. Replace YOUR_…_KEY with your own key where one is needed.
Recipe 1The cash rate target, daily
# table F1: money market rates, daily. Declare who you are; a generic scripted UA is refused.
import requests, pandas as pd, io
H = {"User-Agent": "Your Name [email protected]"} # identify yourself; generic script user-agents are refused
r = requests.get("https://www.rba.gov.au/statistics/tables/csv/f1-data.csv", headers=H, timeout=30)
df = pd.read_csv(io.StringIO(r.text), skiprows=10)
df = df.rename(columns={df.columns[0]: "date"})
df["date"] = pd.to_datetime(df.date, format="%d-%b-%Y")
print(df.set_index("date")["FIRMMCRTD"].dropna().drop_duplicates().tail(8)) # cash rate target, only the changes- Data → From Web → https://www.rba.gov.au/statistics/tables/csv/f1-data.csv → skip the ten header rows (F1 is daily; F1.1 is the monthly average with DD/MM/YYYY dates).
=IMPORTDATA("https://www.rba.gov.au/statistics/tables/csv/f1-data.csv")Recipe 2AUD/USD and the TWI
# table F11.1: exchange rates, monthly (dates are DD/MM/YYYY)
import requests, pandas as pd, io
H = {"User-Agent": "Your Name [email protected]"} # identify yourself; generic script user-agents are refused
r = requests.get("https://www.rba.gov.au/statistics/tables/csv/f11.1-data.csv", headers=H, timeout=30)
df = pd.read_csv(io.StringIO(r.text), skiprows=10)
df = df.rename(columns={df.columns[0]: "date"})
df["date"] = pd.to_datetime(df.date, dayfirst=True)
print(df.set_index("date")[["FXRUSD", "FXRTWI"]].tail())- From Web with f11.1-data.csv.
=IMPORTDATA with f11.1-data.csv.Recipe 3Government bond yields
# table F2: capital market yields, daily
import requests, pandas as pd, io
H = {"User-Agent": "Your Name [email protected]"} # identify yourself; generic script user-agents are refused
r = requests.get("https://www.rba.gov.au/statistics/tables/csv/f2-data.csv", headers=H, timeout=30)
df = pd.read_csv(io.StringIO(r.text), skiprows=10)
df = df.rename(columns={df.columns[0]: "date"})
print(df.set_index("date")[["FCMYGBAG2D", "FCMYGBAG10D"]].dropna().tail()) # 2y and 10y- From Web with f2-data.csv.
=IMPORTDATA with f2-data.csv.Series → question map
The ids we use from RBA statistical tables, each with the question it answers. The catalog's compare view reads the concept tags behind these rows.
| Series | Answers | Region | Concept |
|---|---|---|---|
| F1 · FIRMMCRTD | What is the RBA cash rate? | Australia | policy_rate |
| F11.1 · FXRUSD | Where is AUD/USD? | Australia | fx_usd |
| F2 · FCMYGBAG10D | Where is the 10-year Australian yield? | Australia | yield_10y |
| F2 · FCMYGBAG2D | Where is the 2-year Australian yield? | Australia | yield_2y |
Compare with
Same question, different source: FRED, BOK ECOS, BOJ Time-Series Data. The compare view lines up coverage, frequency, history and access side by side and lists what the combination makes possible.
Questions readers ask
Why does the RBA CSV return 403?
Their edge refuses generic scripted user-agents. Send a User-Agent naming you and a contact address.
Where is Australian CPI?
The Australian Bureau of Statistics (abs.gov.au), quarterly with a monthly indicator; FRED mirrors it.
Are the CSV URLs stable?
Yes — the table code is the filename (f1.1-data.csv, f11.1-data.csv, f2-data.csv).
Educational only — we explain, we never advise · snippet licence: public domain · corrections to [email protected], fixed within a day and logged in the changelog.