# Realestate Com Au Property Extractor (`kawsar/realestate-com-au-property-extractor`) Actor

RealEstate.com.au scraper that extracts listings, prices, addresses, agents, and photos from any Buy, Rent, or Sold search URL, so you can build lead lists and market research fast.

- **URL**: https://apify.com/kawsar/realestate-com-au-property-extractor.md
- **Developed by:** [Kawsar](https://apify.com/kawsar) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## RealEstate.com.au Property Extractor

Turn any RealEstate.com.au search into a clean, structured dataset. Paste a Buy, Rent, or Sold search URL and this actor collects every property on the page, follows the pagination for you, and returns full listing details ready for JSON, CSV, or Excel.

Built for real estate agents, buyers agents, proptech teams, data analysts, and anyone who needs Australian property data at scale without copying and pasting by hand.

<p align="center">
  <img src="https://imgur.com/K0xW8B9.png" alt="USA Automotive Leads Hub" style="max-width:100%; border-radius:14px; width:680px;" />
</p>

### Why use this actor

- **Works from a plain search URL.** No API keys to manage, no query language to learn. Search on the site, copy the link, paste it in.
- **Handles all three channels.** Buy, Rent, and Sold are detected automatically from the URL.
- **Follows pagination.** One search can return hundreds of listings in a single run.
- **Complete listing detail.** Price, address, features, land size, agents, agency, photos, floorplans, inspection times, and auction dates.
- **Clean output.** Tracking tokens stripped from URLs, image size resolved, one record per property.
- **Batch friendly.** Add several search URLs and cover multiple areas in one go.

### Quick start

1. Open [realestate.com.au](https://www.realestate.com.au) and run a search (suburb, region, price filters, whatever you need).
2. Copy the URL from your browser's address bar.
3. Paste it into the `searchUrls` field.
4. Set `maxItems` and click **Start**.

That is it. The dataset fills up as the run progresses.

### Input

| Field | Type | Required | Default | Description |
|-------|------|----------|---------|-------------|
| `searchUrls` | array of URLs | Yes | New England, NSW example | RealEstate.com.au search result pages (Buy, Rent, or Sold). Add one or more. |
| `includeSurrounding` | boolean | No | `false` | Also collect the nearby-suburb listings the site shows alongside exact matches. See note below. |
| `maxItems` | integer | No | `25` | Cap on how many listings to collect per run across all URLs. Max `1000`. |
| `requestTimeoutSecs` | integer | No | `30` | Per-request timeout in seconds. |

#### Example input

```json
{
    "searchUrls": [
        "https://www.realestate.com.au/buy/in-sydney,+nsw/list-1",
        "https://www.realestate.com.au/rent/in-melbourne,+vic/list-1"
    ],
    "includeSurrounding": false,
    "maxItems": 25
}
```

#### About `includeSurrounding`

RealEstate.com.au splits search results into two groups: **exact** matches inside the area you searched, and **surrounding** listings from neighbouring suburbs that the site adds to fill out thin results (the "properties in nearby suburbs" strip).

- `false` (default): only exact matches. Every row is genuinely in the area you searched. Best for suburb-level analysis and valuations.
- `true`: exact plus surrounding. Wider coverage for lead lists and small search areas.

Listings are de-duplicated by `listingId` within each search URL, so you will not get the same property twice from a single search.

### Output

Each property becomes one dataset record.

```json
{
    "listingId": "151750600",
    "channel": "buy",
    "propertyUrl": "https://www.realestate.com.au/property-house-nsw-tamworth-151750600",
    "propertyType": "House",
    "propertyTypeId": "house",
    "shortAddress": "2A Myrene Avenue",
    "fullAddress": "2A Myrene Avenue, Tamworth, NSW 2340",
    "suburb": "Tamworth",
    "state": "NSW",
    "postcode": "2340",
    "priceDisplay": "$870,000 - $920,000",
    "bedrooms": 4,
    "bathrooms": 2,
    "parkingSpaces": 6,
    "studies": 1,
    "landSize": "2,023",
    "landSizeUnit": "m²",
    "buildingSize": null,
    "buildingSizeUnit": null,
    "agencyName": "Partner Now Property - Tamworth",
    "agencyId": "YOODTP",
    "agencyUrl": "https://www.realestate.com.au/agency/partner-now-property-tamworth-YOODTP",
    "agencyLogo": "https://i2.au.reastatic.net/1144x858/.../logo.jpg",
    "agents": [
        {
            "name": "Tania Clare",
            "jobTitle": "Residential and Lifestyle Sales Specialist",
            "photo": "https://i2.au.reastatic.net/1144x858/.../main.jpg",
            "profileUrl": "https://www.realestate.com.au/agent/tania-clare-2947763"
        }
    ],
    "listingHeadline": "Offering exceptional flexibility across two levels...",
    "mainImage": "https://i2.au.reastatic.net/1144x858/.../image.jpg",
    "images": ["https://i2.au.reastatic.net/1144x858/.../image.jpg"],
    "floorplans": ["https://i2.au.reastatic.net/1144x858/.../image.jpg"],
    "videoCount": 0,
    "inspections": [
        {
            "startTime": "2026-08-15T10:45:00+10:00",
            "endTime": "2026-08-15T11:15:00+10:00",
            "label": "Inspection Sat 15 Aug 10:45 am"
        }
    ],
    "auctionDate": null,
    "productDepth": "premiere",
    "enquiryUrl": "https://agent-contact.realestate.com.au/contact-agent/listing/151750600",
    "scrapedAt": "2026-08-13T00:00:00+00:00",
    "error": null
}
```

#### Field reference

| Field | Description |
|-------|-------------|
| `listingId` | RealEstate.com.au listing ID |
| `channel` | `buy`, `rent`, or `sold` |
| `propertyUrl` | Canonical listing page URL |
| `propertyType` / `propertyTypeId` | House, Apartment, Townhouse, and so on |
| `shortAddress` / `fullAddress` | Street address and full address line |
| `suburb` / `state` / `postcode` | Location parts |
| `priceDisplay` | Price exactly as shown on the listing |
| `bedrooms` / `bathrooms` / `parkingSpaces` / `studies` | Feature counts |
| `landSize` / `landSizeUnit` | Land size and unit |
| `buildingSize` / `buildingSizeUnit` | Building size and unit when available |
| `agencyName` / `agencyId` / `agencyUrl` / `agencyLogo` | Listing agency details |
| `agents` | Agents on the listing: name, role, photo, profile URL |
| `listingHeadline` | Listing description text |
| `mainImage` / `images` / `floorplans` | Photo and floorplan URLs |
| `videoCount` | Number of videos on the listing |
| `inspections` | Scheduled inspection times |
| `auctionDate` | Auction date and time when applicable |
| `productDepth` | Listing tier (standard, premiere, and so on) |
| `enquiryUrl` | Contact-agent link |
| `scrapedAt` | UTC timestamp of the run |
| `error` | `null` on success, or a short message if a single listing failed |

### Use cases

- **Lead generation:** build agent and agency contact lists for a suburb, region, or state.
- **Market research:** track supply, price ranges, and time on market across areas.
- **Valuation and comparables:** feed sold and listed prices into pricing models.
- **Competitor monitoring:** watch what other agencies have on the market.
- **Property databases:** keep a live inventory for a search product or dashboard.
- **New-listing alerts:** run on a schedule and diff against your last dataset.

### How to run it

**Apify Console:** open the actor, fill in the input form, and click Start.

**API:** call the [Apify API](https://docs.apify.com/api/v2) run endpoint with your input JSON, then fetch results from the dataset.

**Scheduling:** attach a [schedule](https://docs.apify.com/platform/schedules) to run daily or hourly and build a history of price and inventory changes.

Results can be exported as JSON, CSV, Excel, HTML, or RSS, or pulled through the dataset API.

### Tips

- Keep `maxItems` tight while testing so runs stay fast and cheap, then raise it for full pulls.
- To cover several areas at once, add each area's search URL to `searchUrls` in one run.
- Any valid RealEstate.com.au search page works, including filtered searches (price, bedrooms, property type). Set the filters on the site, then copy the URL.

### FAQ

**Do I need an account or API key for RealEstate.com.au?**
No. You only provide a public search URL.

**Can it scrape rentals and sold listings, not just for-sale?**
Yes. Paste a Rent or Sold search URL and the `channel` field reflects which one.

**How many properties can it return?**
Up to 1000 per run, across all your search URLs, controlled by `maxItems`.

**Does it collect individual property pages?**
It collects the rich listing data available on search result pages, which already covers price, address, features, media, agents, inspections, and more.

### Notes

- Only public listing data shown on RealEstate.com.au search pages is collected.
- Large searches take longer. Use `maxItems` to keep runs focused.
- Please use the data responsibly and in line with RealEstate.com.au's terms of use.

<p align="center">
  <img src="https://imgur.com/PwDkhhy.png" alt="USA Automotive Leads Hub" style="max-width:100%; border-radius:14px; width:680px;" />
</p>

# Actor input Schema

## `searchUrls` (type: `array`):

One or more RealEstate.com.au search result pages (Buy, Rent or Sold). Copy the URL straight from your browser after running a search. Results are paginated automatically up to your Max items limit.

## `includeSurrounding` (type: `boolean`):

Also collect listings from surrounding areas that RealEstate.com.au returns alongside the exact matches.

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

Maximum number of property listings to collect per run across all search URLs.

## `requestTimeoutSecs` (type: `integer`):

Per-request timeout in seconds.

## Actor input object example

```json
{
  "searchUrls": [
    "https://www.realestate.com.au/buy/in-sydney,+nsw/list-1"
  ],
  "includeSurrounding": false,
  "maxItems": 25,
  "requestTimeoutSecs": 30
}
```

# Actor output Schema

## `properties` (type: `string`):

All extracted RealEstate.com.au property listings, one row per property.

# 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 = {
    "searchUrls": [
        "https://www.realestate.com.au/buy/in-new+england,+nsw/list-1"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("kawsar/realestate-com-au-property-extractor").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 = { "searchUrls": ["https://www.realestate.com.au/buy/in-new+england,+nsw/list-1"] }

# Run the Actor and wait for it to finish
run = client.actor("kawsar/realestate-com-au-property-extractor").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 '{
  "searchUrls": [
    "https://www.realestate.com.au/buy/in-new+england,+nsw/list-1"
  ]
}' |
apify call kawsar/realestate-com-au-property-extractor --silent --output-dataset

```

## MCP server setup

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

```

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/BX6P66BdpFkLDTGHG/builds/RBfiishKjIbkXLzPb/openapi.json
