# Domain.com.au Property Scraper 🏠 (`shahidirfan/domain-com-au-property-scraper`) Actor

An actor designed to extract real estate data from Domain.com.au, one of Australia's leading property portals. Efficiently gather listings for sales and rentals. For optimal reliability and to ensure consistent access to data, the use of Australian residential proxies is strongly recommended.

- **URL**: https://apify.com/shahidirfan/domain-com-au-property-scraper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Categories:** Real estate, Developer tools, Automation
- **Stats:** 77 total users, 11 monthly users, 98.6% runs succeeded, 4 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.00 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

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

Collects Australian real estate listings from Domain.com.au into clean, structured datasets. Extract prices, addresses, property features, agency details, images, and geolocation data from sale and rental listings across Australia. You can search by state, suburb, location slug, or paste any Domain.com.au search URL as input. Data is available as JSON, CSV, Excel, or XML for market research, property analysis, and lead generation.

Domain.com.au is one of Australia's largest property portals, but it does not provide a bulk export or API for structured property data. This Actor fills that gap by collecting public listing data from search results, making it usable for analysis, dashboards, and automated workflows.

### Why use Domain.com.au Property Scraper?

- **Structured property dataset** - Collect dozens of fields per listing including address, price, bedrooms, bathrooms, parking, land size, property type, coordinates, and listing metadata without manual copy-paste.
- **Flexible targeting** - Search by state (NSW, VIC, QLD, WA, SA, TAS, ACT, NT), suburb or location slug, or paste a pre-filtered Domain.com.au search URL for full control over sorting, property type, and search filters.
- **Sale and rental support** - Defaults to sale listings but also works with rental search URLs to collect leasing data.
- **Agency and agent data** - Each listing includes agency name, logo, branding, and agent contact details for lead generation.
- **Auction and inspection tracking** - Capture auction dates, open home times, and listing status for time-sensitive research.
- **Duplicate-safe output** - Repeated listings are merged by ID or URL automatically.
- **Automation-ready** - Run on demand or schedule recurring collections. Export results directly or connect via API, webhooks, Google Sheets, or Make.
- **Scalable with proxies** - Use Apify Proxy with residential groups for large collections beyond 100 listings.

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

| Field | Description |
|-------|-------------|
| `address` | Full street address including suburb and state |
| `price` | Cleaned display price (sale or rental) |
| `propertyType` | Property type (House, Apartment, Townhouse, Land, etc.) |
| `beds` | Number of bedrooms |
| `baths` | Number of bathrooms |
| `parking` | Number of car spaces |
| `landSize` | Land size with unit (e.g. 5000m2) |
| `latitude` / `longitude` | GPS coordinates for mapping |
| `agency` | Agency name, contacts, logo, and branding |
| `images` | Cleaned listing image URLs with duplicates removed |
| `features` | Property feature labels (Pool, Dishwasher, Shed, etc.) |
| `inspectionDetails` | Open home times and inspection dates |
| `auctionDetails` | Auction date and venue when available |
| `dateListed` | Date the property was listed |
| `headline` | Listing headline text |
| `summaryDescription` | Short property description |

### How to scrape Domain.com.au property data

1. Open the Domain.com.au Property Scraper on Apify Store.
2. Choose your targeting method: select a state from the dropdown, enter a location slug, or paste a Domain search URL.
3. Set the maximum number of listings to collect.
4. Optionally enable Apify Proxy for larger collections.
5. Run the Actor.
6. Download the dataset or connect it to Google Sheets, Make, or an API workflow.

### Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `startUrl` | String | No | Australia-wide sale search | Domain.com.au search URL to collect from. Overrides state/location when provided. |
| `state` | String | No | All Australia | State or territory code: `nsw`, `vic`, `qld`, `wa`, `sa`, `tas`, `act`, `nt` |
| `location` | String | No | Empty | Location slug or suburb name (example: `sydney-nsw` or `Melbourne VIC`) |
| `maxResults` | Integer | No | `20` | Maximum number of listings to collect |
| `proxyConfiguration` | Object | No | Apify Proxy disabled | Proxy settings for data collection |

### Output Data

Each dataset item includes the following fields:

| Field | Type | Description |
|-------|------|-------------|
| `id` | String | Listing identifier |
| `url` | String | Full listing URL |
| `address` | String | Full display address |
| `unitNumber` | String | Unit or apartment number |
| `streetNumber` | String | Street number |
| `street` | String | Street name |
| `suburb` | String | Suburb |
| `state` | String | State or territory code |
| `postcode` | String | Postal code |
| `latitude` | Number | Listing latitude |
| `longitude` | Number | Listing longitude |
| `price` | String | Cleaned display price |
| `propertyType` | String | Property type label |
| `propertyTypes` | Array | All property type labels |
| `beds` | Number | Bedroom count |
| `baths` | Number | Bathroom count |
| `parking` | Number | Car space count |
| `landSize` | String | Land size with unit |
| `buildingArea` | Object | Building area details |
| `isNew` | Boolean | New development flag |
| `isRetirement` | Boolean | Retirement living flag |
| `isRural` | Boolean | Rural property flag |
| `listingType` | String | Sale or rental |
| `headline` | String | Listing headline |
| `summaryDescription` | String | Short description |
| `features` | Array | Property feature labels |
| `labels` | Array | Listing labels (New, etc.) |
| `images` | Array | Cleaned image URLs |
| `hasFloorPlan` | Boolean | Floor plan availability |
| `hasVideo` | Boolean | Video availability |
| `hasMatterport` | Boolean | Matterport tour availability |
| `inspectionDetails` | Object | Open times and inspection info |
| `auctionDetails` | Object | Auction date and location |
| `dateListed` | String | Listing date |
| `agency` | Object | Agency name, contacts, logo, and branding |
| `source` | String | Source website |
| `scrapedAt` | String | Collection timestamp |

### Usage Examples

#### Basic Australia-Wide Search

Collect the first set of sale listings from across Australia:

```json
{
  "maxResults": 20,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

#### Search a Specific State

Collect listings from New South Wales:

```json
{
  "state": "nsw",
  "maxResults": 100,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

#### Search a Suburb or Location

Use a location slug to target a specific suburb:

```json
{
  "location": "sydney-nsw",
  "maxResults": 100,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

#### Large-Scale State Collection

Collect thousands of listings across Queensland:

```json
{
  "state": "qld",
  "maxResults": 500,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

#### Rental Listings

Use a rental search URL to collect leasing data:

```json
{
  "startUrl": "https://www.domain.com.au/rent/melbourne-vic/",
  "maxResults": 100,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

#### Custom Search with Filters

Paste a pre-filtered Domain.com.au search URL for precise control:

```json
{
  "startUrl": "https://www.domain.com.au/sale/sydney-region-nsw/house/?excludeunderoffer=1&sort=dateupdated-desc",
  "maxResults": 200,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

### Sample Output

```json
{
  "id": "2020906759",
  "url": "https://www.domain.com.au/50-whiteash-road-bonogin-qld-4213-2020906759",
  "address": "50 Whiteash Road, Bonogin QLD 4213",
  "suburb": "Bonogin",
  "state": "QLD",
  "postcode": "4213",
  "latitude": -28.1385,
  "longitude": 153.352,
  "price": "$1,250,000",
  "propertyType": "House",
  "beds": 5,
  "baths": 3,
  "parking": 4,
  "landSize": "5000m2",
  "isNew": false,
  "listingType": "Sale",
  "headline": "Stunning Family Home with Mountain Views",
  "summaryDescription": "Beautifully presented family home set on 5000sqm with panoramic mountain views, modern finishes, and spacious living areas.",
  "features": ["Dishwasher", "Pool", "Shed"],
  "images": ["https://rimh2.domainstatic.com.au/example-image.jpg"],
  "hasVideo": true,
  "hasFloorPlan": true,
  "inspectionDetails": {
    "closingDate": "2026-07-15T14:00:00Z"
  },
  "dateListed": "2026-06-28",
  "agency": {
    "name": "Example Realty",
    "contacts": [
      {
        "name": "Alex Chen",
        "phone": "0400 123 456",
        "email": "alex@examplerealty.com.au"
      }
    ],
    "branding": {
      "logo": "https://example.com/logo.png"
    }
  },
  "source": "https://www.domain.com.au",
  "scrapedAt": "2026-06-30T10:15:00.000Z"
}
```

### Tips for Best Results

- **Start small** - Begin with `maxResults: 20` to verify the output before scaling up.
- **Target precisely** - Use `state` and `location` together, or paste a filtered search URL into `startUrl` for full control over sort order and property filters.
- **Use proxies for large runs** - Enable Apify Proxy with residential groups when collecting more than 100 listings to improve reliability.
- **Check available results** - The Actor stops automatically when all available listings for your search are collected. If you request 500 but only 300 exist, you get 300.
- **Handle missing fields** - Some fields are empty when the source page does not publish that information. The Actor saves only what is available.
- **Export in your format** - Download as JSON for pipelines, CSV or Excel for spreadsheets, or XML for system integrations.

### Integrations

- **Google Sheets** - Send property data to spreadsheets for team review.
- **Airtable** - Build searchable property databases.
- **Slack** - Get notified when new collection runs complete.
- **Webhooks** - Trigger downstream workflows after each run.
- **Make** - Automate reporting and data processing flows.
- **Zapier** - Connect property data to hundreds of apps.

#### Export Formats

- **JSON** - For applications and data pipelines
- **CSV** - For spreadsheet analysis
- **Excel** - For business reporting
- **XML** - For system integrations

### Frequently Asked Questions

#### Can I collect listings from a specific suburb?

Yes. Use the `location` parameter with a suburb slug like `sydney-nsw` or `richmond-vic`. You can combine it with `state` for precise targeting.

#### How many listings can I collect?

Set `maxResults` to any number. The Actor collects up to that amount or until it reaches the total available listings on Domain.com.au for your search.

#### What property types are supported?

All property types available on Domain.com.au including houses, apartments, townhouses, villas, units, land, rural properties, retirement living, and new developments.

#### Can I collect rental listings instead of sales?

Yes. Use a rental search URL in the `startUrl` parameter, such as `https://www.domain.com.au/rent/nsw/`. The Actor processes rental listings the same way.

#### Can I export the data to CSV or Excel?

Yes. Apify datasets support export to JSON, CSV, Excel, XML, and HTML. Download results directly from the Apify Console or using the API.

#### Should I use a proxy?

Apify Proxy is recommended for collections over 100 listings. Residential proxies provide the best reliability for larger datasets.

#### What happens if a page fails to load?

The Actor retries failed pages automatically. If a page continues to fail after retries, it collects whatever data was successfully retrieved.

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

Scraping public web data can be legal, but you are responsible for complying with applicable laws, Domain.com.au's terms of service, and privacy rules. Use data responsibly and respect rate limits.

### Related Actors

- [OneRoof.co.nz Property Scraper](https://apify.com/shahidirfan/oneroof-co-nz-property-scraper) - Extract New Zealand property listings from OneRoof
- [Housing.com Property Scraper](https://apify.com/shahidirfan/housing-com-property-scraper) - Collect Indian property data from Housing.com
- [iProperty Scraper](https://apify.com/shahidirfan/iproperty-scraper) - Extract Malaysian property listings from iProperty
- [Onthemarket Property Scraper](https://apify.com/shahidirfan/onthemarket-property-scraper) - Collect UK property listings from OnTheMarket

### Support

For issues, feature requests, or custom Actor work, use the Issues tab on the Actor page or contact the developer through Apify.

### Legal Notice

This Actor is designed for legitimate data collection from publicly available sources. Users are responsible for using the data responsibly and complying with applicable laws and Domain.com.au's terms of service.

# Actor input Schema

## `startUrl` (type: `string`):

Paste a Domain.com.au search URL. If location/state is provided, those filters are used instead.

## `state` (type: `string`):

Australian state or territory code (nsw, vic, qld, wa, sa, tas, act, nt).

## `location` (type: `string`):

Location slug or suburb/state text (example: sydney-nsw or Sydney NSW).

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

Maximum number of property listings to collect. Increase this for larger datasets.

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

Proxy settings for requests. Residential proxies are recommended for larger result sets.

## Actor input object example

```json
{
  "startUrl": "https://www.domain.com.au/sale/nsw/?excludeunderoffer=1&sort=dateupdated-desc",
  "state": "",
  "location": "sydney-nsw",
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "startUrl": "https://www.domain.com.au/sale/?excludeunderoffer=1&sort=dateupdated-desc",
    "maxResults": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/domain-com-au-property-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 = {
    "startUrl": "https://www.domain.com.au/sale/?excludeunderoffer=1&sort=dateupdated-desc",
    "maxResults": 20,
}

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

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

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

```

## CLI example

```bash
echo '{
  "startUrl": "https://www.domain.com.au/sale/?excludeunderoffer=1&sort=dateupdated-desc",
  "maxResults": 20
}' |
apify call shahidirfan/domain-com-au-property-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=shahidirfan/domain-com-au-property-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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