Realestate.com.au Property API
Pricing
from $3.43 / 1,000 listing returneds
Realestate.com.au Property API
Australian property listings and sold property prices as clean, structured JSON. Search any suburb for buy, rent, or sold with no listing URL needed, and get beds, baths, parking, land size, sold date, agent details, and coordinates. Pay per listing, MCP-ready for Claude and AI agents.
Pricing
from $3.43 / 1,000 listing returneds
Rating
0.0
(0)
Developer
John
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
5
Monthly active users
12 hours ago
Last modified
Categories
Share
Realestate.com.au Property API: Australian Listings and Sold Property Prices
Australian property listings as clean, structured JSON. Look up sold property prices, current for-sale stock, or rentals in any suburb and get back confirmed sold dates, the selling agency, beds, baths, parking, and the source's price estimate, straight from public realestate.com.au listing pages.
No listing URL required. The Actor builds the search for you from suburb, state, and postcode, so you can go straight from "Coomera, QLD, 4209" to structured data.
What this actor returns
One row per listing. The two built-in dataset views cover the fields most people sort and filter on, and the full JSON export carries everything else.
- Listings overview view: street address, suburb, state, property type, bedrooms, bathrooms, parking spaces, price estimate, listing status, and the listing URL
- Sold properties view: street address, suburb, state, postcode, confirmed sold date, price estimate as displayed and as a number, the selling agency, and a link to the fuller property history
- Full JSON export: everything above plus land size and floor area with parsed numeric values, latitude and longitude, the
agentsblock (agency, phone, star rating, review count), the full listing description, photo URLs and photo count, the off-market flag, rent price and currency on rental rows, and a last-seen timestamp
Land size, coordinates, and the agents block sit in the full JSON export rather than in either tabular view, so pull the raw dataset (or the allResults link) when you need them.
Every listing row also carries a one-line plain-language summary, so an AI agent can read a record without post-processing.
About prices, stated plainly
This source gives a confirmed sold date but a price estimate, not a verified sale price. That is a fact about the Australian market rather than a gap in the data: sale prices are frequently not publicly disclosed here, unlike in the UK.
So soldDate is solid, and estimatedPrice is exactly what its name says. The field is labelled that way everywhere, including in the schema, so nothing downstream mistakes an estimate for a settled figure. Fields the source did not populate in live testing, including a separate valuation range and confidence score, are left out of the output rather than shipped permanently empty.
There is one more thing worth knowing before you build on the price fields. Sold rows and rental rows almost always carry a number. For-sale rows frequently do not: Australian agents routinely advertise a property as "Contact Agent", "AUCTION", or a written range instead of a figure, and when that happens estimatedPriceValue is null and estimatedPrice holds the text as published. Filter for a non-null estimatedPriceValue before you average anything on a buy search.
Use cases
- Research a suburb's sold market. Search
soldfor a suburb and get every recent sale with its date, agency, and price estimate. - Track listings in a target area. Search
buyorrenton a schedule and diff the results for new stock and changes. - Build a comparable set. Beds, baths, parking, and, from the full JSON export, land size and coordinates let you match like with like.
- Map agency market share. Sold listings carry the selling agency, so you can count sales by agency in a suburb.
- Benchmark rents. A
rentsearch returns the advertised weekly rent and its currency across a whole suburb.
Input parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
mode | string | Required | search builds the search from suburb and state. url collects specific listing pages. | search |
listingType | string | Optional | buy, rent, or sold. Defaults to buy. | sold |
locations | array of strings | Optional (empty = nationwide) | "Suburb, STATE" or "Suburb, STATE, POSTCODE". Up to 20. | ["Coomera, QLD, 4209"] |
maxResultsPerSearch | integer | Optional | Listings per search. Defaults to 50. This is your cost control. | 50 |
daysBack | integer | Optional | Recency filter. It needs a date-sorted search, which the suburb searches this Actor builds are not, so leave it empty and use a schedule plus a diff instead. See the FAQ. | (leave empty) |
limitPages | integer | Optional | Cap how many result pages to walk. | 5 |
splitByPropertyType | boolean | Optional | Walk each property type separately to reach deeper into a large suburb. | false |
splitByPriceRange | boolean | Optional | Same, by price band. | false |
listingUrls | array of strings | Required in URL mode | Specific listing URLs. |
{"mode": "search","listingType": "sold","locations": ["Coomera, QLD, 4209"],"maxResultsPerSearch": 50}
A suburb must be paired with its state. Several Australian suburbs share a name, so a bare suburb is rejected with a clear message rather than silently guessed.
Example output
{"result_type": "listing","propertyId": "property-house-qld-coomera-136778134","streetAddress": "17 Severn Street","suburb": "Coomera","state": "QLD","postcode": "4209","propertyType": "House","listingType": "Sold","bedrooms": 4,"bathrooms": 2,"parking": 2,"landSize": "454m²","landSizeValue": 454,"estimatedPrice": "$585,000","estimatedPriceValue": 585000,"soldDate": "2021-08-03T00:00:00.000Z","lastSoldAgency": "Harcourts RG - Gold Coast","agents": [{ "agency": "Harcourts RG - Gold Coast", "phone": "07 5636 8963", "rating": 5, "reviewCount": 76 }],"latitude": -27.84383141,"longitude": 153.33601549,"photoCount": 21,"offMarket": true,"summary": "4-bed house at 17 Severn Street, Coomera, QLD. Sold 2021-08-03. Price estimate $585,000."}
A search that returns nothing produces a row with result_type: "error" and a plain-language error_message.
Pricing
Pay per result. One event, listing-scraped, is charged once for every listing pushed to the dataset. Nothing is charged for a search that returns no listings.
maxResultsPerSearch caps what a run can cost, and the cap is applied at the source rather than by discarding rows already paid for. Current rates are shown on the Store card.
How to get started
- View on Apify Store and click Try for free.
- Leave Mode on
search, set Listing type, and enter a location such asCoomera, QLD, 4209. - Run it. Results appear on the Output tab and export as JSON, CSV, or Excel. The Sold properties view shows sale dates and agencies directly.
Prefer to start from code? The example repo with a Python quick start and MCP setup walkthrough has runnable scripts for each of the three listing types.
🔌 Use this API from Claude (MCP)
Add this Actor as a tool in Claude Code (free trial), Claude Cowork (free trial), Cursor, or any other MCP client through the hosted Apify MCP server:
https://mcp.apify.com/?tools=actors,docs,johnvc/realestate-au-property-api
With Claude Code (free trial):
claude mcp add --transport http realestate-au "https://mcp.apify.com/?tools=actors,docs,johnvc/realestate-au-property-api"
Then ask your agent something like "what sold in Coomera QLD in the last year and which agencies handled it".
Apify MCP integration docs: https://docs.apify.com/platform/integrations/mcp
💸 Pay per run with crypto (x402)
The Realestate.com.au Property API supports agentic payments via the x402 protocol. AI agents and MCP clients can pay for runs in USDC (on Base) with no Apify account or API token needed: point your agent at the Apify MCP server and it can discover, pay for, and run this Actor autonomously. Read the Apify x402 announcement for details.
🔌 Integrations: Track Sold Property Prices on a Schedule
A single run tells you what one suburb looks like today. Run it every week and keep each dataset, and after a couple of months you can actually see the market move. That is where this Actor earns its keep. Everything below runs on Apify platform integrations, so none of it needs a server of your own.
Saved tasks plus schedules (start here)
Make one saved task per thing you are watching, for example "Coomera sold", "Coomera rentals", and "Coomera for sale", each with its locations and listing type baked into the input. Then open the Actor's Actions menu, choose Schedule, and point one schedule at all of them.
Useful cron strings:
0 7 * * *every day at 7 AM0 */6 * * *every six hours0 9 * * 1Mondays at 9 AM, which suits a weekly sold-market review
One schedule can trigger many tasks at once, so a whole watchlist of suburbs runs on a single trigger. Scheduling is also how you get recency here, since the source rejects a date filter on these searches. Compare each dataset against the previous one: new propertyId values are new stock, and a propertyId that moves from buy to sold is a sale. Check Sold Property Prices in Any Australian Suburb is a ready-made task you can copy and schedule in a click.
n8n, Make, and Zapier
There is no dedicated community node for this Actor yet, so use the official Apify n8n integration and its generic Actor node. A four-step workflow covers most alerting needs: Schedule Trigger, then the Apify node running johnvc/realestate-au-property-api, then a Filter on listingType or estimatedPriceValue, then Slack or Email. The same shape works in Make and Zapier: trigger on the finished run, filter the rows, send the ones that matter.
Keep the history in Supabase
Property data is only interesting over time, so push each run into a table keyed on propertyId. No-code path: the Apify node followed by a Supabase node in n8n. In Python:
from apify_client import ApifyClientfrom supabase import create_clientapify = ApifyClient("<APIFY_TOKEN>")supabase = create_client("<SUPABASE_URL>", "<SUPABASE_KEY>")run = apify.actor("johnvc/realestate-au-property-api").call(run_input={"mode": "search","listingType": "sold","locations": ["Coomera, QLD, 4209"],"maxResultsPerSearch": 50,})rows = [{"property_id": item["propertyId"],"street_address": item.get("streetAddress"),"suburb": item.get("suburb"),"state": item.get("state"),"postcode": item.get("postcode"),"sold_date": item.get("soldDate"),"estimated_price": item.get("estimatedPrice"),"estimated_price_value": item.get("estimatedPriceValue"),"last_sold_agency": item.get("lastSoldAgency"),}for item in apify.dataset(run.default_dataset_id).iterate_items()if item.get("result_type") == "listing"]supabase.table("au_sold_listings").upsert(rows, on_conflict="property_id").execute()
Store estimated_price_value as nullable. On a buy search it often is null, for the "Contact Agent" reason described above.
MCP and AI agents
Point any MCP client at the Apify MCP server and the Actor becomes a tool your agent can call on its own. Claude and Cursor both work; Claude Code (free trial) and Claude Cowork (free trial) are the two setups covered in the example repo. A question an agent can answer end to end: "which agency handled the most sales in Coomera QLD last year, and what was the median price estimate". The Get Australian Sold Property Data in Claude via MCP task is the shortest path to trying it.
Webhooks
For anything custom, attach an Apify webhook on ACTOR.RUN.SUCCEEDED and receive the dataset ID the moment a run finishes. That is the glue for pushing rows into your own warehouse, valuation model, or CRM.
🔗 Related Tools
Actors that pair well with Australian property data:
- Zoopla UK Property API is the UK sibling of this Actor, for listings and sold house prices in Britain.
- Google Maps Places Scraper pulls the schools, cafes, and transport around a shortlisted address, which is the context a listing page never gives you.
- Google Maps Directions API turns a shortlist into commute times, so you can rank suburbs by travel rather than by postcode.
- LinkedIn Company API enriches the selling agencies you find in the
lastSoldAgencyfield with headcount and firmographics.
For contrast, realestate.com.au Scraper by silentflow covers similar ground but carries no Store reviews and no monthly active users at the time of writing. This API publishes two named dataset views, documents every input and output field, and labels its price data as an estimate rather than a sale price.
💡 Applications
Ready-to-run examples of this API in action. Open any one and run it in a single click.
Realestate.com.au Property Data API: Listings as JSON
The general-purpose starting point: any suburb, any listing type, straight to structured JSON. Run this task
Check Sold Property Prices in Any Australian Suburb
Every recent sale in a suburb with its confirmed date, selling agency, and price estimate. Run this task
Track Weekly Rent Prices by Australian Suburb
Advertised weekly rents across a suburb, ready to schedule so the series builds itself. Run this task
Get Australian Sold Property Data in Claude via MCP
Wire the Actor into an MCP client and ask questions about a suburb in plain language. Run this task
Export an Australian Property Dataset to CSV or Excel
Pull a suburb into a spreadsheet without writing any code. Run this task
Find Which Agency Sold Each Home in an Australian Suburb
Count sales by agency to see who actually holds a suburb's market share. Run this task
查询澳洲各区已售房源的成交日期与价格估算 (Check Australian Sold Listings and Price Estimates)
按区查询澳洲已售房源的成交日期、成交中介与价格估算。Sold-market research for Chinese-speaking buyers and investors. Run this task
获取澳洲各区在租房源与每周租金数据 (Get Australian Rental Listings and Weekly Rents)
按区获取澳洲在租房源与每周租金。Rental benchmarking for Chinese-speaking landlords and tenants. Run this task
❓ FAQ
Does realestate.com.au have an API?
Not a public one. That is why this Actor exists: it turns the same listing data into structured JSON you can call programmatically, with no listing URLs to manage.
How do I check what a property sold for?
Set Listing type to sold and search the suburb. Each result carries a confirmed soldDate, the selling agency, and a price estimate. Read the section above on prices: the date is confirmed, the price is an estimate, because Australian sale prices are often undisclosed.
How do I find sold property prices for a whole suburb?
One search with listingType: sold and a location returns every recent sale the source holds for that suburb, up to your result cap.
Does this return an automated property valuation?
No. Automated valuation fields, including a separate valuation range and a confidence score, were empty in live testing and are deliberately not part of the output. What you get is the source's displayed price estimate on each listing, nothing modelled by this Actor.
Why does a for-sale listing come back with no price?
Because the agent did not publish one. On buy searches, Australian listings are often advertised as "Contact Agent", "AUCTION", or a written price range. In those rows estimatedPrice holds the published text and estimatedPriceValue is null. Sold and rent rows carry a number far more consistently, so filter on a non-null estimatedPriceValue before you compute any average.
Why do I need to include the state?
Several Australian suburbs share a name, so a suburb on its own is ambiguous. Pairing it with the state resolves that, and adding the postcode narrows it further.
Can I get only recently listed properties?
Not through the Listed in the last N days field on a suburb search. That filter only works against a date-sorted search, and the suburb searches this Actor builds are not date sorted, so supplying a value returns a single result_type: error row explaining the conflict instead of listings. Leave the field empty. To get recency, run the search on a schedule and diff each run against the previous one, which the Integrations section above walks through.
Can I schedule this Australian property Scraper?
Yes, and this is the setup most people end up with. Save a task with your input, one per suburb or listing type, then open Actions, then Schedule, and attach a schedule to it. Cron strings like 0 7 * * * (daily at 7 AM), 0 */6 * * * (every six hours), or 0 9 * * 1 (Mondays at 9 AM) all work, and a single schedule can trigger many tasks at once, so an entire watchlist of suburbs fires on one trigger. Because each run writes its own dataset, the history accumulates and you can diff runs to spot new listings, price changes, and sales. The Integrations section above has the full monitoring recipe including alerting and storage.
Should I use an API or a Web Scraper for Australian property data?
For most people the distinction matters less than it sounds. An official API is rate limited, quota bound, and often missing the fields you actually want, and in this case realestate.com.au does not offer a public one at all. A web scraping tool reads the public pages instead. This Actor gives you both ergonomics at once: click Run in the Console like a no-code Scraper, or call it as a clean JSON endpoint from your own code, with no quota to manage either way.
Can I integrate this Realestate.com.au Scraper with other apps?
Yes. Through Apify integrations the Actor connects to almost any cloud service, including Make, Zapier, Slack, Google Drive, and Google Sheets, plus n8n for self-hosted workflows. For anything custom, an Apify webhook on ACTOR.RUN.SUCCEEDED hands your own endpoint the dataset ID as soon as a run finishes. The Integrations section above has copy-paste recipes for each.
Can I use the Realestate.com.au Property API from my own code?
Yes. The Apify API lets you start runs, attach schedules, and fetch datasets programmatically, and the apify-client package exists for both Python and Node.js. The API tab for this Actor shows the exact endpoints and a ready-made client snippet, and the example repo has a working Python quick start.
Can I use this Actor through an MCP server?
Yes. It can be added as a tool to any MCP client, including Claude and Cursor, through the hosted Apify MCP server. The Actor-specific URL is https://mcp.apify.com/?tools=actors,docs,johnvc/realestate-au-property-api. In Claude Code (free trial) or Claude Cowork (free trial), add it once and your agent can query Australian suburbs on its own. See the Apify MCP docs for client-by-client setup.
What if a suburb has more listings than one search returns?
Turn on Split by property type or Split by price range. Both walk the suburb in slices, which reaches deeper than a single result list, at the cost of a longer run.
Does it cover rentals?
Yes. Set Listing type to rent. Rental rows carry the advertised rent and its currency.
Does it return agent names?
Sometimes. The individual agent's name is often absent from the source while the agency, phone, rating and review count are present, so entries are kept for what they do carry rather than dropped.
How do I find commercial property sold prices?
Not with this Actor. It covers the residential listings published on realestate.com.au, which is where the buy, rent, and sold listing types come from. Commercial stock in Australia lives on a separate site and is out of scope here, so treat any commercial figure you need as a different data source rather than assuming this one covers it.
How can I research the area around a property?
A listing tells you about a building, not a neighbourhood. Pair this Actor with the Google Maps Places Scraper for nearby schools, shops, and transport, and the Google Maps Directions API for commute times from a shortlist. If your search extends to Britain, the Zoopla UK Property API returns the equivalent listings and sold house prices there.
Is it affiliated with realestate.com.au?
No. This Actor is not affiliated with, endorsed by, or connected to REA Group or realestate.com.au. It is an independent tool that reads publicly available listing pages, and it makes no claim of feature parity with any product that company may offer.
Is it legal to scrape property listings?
Collecting publicly available data is generally permitted, though the specifics depend on your jurisdiction and what you do with the data. Apify's write-up on the legality of web scraping is a good starting point. This Actor reads only public listing pages and returns no personal data beyond the agency contact details the source publishes on the listing itself.
🔗 Resources
- Realestate.com.au Property API on Apify Store
- Example repo: Python quick start and MCP walkthroughs
- Apify schedules documentation
- Apify MCP integration docs
🌐 About Alpha OSINT
This Actor is part of Alpha OSINT, toolset of financial and operations data sources and APIs. For support or requests for this actor, please start a ticket directly on our support page.
Last Updated: 2026.08.10