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

Scrape Australian property listings from Realestate.com.au — extract prices, addresses, bedrooms, agent details, and images by suburb or postcode.

- **URL**: https://apify.com/rambunctious\_fingerprint/realestate-au-scraper.md
- **Developed by:** [Casey Marsh](https://apify.com/rambunctious_fingerprint) (community)
- **Categories:** Real estate, Lead generation, E-commerce
- **Stats:** 2 total users, 1 monthly users, 75.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.50 / 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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Realestate.com.au Property Scraper

Scrape property listings from Australia's largest real estate portal — Realestate.com.au. Extract comprehensive property data including addresses, prices, bedrooms, bathrooms, parking, land size, agent details, inspection times, and listing images. Perfect for property market research, investment analysis, and lead generation.

### Summary

The Realestate.com.au Property Scraper is a production-grade Apify actor that extracts property listings from [realestate.com.au](https://www.realestate.com.au), the most visited real estate website in Australia with over 11 million monthly visitors. This actor allows you to search by any suburb, postcode, or region, filter by property type (buy, rent, or sold), set price ranges, and receive clean structured JSON output ready for analysis, spreadsheets, or your own database.

Built on Crawlee's CheerioCrawler for fast, lightweight scraping with automatic proxy rotation through Apify's residential proxy network, this actor handles anti-bot measures, rate limiting, and pagination automatically. It uses multiple CSS selector fallbacks to maintain reliability even when Realestate.com.au updates their frontend markup.

### How It Works

1. **Input Parsing**: The actor accepts your search parameters — location (suburb/postcode), property type, price range, and maximum results.
2. **URL Construction**: It builds the correct Realestate.com.au search URL with your filters applied.
3. **Proxy Rotation**: Each request is routed through Apify's residential proxy pool to avoid IP-based blocking and rate limits.
4. **Session Management**: A Crawlee session pool maintains cookies and headers across requests for consistent results.
5. **Data Extraction**: The CheerioCrawler parses each listing card using multiple CSS selector fallbacks, extracting all available fields.
6. **Pagination**: The actor automatically follows pagination links to scrape multiple pages until the max results limit is reached.
7. **Output**: Data is saved to the Apify dataset in structured JSON format, with error records logged separately for failed requests.

### Input Parameters

| Field | Type | Required | Default | Description |
|-------|------|----------|---------|-------------|
| `location` | string | No | `sydney-nsw-2000` | Suburb or postcode in realestate.com.au URL format (e.g. `melbourne-vic-3000`, `brisbane-city-qld-4000`) |
| `propertyType` | string | No | `buy` | Listing type: `buy`, `rent`, or `sold` |
| `minPrice` | integer | No | — | Minimum price filter (e.g. `500000` for $500k) |
| `maxPrice` | integer | No | — | Maximum price filter (e.g. `2000000` for $2m) |
| `maxResults` | integer | No | `100` | Maximum number of listings to return (1–500) |

### Output Example

```json
{
  "address": "42 Example Street, Surry Hills NSW 2010",
  "price": "$1,250,000",
  "beds": 3,
  "baths": 2,
  "parking": 1,
  "landSize": "220m²",
  "propertyType": "Terrace",
  "link": "https://www.realestate.com.au/property-terrace-nsw-surry+hills-123456789",
  "imageUrl": "https://i2.au.reastatic.net/800x600/example.jpg",
  "agent": "John Smith",
  "agency": "Ray White Surry Hills",
  "auctionDate": "Sat 15 Jul, 10:30am",
  "inspectionTimes": "Sat 8 Jul 11:00am - 11:30am",
  "description": "Charming terrace in a sought-after pocket...",
  "suburb": "sydney nsw 2000",
  "scrapedAt": "2026-07-04T10:30:00.000Z"
}
````

### Pricing

This actor uses Apify's pay-per-result pricing model. You only pay for the listings you successfully extract — no monthly fees, no minimum commitments, and no API key required. The cost depends on the number of results you request and the complexity of residential proxy usage. For a typical run of 100 listings, expect costs in the range of a few cents of Apify platform credits.

Residential proxies are used by default to ensure reliable scraping without blocks. You can switch to datacenter proxies for lower costs by modifying the `proxyConfig` in the input, though this may impact reliability on Realestate.com.au which has strong anti-bot protections.

### Use Cases

- **Property Market Research**: Track property prices, availability, and trends across Australian suburbs over time. Build datasets for analysis of housing affordability, rental yields, and market movements.
- **Lead Generation for Real Estate Agents**: Identify properties for sale by owner, expired listings, or under-quoted properties to generate warm leads.
- **Rental Market Analysis**: Monitor rental prices across suburbs to identify yield hotspots and investment opportunities.
- **Suburb Comparison**: Compare property counts, median prices, and property types between different suburbs for investment decision-making.
- **Automated Property Alerts**: Set up recurring runs to monitor new listings matching specific criteria and receive notifications when new properties appear.
- **Data Enrichment**: Combine property data with demographic, school catchment, and infrastructure datasets for comprehensive area profiling.

### FAQ

**Q: Do I need a Realestate.com.au account or API key?**
A: No. This actor scrapes publicly available listing data. No account, API key, or authentication is required.

**Q: Can I scrape sold property data?**
A: Yes. Set `propertyType` to `sold` to scrape recently sold properties with their sale prices where available.

**Q: What if the site changes its HTML structure?**
A: The actor uses multiple CSS selector fallbacks for each field. If all selectors fail, the field will be empty rather than causing a crash. Regular updates to selector patterns can be applied via the Apify actor's source code.

**Q: How fast is the scraping?**
A: Using Cheerio (not a headless browser), each page loads in 1–3 seconds. A typical 100-listing run across multiple pages completes in 15–30 seconds depending on proxy speed.

**Q: Can I scrape commercial properties?**
A: Yes. Use `propertyType` set to `buy` and search for commercial suburbs or use the `commercial` keyword. The scraper will extract whatever listings appear on the results page.

**Q: Is it legal to scrape Realestate.com.au?**
A: This actor scrapes publicly available data. You are responsible for complying with Realestate.com.au's terms of service and Australian law. Consider the intended use of the data before running at scale.

***

**Actor ID**: `realestate-au-scraper` · **Runtime**: Node.js 20 · **Type**: CheerioCrawler

# Actor input Schema

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

Suburb or postcode (e.g. sydney-nsw-2000)

## `propertyType` (type: `string`):

buy, rent, sold

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

Minimum price filter

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

Maximum price filter

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

Maximum number of listings to return

## Actor input object example

```json
{
  "location": "sydney-nsw-2000",
  "propertyType": "buy",
  "maxResults": 100
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("rambunctious_fingerprint/realestate-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("rambunctious_fingerprint/realestate-au-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 '{}' |
apify call rambunctious_fingerprint/realestate-au-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Realestate.com.au Property Scraper",
        "description": "Scrape Australian property listings from Realestate.com.au — extract prices, addresses, bedrooms, agent details, and images by suburb or postcode.",
        "version": "0.0",
        "x-build-id": "C4GMLDGfdtX8exoOR"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/rambunctious_fingerprint~realestate-au-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-rambunctious_fingerprint-realestate-au-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/rambunctious_fingerprint~realestate-au-scraper/runs": {
            "post": {
                "operationId": "runs-sync-rambunctious_fingerprint-realestate-au-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/rambunctious_fingerprint~realestate-au-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-rambunctious_fingerprint-realestate-au-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Suburb or postcode (e.g. sydney-nsw-2000)",
                        "default": "sydney-nsw-2000"
                    },
                    "propertyType": {
                        "title": "Property Type",
                        "type": "string",
                        "description": "buy, rent, sold",
                        "default": "buy"
                    },
                    "minPrice": {
                        "title": "Min Price",
                        "type": "integer",
                        "description": "Minimum price filter"
                    },
                    "maxPrice": {
                        "title": "Max Price",
                        "type": "integer",
                        "description": "Maximum price filter"
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of listings to return",
                        "default": 100
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
