NSW Rent Prices by Postcode (Official Bond Data)
Pricing
from $4.00 / 1,000 rent rows
NSW Rent Prices by Postcode (Official Bond Data)
Get median weekly rents for any New South Wales postcode or suburb from NSW Fair Trading's official rental bond lodgements: unit, house or townhouse by bedrooms and month, with quartiles and year-over-year change. No API key; JSON via API/MCP, $4 per 1,000 rows.
Pricing
from $4.00 / 1,000 rent rows
Rating
0.0
(0)
Developer
Japan Open Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Get median weekly rents for any New South Wales (Australia) postcode or suburb from the official NSW Fair Trading rental bond data: units, houses and townhouses by number of bedrooms and month, with quartiles, bond counts and year-over-year change. It reads the monthly rental bond lodgement files NSW Fair Trading publishes (every new residential lease in NSW, about 27,000 a month) and returns flat JSON, one row per postcode x dwelling type x bedrooms x month, for $4 per 1,000 rows.
- Actual agreed rents, not asking prices. Every row is built from the bonds lodged for new leases, so it shows what tenants signed for, not what was advertised.
- Any NSW postcode or suburb name:
2000,2010,Surry Hills,Parramatta,Bondi Beach, orallfor every postcode in the state (about 530 with new leases each month). - Monthly back to January 2022, with the newest month as soon as NSW Fair Trading publishes it (usually in the first weeks of the following month).
- Median, lower quartile (25th percentile), upper quartile (75th percentile) and count per group, plus the median per month, the 3-month rolling median and the % change on the same month a year earlier.
- Small samples are flagged:
lowCount: truewhen a row is based on fewer than 5 bonds. - Built for pipelines and AI agents: flat camelCase fields, a
statuson every row, plain-English errors that are never charged. No API key, no login.
Why use this instead of Rent Check or a paid report?
| NSW Rent Check (free website) | Paid postcode reports (e.g. SQM Research) | This Actor | |
|---|---|---|---|
| Data | Official bonds, last 3 months, one range | Asking (advertised) rents and listings | Official bonds: what tenants actually signed |
| Many postcodes at once | One postcode and one property type per search | One report per postcode, or a monthly subscription | Up to 1,000 postcodes, or all, in one run |
| History | Recent quarter only | Yes | Every month since January 2022 |
| Quartiles, counts, year-over-year | Range only | Varies | Yes, per month, plus a 3-month median |
| Format | Web page | Web pages / PDF | Flat JSON, CSV, Excel; API, schedules and MCP |
| Price | Free | About A$50 per postcode report, or about A$100 a month | $4 per 1,000 rows, no subscription (every NSW postcode for one month is about $16) |
What can you do with it?
- Property investors and buyer's agents - check the real rent for a 2-bedroom unit in a postcode before you buy, and the gross yield it supports.
- Property managers and landlords - set or review a rent against what new leases in the same postcode, type and size signed last month.
- Proptech and data teams - feed a rent model or dashboard with every NSW postcode, every month, on a schedule.
- Relocation, corporate housing and HR - budget housing allowances by suburb.
- Analysts and journalists - track rent growth by suburb and dwelling type, year over year.
- AI agents - answer "what does a 2-bedroom unit rent for in Surry Hills?" with one tool call and a source link.
How to use
- Click Try for free. The default input returns the last 3 months for postcode 2000 (Sydney CBD): one row per dwelling type and bedroom count, plus one all-properties row per month, in about 10 seconds.
- Replace
2000with your postcodes or suburb names (one per line). A suburb is looked up to its postcode, because NSW publishes the data by postcode. - Optionally narrow Dwelling types (unit, house, townhouse, other) and Bedrooms (0 = studio ... 5+), and set Number of months (1 to 36).
- For a past period, set Last month to
YYYY-MM(for example2025-12).
Run it on a schedule
NSW Fair Trading publishes each month's file in the following month. A monthly Schedule in Apify Console (for example on the 20th, with "months": 1) gives you the newest month for your postcodes; add a webhook or an integration (Google Sheets, Slack, your database) to receive the rows.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
postcodes | list of text (required) | ["2000"] | NSW postcodes ("2010") or suburb names ("Surry Hills", "Mt Druitt", "Parramatta NSW 2150"). "all" = every NSW postcode. Up to 1,000 entries. |
dwellingTypes | list | ["unit", "house", "townhouse"] | unit (flat / apartment), house, townhouse (terrace, townhouse, semi-detached), other (rooms, garages, car spaces...). |
bedrooms | list | all | "0" (studio / bedsit), "1", "2", "3", "4", "5+". |
months | integer | 3 | Number of monthly periods, counting back from the latest month published (or from endMonth). 1 to 36. |
endMonth | YYYY-MM | latest | The most recent month to return, from 2022-01. |
includeTotals | boolean | true | Adds one row per postcode and month with dwellingType: "all", bedrooms: "all" pooling every bond that matches your filters (skipped when you ask for a single type and bedroom count, since it would repeat that row). |
includeYearOverYear | boolean | true | Adds the median a year earlier and the % change. Turn off for slightly faster runs. |
includeLodgements | boolean | false | Also returns the individual bonds behind the statistics (lodgement date, postcode, type, bedrooms, weekly rent), one row each with recordType: "lodgement". |
maxLodgements | integer | 1000 | Upper limit on lodgement rows per run (newest first). |
Input examples
{ "postcodes": ["Surry Hills", "Newtown", "2026"], "dwellingTypes": ["unit"], "bedrooms": ["1", "2"], "months": 6 }
{ "postcodes": ["all"], "months": 1, "includeYearOverYear": true }
{ "postcodes": ["2150"], "dwellingTypes": ["house"], "bedrooms": ["3", "4"], "months": 12, "endMonth": "2025-12" }
Output
One row per postcode x dwelling type x bedrooms x month (recordType: "summary"):
{"status": "ok","recordType": "summary","query": "Surry Hills","suburb": "Surry Hills","postcode": "2010","postcodeShareOfSuburb": 1.0,"postcodeSuburbs": "Surry Hills; Darlinghurst","dwellingType": "unit","bedrooms": "2","month": "2026-08","bondsLodged": 66,"lowCount": false,"medianWeeklyRent": 1025,"lowerQuartileWeeklyRent": 952.5,"upperQuartileWeeklyRent": 1200,"medianMonthlyRent": 4442,"medianWeeklyRent3Months": 1077.5,"bondsLodged3Months": 168,"medianWeeklyRentYearAgo": 1000,"bondsLodgedYearAgo": 56,"yearOverYearChangePct": 2.5,"sourceFileUrl": "https://www.nsw.gov.au/sites/default/files/noindex/2026-09/rentalbond_lodgements_august_2026.xlsx","fetchedAt": "2026-10-02T07:49:01Z","source": "NSW Fair Trading rental bond lodgement data (nsw.gov.au), CC BY 4.0, (c) State of New South Wales; suburb names: ABS ASGS 2021, CC BY 4.0. Not affiliated with the NSW Government."}
A free row tells you what to change when nothing matched or an entry was wrong:
{ "status": "error", "query": "Sury Hills", "error": "\"Sury Hills\" is not a known NSW suburb or postcode (did you mean Surry Hills?), so use a 4-digit NSW postcode such as \"2000\" or an NSW suburb name such as \"Surry Hills\"." }
Output fields
| Field | Meaning |
|---|---|
status | ok, not_found (no bond matched; free) or error (wrong input or source unavailable; free) |
recordType | summary (statistics) or lodgement (one bond, only with includeLodgements) |
query | The entry from your input that produced the row |
suburb | The suburb you asked for, when you gave a suburb name |
postcode | NSW postcode |
postcodeShareOfSuburb | When a suburb spans several postcodes: the share of the suburb's dwellings in this postcode (2021 Census) |
postcodeSuburbs | The main suburbs in the postcode, largest first |
dwellingType | unit, house, townhouse, other, or all for the all-properties row |
bedrooms | 0 (studio) to 4, 5+, or all |
month | Month the bonds were lodged, YYYY-MM |
bondsLodged | Number of new bonds (new leases) in the group |
lowCount | true when bondsLodged is below 5: treat the figures with care |
medianWeeklyRent | Median weekly rent, A$ |
lowerQuartileWeeklyRent / upperQuartileWeeklyRent | 25th and 75th percentile weekly rent, A$ |
medianMonthlyRent | medianWeeklyRent x 52 / 12, rounded, A$ |
medianWeeklyRent3Months / bondsLodged3Months | Median and count over this month and the two before it (null when one of them is not available) |
medianWeeklyRentYearAgo / bondsLodgedYearAgo | Same group, same month a year earlier |
yearOverYearChangePct | % change of the median on a year earlier (null when either month has fewer than 5 bonds) |
lodgementDate / weeklyRent | Lodgement rows only: the date the bond was lodged and the weekly rent, A$ |
sourceFileUrl | The NSW Fair Trading file the row was computed from |
error | Plain-English reason on free rows |
Quartiles use linear interpolation between ranks (the same as Excel QUARTILE.INC). Bonds with an unknown type, bedroom count or rent, and rents under A$20 a week (data-entry errors), are left out.
How much does it cost?
Pay per event, no subscription:
| Event | Price | When |
|---|---|---|
| Rent row | $0.004 ($4.00 per 1,000) | Each returned row with status: "ok" (a summary row or, if you ask for them, a lodgement row) |
| Actor start | $0.001 | Once per run |
not_found and error rows are always free. The Pricing tab shows the current price.
| Use | Rows | Cost per run |
|---|---|---|
| Default input (postcode 2000, 3 months) | about 25-30 | about $0.11 |
| One postcode, one type and bedroom count, 12 months | 12 | about $0.05 |
| 10 postcodes, units and houses by bedrooms, latest month | about 60-100 | about $0.25-0.40 |
| Every NSW postcode, latest month, all types and bedrooms | about 4,000 | about $16 |
| Every NSW postcode, 36 months, all types and bedrooms | about 143,000 | about $570 - set a cost cap |
| Wrong input or nothing found | 0 (one free row) | $0.001 |
Big runs add up quickly: "all" with many months returns one row per postcode, type, bedroom count and month. Set Maximum cost per run in the run options to cap any run; the Actor stops cleanly when the cap is reached. For a monthly feed of every postcode, run "all" with "months": 1 once a month (about $16).
Use via API & MCP (AI agents)
REST API (synchronous, returns the rows):
curl -X POST "https://api.apify.com/v2/acts/japan-open-data~nsw-rental-bond-rents/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"postcodes": ["Surry Hills"], "dwellingTypes": ["unit"], "bedrooms": ["2"], "months": 3}'
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("japan-open-data/nsw-rental-bond-rents").call(run_input={"postcodes": ["2150", "Newtown"], "dwellingTypes": ["house"], "bedrooms": ["3"], "months": 12})for row in client.dataset(run["defaultDatasetId"]).iterate_items():if row["status"] == "ok":print(row["postcode"], row["month"], row["medianWeeklyRent"], row["bondsLodged"], row["lowCount"])
MCP: add the Apify MCP server (https://mcp.apify.com) to Claude, Cursor or any MCP client and enable the tool japan-open-data/nsw-rental-bond-rents.
Recommended settings for agents:
- For "what does a 2-bedroom unit rent for in X?", use
{"postcodes": ["X"], "dwellingTypes": ["unit"], "bedrooms": ["2"], "months": 3}and quotemedianWeeklyRent3Months(more stable than one month),bondsLodged3Monthsand the lower and upper quartiles. - Australian rents are quoted per week;
medianMonthlyRentis provided for readers used to monthly rents. - If
lowCountistrue, say the sample is small, or widen the period with a largermonths. - Keep runs small: name the postcodes or suburbs you need and narrow
dwellingTypesandbedrooms. Avoid"all"with manymonthsunless the user asked for a full dataset (eachokrow is billed). - Quote
monthandsourceFileUrl, and say the figures are rents agreed in new leases (bond lodgements), not asking rents.
Summary for AI assistants: This tool returns official New South Wales (Australia) rents from NSW Fair Trading's rental bond lodgements, by postcode or suburb, dwelling type (unit, house, townhouse), number of bedrooms and month since 2022: number of new bonds, median and quartile weekly rent in A$, a 3-month rolling median and the year-over-year change, as flat JSON rows.
Privacy
The NSW files contain no names and no street addresses: only the lodgement date, postcode, dwelling type, bedrooms and weekly rent. This Actor returns the same or less: statistics by postcode, and (only if you ask) the individual bonds with those five fields. No personal data is collected or returned.
FAQ
How fresh is the data?
Every run reads the NSW Fair Trading page and uses the newest monthly file published there, so new months appear automatically. NSW usually publishes a month's file during the following month.
Is a "bond lodged" the same as a new lease?
Almost: in NSW, when a landlord or agent takes a rental bond for a residential tenancy it must be lodged with NSW Fair Trading, so bond lodgements are the standard official measure of new-lease rents. Tenancies where no bond is taken are not included.
Why do some suburbs give several postcodes?
NSW publishes the data by postcode. When a suburb is split between postcodes, you get one set of rows per postcode, with postcodeShareOfSuburb (share of the suburb's dwellings in the 2021 Census). The statistics always describe the whole postcode.
Why is a month missing for my postcode?
Rows are only returned for groups with at least one bond in the month. Small postcodes, or a narrow type and bedroom filter, can have months with none; widen months or remove a filter.
Can I get the median rent for every NSW postcode at once?
Yes. Use {"postcodes": ["all"], "months": 1} for the latest month: about 4,000 rows (every postcode with new leases, by dwelling type and bedrooms, plus an all-properties row), about $16 per run.
Does it cover Victoria, Queensland or other states?
No, only New South Wales. Other states publish rent data in different forms (mostly quarterly medians); open an issue if you need one of them.
Is it legal to use this data?
Yes. NSW Government material is licensed under Creative Commons Attribution 4.0 (CC BY 4.0), which allows commercial use with attribution. Each row carries the attribution in source.
Is this an official NSW Government service?
No. It is an independent tool that reads the NSW Government's open data. It is not affiliated with or endorsed by NSW Fair Trading.
Troubleshooting
"... is not a known NSW suburb or postcode"- check the spelling, or give the 4-digit postcode. The message suggests close matches."... matches N NSW suburbs"- the name exists in several council areas; use the qualified name shown (for exampleBack Creek (Tweed)) or the postcode.not_foundfor a postcode - no bond matched your filters in the period, or the postcode is not in NSW.- An
errorrow saying nsw.gov.au could not be reached - the NSW website was unavailable. Nothing is charged for that row; run again later.
Known limitations
- Data is by postcode only (NSW does not publish suburb or street detail). Suburb names are mapped to postcodes with the ABS 2021 suburb and postal area boundaries.
- Monthly files start in January 2022. Earlier years are published only as yearly files and are not included.
- Dwelling type and bedrooms are as reported by the agent or landlord; "other" mixes rooms, garages and car spaces.
- The 3-month median and the year-ago figures need the earlier months; they are null for the first months of 2022.
Data source and licence
- Rents: NSW Government, NSW Fair Trading, Rental bond data - https://www.nsw.gov.au/housing-and-construction/rental-forms-surveys-and-data/rental-bond-data - © State of New South Wales, licensed under CC BY 4.0.
- Suburb names and suburb-to-postcode mapping: Australian Bureau of Statistics, ASGS Edition 3 (2021) allocation files and 2021 Census mesh block counts - © Commonwealth of Australia, CC BY 4.0.
More from Japan Open Data
- Argentina Fuel Prices API by Station (Official) — last reported gasoline (nafta), diesel and CNG prices at every Argentine gas station from the Energy Secretariat's official open data, with the report date of each price, coordinates and distance.
- England Listed Building & Conservation Area Check — official listed buildings, scheduled monuments, conservation areas and Article 4 directions for any postcode or coordinates in England, one row per location.
- England Protected Site Check: SSSI, AONB & Green Belt — SSSI, National Landscape (AONB), National Park, Green Belt, SAC/SPA and Ramsar checks for any English postcode or coordinates, one row per site, from official Natural England and DLUHC data.
- France Building Permits API: Construction Leads — official French building permits (Sitadel) filed by companies, by department, commune or date, with SIREN, project type and floor areas.
- France Property Risk Lookup by Address (Georisques) — official Géorisques risks for any French address or coordinates: flood, clay shrink-swell, seismic zone, radon, past natural-disaster declarations and nearby industrial / polluted sites, one row per location.
- Japan Postal Code & Address in English — look up Japanese postal codes and addresses in English/romaji, kanji and kana, from Japan Post's official data.
- Korea E-commerce Company Leads (KFTC Register) — new Korean e-commerce companies from the official KFTC online seller register (통신판매업), in English with business registration number and store platform.
- Mexico Gas Prices API by Station (Official CNE) — today's regular, premium and diesel prices at every Mexican gas station, from the official CNE feed.
- Poland Building Permits API: Construction Leads — new Polish building permits (pozwolenia na budowę) issued to companies and public bodies, with investor, building category and site, from the official GUNB register.
- TSA Checkpoint Travel Numbers (Daily, Weekly & YoY) — daily U.S. TSA airport checkpoint traveler counts as clean JSON, with weekly averages and year-over-year change.
- Taiwan Real Estate Sold Prices API in English — official Taiwan actual-price-registration sales (buildings, land, parking) by city and district, translated into English with price per ping and per m².
- UK Flood Risk Lookup by Postcode (England) — Environment Agency flood zone, recorded flood extents and flood defences for any postcode or coordinates in England.
- UK HGV Operator Licence Lookup (Official DVSA) — search the official DVSA / Traffic Commissioner register of UK truck and bus operator licences by company name, postcode area or fleet size.
- UK Importers & Exporters by Product (HMRC Data) — UK companies that imported or exported a product each month, by HS code or keyword, from official HMRC trade data, with new traders flagged for lead lists.
- UK NHS Organisation Lookup (Official ODS Codes) — GP practices, pharmacies, dentists, hospitals and NHS trusts from the official ODS register, by postcode, type or ODS code (organisations only).
- UK Visa Sponsor Register Tracker (Daily Changes) — new, removed and downgraded UK visa sponsor licences from the official Home Office register, or check whether a company can sponsor workers.
- UK Waste Carrier Licence Check (Environment Agency) — check whether a company is a registered waste carrier, broker or dealer in England by registration number, company name or postcode radius, from the Environment Agency's public register (companies and organisations only).
- US Flood Zone Lookup by Address (FEMA NFHL) — official FEMA flood zone (A, AE, VE, X…), base flood elevation and FIRM panel for any U.S. address or coordinates.
- US Hail History by Location (NOAA NEXRAD Radar) — every hail day near any U.S. latitude/longitude with max estimated hail size, from NOAA NEXRAD radar.
- US Storm Reports API: Hail, Wind & Tornado (NWS) — U.S. hail, wind, tornado and flood reports from official NWS Local Storm Reports within hours (last 7 days), filterable by state or radius.
Feedback
Found a wrong figure, a suburb that maps to the wrong postcode, or a month that is missing? Open an issue on the Issues tab — it will be read.