Domain.com.au Scraper — Rent, Sale & Sold Listings
Pricing
from $1.30 / 1,000 listings
Domain.com.au Scraper — Rent, Sale & Sold Listings
[💰 $1.3 / 1K] Extract rent, for-sale and recently sold property listings from Domain.com.au with 18 built-in filters — property type, bedrooms, price, land size, features. Get prices, GPS coordinates, photos, agent contacts, school catchments and suburb market stats.
Pricing
from $1.30 / 1,000 listings
Rating
0.0
(0)
Developer
SolidCode
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Pull every rental, for-sale and recently-sold listing from Domain.com.au at scale — prices, GPS coordinates, photos, floorplans, agent contacts, school catchments and suburb market stats, all on one flat row. Built for Australian buyer's agents, property investors, valuers and proptech teams who need a filtered, ready-to-model listing feed without pasting URLs one at a time or maintaining a scraper of their own.
Why This Scraper?
- 18 Domain search filters built in, not just a URL box — 20 property types (Townhouse, Penthouse, Block of units, Rural lifestyle, Development site and more), bedrooms, bathrooms, car spaces, price band, land size, 16 named features, free-text keywords, new vs established, and retirement living. Every filter was checked against Domain's own match counts before it shipped.
- Rent, for sale and recently sold in the same actor — sold results carry the sale method and the sale date, which is what a CMA, an appraisal or a comparable-sales model actually runs on. One option switches between the three.
- GPS coordinates on 100% of listings — latitude and longitude on all 413 rows sampled across six areas (Sydney, Melbourne, Brisbane, Perth, Hawthorn, Orange) and all three search types. Street address, suburb, state, postcode and at least one photo were also on 100%.
- The advertiser's exact price line on every listing —
priceDisplayships verbatim ("$800 per week", "$650,000 to $680,000", "Auction", "Contact Agent"), with a parsed numericpricebeside it wherever a figure is actually derivable. You always get the words the agent published, never a guess dressed up as a number. - Land size always travels with its unit — Domain mixes square metres and hectares in the same result set, so a 15.7 ha rural block sits next to a 640 m² suburban one.
landSizeandlandUnitare shipped as a pair, which is the difference between a correct dataset and a 10,000× error. - 41 extra fields per listing on demand — full advert text, every full-size photo and floorplan, agency phone, agent name and mobile, open-inspection times, nearby school catchment, suburb median sale price, median weekly rent, average days on market, auction clearance rate and five years of sales history.
- Drop the sold listings with no disclosed price — roughly one in five sold results never publishes a figure (measured 29,863 → 23,942 on a Sydney search). One option removes them, so every comparable you pay for has a number attached.
- 0.38 seconds per listing — 100 listings in 38 seconds, and a 1,195-listing Sydney-region walk in under 7 minutes, measured on the platform rather than estimated.
Use Cases
Comparable Sales & Valuation
- Build CMA and appraisal workbooks from sold searches — sale method, sale date and the disclosed price on the same row.
- Read suburb median sale price, median weekly rent, average days on market and auction clearance rate straight off any enriched listing.
- Pull five years of suburb sales history — median price, volume sold, days on market and annual growth per year.
Buyer's Agents & Lead Generation
- Watch a target suburb for new stock with a scheduled run sorted by most recently updated.
- Capture listing agency, agency phone, agent name and mobile on enriched rows, ready to load into a CRM.
- Shortlist against a client brief in one run: 4+ bedrooms, 2+ bathrooms, secure parking, under a set price.
Market Research & Analytics
- Measure supply by property type across a whole state —
areaaccepts suburbs, regions and bare state codes. - Compare rental and sale inventory in the same suburb by switching one option.
- Quantify feature prevalence — how many rentals allow pets, come furnished, or have a swimming pool.
Rental Portfolio & Property Management
- Track weekly asking rents by suburb and bedroom count, with the advertiser's own price wording preserved.
- Monitor competing stock — inspection times, deposit-taken status, and how long a listing has been live.
- Benchmark your own listings against the suburb median weekly rent and average days on market.
Data Enrichment & Integration
- Geocode a whole Domain search instantly — every row is map-ready without a separate geocoding step.
- Attach school catchments (name, sector, level, distance) to each property for family-buyer scoring.
- Export to JSON, CSV or Excel, or stream rows into a warehouse through the Apify API.
Getting Started
Simplest run
{"searchMode": "rent","area": "sydney-nsw-2000","maxItems": 100}
A filtered search
{"searchMode": "sale","area": "parramatta-nsw-2150","propertyType": "house","minBedrooms": "4-any","minCarSpaces": "2-any","priceRange": "0-1500000","includeSurroundingSuburbs": "0","sortBy": "price-asc","maxItems": 500}
Sold comparables, with full details
{"searchMode": "sold-listings","area": "brisbane-city-qld-4000","hidePriceWithheld": "1","enrichDetails": true,"maxItems": 1000}
Paste a filtered search URL from the site
Set your filters on domain.com.au, then copy the whole address bar — every filter in it is carried through, and paging continues from whatever you pasted.
{"searchUrls": ["https://www.domain.com.au/sale/melbourne-vic-3000/?bedrooms=2-any&price=0-800000","https://www.domain.com.au/rent/bondi-beach-nsw-2026/","https://www.domain.com.au/sold-listings/hawthorn-vic-3122/"],"maxItems": 500}
Input Reference
What to Scrape
| Parameter | Type | Default | Description |
|---|---|---|---|
searchUrls | array | — | Optional. Paste one or more domain.com.au SEARCH result URLs -- set the filters you want on the website, then copy the whole address bar. When you use this, the filters below are ignored. Suburb searches (/rent/sydney-nsw-2000/), region and state searches (/sale/melbourne-region-vic/, /sale/nsw/), searches that already carry filters in the address (?bedrooms=2-any&price=0-800000) and Domain's own filter paths (/sale/sydney-nsw-2000/house/3-bedrooms/) all work, and paging continues from whatever you pasted. A single property page works too and returns that one property. Agent and agency profile pages are not searches and will be reported as a failed search in the run log. |
searchMode | string | rent | Rentals, listings for sale, or recently sold properties. Sold results include the sale price and sale date where the agent disclosed them. |
area | string | sydney-nsw-2000 | A Domain location slug. Suburbs look like sydney-nsw-2000 or bondi-beach-nsw-2026, regions like sydney-region-nsw or melbourne-region-vic, and a whole state is just nsw, vic, qld, wa, sa, tas, act or nt. The easiest way to get one right is to search on domain.com.au and copy the piece of the address bar that comes after /rent/ or /sale/. |
propertyType | string | "" | One property type per run. "House (all kinds)" and "Apartment or unit (all kinds)" are the site's own umbrella groups and cover every sub-type beneath them; pick a specific sub-type to narrow further. |
minBedrooms | string | "" | Domain caps this at 5, so "5 or more" is the top of the scale. Studios count as zero bedrooms and are only excluded once you set a minimum. |
minBathrooms | string | "" | Domain caps this at 5, so "5 or more" is the top of the scale. |
minCarSpaces | string | "" | Garages, carports and open parking all count. Domain caps this at 5. |
priceRange | string | "" | Written as low-high, e.g. 500000-800000. Use "any" for an open end -- 800000-any for "at least $800,000", 0-600000 for "up to $600,000". For rentals this is the WEEKLY rent, so 400-700 rather than 400000-700000. Anything that is not two numbers is rejected by Domain. |
landSize | string | "" | Written the same way as the price range, e.g. 400-any for "at least 400", or 600-1200 for a band. Set the unit below. |
landSizeUnit | string | "" | Only matters when you set a land size. Rural blocks are usually measured in hectares; suburban blocks in square metres. |
feature | string | "" | One feature per run, using Domain's own feature list. "Pets allowed" and "Furnished" are rental-oriented but work on every search type. |
keywords | string | "" | Free text matched against the agent's own listing copy -- "granny flat", "ocean views", "renovated". Multi-word phrases are fine. |
propertyAge | string | "" | "New" covers off-the-plan, house-and-land and newly built stock; "Established" is everything previously lived in. |
retirementOnly | string | "" | Restricts the search to over-55s and retirement-village listings. |
includeSurroundingSuburbs | string | "" | Domain widens a suburb search into its neighbours by default. Turning this off usually cuts the result count by roughly two thirds and every row then carries the suburb you asked for. |
hideUnderOffer | string | "" | Only for "Properties for sale". Domain rejects this option on rental and sold searches. |
hideDepositTaken | string | "" | Only for "Properties for rent". Domain rejects this option on for-sale and sold searches. |
hidePriceWithheld | string | "" | Only for "Recently sold properties". Roughly a fifth of sold listings never disclose a price; this drops them so every row you pay for has one. Domain rejects this option on for-sale and rental searches. |
sortBy | string | "" | Domain's own sort options, seven of them. Sold searches are already newest-sale-first unless you change this. |
maxItems | integer | 100 | Maximum listings per search URL (0 = collect everything each search returns). Domain serves at most 50 pages for any one search -- measured at 1,195 listings on a Sydney-region walk -- so split large areas into several narrower searches. |
Options
| Parameter | Type | Default | Description |
|---|---|---|---|
enrichDetails | boolean | false | Add 41 extra fields per listing. Adds one request per listing and is billed at the higher rate. |
concurrency | integer | 8 | How many requests to run in parallel. Lower this if you see failures. |
proxyConfiguration | object | Apify Proxy | Proxy settings for the run. |
Output
Every listing is one dataset row. Enabling enrichDetails adds 41 further fields to the same row — there is no second record type to join.
The example below is a real captured row. Long arrays and the advert body are trimmed for readability, and the agent's name, mobile number and profile link are replaced with placeholders.
{"id": "2021012386","url": "https://www.domain.com.au/2315-45-macquarie-street-parramatta-nsw-2150-2021012386","listingKind": "listing","propertyType": "Apartment / Unit / Flat", "propertyTypeCode": "ApartmentUnitFlat","bedrooms": 2, "bathrooms": 2, "parkingSpaces": 1, "landUnit": "m²", "isRural": false, "isRetirement": false,"streetAddress": "2315/45 Macquarie Street", "suburb": "Parramatta", "state": "NSW", "postcode": "2150","latitude": -33.81524, "longitude": 151.00093,"price": 700000,"priceDisplay": "$700,000","agencyId": "22392","agencyName": "Ray White Parramatta/Oatlands/Northmead","agencyLogo": "https://rimh2.domainstatic.com.au/.../logo_22392.jpg","agentNames": "Jane Doe","images": ["https://rimh2.domainstatic.com.au/.../2021012386_1_1_260721_062351-w2000-h1333"],"hasVideo": false, "hasMatterport": false,"headline": "LUXURIOUS 5-STAR 2 BEDROOM APARTMENT AT 'V BY CROWN'","description": "This is the landmark building 'V by Crown'. Positioned in the heart of Parramatta CBD with all major amenities at the doorstep ...","listingMode": "buy", "listingStatus": "live", "saleMethod": "privateTreaty", "listingCategory": "residential","fullAddress": "2315/45 Macquarie Street, Parramatta NSW 2150","streetName": "Macquarie Street", "streetNumber": "45", "unitNumber": "2315","suburbProfileUrl": "https://www.domain.com.au/suburb-profile/parramatta-nsw-2150","listingStats": [{"key": "buildingArea", "value": 97}],"propertyLastSoldDate": "2015-10-22T00:00:00","suburbMedianSalePrice": 642500, "suburbMedianRentPrice": 720, "suburbEntryLevelPrice": 489400,"suburbLuxuryLevelPrice": 839200, "suburbAvgDaysOnMarket": 42, "suburbAuctionClearance": 63, "suburbSoldLastYear": 633,"suburbSalesGrowth": [{"year": "2026", "medianSoldPrice": 642500, "annualGrowth": 0.0362, "numberSold": 633, "daysOnMarket": 42}],"agencyPhone": "02 9891 3333","agencyProfileUrl": "https://www.domain.com.au/real-estate-agencies/raywhiteparramattaoatlandsnorthmead-22392/","agencyBanner": "https://rimh2.domainstatic.com.au/.../banner_22392.png","agents": [{"name": "Jane Doe", "phone": "02 9891 3333", "mobile": "04XX XXX XXX", "photo": "https://rimh2.domainstatic.com.au/.../contact_1775106.jpeg", "agentProfileUrl": "https://www.domain.com.au/real-estate-agent/jane-doe-1775106"}],"photosFullSize": ["https://rimh2.domainstatic.com.au/.../2021012386_1_1_260721_062351-w2000-h1333"],"heroImage": "https://rimh2.domainstatic.com.au/.../2021012386_1_1_260721_062351-w2000-h1333","media": {"items": [{"type": "image", "imageUrl": "https://rimh2.domainstatic.com.au/.../2021012386_1_1.jpg"}], "floorplanUrl": "https://rimh2.domainstatic.com.au/.../2021012386_29_3_260721_062351-w1713-h2667"},"createdOn": "2026-07-21T16:23:49.527", "modifiedOn": "2026-07-27T20:09:10.023", "propertyId": "OI-7458-RE","schools": [{"name": "Indie School Parramatta", "educationLevel": "secondary", "type": "Private", "distance": 156.53, "address": "Parramatta, NSW 2150", "status": "Open"}],"demographics": {"population": 25793, "avgAge": "20 to 39", "owners": 0.292, "renters": 0.708, "families": 0.551, "singles": 0.449},"faqs": [{"question": "How many bedrooms does 2315/45 Macquarie Street, Parramatta have?", "answer": [{"text": "2315/45 Macquarie Street, Parramatta is a 2 bedroom apartment."}]}],"inspectionTimes": [{"dayOfWeek": "Saturday", "day": "1", "month": "August", "time": "10:30am - 10:45am", "openingDateTime": "2026-08-01T10:30:00"}],"nextInspection": "Sat 10:30am", "inspectionByAppointmentOnly": false, "timeZone": "Australia/Sydney"}
Core Fields
| Field | Type | Description |
|---|---|---|
id | string | Listing ID |
url | string | Listing URL |
listingKind | string | Record kind (listing or project) |
propertyType | string | Property type |
propertyTypeCode | string | Property type (code) |
bedrooms | number | Bedrooms |
bathrooms | number | Bathrooms |
parkingSpaces | number | Parking spaces |
landSize | number | Land size |
landUnit | string | Land size unit |
isRural | boolean | Rural listing |
isRetirement | boolean | Retirement living |
statusTag | string | Status label |
Price & Value
| Field | Type | Description |
|---|---|---|
price | number | Price (AUD) |
priceDisplay | string | Price (as advertised) |
auctionDateTime | string | Auction date/time |
Location
| Field | Type | Description |
|---|---|---|
streetAddress | string | Street address |
suburb | string | Suburb |
state | string | State |
postcode | string | Postcode |
latitude | number | Latitude |
longitude | number | Longitude |
Agency & Media
| Field | Type | Description |
|---|---|---|
agencyId | string | Agency ID |
agencyName | string | Agency |
agencyLogo | string | Agency logo |
agentNames | string | Listing agents |
images | array | Photo URLs |
hasVideo | boolean | Has video |
hasMatterport | boolean | Has 3D walkthrough |
projectName | string | Development project |
With enrichDetails enabled (1 of 2)
| Field | Type | Description |
|---|---|---|
headline | string | Advert headline |
description | string | Description |
structuredFeatures | array | Property features |
listingMode | string | Listing mode |
listingStatus | string | Listing status |
saleMethod | string | Sale method |
listingCategory | string | Listing category |
fullAddress | string | Full address |
streetName | string | Street |
streetNumber | string | Street number |
unitNumber | string | Unit number |
suburbProfileUrl | string | Suburb profile URL |
statementOfInformationUrl | string | Statement of Information (PDF) |
listingStats | array | Bond, land area, building area, available-from |
propertyLastSoldDate | string | Property last sold on |
suburbMedianSalePrice | number | Suburb median sale price |
suburbMedianRentPrice | number | Suburb median weekly rent |
suburbEntryLevelPrice | number | Suburb entry-level price |
suburbLuxuryLevelPrice | number | Suburb luxury-level price |
suburbAvgDaysOnMarket | number | Suburb average days on market |
suburbAuctionClearance | number | Suburb auction clearance (%) |
suburbSoldLastYear | number | Suburb sales in the last year |
suburbSalesGrowth | array | Suburb 5-year sales history |
agencyPhone | string | Agency phone |
agencyProfileUrl | string | Agency profile URL |
With enrichDetails enabled (2 of 2)
| Field | Type | Description |
|---|---|---|
agencyBanner | string | Agency banner image |
agents | array | Agents (name, phone, mobile, photo, profile URL) |
photosFullSize | array | Full-size image URLs (photos & floorplans) |
heroImage | string | Hero image |
media | object | Floorplans, video, virtual tour & full media list |
createdOn | string | First listed |
modifiedOn | string | Last updated |
propertyId | string | Property ID |
schools | array | Nearby schools & catchment |
demographics | object | Suburb demographics |
faqs | array | Listing Q&A |
inspectionTimes | array | Open-for-inspection times |
nextInspection | string | Next inspection |
inspectionByAppointmentOnly | boolean | Inspection by appointment only |
auctionLocation | string | Auction location |
timeZone | string | Listing time zone |
Tips for Best Results
- Plan around Domain's 50-page ceiling — any single search serves at most 50 pages, so a Sydney-region search that reports 26,653 matches still returns about 1,195 listings. To cover a whole region, split it by suburb, price band or property type and paste every URL into
searchUrls— rows are de-duplicated across searches, so you are never billed twice for the same listing. - On a capped search,
sortBydecides which listings you get — seven orders are available. Use price-lowest-first for entry-level stock, most-recently-updated to monitor a market, or sale-date-newest-first when you are building comparables. - Read
pricenext topriceDisplay— Domain publishes no numeric price, only the advertiser's own wording.priceDisplaycarries that wording on every listing and is the field to audit against;priceis the figure derived from it, and where the agent wrote "Auction" or "Contact Agent" there is nothing to derive. - Turn off
includeSurroundingSuburbswhen you need one suburb only — Domain widens suburb searches into their neighbours by default. Switching it off took a Parramatta search from 1,185 matches to 301, and every returned row then carried the suburb asked for. - For comparables, set
hidePriceWithheld— about a fifth of sold results never disclose a figure. Dropping them at the source is cheaper than filtering them out afterwards, and leaves a comparables set where every row has a price. enrichDetailsis where the contacts and catchments live — across the 84-record enriched sample, agency phone, agent name, nearby schools, suburb medians and the full advert text were on every record, and 81 of those 84 also carried a direct agent mobile. Leave it off for a fast inventory sweep; turn it on for lead work, valuation and listing analysis.- Filter to
listingKind == "listing"for individual properties — a small share of search results (11 of 413 sampled) are developer project cards, which advertise a whole new-build development rather than one property. They carry no address, no price and no detail page, and this field is how you drop them.
Pricing
From $1.30 per 1,000 results (search only) or from $2.30 per 1,000 results (with full details).
| Results | Search Only | With Full Details |
|---|---|---|
| 100 | $0.13 | $0.23 |
| 1,000 | $1.30 | $2.30 |
| 10,000 | $13.00 | $23.00 |
| 100,000 | $130.00 | $230.00 |
Those are the rates on Gold and above. Higher-volume plans pay less per result:
| Your Apify plan | Search Only | With Full Details |
|---|---|---|
| No discount | $1.55 | $2.75 |
| Bronze | $1.45 | $2.60 |
| Silver | $1.40 | $2.45 |
| Gold and above | $1.30 | $2.30 |
Per 1,000 results.
A "result" is any listing row in the output dataset. When you run several searches at once, a listing matching more than one of them is de-duplicated before it reaches the dataset, so you are never charged twice for the same listing. The full-details rate applies only to rows that actually came back enriched — if a listing's detail record is unavailable, the row is still delivered and charged at the search-only rate. Platform fees (compute, storage) are additional and depend on your Apify plan.
Integrations
Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:
- Zapier / Make / n8n — Workflow automation
- Google Sheets — Direct spreadsheet export
- Slack / Email — Notifications on new results
- Webhooks — Trigger custom APIs on run completion
- Apify API — Full programmatic access
Legal & Ethical Use
This is an unofficial scraper. It is not affiliated with, endorsed by, or connected to Domain.com.au, Domain Holdings Australia, or its operators in any way. All trademarks belong to their respective owners.
This actor is intended for legitimate market research and analytics. You are responsible for complying with applicable laws and with Domain.com.au's Terms of Service.
Results may include personal data such as agent contact details. Treat them accordingly: do not use them for spam, harassment, or any unlawful purpose, and follow applicable privacy rules when storing or processing them.