# Domain.com.au Scraper - Listings, Sold Prices & Agent Contacts (`scrapersdelight/domain-com-au-scraper`) Actor

Scrape Domain.com.au property listings for sale, rent and sold by suburb, postcode, region or search URL: price, address, GPS, beds/baths/parking, land size, features, agents' emails and mobiles, inspections, auctions, sold price and date, price history, photos. Past the 1,000-result cap. No login.

- **URL**: https://apify.com/scrapersdelight/domain-com-au-scraper.md
- **Developed by:** [Scrapers Delight](https://apify.com/scrapersdelight) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.45 / 1,000 listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Domain.com.au Scraper do?

**Domain.com.au Scraper** reads Australian property listings from [Domain.com.au](https://www.domain.com.au) - for sale, for rent, sold, new homes and share - and returns one row per listing with the whole listing in it: price, address and GPS, beds, baths, parking, land size, features, the listing agents' names, emails and mobiles, the agency's contacts, open-home times, auction date, sold price and date, price history, photos and floor plans. Built for buyers' agents, investors, property analysts, proptech teams and agent lead generation.

Also searched as: Domain scraper, Domain.com.au API, Domain property scraper, Australian real estate scraper, Domain sold prices scraper.

- **The full listing in every row:** description, features, agents' email and mobile, agency phone and email, inspections, auction, sold details - no separate "detail" add-on to pay for.
- **Search the way Domain does:** suburbs, postcodes, regions, areas and states by name, or paste any Domain search URL and every filter in it is applied.
- **Past Domain's 1,000-result limit:** Domain serves 1,000 listings per search; larger searches are split into price bands automatically (a 1,147-listing sold search came back with 1,146 unique listings from 3 bands).
- **Price history and valuation:** past sales and rentals of the property, Domain's value estimate and its weekly rent estimate - on 90-95% of rows in our test runs.
- **Monitor mode:** schedule it and get only new or re-priced listings, plus the ids of listings that are gone.
- **No login, cookies or Domain API key:** type places or paste links.
- **Export anywhere:** JSON, CSV, Excel, XML; schedules, webhooks, Make, Zapier, n8n, Google Sheets, Slack; Apify API and MCP for AI agents.

### What data can you get from Domain.com.au?

<table>
<tr><td>🏠 Address, suburb, state, postcode</td><td>📍 Latitude / longitude</td><td>🏷️ Property type(s)</td></tr>
<tr><td>🛏️ Bedrooms, bathrooms, parking</td><td>📐 Land size m², building area</td><td>✨ Features (`features`, `structuredFeatures`)</td></tr>
<tr><td>💲 Advertised price (`priceText`, `price`)</td><td>↔️ Price range (`priceFrom`, `priceTo`)</td><td>🔎 Filed price (`searchPrice`)</td></tr>
<tr><td>🔨 Auction date and location</td><td>🗓️ Open-home times (`inspections`)</td><td>✅ Sold price, date and method</td></tr>
<tr><td>👤 Agents: name, email, mobile, landline</td><td>🏢 Agency: name, phone, email, website, address</td><td>🔗 Agent and agency profile links</td></tr>
<tr><td>📈 Price history (`priceHistory`)</td><td>💰 Value estimate (`valuation`)</td><td>🔑 Weekly rent estimate</td></tr>
<tr><td>📝 Headline + full description</td><td>🖼️ Photos, floor plans, video, 3D tour</td><td>📄 VIC statement of information</td></tr>
<tr><td>🏫 Nearby schools (option)</td><td>📊 Suburb median price + days on market (option)</td><td>⏱️ Date listed, updated, days on market</td></tr>
</table>

On the 20-listing demo run (Bondi, for sale) every row had an agent name, email and mobile and the agency phone and email; on a 100-listing rental run (Richmond VIC) 100% had an agent email and 96% an agent phone.

### How to scrape Domain.com.au with Domain.com.au Scraper

1. [Create a free Apify account](https://console.apify.com/sign-up) - monthly free credit, no card needed.
2. Open [Domain.com.au Scraper](https://apify.com/scrapersdelight/domain-com-au-scraper) and click **Try for free**.
3. Type places into **Locations** (e.g. `Bondi NSW 2026`, `Inner West NSW`, `3121`) or paste Domain search URLs, pick the **Listing type** and set **Max results**.
4. Click **Start**. Listings stream into the dataset as they are read.
5. Open the **Storage** tab and **Export** as JSON, CSV or Excel - or put it on a schedule.

### ⬇️ Input

| Parameter | Type | Description |
|---|---|---|
| **🔍 What to scrape** | | |
| `locations` | List | Suburbs, postcodes, regions, areas or states: `"Bondi NSW 2026"`, `"bondi-nsw-2026"`, `"2026"`, `"Sydney Region"`, `"Inner West NSW"`, `"VIC"`. One search each. |
| `searchType` | Select | `buy`, `rent`, `sold`, `newHomes` or `share`. Default `buy`. |
| `startUrls` | List | Domain search URLs (every filter in them applied) and/or listing links or listing ids. |
| **🎯 Filters** (applied by Domain) | | |
| `propertyTypes` | Multi-select | House, Apartment, Townhouse, Land, Rural, Villa, Studio, Acreage... `house` and `apartment` include their sub-types as on Domain. |
| `minPrice` / `maxPrice` | Integer | Price range; weekly rent for rentals. |
| `minBedrooms` / `maxBedrooms`, `minBathrooms` / `maxBathrooms`, `minCarspaces` / `maxCarspaces` | Integer | Room and parking ranges. |
| `minLandSize` / `maxLandSize` + `landSizeUnit` | Integer, Select | Land size in m², hectares or acres. |
| `features` | Multi-select | Air conditioning, pool, pets allowed, solar panels, study, ensuite... |
| `keywords` | Text | Words in the listing, comma separated, e.g. `water views, renovated`. |
| `newOrEstablished` | Select | New builds only, established only, or any. |
| `includeSurroundingSuburbs` | Boolean | Widen each suburb to its neighbours. Default `false`. |
| `excludeUnderOffer` / `excludeDepositTaken` / `excludePriceWithheld` | Boolean | For sale / rent / sold searches respectively. |
| `inspectionsScheduled` / `auctionsScheduled` | Select | Today, this weekend, next weekend, next 7 days (Sydney time). |
| `availableFrom` | Date | Rentals available from this date. |
| `retirementOnly` / `ruralOnly` | Boolean | Retirement-village listings / Domain's rural section. |
| `sortBy` | Select | Featured, newest, oldest, price up/down, recently updated, suburb, most recently sold, next inspection, next auction. |
| `latitude`, `longitude`, `radiusKm` | Number | Radius search; each row then carries `distanceKm`. |
| **✂️ Refine results** | | |
| `soldWithin` | Select | Sold searches: last week ... last 2 years. Reads newest sales first and stops at the cutoff. |
| `listedWithinDays` | Integer | Only listings put on the market in the last N days. |
| **➕ Extra data** (same price) | | |
| `includePropertyHistory` | Boolean | Price history, value estimate, rent estimate. Default `true`. |
| `includeSchools` | Boolean | Nearby government and independent schools with distance and catchment. |
| `includeAreaInsights` | Boolean | Suburb median sold price, days on market and annual growth for the listing's bedrooms and house/unit. |
| **🔁 Monitoring** | | |
| `monitorMode` | Boolean | Only listings not delivered before, plus re-priced ones (`changeType`). Pairs with a schedule. |
| `monitorKey` | Text | Optional name for the monitor memory. |
| **📦 Output** | | |
| `maxResults` | Integer | Default `100`; `0` = everything that matches. |
| `maxResultsPerSearch` | Integer | Cap per location or URL. |
| `splitLargeSearches` | Boolean | Split searches over 1,000 listings into price bands. Default `true`. |
| `compact` | Boolean | About 30 core fields (address, price, rooms, agent contact, dates, link), sized for spreadsheets, AI agents and MCP. |
| `descriptionMaxLength` | Integer | Cut descriptions to N characters. |
| **⚙️ Advanced** | | |
| `proxyConfiguration` | Proxy | Leave empty; set only to use your own proxies. |
| `maxConcurrency` | Integer | Listing batches read in parallel (1-6, default 3). |

#### Input JSON

```json
{
  "locations": ["Bondi NSW 2026", "Richmond VIC 3121"],
  "searchType": "sold",
  "propertyTypes": ["house"],
  "minBedrooms": 3,
  "soldWithin": "last-three-months",
  "maxResults": 500
}
```

#### Type places the way Domain writes them

`Bondi NSW 2026` and `bondi-nsw-2026` go straight to Domain. Region and area names (`Sydney Region`, `Inner West NSW`) and bare suburb names are looked up with Domain's own place search; adding the state picks the right one when several match (`Richmond VIC` vs `Richmond NSW`). Anything that cannot be matched is listed in `RUN_SUMMARY` under `unresolvedInputs` and costs nothing.

#### Paste a search URL to keep every filter

Set up a search on domain.com.au, copy the address bar and paste it into `startUrls`. Path and query filters are applied: property type, bedrooms, bathrooms, car spaces, price, land size, features, keywords, new/established, exclusions, sort, map area, inspection and auction views. We checked 18 URL forms against the totals Domain's own pages show (all within 0-4%, the drift of a few hours). Anything the actor did not apply is written in that search's `notes`.

#### Surrounding suburbs are off unless you turn them on

Domain's website adds neighbouring suburbs by default; this actor reads only the suburb you typed unless `includeSurroundingSuburbs` is on. A pasted URL keeps its own setting (`ssubs=0` means off).

#### Ask for recent sales explicitly

Domain's sold records reach back to 2005 and its default order is not by date. For recent comparables set `sortBy` to **Most recently sold** or use `soldWithin` (e.g. last three months), which reads the newest sales first and stops at the cutoff.

#### Getting more than 1,000 listings

Domain answers 1,000 listings per search. With `maxResults` above 1,000 (or `0`) and `splitLargeSearches` on, the actor counts the search by price and reads each band of up to 1,000 to its end; the bands used are listed in `RUN_SUMMARY` (`splitInto`).

### ⬆️ Output

Every listing becomes one dataset item. A real row from the demo run (Bondi, for sale), shortened:

```json
{
  "listingId": "2021192936",
  "url": "https://www.domain.com.au/11-36-38-penkivil-street-bondi-nsw-2026-2021192936",
  "status": "RECENTLY_UPDATED",
  "saleMethod": "AUCTION",
  "propertyType": "Apartment / Unit / Flat",
  "bedrooms": 3, "bathrooms": 2, "parkingSpaces": 1,
  "priceText": "Auction 24 October",
  "searchPrice": 1600000,
  "auctionDate": "2026-10-24T10:00:00",
  "nextInspection": "2026-10-15T09:45:00",
  "dateListed": "2026-09-29T12:19:33+10:00",
  "daysOnMarket": 15,
  "address": "11/36-38 Penkivil Street, Bondi NSW 2026",
  "latitude": -33.8909833, "longitude": 151.2619444,
  "agencyName": "PPD Real Estate",
  "agencyPhone": "02 8355 1111",
  "agents": [{ "name": "...", "email": "...", "mobile": "...", "landline": "...", "profileUrl": "..." }],
  "imageCount": 10,
  "valuation": { "low": 1700000, "mid": 1980000, "high": 2260000, "confidence": "High", "date": "2026-10-02" }
}
```

#### Fields and how often they are filled

Measured on our test runs: **buy** = Bondi NSW for sale (20 listings), **rent** = Richmond VIC and neighbours (100), **sold** = Surry Hills NSW, 3+ bedrooms, every sale Domain holds (1,146).

| Field | What it is | buy | rent | sold |
|---|---|---|---|---|
| `listingId`, `url`, `address`, `suburb`, `state`, `postcode`, `latitude`, `longitude` | Listing id, link, address, GPS | 100% | 100% | 100% |
| `propertyType`, `bedrooms`, `bathrooms`, `parkingSpaces` | Type and rooms | 100% | 100% | 100% |
| `priceText` | Price as advertised | 100% | 100% | 100% |
| `price` | First $ amount in the advertised price | 30% | 100% | 92% |
| `searchPrice` | The price Domain files the listing under for its price filter | 100% | 100% | 80% |
| `description`, `headline` | Ad text | 100% | 100% | 99-100% |
| `agentName`, `agentEmail` | First listing agent | 100% | 100% | 58% |
| `agentPhone` | Agent mobile (else landline) | 100% | 96% | 58% |
| `agencyName`, `agencyPhone`, `agencyEmail` | Listing agency | 100% | 100% | 100% |
| `agencyWebsite` | Agency website | 100% | 69% | 98% |
| `nextInspection`, `inspections` | Open homes | 90% | 52% | - |
| `auctionDate`, `auctionLocation` | Scheduled auction | 45% | - | 49-50% |
| `soldPrice` | Sold price as the listing shows it | - | - | 92% (8% withheld) |
| `soldDate`, `soldMethod` | Sale date and method | - | - | 99% |
| `governmentRecordedSoldPrice` | Sold price from government records | - | - | 53% |
| `bond`, `dateAvailable`, `rentalMethod` | Rental terms | - | 97-100% | - |
| `features`, `structuredFeatures` | Listed features | 20% | 69-75% | 16% |
| `landAreaSqm` | Land size | 15% | 0% | 50% |
| `floorPlans` | Floor plan images | 100% | 56% | 92% |
| `images`, `imageUrl` | Photos | 100% | 100% | 100% |
| `priceHistory`, `valuation`, `rentalEstimatePerWeek` | Property history and estimates | 90-95% | 94% | 95% (Bondi, last month) |
| `dateListed`, `daysOnMarket` | Listed date, days on market | 100% | 100% | 100% |
| `statementOfInformationUrl` | VIC statement of information | VIC sales: 71% of 14 | - | - |
| `projectId` | New-development project | new homes: 100% | - | - |

Land size, features and floor plans are whatever the agent entered; apartments rarely carry a land size. Domain's sold records go back to 2005, and old sales rarely keep their agent: in the Bondi sold run, sales from 2024-2026 carried an agent on 92% of rows, sales before 2015 on about a quarter. The full field list with descriptions is in the **Output** tab.

### How can I use Domain.com.au data?

- 🏘️ **Buyers' agents and investors:** every listing in target suburbs with price guide, filed price, auction and open-home times, sorted by newest.
- 📉 **Comparable sales:** sold prices, dates, sale method, land size and days on market for a suburb, a street radius or a price band.
- 📞 **Agent and agency lead lists:** names, emails and mobiles of the agents listing in each suburb, with their agency contacts.
- 🔁 **Market monitoring:** a daily schedule in monitor mode delivers new listings and price changes only.
- 🏫 **Rental and family research:** weekly rent, bond, availability, nearby schools and catchments.
- 🤖 **Proptech and AI agents:** compact rows over the API or MCP for valuation models and chat assistants.

### How much does it cost to scrape Domain.com.au?

Domain.com.au Scraper is priced per listing: **$0.00045 per listing** ($0.45 per 1,000), with no start fee. Price history, schools and suburb insights are included at the same price.

| Listings | Price |
|---|---|
| 20 | $0.009 |
| 100 | $0.045 |
| 1,000 | $0.45 |
| 10,000 | $4.50 |

Apify's free plan includes monthly credit, enough for thousands of listings. A search that matches nothing costs nothing.

### Integrations, API, scheduling and MCP

Run it on a [schedule](https://docs.apify.com/platform/schedules) (daily monitor mode is the usual setup), send results to Google Sheets, Slack, Make, Zapier or n8n with [integrations](https://docs.apify.com/platform/integrations), or trigger a webhook when a run finishes. Call it from code with the [Apify API](https://apify.com/scrapersdelight/domain-com-au-scraper/api) - [Python](https://apify.com/scrapersdelight/domain-com-au-scraper/api/python) or [JavaScript](https://apify.com/scrapersdelight/domain-com-au-scraper/api/javascript) - or let an AI agent call it through the [Apify MCP server](https://apify.com/scrapersdelight/domain-com-au-scraper/api/mcp).

### More property and agent scrapers

- [RateMyAgent Scraper](https://apify.com/scrapersdelight/ratemyagent-scraper) - Australian real-estate agents with reviews, sales and contact details.
- [Rightmove Scraper](https://apify.com/scrapersdelight/rightmove-scraper) - UK property listings and estate agents.
- [Kyero Property Scraper](https://apify.com/scrapersdelight/kyero-property-scraper) - Spanish property listings with agent contacts.
- [LandFlip Scraper](https://apify.com/scrapersdelight/landflip-scraper) - land and rural property for sale in the US.
- [ServiceSeeking Scraper](https://apify.com/scrapersdelight/serviceseeking-au-scraper) - Australian tradies with ABNs.

See [all our scrapers](https://apify.com/scrapersdelight).

### Limits and empty runs

- Domain serves 1,000 listings per search; the price-band split goes past it, except for one exact price point holding more than 1,000 listings (noted in `RUN_SUMMARY`).
- Domain lists very few share-accommodation listings (one in all of NSW when we checked).
- `RUN_SUMMARY` gives, per search: Domain's own total, listings read and delivered, duplicates between searches, filtered and unchanged listings, the price bands used and why the search stopped. A search that reads fewer listings than Domain counts is marked `short read`.
- An empty run (no match, or an input we could not resolve) ends with nothing charged and says why in the status message.

### ❓ FAQ

#### How much does Domain.com.au Scraper cost?

$0.00045 per listing with no start fee: 1,000 full listings cost $0.45.

#### How many listings can Domain.com.au Scraper get?

Every listing that matches. Domain answers 1,000 per search, so larger searches are split by price: a 1,147-listing sold search came back with 1,146 unique listings from 3 bands. Set `maxResults` to `0` for everything.

#### Does Domain.com.au Scraper return agents' emails and phone numbers?

Yes, when the listing shows them: every listing agent's name, email, mobile and landline, plus the agency's phone, email and website. On our for-sale and rental test runs 100% of rows had an agent email.

#### Can Domain.com.au Scraper get sold prices?

Yes. Choose `sold` (optionally with `soldWithin`). On every 3+ bedroom sale Domain holds for Surry Hills (1,146): sold date and method on 99%, the shown sold price on 92% (the other 8% are "Price Withheld" and stay empty), a government-recorded price on 53%. Recent sales are withheld more often: 13 of 19 Bondi sales in the last month.

#### Can I paste a Domain search URL into Domain.com.au Scraper?

Yes. Paste it into `startUrls`; property type, rooms, price, land size, features, keywords, exclusions, sort and map area are all applied.

#### Can Domain.com.au Scraper track new listings and price changes?

Yes. Turn on `monitorMode` and schedule the run. Each run delivers only listings it has not delivered before plus re-priced ones (`changeType` = `new` / `priceChanged`), and lists the ids of listings that disappeared in `OUTPUT`.

#### Does Domain.com.au Scraper need a login, cookies or a Domain API key?

No. It reads the same public data a visitor sees on domain.com.au.

#### Can I use Domain.com.au Scraper with the Apify API or MCP?

Yes: start runs and fetch results with the [Apify API](https://apify.com/scrapersdelight/domain-com-au-scraper/api) from any language, or connect it to Claude, ChatGPT or other agents through the [Apify MCP server](https://apify.com/scrapersdelight/domain-com-au-scraper/api/mcp). `compact` keeps rows small for agents.

#### Why did Domain.com.au Scraper return no results?

The search matched nothing on Domain (check the same filters on domain.com.au), a location could not be resolved (see `unresolvedInputs` in `RUN_SUMMARY`), or in monitor mode nothing changed since the last run. Nothing is charged in any of these cases.

#### Is it legal to scrape Domain.com.au?

The actor reads publicly available listing data. You are responsible for how you use it, including the site's terms and privacy and anti-spam rules where they apply. This actor is not affiliated with or endorsed by Domain.com.au.

#### Your feedback

Found a bug or need a field or filter? Open an issue on the [Issues tab](https://apify.com/scrapersdelight/domain-com-au-scraper/issues/open) and we will look at it.

# Actor input Schema

## `locations` (type: `array`):

Suburbs, postcodes, regions, areas or states, e.g. "Bondi NSW 2026", "bondi-nsw-2026", "2026", "Sydney Region", "Inner West NSW", "VIC". Names are matched with Domain's own place search.

## `searchType` (type: `string`):

Which Domain market to search for the locations above. A pasted search URL keeps its own type.

## `startUrls` (type: `array`):

Domain search pages with your filters applied, e.g. https://www.domain.com.au/sale/bondi-nsw-2026/house/?price=1000000-3000000 (every filter in the URL is applied), or single listings, e.g. https://www.domain.com.au/131-336-sussex-street-sydney-nsw-2000-2021212740 or 2021212740.

## `propertyTypes` (type: `array`):

Leave empty for all types. "House" and "Apartment" include their sub-types, as on Domain.

## `minPrice` (type: `integer`):

Lowest price. For rentals this is the weekly rent, e.g. 500. Domain matches "Contact agent" listings by the price the agent filed.

## `maxPrice` (type: `integer`):

Highest price (weekly rent for rentals), e.g. 1500000 or 900.

## `minBedrooms` (type: `integer`):

At least this many bedrooms, e.g. 2.

## `maxBedrooms` (type: `integer`):

At most this many bedrooms. For studios use the Studio property type.

## `minBathrooms` (type: `integer`):

At least this many bathrooms.

## `maxBathrooms` (type: `integer`):

At most this many bathrooms.

## `minCarspaces` (type: `integer`):

At least this many car spaces.

## `maxCarspaces` (type: `integer`):

At most this many car spaces.

## `minLandSize` (type: `integer`):

Smallest land size, in the unit below, e.g. 600.

## `maxLandSize` (type: `integer`):

Largest land size, in the unit below.

## `landSizeUnit` (type: `string`):

Unit of the land size filter.

## `features` (type: `array`):

Only listings with all of these features, as Domain records them.

## `keywords` (type: `string`):

Only listings whose text mentions these words, e.g. "water views" or "renovated". Separate several with commas. Matched by Domain.

## `newOrEstablished` (type: `string`):

New builds only, established homes only, or both.

## `includeSurroundingSuburbs` (type: `boolean`):

Widen each suburb to its neighbours, as Domain's own search does by default. Off: only the suburb you typed.

## `excludeUnderOffer` (type: `boolean`):

For-sale searches: leave out listings already under offer or contract.

## `excludeDepositTaken` (type: `boolean`):

Rental searches: leave out listings where a deposit has been taken.

## `excludePriceWithheld` (type: `boolean`):

Sold searches: only sales with a published price.

## `inspectionsScheduled` (type: `string`):

Only listings with an open home in this window (Sydney time).

## `auctionsScheduled` (type: `string`):

Only listings going to auction in this window (Sydney time).

## `availableFrom` (type: `string`):

Rental searches: only listings available from this date, e.g. 2026-11-01.

## `retirementOnly` (type: `boolean`):

Only retirement-village listings.

## `ruralOnly` (type: `boolean`):

Only listings in Domain's rural section (farms, acreage, rural lifestyle).

## `sortBy` (type: `string`):

The order Domain returns listings in. With a result cap, this decides which listings you get.

## `latitude` (type: `number`):

Centre of a radius search, e.g. -33.8915. Use with Longitude and Radius; combines with any location above.

## `longitude` (type: `number`):

Centre of a radius search, e.g. 151.2767.

## `radiusKm` (type: `number`):

Only listings within this distance of the point; each row then carries distanceKm.

## `soldWithin` (type: `string`):

Sold searches: only sales in this period. The search reads the newest sales first and stops at the cutoff.

## `listedWithinDays` (type: `integer`):

Only listings put on the market in the last N days, e.g. 7. Pairs well with a daily schedule.

## `includePropertyHistory` (type: `boolean`):

Add the property's sale and rental history (dates, prices, agencies), Domain's value estimate range and its weekly rent estimate.

## `includeSchools` (type: `boolean`):

Add the nearby government and independent schools with distance, type, sector and catchment.

## `includeAreaInsights` (type: `boolean`):

Add the suburb's median sold price, days on market and annual growth for homes like this one (same bedrooms, house or unit).

## `monitorMode` (type: `boolean`):

Deliver only listings this search has not delivered before, plus ones whose price changed (changeType = new / priceChanged). Listings gone since the last run are listed in OUTPUT.

## `monitorKey` (type: `string`):

Optional name for the monitor memory, e.g. "bondi-houses". Empty: one memory per distinct set of inputs.

## `maxResults` (type: `integer`):

Most listings to deliver in this run, across all searches. 0 = everything that matches (Domain serves 1,000 per search; larger searches are split by price to go past that).

## `maxResultsPerSearch` (type: `integer`):

Most listings from any one location or search URL. 0 = no per-search cap.

## `splitLargeSearches` (type: `boolean`):

When a search matches more than 1,000 listings and you want more, split it into price bands so every listing can be reached.

## `compact` (type: `boolean`):

Core fields only (address, price, beds, agent contact, dates, link) - trimmed for AI/MCP pipelines and spreadsheets.

## `descriptionMaxLength` (type: `integer`):

Cut descriptions to this many characters. 0 = full text.

## `proxyConfiguration` (type: `object`):

Leave empty: the actor picks its own route to Domain. Set this only to send the requests through your own proxies.

## `maxConcurrency` (type: `integer`):

Listing batches read in parallel (25 listings each).

## Actor input object example

```json
{
  "locations": [
    "Bondi NSW 2026"
  ],
  "searchType": "buy",
  "landSizeUnit": "m2",
  "newOrEstablished": "any",
  "includeSurroundingSuburbs": false,
  "excludeUnderOffer": false,
  "excludeDepositTaken": false,
  "excludePriceWithheld": false,
  "inspectionsScheduled": "any",
  "auctionsScheduled": "any",
  "retirementOnly": false,
  "ruralOnly": false,
  "sortBy": "default",
  "soldWithin": "any",
  "includePropertyHistory": true,
  "includeSchools": false,
  "includeAreaInsights": false,
  "monitorMode": false,
  "maxResults": 20,
  "splitLargeSearches": true,
  "compact": false,
  "descriptionMaxLength": 0,
  "maxConcurrency": 3
}
```

# Actor output Schema

## `results` (type: `string`):

One item per listing: price, address, property details, agents' contacts, inspections, auction and sold details.

## `summary` (type: `string`):

Per-search Domain totals, listings read and delivered, price bands used, filtered and unchanged listings, unresolved inputs and transport stats.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "locations": [
        "Bondi NSW 2026"
    ],
    "searchType": "buy",
    "maxResults": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapersdelight/domain-com-au-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "locations": ["Bondi NSW 2026"],
    "searchType": "buy",
    "maxResults": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapersdelight/domain-com-au-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "locations": [
    "Bondi NSW 2026"
  ],
  "searchType": "buy",
  "maxResults": 20
}' |
apify call scrapersdelight/domain-com-au-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapersdelight/domain-com-au-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/MUgJtF76lJElnZwf2/builds/NRdvLePDZf7vwiddJ/openapi.json
