Real Estate AU - Listings, Prices, Agents & History
Pricing
from $1.50 / 1,000 results
Real Estate AU - Listings, Prices, Agents & History
Extract detailed Australian real estate property listings with 30+ structured fields, including price, description, indoor and outdoor features, coordinates, nearby schools, agent contact details, images, and listing price history where available.
Pricing
from $1.50 / 1,000 results
Rating
4.8
(6)
Developer
Abot API
Maintained by CommunityActor stats
11
Bookmarked
345
Total users
22
Monthly active users
2 days ago
Last modified
Categories
Share
Property AU Scraper: Australian Real Estate Listings, Prices & Agent Data
Property AU Scraper turns realestate.com.au into a clean property data feed. Search by suburb, state or postcode, or paste a search URL you already refined in a browser, and pull full listing details: address, coordinates, price, bedrooms and bathrooms, description, agent and agency contacts, inspection times, and 30+ fields per listing. Cover buy, rent, recently sold and new apartment (off the plan) listings, then export to JSON, CSV or Excel, or read it straight through the API.
Why This Scraper?
- Two ways to search. Pick a suburb, state or postcode and filter by price, bedrooms and property type, or paste a search URL already refined in a browser for complex or multi-suburb queries.
- Full detail-page data. Every listing carries description, structured indoor/outdoor features, coordinates, media counts and agent or agency contacts, not just the search-results summary.
- Every listing type. Buy, rent, recently sold, and new apartments (off the plan), where each result is a whole development rather than one unit.
- Optional deep enrichment. Turn on nearby schools, a full historical price/lease timeline, or valuation and suburb market insights. Only the price history adds an extra per-listing charge; schools and insights are free to switch on.
- Automatic pagination and deduplication. Pages through results until your limit is reached, with no duplicate listings across pages or search URLs.
- Built for schedules. Incremental mode returns only new and changed listings on recurring runs, and a refused run fails loudly instead of returning an empty dataset.
Use Cases
- Property portals and listing aggregators: feed buy, rent and sold listings with full detail into your own site or app.
- Market research and valuation: combine price history, automated valuations and suburb trends to track a market over time.
- Lead generation: collect agent and agency contact details by suburb for outreach or CRM enrichment.
- Investment and rental analysis: monitor a suburb or price band on a schedule and get only the new and changed listings.
- Off-the-plan tracking: follow new apartment developments by state, region or suburb as they're released.
Data You Get
Sample shape: values are illustrative placeholders, not from a live record.
| Field | Example |
|---|---|
propertyId | "148523671" |
url | realestate.com.au link to the listing |
listingType | "buy" (also "rent", "sold") |
propertyType | "house" |
address | { "street": "12 Sample St", "suburb": "Sydney", "state": "NSW", "postcode": "2000", "full": "12 Sample St, Sydney NSW 2000" } |
coordinates | { "latitude": -33.87, "longitude": 151.21 } |
price | { "display": "$1,200,000" } |
features | bedrooms, bathrooms, parking spaces, study, balcony, pool, garage |
headline / description | listing title and full text description |
propertyFeatures | ["Air conditioning", "Built-in wardrobes", "Dishwasher"] |
media | { "imageCount": 12, "images": [...], "floorplanUrl": "..." } |
agent / agents | primary agent, and the full agent list, with name, phone and photo |
agency | agency name, logo and contact details |
inspectionTimes | scheduled inspection dates and times (when listed) |
constructionStatus | "established" (also new-build states) |
tier | { "signature": false, "midtier": true, "standard": false } |
soldDate / soldPrice | sold listings: "2026-05-12" / 1150000 |
bond / availableDate | rent listings: 4800 / "2026-07-01" |
nearbySchools | primary, secondary and combined schools with distance (when enabled) |
priceHistory | prior sale, lease and listing events with date and price (when enabled) |
valueEstimates / marketInsights / pcaInsights | valuation, suburb trends, and planning/council/NBN/school-zoning insights (when enabled) |
projectName / isProject | new-apartment developments: project name and true |
scrapedAt | "2026-09-28T04:00:00.000Z" |
How to Use
- Pick a search mode:
location(suburb, state and filters below) orurl(paste a search URL already refined in a browser). - In location mode, add one or more locations and set listing type, price, bedroom and property-type filters. In URL mode, paste search result URLs; the filters above are ignored.
- Switch on any enrichment you need (nearby schools, price history, market insights), and set Maximum Listings and Maximum Pages to control run size and cost.
- Click Start, then download the dataset as JSON, CSV or Excel, or read it through the API.
Buy 3+ bedroom houses in Sydney, NSW under $1.2M:
{"mode": "location","locations": [{ "suburb": "Sydney", "state": "NSW" }],"listingType": "buy","propertyTypes": ["house"],"priceMax": 1200000,"bedroomsMin": 3,"maxListings": 50}
Paste a search URL:
{"mode": "url","urls": ["https://www.realestate.com.au/buy/in-sydney,+nsw/list-1"],"maxPages": 5}
Recently sold listings across a whole state:
{"mode": "location","locations": [{ "state": "VIC" }],"listingType": "sold","dateRange": "3months","maxListings": 100}
Rentals with nearby schools, monitored on a schedule:
{"mode": "location","locations": [{ "suburb": "Parramatta", "state": "NSW" }],"listingType": "rent","includeNearbySchools": true,"incrementalMode": true,"stateKey": "parramatta-rentals"}
Supported URL shapes (URL mode)
| URL shape | Example | Notes |
|---|---|---|
| New apartments, state | https://www.realestate.com.au/new-apartments/nsw/ | Resolved into that state's areas; one row per development. |
| New apartments, region | https://www.realestate.com.au/new-apartments/albury-greater-region-nsw/ | One row per development. |
| New apartments, suburb | https://www.realestate.com.au/new-apartments/adelaide-sa-5000/ | One row per development. |
| New apartments, national hub | https://www.realestate.com.au/new-apartments/ | Resolved into every state's areas; one row per development. |
| Buy search | https://www.realestate.com.au/buy/in-sydney,+nsw/list-1 | list-N sets the starting page; paging continues to Maximum Pages. |
| Rent search | https://www.realestate.com.au/rent/in-sydney,+nsw/list-1 | Same paging. |
| Sold search | https://www.realestate.com.au/sold/in-sydney,+nsw/list-1 | Same paging. |
| Rent inspection times | .../rent/in-sydney,+nsw/inspection-times-1 | Same paging. |
Anything else (a single /property-... listing, an agency page) is skipped with a warning. Only the four new-apartments shapes (state, region, suburb, national hub) are prefilled as the default urls, because they were the shapes confirmed end to end; the search shapes are accepted but depend on the site challenge being solved on your run.
Behaviour change: URL mode with the urls field omitted (never touched) used to stop with "No URLs"; it now scrapes the four example new-apartments pages. A list you explicitly empty ("urls": []) still stops with "No URLs".
Rival-style aliases
startUrl (one search URL) is folded into urls and switches to URL mode when no locations are given. maxItems is an alias for Maximum Listings and applies only while Maximum Listings is at its default of 20; an explicit Maximum Listings always wins.
Output views
The dataset has six views: overview, details, agents, priceHistory, insights (valuation and suburb market insights) and changes (incremental status and changed fields).
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/realestate-au-scraper").call(run_input={"mode": "location","locations": [{"suburb": "Sydney", "state": "NSW"}],"listingType": "buy",})for listing in client.dataset(run["defaultDatasetId"]).iterate_items():print(listing["address"]["full"], listing["price"]["display"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('abotapi/realestate-au-scraper').call({mode: 'location',locations: [{ suburb: 'Sydney', state: 'NSW' }],listingType: 'buy',});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.
Resume and recurring updates
- Resume (
resumeFromRunId) continues one interrupted crawl: paste its run or dataset ID and the actor skips everything already collected there, so you don't pay twice. - Incremental mode (
incrementalMode) is for scheduled runs over the same search. Each listing is classifiedNEW,UPDATED(withchangedFields),REAPPEARED, or left out entirely once it'sUNCHANGED(unlessemitUnchangedis on), andEXPIREDonly after a run that scanned the whole search (only withemitExpired).stateKeynames or shares the stored state. A listing isUPDATEDwhen a tracked field changed (price, status, address, features, description, agent, agency, auction and inspection details, listed or sold dates, media). These stay in the output but are never compared:scrapedAt, the paid-promotion flags (featured,productDepth,tier),dateUpdated,daysOnMarket, the numbered image host and relative "Added 3 days ago" badges.ignoreFieldsForChangesadds your own (dotted paths for nested fields, e.g.price.display); changing the list never causes a one-time wave of UPDATED rows, because the saved snapshot is compared with the same list. With incremental mode off, output is exactly as before.
Send results into your apps (MCP connectors)
Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.
What gets written to the connector: a condensed, human-readable summary of each listing, not the full JSON. Each item becomes one entry with a title (the listing's headline, or its address) and its key fields flattened to plain text (price, beds/baths, agent, URL). The complete record always stays in the Apify dataset.
- Authorize a connector once under Apify โ Settings โ Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
- For Notion, also set
notionParentPageUrlto the page where items should be created.
The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | location | location (suburb/state/filters) or url (paste search URLs). |
locations | array | (none; prefilled with Sydney, NSW) | Locations to search in location mode. Suburb, state and postcode are all optional. |
listingType | string | buy | buy, rent, or sold. Location mode only. |
sortBy | string | list-date | Sort order for search results. Location mode only. |
dateRange | string | 6months | How far back to search sold listings. Applies only when listing type is sold. |
propertyTypes | array | (all) | Filter by property type: house, apartment, townhouse, villa, land, rural, commercial, other. |
priceMin | integer | (none) | Minimum property price (AUD). |
priceMax | integer | (none) | Maximum property price (AUD). |
bedroomsMin | integer | (none) | Minimum number of bedrooms. |
bedroomsMax | integer | (none) | Maximum number of bedrooms. |
bathroomsMin | integer | (none) | Minimum number of bathrooms. |
includeSurrounding | boolean | true | Include listings from surrounding suburbs. |
urls | array | one example per new-apartments page shape (state, region, suburb, national hub) | Search result page URLs to scrape. URL mode only; filters above are ignored. |
includeNearbySchools | boolean | false | Fetch nearby primary, secondary and combined schools for each listing. |
includePriceHistory | boolean | false | Attach a historical sale, lease and listing timeline to each listing. |
includePcaInsights | boolean | false | Attach valuation, suburb trends, planning overlays, school zoning and more to each listing. |
startUrl | string | (none) | Alias for one search URL; folded into urls. |
maxItems | integer | (none) | Alias for maxListings, used only while maxListings is at its default. |
maxListings | integer | 20 | Stop after this many listings (0 = unlimited). |
maxPages | integer | 0 | Maximum search result pages per location (0 = unlimited). Doesn't apply to new-apartment URLs. |
resumeFromRunId | string | (none) | Continue one interrupted run. |
incrementalMode | boolean | false | Return only new and changed listings on recurring runs. |
stateKey | string | (none) | Name or share an incremental-mode monitoring campaign. |
ignoreFieldsForChanges | array | [] | Field names (dotted for nested) not counted as a change in incremental mode. |
emitUnchanged | boolean | false | Also return (and bill) unchanged listings. |
emitExpired | boolean | false | Also return (and bill) expired listings. |
proxyConfiguration | object | Residential, AU | Proxy and connection settings. A residential proxy gives the complete output. |
mcpConnectors | array | (none) | Optional: send a summary of each listing to apps you authorized under Integrations. |
notionParentPageUrl | string | (none) | Notion connector only: page under which listing pages are created. |
maxNotifyListings | integer | 50 | Cap on items written to each connector per run. |
Output Example
Sample shape: values are illustrative placeholders, not from a live record.
{"propertyId": "148523671","url": "https://www.realestate.com.au/property-house-nsw-sydney-148523671","listingType": "buy","propertyType": "house","address": {"street": "12 Sample St","suburb": "Sydney","state": "NSW","postcode": "2000","full": "12 Sample St, Sydney NSW 2000"},"coordinates": { "latitude": -33.87, "longitude": 151.21 },"price": { "display": "$1,200,000" },"features": { "bedrooms": 3, "bathrooms": 2, "parkingSpaces": 1, "hasStudy": false, "hasBalcony": true, "hasPool": false, "hasGarage": true },"headline": "Family Home in the Heart of Sydney","description": "A well presented three bedroom home close to schools and transport.","propertyFeatures": ["Air conditioning", "Built-in wardrobes", "Dishwasher"],"media": { "imageCount": 12, "images": [], "floorplanUrl": "https://example.realestate.com.au/floorplan.jpg" },"agent": { "name": "Sample Agent", "phone": "0400 000 000" },"agency": { "name": "Sample Realty" },"inspectionTimes": [{ "startTime": "10:00am", "endTime": "10:30am", "dateDisplay": "Saturday 4 Oct", "isAuction": false }],"constructionStatus": "established","scrapedAt": "2026-09-28T04:00:00.000Z"}
Plan Requirement
Every search and listing page on realestate.com.au sits behind a site challenge, and the actor solves it on every connection, so a run needs a working proxy connection and the solve can fail on a given attempt (the actor retries, then stops with a clear message). The default connection is an Apify residential proxy in Australia, which gives the complete output. Free Apify plans do not include residential proxies, so the actor falls back to a backup connection; that works but returns a reduced dataset. If no connection can load a page the run fails instead of returning an empty dataset. Messages you may see in the run log:
- Residential proxy refused on the run's connection (logged once, as one boxed warning):
----------------------------------------------------------------The selected connection is unavailable to this run.Apify free plans do not include residential proxies.Continuing on a backup connection; some pages may still be unavailable.For residential access, upgrade at https://apify.com/pricing.----------------------------------------------------------------
- Not on an Apify residential proxy:
This run is not using an Apify residential proxy, so some features are disabled. Use an Apify RESIDENTIAL proxy for full features.The listing URL, images and agent or agency details are left out of every row. - Backup connection used:
Served over the backup connection (the default connection was unavailable). - Proxy refused for the account:
The proxy connection was refused for this account, so no page could be read. Your Apify plan does not include proxy access; a paid plan is required: https://apify.com/pricing. - Residential unavailable and the backup also failed:
No results: residential proxies are unavailable on this run (Apify free plans do not include them), and the backup connection could not load the requested realestate.com.au pages. Upgrade at https://apify.com/pricing, then try again. - Every request failed:
Could not load any results page (the requests failed), so nothing was collected. This is a connection problem, not an empty search. Please try again later.
Proxy settings are under Connection in the input. The actor always uses Apify proxies and its own backup connection; a custom proxy URL list entered there is not used. New-apartment pages are not behind the same challenge, but the same connection rules and reduced output apply.
FAQ
How much does it cost?
You pay per listing returned, with the optional price history enrichment billed once per listing, only when you switch it on and it successfully attaches (plus a small per-run start fee). The Pricing tab shows the current rates. Use Maximum Listings to cap the cost of any run.
What are the exact prices?
Pay per event, as currently registered (per result / per price-history enrichment / per Actor start, in USD):
| Plan | Result | Price history enrichment | Actor start |
|---|---|---|---|
| Free | $0.0022 | $0.0009 | $0.06 |
| Bronze | $0.0020 | $0.0008 | $0.05 |
| Silver | $0.0018 | $0.0006 | $0.04 |
| Gold, Platinum, Diamond | $0.0015 | $0.0004 | $0.03 |
A result is charged for each listing pushed to the dataset. The price-history enrichment is charged once per listing, only when Include price history is on and the history is attached. Nearby schools and valuation or market insights add no extra charge. The Pricing tab is authoritative.
Is it legal to scrape realestate.com.au?
This actor collects only publicly available property listing data. You are responsible for how you use it: follow realestate.com.au's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Listing facts are generally public, but photos and agent branding may be subject to third-party rights.
Can I get only new or changed listings on a schedule?
Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated and reappeared listings, and unchanged ones are not billed unless you turn on emitUnchanged.
What happens if I choose URL mode and leave the URLs empty?
URL mode with the URLs field omitted or left at its prefilled value now scrapes four example new-apartments pages (a state page, a region page, a suburb page and the national hub) instead of failing with "No URLs". A list you explicitly empty ("urls": []) still stops with "No URLs". Pasted URLs that are not search result pages, such as a single /property-... listing URL, are skipped with a warning.
Why does URL mode ignore my filter fields?
URL mode takes the filters already baked into the pasted search URL, so the location, price, bedroom and property-type fields above are ignored to avoid conflicting instructions. Refine your search in a browser first, then paste the resulting URL.
Why did my run fail instead of returning an empty dataset?
If the site refuses every request, the run stops with a clear message so "no listings found" is never confused with "nothing could be read". Run it again in a few minutes.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.
๐ Want more Real Estate data?
Pair this actor with these related scrapers from the same team:
| ๐ RealestateCo NZ From $1/1K. Search and extract all real estate properties for sale, rent, and sold across... | ๐ Domain.com.au Extract enriched Domain.com.au property listings across buy, rent, and sold, with... |
| ๐ View.com.au Scraper Scrape View.com.au properties for sale, rent and recently sold across Australia. Search... | ๐ค AU Residential Property From $0.9/1K. Scrape Australian property listings with rich detail-page enrichment. Each... |
| ๐ Real Estate AU Agents Scraper Scrape Australian real estate agent and agency profiles by suburb or profile URLs... | ๐ Realtor.ca From $1/1K. Scrape Realtor.ca property listings with prices, descriptions, images, agent... |
๐ Browse all abotapi scrapers
๐ฌ Support & custom scrapers
- ๐ Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
- ๐ ๏ธ Need another site, extra fields or a private build? Email contact@abotapi.com or message Telegram @abotapi.
- โญ Enjoying it? A quick review on the actor page helps other users find it.