Realestate.com.au Scraper - Australia Property
Pricing
from $1.65 / 1,000 listing scrapeds
Realestate.com.au Scraper - Australia Property
Scrape Australia property listings from realestate.com.au search URLs: price, bedrooms, bathrooms, parking, land size, full address, agency and agents, inspections, auctions and images. Buy, rent and sold channels. Bypasses anti-bot protection. Paste search URLs or import a file.
Pricing
from $1.65 / 1,000 listing scrapeds
Rating
0.0
(0)
Developer
Scrape Sage
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
0.3 hours
Issues response
12 days ago
Last modified
Categories
Share
Realestate.com.au Scraper - Australia Property Listings
Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by REA Group Ltd or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. "realestate.com.au" is referenced only to describe the publicly available website this Actor collects data from.
Scrape property listings from realestate.com.au, Australia's #1 property portal, straight into JSON, CSV or Excel. Paste any realestate.com.au search URL - buy, rent or sold, any suburb, region, keyword or filter set - and get clean rows with price, bedrooms, bathrooms, parking, land and building size, full address, agency and agents (with profile links and photos), inspection and auction times (as shown and as exact timestamps), rental bond and availability, sold dates, and every photo, floorplan and video link.
realestate.com.au sits behind enterprise anti-bot protection that blocks ordinary HTTP scrapers and ordinary headless browsers. This actor handles that for you: no proxy setup, no browser fingerprinting, no captcha service, and no API key on your side. You paste a search URL and get rows.
What you get per listing
| Field | Type | Meaning |
|---|---|---|
id / url | string | Listing id and canonical realestate.com.au/property-... link |
channel | string | buy, rent or sold - matches the search you pasted |
title / fullAddress | string | Full street address, e.g. "302/33 MacKenzie Street, Melbourne, Vic 3000" |
priceText | string | The price exactly as the agent published it: "$1,100,000 - $1,125,000", "$450 per week", "Auction", "Contact Agent" |
price, priceFrom, priceTo | number | Parsed numerics whenever the agent publishes numbers - ranges split, "$1.2m" and "$850k" expanded |
pricePeriod | string | week / month on rentals, null on sales |
propertyType / propertyTypeId | string | Apartment, House, Townhouse, Land... as typed by the source |
bedrooms, bathrooms, parkingSpaces, studies | number | Real numeric feature counts (a true 0 stays 0) |
landSize / buildingSize (+ units) | number | Land and building sizes where the listing publishes them - empty, never a placeholder 0, when it does not |
suburb, state, postcode, shortAddress | string | Address components for clean grouping and joins |
description | string | The full listing description, HTML stripped |
agencyName, agencyId, agencyUrl, agencyLogo, agencyAddress | string | The listing agency, its agency page and its office address |
agencyAvgRating, agencyTotalReviews | number | The agency's review score and volume on the portal - empty, not a 0-star score, when it has no reviews yet |
agents | array | Every listed agent: name, job title, agent id, profile link and photo |
agentName / agentProfileUrl | string | The lead agent and their profile page |
enquiryUrl | string | The listing's contact-agent form |
listingTier | string | REA's paid placement tier (premiere, feature...) - premium listings identified |
badge | string | Card badge when shown ("Added 2 hours ago", "Sold at auction") |
auctionDate / auctionDateTime | string | Auction time as shown ("Thu 22 Oct at 6:00 pm") and as an exact ISO timestamp with time zone |
nextInspection / nextInspectionStart | string | Next open-for-inspection as shown and as an ISO timestamp |
inspections / inspectionCount | array / number | Every scheduled inspection with its start, end and label |
dateSold / dateSoldIso | string | Sold date on sold rows, as shown and as YYYY-MM-DD |
availableDate / availableFrom | string | Rentals: availability as shown ("Available 10 Oct 2026", "Available Now") and the date as YYYY-MM-DD |
bond / bondAmount | string / number | Rentals: the bond as shown and as a number |
images / image / imageCount | - | Every photo URL (800x600), the main photo, and how many photos the listing has |
floorplans / hasFloorplan | array / boolean | Floorplan image URLs |
videoUrls / hasVideo | array / boolean | Video links - YouTube, direct video files, or HLS streams |
virtualTourUrl / has3DTour | string / boolean | 3D / virtual tour link |
statementOfInformationUrl | string | Victorian sale listings: the Statement of Information PDF |
searchPage / searchRank | number | Where the listing sat in your search results - keeps a sorted search (newest first, price low to high...) in order |
matchType | string | exact for in-area results; surrounding rows (nearby-area suggestions) are labelled so you can filter them |
type, sourceUrl, scrapedAt | - | Record type (listing), originating search URL, fetch timestamp |
Some fields only exist when the listing has them: landSize mostly on houses and land, buildingSize when the
lister publishes it, the auction fields on auctions, the inspection fields when an inspection is booked, the sold
dates on sold rows, availableDate and bond on rentals, and the media links when the listing carries that media.
Numeric price exists only when the agent publishes a number - priceText always carries exactly what the card says.
Example output
One real rent row, exactly as written to the dataset (shortened to the highlights):
{"type": "listing","id": "445181052","url": "https://www.realestate.com.au/property-apartment-vic-melbourne-445181052","channel": "rent","matchType": "exact","title": "302/33 MacKenzie Street, Melbourne, Vic 3000","priceText": "$450 per week","price": 450,"pricePeriod": "week","propertyType": "Apartment","bedrooms": 1,"bathrooms": 1,"parkingSpaces": 0,"suburb": "Melbourne","state": "Vic","postcode": "3000","agencyName": "G&S Real Estate Group - BLACKBURN NORTH","agencyAvgRating": 5,"agencyTotalReviews": 16,"agents": [{ "name": "Kevin Fan", "jobTitle": "Business Developement Manager", "id": "2414158", "profileUrl": "https://www.realestate.com.au/agent/kevin-fan-2414158", "photo": "https://i2.au.reastatic.net/800x600/994f63a5.../main.jpg" }],"agentName": "Kevin Fan","listingTier": "premiere","badge": "Added 2 hours ago","nextInspection": "Inspection Thu 8 Oct 12:30 pm","nextInspectionStart": "2026-10-08T12:30:00+11:00","inspections": [{ "start": "2026-10-08T12:30:00+11:00", "end": "2026-10-08T12:45:00+11:00", "label": "Inspection Thu 8 Oct 12:30 pm" }],"availableDate": "Available 10 Oct 2026","availableFrom": "2026-10-10","bond": "$1,955","bondAmount": 1955,"image": "https://i2.au.reastatic.net/800x600/f26ba125.../image.jpg","imageCount": 8,"floorplans": ["https://i2.au.reastatic.net/800x600/23033dd6.../image.jpg"],"enquiryUrl": "https://agent-contact.realestate.com.au/contact-agent/listing/445181052","searchPage": 1,"searchRank": 1,"sourceUrl": "https://www.realestate.com.au/rent/in-melbourne,+vic/list-1","scrapedAt": "2026-10-05T14:45:49.667Z"}
Input
{"startUrls": ["https://www.realestate.com.au/buy/in-sydney,+nsw/list-1"],"maxPagesPerUrl": 5,"maxItems": 1000}
- realestate.com.au search URLs - build the search you want on realestate.com.au (suburb, price, beds, property type, keywords, sort order, any filter), then paste the URL from the address bar. One per line, as many as you want. Every filter is carried through, because the actor scrapes exactly the URL you gave it.
- Import URLs from a file - paste a whole list, or give a single link to a public
.txt/.csv, a Google Sheet or Drive link, or an Apify key-value-store record. Blank lines and#comments are ignored. A file that cannot be read tells you so and charges nothing. - Max pages per URL - 25 listings per page (default 10 pages; the site itself serves at most ~24 pages per search - see Good to know).
- Max listings - overall cap across all URLs.
- Output fields - tick only the columns you want and every record is trimmed to exactly those, which keeps CSV and Google Sheets exports lean.
Leave everything empty and the run scrapes a small one-page sample search, so you can see the output shape before committing to a real job.
Which realestate.com.au URLs work
| Search type | URL pattern |
|---|---|
| For sale | realestate.com.au/buy/in-<suburb>,+<state>/list-1 |
| For rent | realestate.com.au/rent/in-<suburb>,+<state>/list-1 |
| Sold prices | realestate.com.au/sold/in-<suburb>,+<state>/list-1 |
| Keyword and Australia-wide searches | realestate.com.au/buy/list-1?keywords=... |
| Any filtered or sorted search | .../buy/property-house-in-..., ...&activeSort=list-date and other query filters |
Pagination is automatic (/list-2, /list-3, ...) up to your page limit, and the actor stops on its own when the
search's own result count - or the site's own page cap - is reached, so you never pay for a page of repeats. Rows
are de-duplicated by listing URL across every start URL in the run.
Built for a protected site
realestate.com.au is protected by enterprise anti-bot - plain scrapers and plain headless browsers get blocked. This actor routes every request through a premium unblocking layer that clears the challenge and returns the real page, then parses the site's own embedded GraphQL result cache (typed JSON, not brittle CSS selectors).
On top of that:
- Blocked attempts are retried on a fresh connection. The site's protection rejects some connections; the actor retries a blocked or slow page several times, steering towards the connections that are getting through in that run. You only ever pay for listings delivered, never for attempts.
- One bad page never ends your search. If a page still cannot be fetched after its retries, the actor moves on to the next page and tells you in the run status which pages to re-run.
- Several pages at a time. After the first page, result pages are fetched in parallel and written to the dataset in their original order.
- Short-render detection. Each page is checked against the search's own result count; a page that comes back short is fetched again and the fuller copy is kept.
- Wall-clock budget. Long runs stop cleanly before the platform timeout, save everything collected up to that point, and say so in the run status instead of dying as TIMED-OUT.
- Every ending explains itself. A run that finds nothing tells you why - a search with no results, a URL the site does not know, an unreadable import file, or a temporary block - and bills $0.
What people use it for
- Comparables and appraisals - pull a suburb's full for-sale stock with beds/baths/parking already numeric.
- Sold-price research - the
soldchannel gives dated sale records (dateSoldIso) for price benchmarking. - Rental market analysis - weekly rent, bond and availability date on every rental; scrape the same suburb on
buyandrentfor yields. - Development-site sourcing - keyword searches (e.g. "subdivision" or "development site") with land size, auction dates and the full description of every opportunity.
- Market monitoring - schedule a daily run per suburb and track new supply and price movements;
searchRankkeeps a newest-first search in order. - Agency and agent intelligence - every row carries the agency, its rating, review volume and office address, and every agent with job title, profile link and photo: who lists what, where, at what volume.
- Auction and inspection planning - every inspection and auction as an exact timestamp, ready for a calendar.
- Listing media - every photo, floorplan, video and virtual-tour link.
- Feeding AI agents and data pipelines - see the MCP section below.
Good to know
- realestate.com.au itself serves at most ~24 pages (~600 listings) per search. The site enforces this cap on everyone, browsers included. For full coverage of a big market, split the search by suburb or price band - the run's status message reminds you when a search hits the cap.
- Numeric
priceexists only when the agent publishes a number. Many Australian sale listings say "Auction" or "Contact Agent" by design -priceTextalways carries exactly what the card says, and rentals and sold records almost always parse. - Agent phone numbers are not on the results cards. realestate.com.au keeps them behind its enquiry flow, so this actor does not claim them. You get the agency, its rating and address, every agent's name, job title and profile link, and the listing's contact-agent form link.
- Conditional fields fill when the listing has them - land and building sizes, auction and inspection times, sold dates, rental bond and availability, floorplans, videos and tours.
- A page that stays blocked after its retries is skipped, not faked. The run status names how many pages to re-run, and you are only billed for listings actually delivered.
- Runs are a little slower than on an unprotected site, because every page goes through the unblocking layer.
Pricing
Pay per listing - you are charged only for listings actually written to the dataset. A run that finds nothing, or that cannot read your import file, costs $0. The rate covers the premium anti-bot unblocking that makes realestate.com.au scrapable at all, and it drops automatically on higher Apify plans (tiered pay-per-event pricing).
Output views
- Listings - address, price, beds, baths, property type, suburb and the listing URL, ready to eyeball or export to CSV, Excel, JSON or Google Sheets.
- Agents & agencies - the lead agent, agency, rating and review count, with the agent's profile and the listing's contact-agent link.
The full record with every field is always in the dataset behind the views.
Use with AI assistants (MCP)
Available through the Apify MCP server, so an assistant or agent can pull live Australian property listings past realestate.com.au's anti-bot in a single call - compare suburbs, watch a market for new supply, or check sold prices without anyone touching a browser.
Agent-ready: autonomous payments (x402 & Skyfire)
This actor is agent-ready — AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:
- x402 — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server — no account, no API key.
- Skyfire — agent-to-service payments for fully autonomous AI-agent workflows.
Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.
Automate & schedule
Run this Actor on autopilot and pull results into your own stack:
- Apify API - start runs, fetch datasets and manage schedules over REST.
- apify-client for JavaScript and apify-client for Python - official SDKs.
- Schedules - run it hourly, daily or weekly and keep your dataset current.
- Webhooks - trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });const run = await client.actor('scrapesage/realestate-com-au-scraper').call({"startUrls": ["https://www.realestate.com.au/buy/in-sydney,+nsw/list-1"],"maxPagesPerUrl": 1});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Got ${items.length} records`);
Integrate with any app
Connect the dataset to thousands of apps - no code required:
- Make - multi-step automation scenarios.
- Zapier - push new records straight into your CRM or spreadsheet.
- Slack - get notified when a scheduled run finds something new.
- Google Drive / Sheets - auto-export every run to a spreadsheet.
- Airbyte - pipe results into your data warehouse.
- GitHub - trigger runs from commits or releases.
More scrapers from scrapesage
Related Actors in the same category:
- Real Estate Scraper for Redfin - Listings, Sold Comps & Leads
- BizBuySell Scraper - Businesses For Sale & Broker Leads
- VivaReal & ZAP Imóveis Scraper - Brazil Real Estate
- PropertyGuru Scraper - Singapore Property & Agent Leads
- Airbnb Scraper & Market Monitor
FAQ
Do I need a realestate.com.au account, API key or proxies? No. Everything needed to reach realestate.com.au is built in.
Can I scrape rentals and sold prices as well as sales?
Yes. rent and sold search URLs work exactly like buy ones - channel on each row tells you which it came
from. Rental rows carry the weekly rent, bond and availability date; sold rows carry the sold price and date.
Do blocked or retried attempts cost me anything? No. You are charged per listing delivered to your dataset, nothing else. Retries happen inside the run at no cost to you.
How many listings will I get per search URL? Up to 25 per page, and the site serves at most ~24 pages per search (~600 listings). For more, add more searches
- one per suburb or price band - in the same run. You only ever pay for the rows you actually receive, and duplicates across overlapping searches are dropped before billing.
Can I run it on a schedule? Yes - schedule the actor or any saved task in Apify and the results land in a dataset each time, ready for the API, a webhook, or an export to Sheets, S3 or your warehouse.
Does it open every listing's detail page? No. It reads the search results' own embedded data model, which already carries everything in the field table above - that is what keeps it fast and cheap across thousands of listings.
Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by realestate.com.au or REA Group. All trademarks mentioned are the property of their respective owners. It collects only publicly available listing information and is intended for lawful research, market analysis and comparable-pricing use. You are responsible for how you use the data, including compliance with applicable law.
Need help?
Open an issue on the Actor's Issues tab, or visit the Apify help center. Feature requests are welcome - this Actor is actively maintained.