You can look up what one house sold for on realestate.com.au, but nothing there lets you pull a whole suburb's sales into a table. There is no public API, and the price on a sold listing is usually an estimate, not a disclosed figure. I'll show the manual route and where it breaks, then the shortcut: the Realestate.com.au Property API on Apify, which takes a suburb and returns sold, rental, or for-sale listings as JSON.
Disclosure: the Apify links in this post are affiliate links. If you run the Actor, I may earn a referral commission at no extra cost to you.
Does realestate.com.au have an API?
Not a public one. There is no open developer API to sign up for and no key to request, so "realestate.com.au api" searches are mostly people asking for access that does not exist. In practice it means a scraper you consume like an API: suburb in, listing rows out as JSON.
What the Realestate.com.au Property API returns
The Realestate.com.au Property API returns one row per listing as structured JSON: address, property type, beds, baths, parking, land size, a price estimate, the confirmed sold date and selling agency on sold rows, the advertised rent on rental rows, agent details, and coordinates.
| Field | Example | Notes |
|---|---|---|
soldDate |
2021-08-03T00:00:00.000Z |
Confirmed, on sold rows |
estimatedPrice |
$585,000 |
The source's estimate; estimatedPriceValue is 585000
|
lastSoldAgency |
Harcourts RG - Gold Coast |
Selling agency |
bedrooms |
4 |
bathrooms and parking too |
landSizeValue |
454 |
Parsed from 454m²
|
rentPrice |
$650 per week |
Rental rows, with rentCurrency
|
Every row also carries a one-line summary an AI agent can read as is.
Who this is for
Buyer's agents and investors researching a suburb's sold market before they bid. Analysts benchmarking the Australian rental market by suburb. Agency principals who want to know which office holds a suburb's market share.
The manual way, and where it breaks
The DIY version is to build the sold-listings URL for a suburb, fetch each results page, and parse the cards. Pagination has to be walked by hand. Prices arrive as text, often "Contact Agent" or "AUCTION" on for-sale listings, so your parser needs a null path from day one. Several Australian suburbs share a name, so a bare suburb quietly gives you the wrong market. The markup shifts and your selectors rot with it. Add blocking and retries, and you own infrastructure to get a table of sales.
The faster way: run the Realestate.com.au Property API
Documented input in, documented rows out, no listing URL to find first.
Apify Console
- Open the Realestate.com.au Property API and click Try for free.
- Leave Mode on
search, set Listing type tosold, and enterCoomera, QLD, 4209. - Run it. The Sold properties view shows dates and agencies; export as JSON, CSV, or Excel.
REST
curl -X POST "https://api.apify.com/v2/acts/johnvc~realestate-au-property-api/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "mode": "search", "listingType": "sold", "locations": ["Coomera, QLD, 4209"], "maxResultsPerSearch": 50 }'
Run endpoint reference: the Apify API docs.
Get sold property prices in Python
Call the Actor with apify-client:
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("johnvc/realestate-au-property-api").call(
run_input={
"mode": "search",
"listingType": "sold",
"locations": ["Coomera, QLD, 4209"],
"maxResultsPerSearch": 50,
}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item.get("result_type") != "listing":
print("no listings:", item.get("error_message"))
continue
print(item["streetAddress"], item.get("soldDate"), item.get("estimatedPrice"), item.get("lastSoldAgency"))
The result_type check is the piece I'd keep even in a throwaway script. An empty search comes back as one row with result_type: "error" and a plain-language error_message, with no listing charged, so a zero for a suburb is verifiable rather than a guess.
Realestate.com.au property data as JSON, any listing type
The general-purpose starting point is Realestate.com.au Property Data API: Listings as JSON: any suburb, buy, rent, or sold, one output shape for all three. Up to 20 locations fit in one run, and maxResultsPerSearch (1 to 2000) is the cost dial.
Check sold property prices in any Australian suburb
Check Sold Property Prices in Any Australian Suburb is the flagship: every recent sale the source holds for a suburb, up to your cap, with date, agency, and estimate. Run it weekly and keep each dataset, and after a couple of months the weekly sold count and median estimate become a trendline. The trendline is the product; the one-off check is the demo.
Track the Australian rental market by suburb
Flip listingType to rent and the same suburb returns current rentals with rentPrice and rentCurrency beside beds, baths, and parking, which is what a yield calculation needs. Track Weekly Rent Prices by Australian Suburb is built to be scheduled. The sold and rental searches also exist as Chinese-language tasks: sold listings and price estimates and rental listings and weekly rents.
Find which agency sold each home in a suburb
Sold rows carry lastSoldAgency, so a sold search grouped by that field is an agency market-share table, which is what Find Which Agency Sold Each Home in an Australian Suburb does. The agents block adds phone, rating, and review count; the individual agent's name is often missing, so group at agency level.
Export an Australian property dataset to CSV or Excel
Not everything needs code. Export an Australian Property Dataset to CSV or Excel pulls a suburb into a spreadsheet from the Console through the two built-in views; grab the full JSON export when you need land size, coordinates, or agents.
Use it from Claude and other MCP clients
Apify exposes the Actor through the Model Context Protocol, so Claude, Claude Code, and Cursor can run a suburb search mid-conversation and answer "which agency handled the most sales in Coomera QLD last year" with real rows. In Claude Code it is one command:
claude mcp add --transport http realestate-au "https://mcp.apify.com/?tools=actors,docs,johnvc/realestate-au-property-api"
Get Australian Sold Property Data in Claude via MCP is the shortest path to trying it, and you can read more about Claude Code at claude.ai.
The example repo
johnisanerd
/
Apify-Realestate-AU-Property-API
Realestate.com.au Property API on Apify: sold property prices, rentals, and for-sale listings by suburb as structured JSON. Python (uv) quick-start plus MCP install guides for Claude, Cursor, and ChatGPT.
🏡 Realestate.com.au Property API: sold property prices, rentals, and for-sale listings by suburb
Give it an Australian suburb. Get back structured JSON: sold property prices with confirmed sale dates, rental listings with advertised rent, and for-sale stock, all from one API with no listing URL to find first.
Actor page: apify.com/johnvc/realestate-au-property-api Input schema: apify.com/johnvc/realestate-au-property-api/input-schema
This repo is a working Python client for the Realestate.com.au Property API on Apify. The API turns Australian property listings into clean rows: street address, suburb, state, postcode, property type, beds, baths, parking, land size, floor area, agent details, photo URLs, and latitude and longitude. Ask it for sold and you get sold property prices with a confirmed soldDate and the selling agency. Ask it for rent and you get the advertised rent, which is how you track the australia rental market suburb by suburb. Ask it for buy and you get current australian property listings.
A working Python client with four example runs (sold, rent, buy, and URL mode), each capped at 3 listings so a first run costs almost nothing, plus MCP install walkthroughs for Claude Cowork, Claude Code, Cursor, and ChatGPT.
FAQ about scraping realestate.com.au
What does the realestate.com.au scraper cost, and is there a free tier?
Billing is per event: one listing-scraped event per listing pushed to the dataset, plus a tiny actor-start event. A search that returns nothing is not charged, and maxResultsPerSearch caps a run's cost before it starts. Current rates are on the Store card, and new Apify accounts come with free platform credit.
How do I check what a property sold for with this scraper?
Set listingType to sold and search the suburb with its state and postcode. Each row carries the confirmed soldDate, the lastSoldAgency, and the price estimate. For one address, switch mode to url and pass the listing page in listingUrls.
Does the scraper return the actual sale price or an estimate?
An estimate. The sold date is confirmed; the price is the source's displayed estimate, because Australian sale prices are frequently not disclosed. Sold and rental rows almost always carry a number, for-sale rows often do not, so filter on a non-null estimatedPriceValue before averaging a buy search. There is no automated valuation in the output.
Will this scraper find commercial property sold prices?
No. It covers the residential listings on realestate.com.au, where buy, rent, and sold come from. Commercial stock in Australia lives on a separate site and is out of scope.
Does the scraper work as an MCP tool in Claude or Cursor?
Yes. Point any MCP client at the Apify MCP server with the URL above and the Actor appears as a callable tool in Claude, Claude Code, Claude Cowork, or Cursor; the example repo has the install steps for each.
How do I schedule the scraper to build a sold-price history?
Save one task per suburb or listing type, open Actions, choose Schedule, and attach a cron string such as 0 9 * * 1 for a Monday review; one schedule can trigger many tasks. Diff each run's dataset against the last on propertyId: a property that moves from buy to sold is a sale. Start from the Realestate.com.au Property API.
More from Truffle Pig Data
Related Actors with the same kind of JSON output: the Zoopla UK Property API for listings and sold house prices in Britain, the Google Maps Places Scraper for the schools, cafes, and transport around a shortlisted address, and the Google Maps Directions API for commute times from a shortlist.
Wrapping up
There is no public realestate.com.au API, but sold property prices, rentals, and for-sale stock for any suburb are one JSON call away. Try the Realestate.com.au Property API, or clone the example repo and point it at your own suburbs.
Top comments (0)