Domain.com.au Scraper: Sold Prices, Schools & Suburb Trends avatar

Domain.com.au Scraper: Sold Prices, Schools & Suburb Trends

Pricing

from $1.60 / 1,000 listings

Go to Apify Store
Domain.com.au Scraper: Sold Prices, Schools & Suburb Trends

Domain.com.au Scraper: Sold Prices, Schools & Suburb Trends

Scrape domain.com.au sale, rent and sold property listings by suburb. Rows carry price, beds, baths, parking, land size, sale method and inspection times; detail pages add school catchments, suburb medians, clearance rate, owner-occupier mix and agent phones.

Pricing

from $1.60 / 1,000 listings

Rating

0.0

(0)

Developer

Tuyen Tran

Tuyen Tran

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 minutes ago

Last modified

Categories

Share

Live Sample Dataset & Verified Run Benchmark

Two runs on 3 November 2026 on Apify Cloud, build 0.1.14. Both datasets are public: open the JSON or CSV link in a browser, no login and no run needed.

Multi-state list run — IbR4vKezpggCQ6aqT · 30 rows · 68 columns · 65.4 s · charged apify-actor-start 1, listing-scraped 30. JSON · CSV

Detail run — guWDXXVQesCUXp1ij · 3 rows · 68 columns · 45.5 s · charged apify-actor-start 1, listing-scraped 3, detail-scraped 3. JSON · CSV

Coverage: Sydney NSW 8 rows, Melbourne VIC 8, Brisbane QLD 8, Perth WA 6. All fetched live.

#AddressPriceBedsBathsSale methodSource
146/155-161 Macquarie Street, Sydney NSW 2000Guide $5,500,00032Private treatyOpen
21804/281 Elizabeth Street, Sydney NSW 2000Contact Agent22Private treatyOpen
3301/45 Shelley Street, Sydney NSW 2000Buyer guide: $850,000 to $900,00011Private treatyOpen

Compare the three rows with the source pages. That is the whole test, under five minutes.

What does the Domain.com.au Scraper do?

Scrape domain.com.au sale, rent and sold listings by suburb without opening each page by hand. One row per property carries the address, price, bedrooms, bathrooms, parking, land size, sale method, inspection times and agent phone.

Domain.com.au is the second-largest property portal in Australia and the parent company of allhomes.com.au. It publishes three things the smaller portals do not put in one place: suburb performance numbers, neighbourhood demographics and school catchment zones. This actor puts all three on the row, next to the listing itself.

The actor reads public result and detail pages. It does not log in, does not bypass a paywall and does not invent a value. "Contact Agent" and "Price Withheld" stay as text, with an empty number.

Why scrape domain.com.au with this Actor?

#FeatureWhat it means for youMeasured on live runs
1Three channelsSale, rent and sold results share one input shape and one output shape30 rows across NSW, VIC, QLD and WA in one run
2Suburb insight blockMedian price, average days on market and auction clearance rate arrive on the row3/3 detail rows carried a median and a clearance rate
3Neighbourhood demographicsOwner-occupier share and renter share as percentages3/3 detail rows, one decimal
4School catchmentsEvery government and independent school with distance and catchment flag12 to 13 schools per Sydney detail page
5Inspection scheduleOpen-for-inspection windows as ISO timestamps100% of the 10 buy rows in the sample
6Sale method"Sold at auction", "Sold by private treaty", "Sold prior to auction"10/10 sold rows
7Change trackingPrice drops, previous price and percent change across runsDaily mode with a stable state key
8Flat outputCSV, JSON, Sheets, API, webhooks, n8n, Make, Zapier, MCP68 columns, 0 duplicate names

What data can you extract from domain.com.au?

GroupFieldsList modeNeeds detail
Identitylisting id, source portal, channel, status, listing URLYesNo
Addressfull address, street, suburb, state, postcode, latitude, longitudeYesNo
Priceprice display, price numeric, price history, previous price, change percentYesNo
Salesold date, auction date, sale methodSold rowsSold detail
Propertyproperty type, bedrooms, bathrooms, car spaces, land sizeYesNo
Agentagent name, agent phone, agency name, agency phoneNoYes
Schoolsschool list, school count, closest school nameNoYes
Suburbmedian price, average days on market, clearance rate, owner-occupier share, renter shareNoYes
Contentdescription, features, images, sale and price history, inspection timesNoYes
Lifecycledays on market, new listing flag, price changed flag, direction, change countYesNo

Six fields belong to this portal:

  1. Neighbourhood demographics. owner_occupier_pct and renter_pct separate a family market from an investor market, both as percentages.
  2. Suburb performance. suburb_median_price, suburb_avg_days_on_market and suburb_clearance_rate_pct come from the detail page, not a separate report.
  3. School catchment zones. schools_count, closest_school_name and schools carry name, type, sector, year range, distance and catchment flag.
  4. Open for inspection. inspection_times is a list of ISO windows, ready for a calendar tool.
  5. Sale method. sale_method separates an auction result from a private treaty sale when you compare clearance rates.
  6. Exact listing date. posted_at is the printed listing date, so daysOnMarket is real even on a first run with details on.

Price honesty rules are strict. A number is taken only when the card prints a dollar figure. "Auction Saturday 14 Nov", "Price Withheld", "Contact Agent", "EOI" and "Tender" never become a price. An auction time becomes auction_date, never priceNumeric. A sold row takes its price and method from the sold record, not from the current asking price.

How to scrape domain.com.au listings and price history

  1. Pick a channel: sale, rent or sold.
  2. Enter suburb, state and postcode; Domain needs all three in the URL.
  3. Set maxItems. One page carries 20 cards.
  4. Turn on detail pages for agent phones, schools and suburb numbers. They are cached.
  5. Schedule daily with a stable stateKey to track first and last seen dates.

For several suburbs in one run, pass the hidden suburbs array through the API. The row cap is split across entries, so the first suburb cannot eat the run.

Brisbane is the one slug that differs from the obvious spelling: Domain uses brisbane-city-qld-4000. The actor maps it for you; a hand-built URL with brisbane-qld-4000 returns HTTP 404, which is why the mapping exists.

Price history is built across runs. The first run records the price, the second compares. A drop appends a priceHistory entry with old price, new price, date and percent change.

How much does it cost to scrape domain.com.au?

EventStandard tierDiscounted tiers
Actor start, per run$0.005$0.004
One list row$0.002$0.0016
One detail row$0.006$0.0048

A 1,000-row list run costs $2.005 at the standard tier: $0.005 start plus $2.00 for rows. With details on every row it costs $8.005: $0.005, $2.00 listings, $6.00 details. Discounted tiers: about $1.60 and $6.40.

The three-row detail test cost $0.029: $0.005 start, three listings, three details. Exact charge, not an estimate.

A detail row is billed whether it was opened live or served from cache, because the data is delivered either way. A list-only run never pays for a detail it does not ship.

The Free plan returns up to 50 rows per run. The start event is charged once per run.

100% of the platform compute and proxy cost is already inside the event price. There is no separate infrastructure line and no surprise at month end. You pay for events; the container and unblocker proxy come out of that price.

Pre-calculated 1,000-listing total (one actor start plus the rows):

  1. List only, includeDetails: false: $2.005 on Standard (Free/Bronze), $1.604 on Silver+.
  2. Full details, includeDetails: true: $8.005 on Standard (Free/Bronze), $6.404 on Silver+.

Input parameters and configuration examples

ParameterTypeDefaultWhat it does
channelselectbuySale, rent or sold results
suburbtextSydneySuburb name
stateselectNSWState code
postcodetext2000Four digit postcode
propertyTypesmulti-selectemptyKeep only the printed types
minPricenumberemptyKeep rows at or above this price
maxPricenumberemptyKeep rows at or below this price
minBedsnumberemptyMinimum bedrooms
minDaysOnMarketnumber0Keep older listings; falls back with a warning instead of returning nothing
maxItemsnumber20Row cap for the run
maxPagesnumber1Result pages to read, 20 cards each
includeDetailscheckboxfalseOpen detail pages for agent, schools and suburb numbers
maxDetailsnumber50Cap on detail pages
onlyEmitChangescheckboxfalseEmit only new, repriced or removed rows
startUrlstextemptyPaste search URLs to skip the suburb form
stateKeytextdefaultSeparate history for each customer

A typical daily job:

{
"channel": "buy",
"suburb": "Brisbane",
"state": "QLD",
"postcode": "4000",
"maxItems": 40,
"includeDetails": true,
"onlyEmitChanges": true,
"stateKey": "brisbane-daily"
}

A light test with no detail pages:

{
"channel": "rent",
"suburb": "Perth",
"state": "WA",
"postcode": "6000",
"maxItems": 10
}

Output example

{
"listingId": "2021293805",
"channel": "buy",
"propertyType": "apartment / unit / flat",
"fullAddress": "46/155-161 Macquarie Street, Sydney NSW 2000",
"suburb": "Sydney",
"state": "nsw",
"postcode": "2000",
"priceDisplay": "Guide $5,500,000",
"priceNumeric": 5500000,
"sale_method": "Private treaty",
"auction_date": "",
"inspection_times": ["2026-11-04T12:00:00 - 2026-11-04T12:30:00"],
"bedrooms": 3,
"bathrooms": 2,
"carSpaces": 2,
"landSizeSqm": null,
"schools_count": 13,
"closest_school_name": "St Mary's Cathedral College",
"suburb_median_price": 3199000,
"owner_occupier_pct": 30.7,
"renter_pct": 69.3,
"agent1_phone": "0414 990 990",
"posted_at": "2026-11-02",
"daysOnMarket": 1,
"listingUrl": "https://www.domain.com.au/46-155-161-macquarie-street-sydney-nsw-2000-2021293805"
}

Every key there is a dataset column. The schema declares 68 columns and a live row carries 68, so the export adds nothing and hides nothing.

🇦🇺 Australian Real Estate Data Suite (6 Portals)

#PortalActorBest for
1realestate.com.auRealestate.com.au ScraperLargest listing base and agent phones
2property.com.auProperty.com.au ScraperSold history, estimates and rent estimates
3realcommercial.com.auRealcommercial.com.au ScraperCommercial, industrial and retail
4onthehouse.com.auOnTheHouse.com.au ScraperValuations and multi-decade history
5allhomes.com.auAllhomes.com.au ScraperCanberra, EER ratings and land value
6domain.com.auThis actorSuburb performance, demographics and school catchments

All six actors share the same 25 core column names, so a workbook can union their output without renaming anything.

Does this actor need a Domain account? No. It reads public result and detail pages.

Why is the price empty on some rows? Domain prints "Contact Agent", "Price Withheld" or an auction time. The actor keeps the printed text and leaves the number empty instead of guessing.

Why did a suburb return nothing? A wrong slug or postcode returns HTTP 404. Brisbane needs brisbane-city; the actor maps it.

What happens with minDaysOnMarket on a new suburb? If no listing is old enough, the actor logs a warning and returns the full list sorted by days on market, so a first run is never empty.

Is the detail cache shared between customers? Yes. It is keyed by listing, so a second customer needs no new fetch. Each keeps a separate history through stateKey.

Legal note. Domain.com.au is operated by Domain Group. Its terms and robots rules restrict automated collection. This actor reads public pages and returns printed facts. You are responsible for how you use the data. Do not republish an entire portal.