Domain.com.au Property Scraper: Price, Beds, Agent
Pricing
from $1.20 / 1,000 properties
Domain.com.au Property Scraper: Price, Beds, Agent
Scrape Domain.com.au for sale and for rent listings by suburb: price, beds, baths, parking, land size, property type, agent and agency, with photos and coordinates. Australia residential proxy, no login, pay per property.
Pricing
from $1.20 / 1,000 properties
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Domain sits behind Akamai bot management. This actor clears it through Apify's own unblocking proxy network rather than fighting it with a request that never had a chance.
You are only charged for a property that actually lands in your dataset. A blocked or empty page is never billed.
Overview
Domain is one of the two major real estate portals in Australia, alongside realestate.com.au, and this actor turns any Domain suburb search into structured rows: price, bedrooms, bathrooms, parking, land size, property type, agent and agency, photos and coordinates.
Give it one or more Domain location slugs, such as "chatswood nsw 2067", choose sale or rent, and it returns the full result set Domain itself would show you for that suburb.
Full listing detail, not just a headline price ✅ · Agent and agency captured on every row ✅ · Coordinates included for mapping ✅ · MCP ready for AI agents ✅
Why this needs an unblocking proxy
Domain protects its listing pages with Akamai, and this was tested carefully. A plain request, even one shaped to look exactly like a real browser's request from a residential IP address, gets served a bot-check page with no listing data on every path. This actor instead routes every fetch through Apify's UNBLOCKER proxy network, which resolves that check server-side and returns the real, fully rendered page.
Because Domain server-renders its full result set directly into the page rather than calling a separate API you could intercept, this actor reads that embedded data straight from the page once it loads — a single parse, no extra requests, and no browser to run.
Input
{"locations": ["chatswood-nsw-2067"],"listingType": "sale","maxItemsPerLocation": 40,"minBedrooms": 3,"maxPrice": 1500000,"propertyType": "house"}
| Field | What it takes |
|---|---|
locations | One or more Domain location slugs, copied straight from a Domain search URL, for example "chatswood nsw 2067". |
listingType | sale or rent. |
maxItemsPerLocation | Hard cap per location. Domain returns 20 properties per page, so this is your main cost and runtime control. |
minBedrooms | Optional minimum bedroom count. |
minPrice / maxPrice | Optional price band. For sale listings this is a sale price; for rent listings this is weekly rent in AUD. |
propertyType | Optional filter such as house, apartment, townhouse, unit, villa or land. |
Output
{"listing_id": "2021072202","listing_type": "sale","display_address": "76C Beaconsfield Road, Chatswood, NSW, 2067","suburb": "Chatswood","state": "NSW","postcode": "2067","latitude": -33.803368,"longitude": 151.16888,"price_label": "Auction - Contact Agent","bedrooms": 5,"bathrooms": 4,"parking": 2,"property_type": "House","land_size": 450,"land_unit": "m²","agent_names": "Adam Wong, Nathan Zhuang","agency_name": "DiJones - Chatswood","url": "https://www.domain.com.au/76c-beaconsfield-road-chatswood-nsw-2067-2021072202","scraped_at": "2026-08-13T21:00:00.000Z"}
| Field | Description |
|---|---|
🆔 listing_id | Domain listing ID, stable for deduplication across runs |
🏠 display_address | Full street address as shown |
📍 suburb / state / postcode | Parsed address components |
🗺️ latitude / longitude | Coordinates for mapping |
💰 price_label | Price exactly as the agent wrote it |
💵 price_value | Numeric price, parsed when the label contains a clean figure |
🛏️ bedrooms / 🛁 bathrooms / 🚗 parking | Core feature counts |
📐 land_size / land_unit | Land size, when disclosed |
👤 agent_names / 🏢 agency_name | Listing agent and agency |
🖼️ image_url / image_count | Primary photo and total photo count |
🔗 url | Direct link to the listing on Domain |
Common use cases
Market research. Track asking prices, land sizes and property mix in a suburb over time to see where supply and pricing are actually moving.
Buyer and investor alerts. Run on a schedule against a shortlist of suburbs and price bands to catch new listings the day they go live.
Agent and agency intelligence. See which agencies dominate a suburb, how they price, and how they photograph and describe their listings.
Portfolio and comparable analysis. Pull every current listing in a postcode to build a real comparables set instead of relying on a handful of recent sales.
AI agents. Feed live Domain listings into an agent that answers "what is actually for sale in Chatswood right now under 1.5 million?"
Pricing
| Event | Price | You pay when |
|---|---|---|
| Property delivered | $0.0012 | A property lands in your dataset |
$1.20 per 1,000 properties. A search that returns nothing costs nothing.
Run it on a schedule
- Run once with the locations you want repeated, then click Save as a task.
- In the Apify Console go to Schedules, Create new.
- Pick a frequency and attach the saved task.
- Wire the dataset to Sheets, Slack or a webhook from the Integrations tab.
Deduplicate on listing_id so a repeated schedule only surfaces genuinely new listings.
FAQ
Do I need a Domain account? No. The actor reads Domain's own public search results only.
Why does this cost more per result than a plain HTTP actor? Domain's listing pages are actively protected, and clearing that protection reliably needs Apify's unblocking proxy network rather than a bare request. The price reflects that real cost, not an arbitrary markup.
Why did I get fewer properties than my cap? Because the suburb has fewer matching listings, or the result set was exhausted before the cap. The run reports what it actually found rather than padding the count.
Does this also cover new project or off the plan listings? Yes, where Domain includes them in the same search results, though those rows may have fewer of the detail fields (price is often "contact agent" rather than a figure) than a standard resale listing.
Use from Claude, ChatGPT and any MCP agent
https://mcp.apify.com/?tools=themineworks/domain-property-scraper
Or call it programmatically:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('themineworks/domain-property-scraper').call({locations: ['chatswood-nsw-2067'],listingType: 'sale',maxItemsPerLocation: 40,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Questions, or need a field we do not return yet? Reach out through the Apify profile.