# realestate.com.au Property Scraper (`mrdoe/realestate-com-au-scraper`) Actor

Extracts property listings from realestate.com.au for-sale, rental and sold search results: price, address, bedrooms, bathrooms, parking, land size, agent and agency details, images and inspection times.

- **URL**: https://apify.com/mrdoe/realestate-com-au-scraper.md
- **Developed by:** [MrDoe](https://apify.com/mrdoe) (community)
- **Categories:** Real estate, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $15.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/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

![Realestate Com Au Scraper hero](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/realestate-com-au-scraper--hero.png)

### What does the realestate.com.au Property Scraper do?

The realestate.com.au Property Scraper extracts property listings from [realestate.com.au](https://www.realestate.com.au), Australia's largest property portal. Paste one or more Buy, Rent, or Sold search result URLs (or direct listing URLs) and the Actor returns clean, structured data for every property: price, full address, suburb, state, postcode, bedrooms, bathrooms, parking, land size, property type, listing agent and agency, photos, floorplans, inspection times, and the listing description. Use it for property market research, buyer and investor analysis, agent lead lists, and price monitoring across suburbs.

The easiest way to try it: open the Actor, keep the pre-filled example search URL, and click **Start**.

### Why use the realestate.com.au Property Scraper?

- **Complete listing data** — location, price, property attributes, agent and agency contact details, media, and inspection times in one row per property.
- **Any search you can build on the site** — filter by suburb, price, property type, or bedrooms on realestate.com.au, then hand the Actor the URL. Sold listings are supported for sale-price history.
- **Clean, structured output** — normalized fields, numbers as numbers, missing values as `null`, no raw HTML or tracking junk. Ready for a spreadsheet or database immediately.
- **Automatic pagination** — the Actor walks through every results page up to your limit; you don't paste page-by-page URLs.
- **Runs on a schedule** — refresh a suburb feed daily or weekly and push updates straight into your own tools.
- **No code and no maintenance** — runs on Apify's infrastructure with retries, monitoring, and integrations built in.

### What makes this different?

This Actor is focused on the Australian market and uses Australian residential IP addresses by default, which is what it takes to load realestate.com.au reliably. It also returns a wider field set than a typical listing scraper — agent and agency contact details, floorplans, auction dates, and inspection times are included, not just the headline price and bedroom count.

### Pricing

This Actor uses pay-per-event pricing: a small fixed charge per run start, plus a per-property charge for each listing returned in the dataset. You only pay for the properties you actually collect. Exact rates are shown on the Actor's page in Apify Console.

### What data can you extract?

![Realestate Com Au Scraper dataset output](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/realestate-com-au-scraper--output.png)

![Realestate Com Au Scraper data fields](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/realestate-com-au-scraper--fields.png)

| Field                                               | Description                                                                           |
| --------------------------------------------------- | ------------------------------------------------------------------------------------- |
| `id`                                                | realestate.com.au listing ID                                                          |
| `url`                                               | Canonical link to the listing                                                         |
| `channel`                                           | `buy`, `rent`, or `sold`                                                              |
| `listingStatus`                                     | Listing status where published (e.g. active, sold)                                    |
| `title`                                             | Listing headline                                                                      |
| `address`                                           | Full display address                                                                  |
| `streetAddress`, `suburb`, `state`, `postcode`      | Address components                                                                    |
| `latitude`, `longitude`                             | Property coordinates, where available                                                 |
| `propertyType`                                      | House, Apartment, Townhouse, Land, etc.                                               |
| `price`                                             | Displayed price or price guide text                                                   |
| `bedrooms`, `bathrooms`, `parkingSpaces`, `studies` | Property features as numbers                                                          |
| `landSize`, `buildingSize`                          | Area with unit, where available                                                       |
| `propertyFeatures`                                  | List of extra features (air conditioning, pool, etc.)                                 |
| `description`                                       | Full listing description                                                              |
| `agencyName`, `agencyPhone`, `agencyLogo`           | Listing agency name, phone number, and logo image                                     |
| `agents`                                            | Listing agents with name, job title, phone, email, and photo where published          |
| `listingTier`                                       | The listing's prominence tier on realestate.com.au (e.g. premiere, feature, standard) |
| `inspections`                                       | Upcoming inspection start and end times                                               |
| `auctionDate`                                       | Auction date and time, for auction listings                                           |
| `dateListed`, `soldDate`                            | Listing and sale dates, where available                                               |
| `images`, `floorplans`                              | Photo and floorplan URLs                                                              |
| `scrapedAt`                                         | Timestamp the listing was collected                                                   |

### How to use the realestate.com.au Property Scraper

![How Realestate Com Au Scraper works](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/realestate-com-au-scraper--how-it-works.png)

1. Open the Actor in Apify Console.
2. On realestate.com.au, build the search you want (suburb, price range, property type, Buy / Rent / Sold) and copy the URL from your browser's address bar. Or copy a single property page URL.
3. Paste it into **Start URLs**. Add as many as you need.
4. Set **Max properties per start URL**.
5. Leave **Open each property page for full details** on for the complete record, or turn it off for a faster summary-only run.
6. Click **Start**, then open the **Dataset** tab to view and export the results.

### Input parameters

| Parameter               | Type    | Required | Default                        | Description                                                                                                                                                     |
| ----------------------- | ------- | -------- | ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `startUrls`             | array   | Yes      | Example Bondi Beach Buy search | realestate.com.au Buy, Rent, or Sold search result pages, or direct property listing page URLs.                                                                 |
| `maxItems`              | integer | No       | `3`                            | Maximum properties to collect per start URL. The Actor paginates until this is reached.                                                                         |
| `scrapePropertyDetails` | boolean | No       | `true`                         | When on, opens each property page for the full description, all media, agent details, and inspection times. When off, returns search-results summary data only. |
| `useCache`              | boolean | No       | `false`                        | Reuse data collected for the same listing in an earlier run to speed up recurring runs. Off by default so results are always fresh.                             |
| `proxyConfiguration`    | object  | No       | Australian residential         | Proxy settings. realestate.com.au blocks non-residential traffic, so Australian residential proxy is used by default.                                           |

### Output data

Each property is one dataset item. Download as JSON, CSV, Excel, or XML from the Dataset tab or the API.

```json
{
    "id": "145678901",
    "url": "https://www.realestate.com.au/property-house-nsw-bondi+beach-145678901",
    "channel": "buy",
    "listingStatus": "active",
    "title": "Renovated family home moments from the sand",
    "address": "12 Sample Street, Bondi Beach, NSW 2026",
    "streetAddress": "12 Sample Street",
    "suburb": "Bondi Beach",
    "state": "NSW",
    "postcode": "2026",
    "latitude": -33.891,
    "longitude": 151.274,
    "propertyType": "House",
    "price": "$3,200,000",
    "bedrooms": 4,
    "bathrooms": 2,
    "parkingSpaces": 1,
    "studies": null,
    "landSize": "410 m²",
    "buildingSize": null,
    "propertyFeatures": ["Air conditioning", "Built-in wardrobes", "Outdoor entertaining area"],
    "description": "A bright, north-facing four-bedroom home just a short walk from Bondi Beach...",
    "agencyName": "Sample Realty Bondi",
    "agencyPhone": "02 9000 0000",
    "agencyLogo": "https://i2.au.reastatic.net/1144x888/abc/logo.jpg",
    "agents": [
        {
            "name": "Jane Agent",
            "jobTitle": "Sales Agent",
            "phone": "0400 000 000",
            "email": "jane@example.com",
            "photo": "https://i2.au.reastatic.net/1144x888/def/main.jpg"
        }
    ],
    "listingTier": "premiere",
    "inspections": [{ "start": "2026-09-06T10:00:00+10:00", "end": "2026-09-06T10:30:00+10:00" }],
    "auctionDate": "2026-09-20T09:30:00",
    "dateListed": "2026-08-25",
    "soldDate": null,
    "images": ["https://i2.au.reastatic.net/1144x888/abc/main.jpg"],
    "floorplans": ["https://i2.au.reastatic.net/1144x888/xyz/floorplan.jpg"],
    "scrapedAt": "2026-08-31T00:00:00.000Z"
}
```

### Usage examples

**Every house for sale in a suburb**

```json
{
    "startUrls": [{ "url": "https://www.realestate.com.au/buy/property-house-in-carlton,+vic+3053/list-1" }],
    "maxItems": 100
}
```

**Rental listings across two suburbs**

```json
{
    "startUrls": [
        { "url": "https://www.realestate.com.au/rent/in-newtown,+nsw+2042/list-1" },
        { "url": "https://www.realestate.com.au/rent/in-erskineville,+nsw+2043/list-1" }
    ],
    "maxItems": 50
}
```

**Recently sold properties for price history**

```json
{
    "startUrls": [{ "url": "https://www.realestate.com.au/sold/in-toowong,+qld+4066/list-1" }],
    "maxItems": 200
}
```

**A single property, full detail**

```json
{
    "startUrls": [{ "url": "https://www.realestate.com.au/property-house-vic-tarneit-143160680" }]
}
```

### Tips for best results

- Build narrow searches (one suburb, a price band, a property type) rather than state-wide searches — runs finish faster and stay well within cost.
- Start with a small `maxItems` to confirm the search returns what you expect, then scale up.
- For sale-price analysis, use **Sold** search URLs — the `price` field then carries the achieved sale price where realestate.com.au publishes it.
- Turn off **Open each property page for full details** when you only need price, address, and bedroom counts across a large area — it is significantly faster.
- Schedule recurring runs for the same suburbs and combine with **Use cache** to keep repeat runs quick.

### Known limitations

- realestate.com.au uses strict bot protection. The Actor gets through with Australian residential proxy and automatic retries, but on a rare run an individual page may still be blocked and skipped — re-run it if a result set looks short.
- Some fields are not published for every listing (agent email, land size, coordinates, exact price, auction date). These are returned as `null` rather than guessed.
- Listings marked "price withheld" or "contact agent" have no numeric price on the site; the `price` field carries whatever text realestate.com.au shows.
- Pagination is limited to the number of result pages realestate.com.au itself exposes for a search.
- Off-market and pre-market properties are not included — only listings that appear in public search results.
- A Buy or Rent search returns only for-sale or rental listings. realestate.com.au mixes "recently sold nearby" cards into those pages; those are excluded, so a low-inventory suburb can return fewer rows than the site's headline count suggests. Use a Sold search URL to collect sold data.

### Integrations

Connect the Actor's output to Google Sheets, Make, Zapier, Slack, or your own systems via the Apify API and webhooks. Schedule runs to keep a dataset continuously up to date.

### Export formats

JSON, CSV, Excel, and XML — from the Dataset tab in Apify Console or via the API.

### Frequently asked questions

#### How many listings can I collect?

As many as the search exposes. `maxItems` is applied per start URL, so add more start URLs to collect across many suburbs in one run.

#### Can I use my own search filters?

Yes. Any Buy, Rent, or Sold search URL from realestate.com.au works, including all of its filters. Just copy the URL after setting the filters on the site.

#### Does it support individual property URLs?

Yes. Paste a property page URL into **Start URLs** and the Actor returns that single listing.

#### How are duplicates handled?

Each listing is collected once per run, matched on its realestate.com.au listing ID and canonical URL.

#### Why are some fields null?

realestate.com.au does not publish every field for every listing. Missing values are returned as `null` rather than being filled with a guess.

#### How fresh is the data?

Each run collects live data from realestate.com.au at run time, unless **Use cache** is enabled, in which case listings seen in an earlier run are reused.

#### What does the cache do to repeated runs?

With **Use cache** on, a listing the Actor has already collected is served from storage instead of being opened again. Turn it off (the default) whenever you need current prices and statuses.

#### Why did a run return few or no results?

realestate.com.au's bot protection is IP-sensitive and occasionally blocks a run even with residential proxy. Re-run it, and keep searches narrow. This is a property of the site, not a fault in the Actor.

### Support

Found a bug or need a change? Open an issue on the Actor's **Issues** tab in Apify Console, or reach out via Apify Console messaging.

### Legal and responsible use

You are responsible for ensuring your use of this Actor and the collected data complies with realestate.com.au's Terms of Service, applicable laws, and any contractual obligations. This Actor can collect personal data such as agent names, phone numbers, and email addresses that are published on listing pages; if you collect such data you are responsible for handling it in line with applicable data-protection law, including the Australian Privacy Act and, where relevant, the GDPR.

### Preview

![Realestate Com Au Scraper input options](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/realestate-com-au-scraper--input.png)

# Actor input Schema

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

One or more realestate.com.au pages to scrape. Use a Buy, Rent, or Sold search results page (set your filters on realestate.com.au first, then copy the URL from your browser's address bar), or a direct property listing page URL. The Actor pages through search results automatically.

## `maxItems` (type: `integer`):

Maximum number of property listings to collect for each start URL. Keep this low for quick test runs and raise it for full exports.

## `scrapePropertyDetails` (type: `boolean`):

When on, the Actor opens every listing to collect the full description, all photos and floorplans, agent contact details, and inspection times. When off, it returns the faster summary data available on the search results page only.

## `useCache` (type: `boolean`):

Reuse previously collected data for listings seen in an earlier run to reduce repeated requests and speed up recurring runs. Disabled by default so every run returns fresh data.

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

Proxy settings. realestate.com.au blocks traffic that is not routed through residential IP addresses, so Australian residential proxy is used by default and recommended. You can supply your own proxy here instead.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.realestate.com.au/buy/in-bondi+beach,+nsw+2026/list-1"
    }
  ],
  "maxItems": 3,
  "scrapePropertyDetails": true,
  "useCache": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "AU"
  }
}
```

# Actor output Schema

## `listings` (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 = {
    "startUrls": [
        {
            "url": "https://www.realestate.com.au/buy/in-bondi+beach,+nsw+2026/list-1"
        }
    ],
    "maxItems": 3,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "AU"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("mrdoe/realestate-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 = {
    "startUrls": [{ "url": "https://www.realestate.com.au/buy/in-bondi+beach,+nsw+2026/list-1" }],
    "maxItems": 3,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "AU",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("mrdoe/realestate-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 '{
  "startUrls": [
    {
      "url": "https://www.realestate.com.au/buy/in-bondi+beach,+nsw+2026/list-1"
    }
  ],
  "maxItems": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "AU"
  }
}' |
apify call mrdoe/realestate-com-au-scraper --silent --output-dataset

```

## MCP server setup

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