realestate.com.au Scraper: Buy, Rent, Sold Prices
Pricing
from $0.47 / 1,000 homes
realestate.com.au Scraper: Buy, Rent, Sold Prices
Scrape realestate.com.au buy, rent and sold listings by suburb, postcode, region, link, map area or address, past the 2,000 row limit, no login. Each gives asking price, weekly rent, sold price and date, bedrooms, parking, land size, agency and inspection days. JSON, CSV, Excel; pay per listing.
Pricing
from $0.47 / 1,000 homes
Rating
0.0
(0)
Developer
Automation Craft
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
realestate.com.au Scraper: Buy, Rent, Sold Prices
realestate.com.au scraper and API for Australian homes for sale, for rent and recently sold: search any suburb, postcode, state or region, paste a realestate.com.au search link, draw a map area, or look up listings by link, id or street address. Every listing comes with its price as shown and as a number, rent and bond, sold price and date, full address, map position, property type, beds, baths, parking, land and building size, photos, floor plans and videos, inspection and auction days, listing tier, and the agency and agents. Turn on Home details for the full record (description, feature list, every inspection time, the auction time, the statement of information, agency phone and address, nearby schools) and Property history for the address's dated sales and leases, the estimated value and rent, and the suburb's median prices.
No login, no cookies and no browser: the Actor reads realestate.com.au's own app data service, 200 listings a request, and reads on past the 2,000 listings the site shows for one search. Only the Property history add-on reads a public web page, through Apify's unblocker proxy.
What you can do with it
- Build sold comparables: every sale in a suburb or postcode with its sold price, sold date, beds, baths and land size, read past the 2,000 row limit.
- Pull every listing for sale or rent in a region into a sheet with prices, agencies and inspection days, for deal sourcing and lead lists.
- Track rents and yields: weekly rents by suburb, next to the estimated rent and value of each address (Property history).
- Enrich a list of listing links or addresses with the full record, the nearest schools and the property's sale history.
- Get a free market summary per search and an HTML market report per run (median, quartiles and 90th percentile of the prices delivered, property type mix, top suburbs).
How to use the realestate.com.au Scraper
- Open the Actor and type a place in Places, for example
Richmond, VIC 3121,3121,VICorInner East Melbourne, VIC, or paste a realestate.com.au search link into realestate.com.au search links. - Pick the Channel (buy, rent, sold or all three) and any filters (price, beds, baths, parking, property types, land size, keywords, features, sold dates, auction or inspection day).
- Set Maximum listings in the run and turn on Home details or Property history if you need them.
- Click Start. Download the listings as JSON, CSV or Excel, or read them through the Apify API. The HTML market report is in the run's key-value store as
OUTPUT_REPORT.html.
What data you get
One row per listing (type: "home"), one coverage row per search (type: "search"), free status rows for anything not delivered, and one summary row per run.
| Field | What it holds | Filled (buy / rent / sold) |
|---|---|---|
id, url, channel, status | listing id, link, buy, rent or sold, and the status realestate.com.au labels (for sale, under offer, under contract, for rent, deposit taken, sold) | 100% |
priceText | the price exactly as the listing shows it | 98% / 100% / 100% |
price, priceFrom, priceTo | the asking price as a number, or the range (only when the text holds one amount or one range) | 70% buy |
rentPerWeek (and rentPerWeekFrom, rentPerWeekTo), availableDate | weekly rent (or its range), available date (now or a day) | 100% rent |
bond | the bond, when the listing's label shows it | rare: 1 of 32 rentals read with Home details |
soldPrice, soldDate | sold price (when shown) and sold day | 79% / 100% sold |
address (full, street, suburb, state, postcode, hidden) | the address; hidden when the agent hides the street | 93% / 99% / 99% street |
latitude, longitude, coordinatesFrom | map position from realestate.com.au's map of the search (map) or the full record (details) | 92% / 97% / 99% (see below) |
propertyType, bedrooms, bathrooms, parkingSpaces | type and rooms | 100%, 93% to 99%, 94% to 100%, 71% to 78% |
landSize, landSizeM2, buildingSize, buildingSizeM2, pricePerM2 | sizes as shown and in square metres, and price per square metre | land 22% / 1% / 12% |
photos, photoCount, floorplans, videos, virtualTours | photo links (1024x768, change the size part of the link for others), floor plans, YouTube and Vimeo links, 3D tours | photos 98% to 100%, floor plans 81% / 34% / 90% |
nextInspectionDate, auctionDate, labelText, badges | the next inspection and auction day the listing shows, and its labels | as listed |
newListing, addedLabel | realestate.com.au's own "Added yesterday" mark | 7% / 9% |
listingTier, tierVariant | the listing's tier: premiere, feature, midtier, standard or premiereproject (variant: luxe) | 100% |
agency (id, name, logo, brandColour, phone, address, profileUrl) | the listing agency; address, link and the office phone (when the record shows the office line, never an agent's own number) with Home details | id 97% to 100%, name 36% to 58% (90% to 100% with Home details) |
agents, agentCount | each agent's name, id, phone, profile link and photo (with includePersonalData) | 100% count |
listingKind, project | listing, or project for a new development: realestate.com.au answers a development as ONE result of a search, so it is one row (one Home) with its name, how many of its listings match your filters (project.matchingListings) and the child listings shown | projects only |
surroundingSuburb | true for a listing from a surrounding suburb | with the setting |
search, lookup | the input that found the row | 100% |
Measured on 3,212 rows (244 buy, 208 rent, 2,760 sold, in Richmond VIC, Toowoomba City QLD, Surry Hills NSW, Perth WA, Bondi NSW and Hawthorn VIC) on 2026-11-01, with Home details on 60 of them. The sold map position figure is over the 260 sold rows read with map positions on. Map positions are fewer on large searches: on a Victoria search of 1,909 listings the map placed 65% (most of the listings it did not place were standard tier listings); Home details always gives the listing's own position.
Home details (details): title and description (95% to 100%), features (90% buy, 100% rent; sold records carry none), latitude and longitude (95% to 100%), every inspections time with start and end, the auction time, statementOfInformation (Victoria, 45% of buy listings), agency phone (80% to 100%) and address (100%), listers (agents with rating and reviews, behind the personal data switch; an agency listed as a lister is always delivered), nearbySchools (95% to 100% with the setting: name, sector, years, type, distance in metres, website).
Property history (propertyHistory): events (date, sold, leased or listed, price, agency), estimatedValue (low, high, confidence, updated), estimatedRentPerWeek, attributes (land and floor area, rooms, year built), suburbMedians (median price by property type and bedrooms over the last year, with the number of sales and the change), planning (the council and its planning scheme link, land use, lot and plan number, heritage, bushfire and flood overlays, the state planning portal, as the address page shows them), pageUrl.
Example row (shortened)
{"type": "home","id": "152518800","url": "https://www.realestate.com.au/property-house-vic-richmond-152518800","channel": "buy","status": "for_sale","priceText": "EOI $1,700,000 - $1,870,000","priceFrom": 1700000,"priceTo": 1870000,"address": { "full": "2 Egan Street, Richmond, Vic 3121", "street": "2 Egan Street", "suburb": "Richmond", "state": "VIC", "postcode": "3121", "hidden": false },"latitude": -37.81396784,"longitude": 144.99136193,"propertyType": "House","bedrooms": 3,"bathrooms": 2,"photoCount": 17,"listingTier": "premiere","agency": { "id": "TKQVDJ", "name": "RT Edgar - Richmond" },"agentCount": 2,"search": { "label": "location 1", "place": "Richmond, VIC 3121" }}
How much does it cost to scrape realestate.com.au?
You pay per listing delivered (pay per event). Prices per 1,000 events:
| Event | Free | Bronze | Silver | Gold |
|---|---|---|---|---|
| Home | $0.66 | $0.60 | $0.55 | $0.47 |
| Home details (add-on, only when on) | $1.06 | $0.97 | $0.88 | $0.76 |
| Property history (add-on, only when on) | $16.00 | $14.40 | $13.00 | $12.00 |
Each run also pays a one time Actor start of $0.007 on every plan. Platinum and Diamond plans pay the Gold price. The Store pricing card shows these same prices per 1,000 events: "$0.47 / 1,000" on the Home row means one listing costs less than a tenth of a cent, and "$12.00 / 1,000" on the Property history row means one property history costs 1.2 cents on the Gold plan (1.6 cents on Free).
- 1,000 listings of a search cost $0.47 to $0.66 plus the $0.007 start fee ($0.477 to $0.667 for the run); with Home details on, $1.23 to $1.72 plus the start fee.
- 100 listings with Property history on cost $1.25 to $1.67 plus the start fee (Home plus Property history on every row); rows whose history is not delivered pay only the Home price.
- A listing is charged once per run, even when two of your searches find it.
- Free: listings outside your search or filters, repeats, places, listing ids or addresses not found, records or pages realestate.com.au did not answer, Property history rows without a street address or an exact address match, and every coverage, status, place and summary row. A run with no usable input charges only the start fee.
- Set a maximum cost per run in the Apify Console: the run stops at the first listing it cannot pay and delivers no row unpaid.
Input
| Setting | What it does |
|---|---|
locations | Places as realestate.com.au names them: Richmond, VIC 3121, Bondi NSW, 3121, VIC, Inner East Melbourne, VIC. A place is searched only when exactly one realestate.com.au place is that text; otherwise a free row lists the candidates. |
channel | buy, rent, sold or all (one search per channel). Search links keep their own channel. |
searchUrls | realestate.com.au search links (buy, rent or sold, list or map pages). realestate.com.au reads the link itself; your filters replace only the same filter of the link. Paste the link of page 1. A link part realestate.com.au would silently drop (an inspection or auction date, or the price of a sold search, for example) refuses the link with a free row, so a link is never read wider than it says; use the matching setting instead (for sold prices, minPrice and maxPrice). |
listingUrls | Listing links or ids, 200 read at a time. |
addresses | Street addresses number street, suburb, STATE postcode: the current listing at exactly that address (buy and rent). |
mapAreas | A circle { latitude, longitude, radiusKm }, a box { north, south, east, west } or a polygon { polygon: [[lat, lng], ...] }. |
| Filters | minPrice, maxPrice, minBedrooms, maxBedrooms (0 = studio), minBathrooms, minParking, minLandSize, maxLandSize, propertyTypes, keywords, features, includeSurroundingSuburbs, excludeAddressHidden; buy: constructionStatus, saleMethod, excludeUnderContract, excludeNoDisplayPrice, excludeProjects, auctionDate; buy and rent: inspectionDate, newListingsOnly; rent: furnished, petsAllowed, excludeDepositTaken; sold: soldWithinDays, soldAfter, soldBefore, excludeNoSalePrice. Each filter works only on the channels named; a filter a channel of the run cannot use refuses the run. On sold searches the price is checked on each row, since realestate.com.au's sold search has no price filter. |
sort | relevance, newest, oldest, price-low, price-high, next-inspection, next-auction, sold-newest, sold-oldest, sold-price-high, sold-price-low. |
maxItems, maxItemsPerSearch | Row caps for the run (default 1,000) and per search. |
splitPastCap | On by default: a search of more than 2,000 listings is read in price bands (buy, rent) or sold day windows (sold). |
includeDetails, includeNearbySchools, nearbySchoolsCount | The Home details add-on, and the schools near each listing with it. |
includePropertyHistory | The Property history add-on. |
includeCoordinates | On by default: map positions on search rows. |
includePersonalData | Off by default: agents' names, ids, phones and links (see below). |
maxPhotos, outputFields | Photo links per row (default 50), and the fields to keep. |
suggestPlaces | Free place lookups (realestate.com.au's own suggestions). |
maxConcurrency | Parallel reads, 1 to 4 (default 2). |
proxyConfiguration | Apify Proxy (default): the Actor reads through Apify's datacenter proxy, so proxy groups and countries are refused; or your own http:// proxy links. |
Personal data
Off by default. With includePersonalData on, rows also carry each agent's name, realestate.com.au profile id, profile link, photo, mobile and phone numbers, and, with Home details, each agent's rating and number of reviews. With it off those fields are empty, and an agency name that holds two words of a listed agent's name is empty too. Agencies (name, id, logo, office address, office phone, profile link) are businesses and always delivered. You are responsible for using personal data lawfully (the GDPR, the Australian Privacy Act, the Spam Act and similar).
What this Actor does not do
- No monitoring mode ("only new listings since the last run", price or status tracking, resuming by skipping what an earlier run delivered). Schedule the Actor and compare the rows in your own sheet, or use
newListingsOnlyand the sold day filters. - No realestate.co.nz and no other property site in the same run: only realestate.com.au's buy, rent and sold listings.
- No affordable housing filter for rentals: realestate.com.au's app data applies none (nine forms of it tried, the totals unchanged).
- No agent or agency e-mail addresses: the pages and app data the Actor reads show an enquiry form instead; realestate.com.au's other data service that carries them is closed to automated readers.
- No date a listing was first listed or last updated, days on market or the agency's own listing reference: none of the pages or app data the Actor reads carries them, and the data service that does is closed to automated readers. The site's own "Added N days ago" mark comes as
addedLabel. - No "most reduced" order: realestate.com.au's app search has none.
- Agency names on search rows come from the listing's own card when it shows the agent's agency; turn on Home details for the agency name and address on every row and the office phone where the record shows it.
- An inspection day matches the next inspection a listing shows; with Home details on, every inspection time in the record counts too. That reads each listing's record, so on a day few listings hold the run stops early and its search row says why.
- Listings with a hidden street address have no map position from the search (and no Property history).
- Work that earns nothing has a limit: a long list of places, ids or addresses realestate.com.au does not know, or searches that find no listing, stops on the unpaid work allowance and the rest is reported "not reached" on a free row (nothing is charged for it).
- Property history reads a public web page through Apify's unblocker proxy, about 25 seconds a page, six at a time; a page the unblocker cannot load is a free status on the row. Unloaded pages are paid out of a small allowance of their own, so after a failed page early in a small run the other rows can come without Property history (
propertyHistoryStatus: allowance_spent, not charged). A run of many Property history rows takes minutes. - A search with surrounding suburbs gives them from its first 2,000 rows; when it is split past 2,000, the bands read the suburb's own listings.
FAQ
Is it legal to scrape realestate.com.au?
This Actor reads only data realestate.com.au shows to every visitor without a login, and it gives personal data only when you turn it on. realestate.com.au's terms of use restrict automated collection and the building of property databases; whether and how you use the data is your decision and responsibility.
Does realestate.com.au have an official API?
realestate.com.au's APIs are for partners that serve agencies (listing upload, leads, reviews), with credentials given after onboarding; there is no public API for searching listings. This Actor works like an API: send a JSON input through the Apify API and read the listings as JSON.
How do I get more than 2,000 results from a realestate.com.au search?
realestate.com.au shows at most 2,000 listings of one search. With splitPastCap on (the default) the Actor reads larger searches in price bands (buy and rent) or sold day windows (sold) until every listing is met, and the search's coverage row says whether it was read in full.
Can I get sold prices from realestate.com.au?
Yes: set the channel to sold. Every sold row carries the sold date, and the sold price when the listing shows it (79% of 2,760 sold rows in our tests; some sellers withhold it). Use soldWithinDays, or soldAfter and soldBefore, for a period.
Can I get a property's sales history and estimated value?
Yes, with the Property history add-on: for each listing with a street address that matches the site's address record exactly, it reads the public address page and gives the dated sales, leases and listings with prices, the estimated value range and weekly rent, the suburb's median prices and the planning overlays. A page that cannot be read is not charged.
Why does this Actor run with limited permissions?
It needs nothing beyond its own run storage (the dataset it writes and its own key-value store), so it runs with Apify's limited permissions: it cannot read or change anything else in your account.
Use it through the API
curl -X POST "https://api.apify.com/v2/acts/automation_craft~realestate-com-au-scraper/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-H "Content-Type: application/json" \-d '{"locations": ["Richmond, VIC 3121"], "channel": "sold", "soldWithinDays": 90, "maxItems": 500}'
from apify_client import ApifyClientclient = ApifyClient("<YOUR_TOKEN>")run = client.actor("automation_craft/realestate-com-au-scraper").call(run_input={"locations": ["Bondi, NSW 2026"], "channel": "rent", "maxItems": 200})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row)
The Actor also runs from Apify's MCP server for AI agents, and from Make, Zapier and n8n through Apify's integrations.
Changelog
- 0.1 (2026-11-01): first version.
More data tools by Automation Craft
- Gumtree Scraper: UK, Australia, South Africa Ads
- Zillow Scraper: Homes for Sale, Rent and Sold
- Zillow Property Details Scraper: Price History
- Realtor.com Scraper: Homes for Sale, Rent & Sold
- Redfin Scraper: Homes for Sale, Sold Comps, Agents
- Idealista Scraper: Spain, Italy, Portugal Homes
- ImmoScout24 Scraper: Rentals, Sales and Agencies
- Airbnb Scraper: Airbnb Data, Prices, Calendar