# Domain.com.au Scraper – Bypass Akamai (`scrapemind/domaincomau-scraper`) Actor

Unlock Comprehensive Real Estate Data from Domain.com.au
Discover a wealth of information from Domain.com.au's vast property listings. Effortlessly extract detailed descriptions, high-quality images, unique features, and essential property details.

- **URL**: https://apify.com/scrapemind/domaincomau-scraper.md
- **Developed by:** [ScrapeMind](https://apify.com/scrapemind) (community)
- **Categories:** Real estate, Automation
- **Stats:** 197 total users, 4 monthly users, 100.0% runs succeeded, 16 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

$40.00/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period. You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

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

## 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

## Domain.com.au Scraper

Extract structured real estate data from Domain.com.au at scale — listings for sale, rent, and sold properties across Australia.

***

### Features

- Scrapes **for sale**, **rental**, and **sold** listings
- Supports all Domain.com.au search URL filters (price, bedrooms, property type, suburb, region, state, etc.)
- Captures the full listing dataset: address, price, property details, agency, agents, inspection times, auction dates, sold data, features, images, floor plans, and videos
- Full scrape mode to retrieve all available results (up to 10,000)
- Optional Apify datacenter or residential proxy support

***

### Input

#### Parameters

| Field | Type | Required | Description |
|---|---|---|---|
| `startUrls` | array | Yes | One or more Domain.com.au search URLs |
| `maxPages` | integer | No | Pages to scrape per URL (default: 1, max: 50) |
| `fullScrape` | boolean | No | Scrape all available pages (up to 50). Overrides `maxPages` |
| `CSV-Format` | boolean | No | Format output for CSV export |
| `data-center-proxy` | boolean | No | Route requests through Apify datacenter proxies |
| `residential-proxy` | boolean | No | Route requests through Apify residential proxies |

#### Example Input

```json
{
  "startUrls": [
    { "url": "https://www.domain.com.au/sale/melbourne-vic-3000/?bedrooms=2-any&price=500000-1000000" }
  ],
  "maxPages": 5,
  "fullScrape": false
}
```

#### Supported URL Filters

Any standard Domain.com.au search URL is supported, including:

- Listing type: `/sale/`, `/rent/`, `/sold/`, `/new-homes/`
- Location: suburb (`/sale/melbourne-vic-3000/`), region, or state
- Property type: `/sale/sydney-nsw/town-house/` or `?ptype=apartment-unit-flat`
- Price range: `?price=500000-1000000`
- Bedrooms / bathrooms / carspaces: `?bedrooms=2-4&bathrooms=1-any`
- Land size: `?landsize=400-800&landsizeunit=m2`
- Features: `?features=swimmingpool,airconditioning`
- Sort: `?sort=price-asc`, `dateupdated-desc`, `auction-asc`, etc.
- Exclude under offer: `?excludeunderoffer=1`
- Inspection / auction schedule: `?inspectiondate=7`, `?auctiondate=3`

***

### Output

Each result item contains the following fields:

#### Listing

| Field | Type | Description |
|---|---|---|
| `id` | string | Unique listing ID |
| `listingUrl` | string | Full URL to the listing page on Domain.com.au |
| `listingType` | string | `Sale`, `Rent`, `Sold`, or `NewHomes` |
| `price` | string | Display price (e.g. `"$850,000"`, `"$550/week"`) |
| `propertyType` | string | Raw type from API (e.g. `ApartmentUnitFlat`, `House`) |
| `propertyTypeFormatted` | string | Human-readable type (e.g. `Apartment`, `House`, `Land`) |
| `propertyStatus` | string | Listing status (e.g. `New`, `Sold`, `UnderContract`) |
| `tagText` | string | Display tag (e.g. `"Sold by private treaty 06 May 2026"`) |
| `tagClassName` | string | CSS-style tag class (e.g. `is-sold`, `is-new`, `is-under-contract`) |
| `promoLevel` | string | Listing tier: `STANDARD`, `PREMIUM`, `PREMIUM_PLUS`, or `ELITE` |
| `hasMatterport` | boolean | Whether a 3D virtual tour is available |
| `hasVideo` | boolean | Whether a video is attached to the listing |
| `isRural` | boolean | Whether the property is a rural type |
| `isRetirement` | boolean | Whether the listing is a retirement property |
| `dateListed` | string | ISO datetime when first listed |

#### Sold Data

| Field | Type | Description |
|---|---|---|
| `soldPrice` | string | Sold price display string (e.g. `"$405,000"`) — only on Sold listings |
| `soldDate` | string | ISO datetime of the sale — only on Sold listings |

#### Property Details

| Field | Type | Description |
|---|---|---|
| `bedrooms` | number | Number of bedrooms |
| `bathrooms` | number | Number of bathrooms |
| `carspaces` | number | Number of car spaces |
| `landAreaSize` | number | Land area size (0 if not applicable) |
| `landAreaUnit` | string | Unit for land area (e.g. `SQUARE_METERS`, `HECTARES`) |
| `features` | string | Comma-separated property features (e.g. `AirConditioning, SwimmingPool, Gym`) |

#### Address

| Field | Type | Description |
|---|---|---|
| `displayAddress` | string | Full formatted address (e.g. `"12/45 Collins Street, Melbourne"`) |
| `unitNumber` | string | Unit or apartment number |
| `streetNumber` | string | Street number |
| `street` | string | Street name |
| `suburb` | string | Suburb name |
| `postcode` | string | Postcode |
| `state` | string | State code (e.g. `VIC`, `NSW`) |
| `latitude` | number | Latitude coordinate |
| `longitude` | number | Longitude coordinate |

#### Media

| Field | Type | Description |
|---|---|---|
| `images` | string | Comma-separated photo URLs |
| `floorPlanImages` | string | Comma-separated floor plan image URLs |
| `videoUrls` | string | Comma-separated video URLs |

#### Agency

| Field | Type | Description |
|---|---|---|
| `agencyId` | number | Agency ID |
| `agencyType` | string | `Agency` or `Private` |
| `agencyName` | string | Agency display name |
| `agencyUrl` | string | Agency profile URL on Domain.com.au |
| `agencyLogoUrl` | string | Agency logo image URL (170×60) |
| `agencySkeletonLogoUrl` | string | Agency logo image URL (smaller variant) |
| `brandColor` | string | Agency brand hex colour (e.g. `"#20385e"`) |
| `brandingAppearance` | string | `light` or `dark` — derived from brand colour luminance |

#### Agents

| Field | Type | Description |
|---|---|---|
| `agentNames` | string | Comma-separated agent names |
| `agentPhotoUrls` | string | Comma-separated agent profile photo URLs |

#### Inspections & Auctions

| Field | Type | Description |
|---|---|---|
| `nextInspectionOpen` | string | ISO datetime of next open inspection start |
| `nextInspectionClose` | string | ISO datetime of next open inspection end |
| `auctionDate` | string | ISO datetime of scheduled auction |

#### Example Output Item

```json
{
  "id": "2020774342",
  "listingUrl": "https://www.domain.com.au/2-301-la-trobe-street-melbourne-vic-3000-2020774342",
  "listingType": "Sold",
  "price": "$405,000",
  "propertyType": "ApartmentUnitFlat",
  "propertyTypeFormatted": "Apartment",
  "propertyStatus": "Sold",
  "tagText": "Sold by private treaty 06 May 2026",
  "tagClassName": "is-sold",
  "promoLevel": "STANDARD",
  "hasMatterport": false,
  "hasVideo": false,
  "isRural": false,
  "isRetirement": false,
  "dateListed": "2026-04-20T01:53:05",
  "soldPrice": "$405,000",
  "soldDate": "2026-05-06T00:00:00+10:00",
  "features": "AirConditioning, BuiltInWardrobes, Floorboards, SwimmingPool, CityViews, Gym, Intercom, Heating, Dishwasher",
  "bedrooms": 1,
  "bathrooms": 1,
  "carspaces": 0,
  "landAreaSize": 0,
  "landAreaUnit": "",
  "displayAddress": "2/301 La Trobe Street, Melbourne",
  "unitNumber": "2",
  "streetNumber": "301",
  "street": "La Trobe Street",
  "suburb": "Melbourne",
  "postcode": "3000",
  "state": "VIC",
  "latitude": -37.8123,
  "longitude": 144.9571,
  "images": "https://rimh2.domainstatic.com.au/.../photo1.jpg,%20https://rimh2.domainstatic.com.au/.../photo2.jpg",
  "floorPlanImages": "",
  "videoUrls": "",
  "agencyId": 232,
  "agencyType": "Agency",
  "agencyName": "MICM Real Estate",
  "agencyUrl": "",
  "agencyLogoUrl": "https://rimh2.domainstatic.com.au/.../logo_232.png",
  "agencySkeletonLogoUrl": "https://rimh2.domainstatic.com.au/.../logo_232_small.png",
  "brandColor": "#20385e",
  "brandingAppearance": "dark",
  "agentNames": "Jane Smith, Mark Johnson",
  "agentPhotoUrls": "https://rimh2.domainstatic.com.au/.../agent1.jpg,%20https://rimh2.domainstatic.com.au/.../agent2.jpg",
  "nextInspectionOpen": "",
  "nextInspectionClose": "",
  "auctionDate": ""
}
```

***

### Use Cases

- Real estate market analysis and price tracking
- Lead generation for agents and vendors
- Investment research and suburb comparison
- Building property datasets for ML models
- Monitoring new listings and price changes

***

### API Usage

```bash
curl "https://api.apify.com/v2/acts/scrapemind~domaincomau-scraper/runs?token=YOUR_API_TOKEN" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "startUrls": [{ "url": "https://www.domain.com.au/sale/sydney-nsw-2000/" }],
    "maxPages": 3
  }'
```

***

### Support

If you have any issues or feature requests, feel free to contact me.

# Actor input Schema

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

search urls you want to scrape

## `CSV-Format` (type: `boolean`):

Format the output for CSV. Disable will use JSON format

## `fullScrape` (type: `boolean`):

When enabled, scrapes all available pages (up to 50 pages max)

## `maxPages` (type: `integer`):

Maximum number of pages to scrape (max: 50). If not set: defaults to 1 page, or 50 when Full Scrape is enabled.

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

Select proxies to be used by your crawler.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.domain.com.au/sale/melbourne-region-vic/?price=200000-9000000&excludeunderoffer=1&lastsearchdate=2024-09-30t19:02:18.625z"
    }
  ],
  "CSV-Format": true,
  "fullScrape": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing all scraped property listings

# 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 = {
    "startUrls": [
        {
            "url": "https://www.domain.com.au/sale/melbourne-region-vic/?price=200000-9000000&excludeunderoffer=1&lastsearchdate=2024-09-30t19:02:18.625z"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapemind/domaincomau-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 = {
    "startUrls": [{ "url": "https://www.domain.com.au/sale/melbourne-region-vic/?price=200000-9000000&excludeunderoffer=1&lastsearchdate=2024-09-30t19:02:18.625z" }],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapemind/domaincomau-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 '{
  "startUrls": [
    {
      "url": "https://www.domain.com.au/sale/melbourne-region-vic/?price=200000-9000000&excludeunderoffer=1&lastsearchdate=2024-09-30t19:02:18.625z"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call scrapemind/domaincomau-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapemind/domaincomau-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/bkApWJE8Z7gi0llQe/builds/gJW0iv6RNOhCt26db/openapi.json
