# Realestate.com.au Listings Scraper — AU & NZ Properties & Price (`madeingermany/realestate-au-listings`) Actor

💰 Only $0.9💰 Realestate.com.au listings from official services APIs. Input: buy/rent/sold list URLs or direct property pages. Output: one row per listing with flat columns (title, price, agents, images, address) plus full listing and withIdsResponse; includes originalSearchUrl and apiRequestUrl.

- **URL**: https://apify.com/madeingermany/realestate-au-listings.md
- **Developed by:** [Made In Germany](https://apify.com/madeingermany) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.90 / 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 Listings Scraper — Australia & NZ Properties, Prices & Agent Contacts

A high-performance, cost-effective Apify Actor to extract property listings from Australia's leading portal **realestate.com.au** and New Zealand's **realestate.co.nz**.

***

### 💰 Pricing (Pay-Per-Event)

This actor operates on a pay-as-you-go **Pay-Per-Event (PPE)** pricing model. You only pay for what you extract:

| Event Name | Purpose | Price (USD) | Description |
|---|---|---|---|
| **`apify-default-dataset-item`** | result | `$0.0009` | Single result in the default dataset. |
| **`additional-data`** | Additional data | `$0.0005` | Charged for Additional data |
| **`apify-actor-start`** | Actor Start | `$0.007` | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). |

***

### ⚡ Why Use This Scraper Over Alternatives?

- **Direct Services API Fast-Path**: Eliminates the overhead of heavy Chromium or Playwright headless browsers, resulting in **10x faster execution** and minimal memory consumption.
- **Pay-Per-Event (PPE) Pricing**: Transparent, affordable pricing with micro-charges only for the listings and additional data you extract.
- **Enriched Data with `withIdsResponse`**: In addition to flat, spreadsheet-ready columns, each record includes the complete official API response (`listing` and `withIdsResponse`) for downstream ETL, CRM pipelines, and analytics.
- **Flexible Search Capabilities**: Search by direct search URLs, individual property pages, free-text keywords (e.g., `"Sydney NSW Buy"`), or structured country/channel/region filters.
- **Complete Provenance**: Includes `originalSearchUrl` and `apiRequestUrl` for full auditability and trace verification.

***

### 📋 Input Parameters

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `startUrls` | Array | No | `["https://www.realestate.com.au/buy/in-sydney,+nsw/list-1"]` | Real estate search or direct listing URLs. |
| `searchQuery` | String | No | `"Sydney NSW Buy"` | Free-text search keyword/location. Ignored if `startUrls` is set. |
| `searchByFilters` | Object | No | `{}` | Structured filter by country (`AU`/`NZ`), channel (`buy`/`rent`/`sold`), and region. |
| `maxItems` | Integer | No | `50` | Maximum listings to extract (1 to 50,000). |
| `includeSurroundingSuburbs` | Boolean | No | `true` | Include neighbouring suburbs in Australian searches. |
| `flattenOutput` | Boolean | No | `true` | Output flat columns alongside raw API response envelopes. |
| `proxy` | Object | No | `{ "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }` | Proxy configuration. Residential proxy recommended in production. |

#### Sample JSON Input

```json
{
  "startUrls": [
    {
      "url": "https://www.realestate.com.au/buy/in-sydney,+nsw/list-1"
    }
  ],
  "maxItems": 25,
  "includeSurroundingSuburbs": true,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

***

### 📊 Output Data Structure

Each record pushed to the default dataset contains clean, flat fields ready for CSV/Excel export, along with complete JSON payloads:

| Field | Type | Description |
|---|---|---|
| `id` | String | Unique listing identifier (e.g. `"151626820"`) |
| `title` | String | Listing headline or title |
| `price` | String | Display price (e.g. `"$1,200,000"`, `"Contact Agent"`) |
| `bedrooms` | Number | Number of bedrooms |
| `bathrooms` | Number | Number of bathrooms |
| `carspaces` | Number | Number of parking / garage spaces |
| `agencyName` | String | Marketing agency name |
| `agentName` | String | Primary selling or leasing agent |
| `propertyType` | String | Property type (e.g. `"apartment"`, `"house"`, `"townhouse"`) |
| `address` | String | Full formatted property street address |
| `suburb` | String | Suburb or locality |
| `state` | String | State or subdivision code (e.g. `"NSW"`, `"VIC"`, `"QLD"`) |
| `postcode` | String | Postal code |
| `latitude` | Number | GPS Latitude coordinate |
| `longitude` | Number | GPS Longitude coordinate |
| `images` | Array\[String] | Array of high-resolution photo URLs |
| `description` | String | Full listing property description |
| `originalSearchUrl`| String | Target URL from which the record was discovered |
| `apiRequestUrl` | String | Exact internal API request URL |
| `listing` | Object | Complete raw search listing payload |
| `withIdsResponse` | Object | Complete raw enriched `withIds` payload |

#### Sample Extracted Record

```json
{
  "id": "151626820",
  "title": "Contemporary Penthouse Living in \"The Quay\"",
  "price": "Contact Agent | Price Negotiable",
  "bedrooms": 3,
  "bathrooms": 2,
  "carspaces": 2,
  "agencyName": "888 ESTATE - Double Bay",
  "agentName": "Alicia Cao",
  "propertyType": "apartment",
  "address": "178 Thomas Street, Haymarket, NSW, 2000",
  "suburb": "Haymarket",
  "state": "NSW",
  "postcode": "2000",
  "latitude": -33.88045,
  "longitude": 151.20387,
  "images": [
    "https://i3.au.reastatic.net/e2c0e320e88b9d5c05b6794b658826eb4dda05c85f59f1ae447671375352678f/image.jpg"
  ],
  "originalSearchUrl": "https://www.realestate.com.au/buy/in-sydney,+nsw/list-1",
  "apiRequestUrl": "https://services.realestate.com.au/services/listings/search?query=%7B%22channel%22%3A%22buy%22...%7D",
  "listing": { ... },
  "withIdsResponse": { ... }
}
```

***

### 🎯 Use Cases

- **Market Analysts & Investors**: Track price trends, yield metrics, and days on market across Australian and New Zealand suburbs.
- **Lead Generation & CRM Enrichment**: Extract contact details for licensed agents and agencies, including phone numbers, office locations, and agency profiles.
- **Home Buyers & Renters**: Monitor filtered search criteria and receive alerts for new listings matching exact bedroom, price, and location criteria.
- **PropTech & Valuation Engines**: Feed property databases and valuation algorithms with reliable listing data and official media assets.

***

### 🏷️ SEO & Discovery Tags

`realestate-au`, `realestate-co-nz`, `property-scraper`, `australia-realestate`, `sydney-properties`, `melbourne-rentals`, `rea-api`, `crawlee`, `apify-actor`

# Actor input Schema

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

Scrape by URLs of realestate search or property pages. (e.g. https://www.realestate.com.au/buy/in-sydney,+nsw/list-1)

## `searchQuery` (type: `string`):

Free-text search keyword or location (e.g. 'Sydney NSW Buy', 'Melbourne VIC Rent'). Ignored if Start URLs are provided.

## `searchByFilters` (type: `object`):

Search by country, channel, region, and suburb if Start URLs and Search Query are empty.

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

Maximum number of listings to extract.

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

Whether to include surrounding suburbs in Australian searches.

## `flattenOutput` (type: `boolean`):

Produce flat spreadsheet columns alongside full raw API responses.

## `proxy` (type: `object`):

Proxy configuration. Using Apify Residential proxies is recommended when deployed on the Apify platform.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.realestate.com.au/buy/in-sydney,+nsw/list-1"
    }
  ],
  "searchQuery": "Sydney NSW Buy",
  "maxItems": 50,
  "includeSurroundingSuburbs": true,
  "flattenOutput": true,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (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-sydney,+nsw/list-1"
        }
    ],
    "searchQuery": "Sydney NSW Buy"
};

// Run the Actor and wait for it to finish
const run = await client.actor("madeingermany/realestate-au-listings").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-sydney,+nsw/list-1" }],
    "searchQuery": "Sydney NSW Buy",
}

# Run the Actor and wait for it to finish
run = client.actor("madeingermany/realestate-au-listings").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-sydney,+nsw/list-1"
    }
  ],
  "searchQuery": "Sydney NSW Buy"
}' |
apify call madeingermany/realestate-au-listings --silent --output-dataset

```

## MCP server setup

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

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/AFnyytSUbEUEC39LQ/builds/DW2KTQxJrN1iCJPr4/openapi.json
