# CommercialRealEstate.com.au Property Scraper (`getascraper/commercialrealestate-au-scraper`) Actor

Scrape Australian commercial property listings: sale prices, lease rates, land area, tenancy details, and agent mobile numbers from CommercialRealEstate.com.au.

- **URL**: https://apify.com/getascraper/commercialrealestate-au-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (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 $0.59 / 1,000 commercial listings

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

## CommercialRealEstate.com.au scraper: prices, agents, and deal status ready for your spreadsheet

Get Australian commercial property listings with asking prices, build area, tenancy details, and direct agent mobile numbers from CommercialRealEstate.com.au, ready to download as JSON or CSV in minutes.

CommercialRealEstate.com.au is Australia's largest dedicated commercial property portal. This actor extracts structured records from sale, lease, sold, and business listings across all states and property types: offices, industrial warehouses, retail spaces, land, medical suites, hotels, and showrooms.

---

### What does this actor do?

It navigates search results pages and, optionally, individual listing pages to extract clean, structured records. Each record covers listing identity, location, asking price, property dimensions, deal status, agent contact details, and infrastructure data such as NBN connection type and distance to the nearest transit stop.

Enable **Deep Scrape** to visit each listing's detail page and fill in fields not available on the search card, including EOI closing dates, full property descriptions, all images, and confirmed GPS coordinates.

Enable **Harvest Agency Emails** to visit each agency's website and extract contact email addresses, giving you a complete B2B lead profile per listing.

---

### Who uses this actor?

- **I am a commercial property investor** monitoring distressed office and industrial assets across Sydney and Melbourne to spot underpriced listings before auction or private treaty closes.
- **I am a commercial real estate agent** building a cold-call list of tenanted investors in my suburb whose leases are approaching expiry, filtered by property type and price bracket.
- **I am a market analyst** tracking asking price trends for retail and industrial properties across Australian capital cities to produce a quarterly commercial property report.
- **I am a business owner** comparing active lease listings for office and retail space in Brisbane CBD and want a single spreadsheet instead of clicking through each listing manually.
- **I am a PropTech developer** building a commercial property data feed and need a structured, schedulable source of Australian listing data with GPS coordinates and verified agent contacts.

---

### How to use this actor

1. Enter one or more Australian locations in the **Location** field (suburbs, cities, or states), or paste direct search URLs from CommercialRealEstate.com.au into **Start URLs**.
2. Set the **Listing Mode** (sale, lease, sold, or business) and optionally choose a **Property Type** to narrow results.
3. Apply price or size filters if needed. Enable **Deep Scrape** for full listing detail or **Harvest Agency Emails** for complete contact records.
4. Click **Start** and download your results as JSON, CSV, or Excel when the run completes.

---

### Input

| Field | Type | Required | Description |
|---|---|---|---|
| Start URLs | array of URLs | No | CommercialRealEstate.com.au search, category, or listing URLs. Takes priority over all other filters when provided. |
| Location | array of strings | No | Australian suburb, city, or state to search (e.g. Sydney, Melbourne CBD, nsw). One search URL is generated per entry. |
| Listing Mode | enum | No | Transaction type: For Sale, For Lease, Sold History, or Businesses for Sale. Default is For Sale. |
| Property Type | enum | No | Commercial category: Offices, Industrial and Warehouse, Retail, Land and Development, Medical and Consulting, Hotel and Leisure, Showrooms and Bulky Goods, or Any Type. |
| Min Price (AUD) | integer | No | Minimum asking price in Australian dollars. |
| Max Price (AUD) | integer | No | Maximum asking price in Australian dollars. |
| Min Floor Area (m2) | integer | No | Minimum building floor area in square metres. |
| Max Floor Area (m2) | integer | No | Maximum building floor area in square metres. |
| Min Land Area (m2) | integer | No | Minimum land area in square metres. |
| Max Land Area (m2) | integer | No | Maximum land area in square metres. |
| Tenure Type | enum | No | Filter by occupancy profile: Any, Vacant Possession, or Tenanted Investment. |
| Keyword | text | No | Free-text keyword to narrow results (e.g. childcare, service station, cold storage). |
| Sort Order | enum | No | Result order: Featured, Newest First, Price Low to High, or Price High to Low. |
| Max Items | integer | No | Maximum total listings to extract across all pages. Default is 100. |
| Deep Scrape | boolean | No | Visit each listing detail page to extract EOI dates, NBN status, transit distances, and full descriptions. Slower but significantly more complete. |
| Harvest Agency Emails | boolean | No | Visit each agency website and extract contact email addresses. Adds harvested_emails to every record. Increases run time. |
| Flatten Output | boolean | No | Join array fields (images, highlights) as pipe-separated strings for easy Excel and CSV export. |
| Proxy Configuration | object | Yes | Australian residential proxies are strongly recommended to handle geographic access controls on the site. |

---

### Output

Each listing is saved as a flat JSON object. Below is a representative record with deep scrape and email harvest enabled:

```json
{
  "listing_id": "2019481483",
  "title": "Prime Industrial Warehouse with Office, 1,250m2 on 2,800m2 Site",
  "listing_mode": "sale",
  "property_type": "Industrial",
  "property_type_names": "Industrial & Warehouse",
  "status_flag": "Active",
  "is_under_offer": "No",
  "state": "NSW",
  "suburb": "Wetherill Park",
  "postcode": "2164",
  "region": "South West Sydney",
  "street_address": "14 Bernera Road, Wetherill Park NSW 2164",
  "latitude": -33.8367,
  "longitude": 150.9001,
  "description": "Standalone industrial facility suitable for owner-occupiers or investors. Clear-span warehouse with 8m internal clearance, three-phase power, and four at-grade container doors.",
  "highlights": "8m clearance | 3-phase power | 4 container doors | Dual street access",
  "price_text": "$3,200,000",
  "sale_type": "Private Treaty",
  "auction_date": "",
  "sold_leased_date": "",
  "eoi_closing_date": "2026-07-18",
  "land_area": "2,800 m2",
  "build_area": "1,250 m2",
  "days_active": 12,
  "nearest_transit_meters": 340,
  "nbn_tech_type": "FTTP",
  "nbn_service_status": "Connected",
  "picture_url": "https://images.commercialrealestate.com.au/listings/2019481483/photo_1.jpg",
  "images": "https://images.commercialrealestate.com.au/listings/2019481483/photo_1.jpg | https://images.commercialrealestate.com.au/listings/2019481483/photo_2.jpg",
  "agency_name": "Knight Frank Australia",
  "agency_phone": "+61 2 9036 6666",
  "agency_website": "https://www.knightfrank.com.au",
  "agent_name": "James Devlin",
  "agent_mobile": "+61 412 345 678",
  "agent_photo": "https://images.commercialrealestate.com.au/agents/devlin_j.jpg",
  "harvested_emails": "james.devlin@knightfrank.com.au, reception@knightfrank.com.au",
  "listing_url": "https://www.commercialrealestate.com.au/property/prime-industrial-warehouse-14-bernera-road-wetherill-park-nsw-2164-2019481483",
  "scraped_at": "2026-06-24T17:32:00.000Z"
}
````

***

### Data table

| Field | Type | Description |
|---|---|---|
| listing\_id | string | Unique listing identifier from the platform |
| title | string | Full listing headline as shown on the site |
| listing\_mode | string | Transaction type: sale, lease, sold, or business |
| property\_type | string | Primary commercial property category |
| property\_type\_names | string | Full property type label from the site |
| status\_flag | string | Current listing status (Active, Sold, Leased) |
| is\_under\_offer | string | Whether the property has an accepted offer |
| state | string | Australian state abbreviation (NSW, VIC, QLD, etc.) |
| suburb | string | Suburb name |
| postcode | string | Australian postcode |
| region | string | Broad metro or regional area name |
| street\_address | string | Full street address including suburb and postcode |
| latitude | number | GPS latitude coordinate |
| longitude | number | GPS longitude coordinate |
| description | string | Full property description from the listing page |
| highlights | string | Key property highlights listed by the agent |
| price\_text | string | Asking price as displayed (e.g. $3,200,000 or Price on Request) |
| sale\_type | string | Method of sale (Private Treaty, Auction, EOI) |
| auction\_date | string | Scheduled auction date and time if applicable |
| sold\_leased\_date | string | Date the property was sold or leased |
| eoi\_closing\_date | string | Expressions of interest closing date (deep scrape only) |
| land\_area | string | Total site land area |
| build\_area | string | Total building floor area |
| days\_active | number | Number of days the listing has been live on the platform |
| nearest\_transit\_meters | number | Distance in metres to the nearest public transport stop |
| nbn\_tech\_type | string | NBN connection technology at the property (e.g. FTTP, HFC) |
| nbn\_service\_status | string | Whether NBN is connected, planned, or unavailable |
| picture\_url | string | URL of the primary listing photo |
| images | string | All listing image URLs, pipe-separated when flatten is enabled |
| agency\_name | string | Name of the listing agency |
| agency\_phone | string | Agency main phone number |
| agency\_website | string | Agency website URL |
| agent\_name | string | Full name of the listing agent |
| agent\_mobile | string | Direct mobile number of the listing agent |
| agent\_photo | string | URL of the agent headshot photo |
| harvested\_emails | string | Contact emails extracted from the agency website (harvest mode only) |
| listing\_url | string | Direct URL to the listing on CommercialRealEstate.com.au |
| scraped\_at | string | ISO 8601 timestamp of when the record was extracted |

***

### Pricing

Pricing is pay per result and is billed only for listings successfully saved to your dataset. Empty runs cost nothing. There are no fixed monthly subscriptions or hidden fees.

***

### FAQ

##### Does this actor get blocked by CommercialRealEstate.com.au?

CommercialRealEstate.com.au applies geographic access controls that require Australian IP addresses. The actor routes all requests through Australian residential proxies by default, satisfying both the location requirement and the automated traffic detection in place on the site. The default proxy configuration works out of the box for most use cases.

##### Can it extract direct agent phone numbers?

Yes. Every record includes the listing agent's direct mobile number and the agency's main phone number, extracted without requiring any login or user account. Enable Harvest Agency Emails to also collect email addresses from each agency's website.

##### How fresh is the data?

Every run fetches data live from CommercialRealEstate.com.au at the moment the actor executes. Results reflect the current state of the site, including updated prices, new listings, and status changes. Schedule the actor to run daily or weekly to maintain a continuously refreshed dataset.

##### What property categories and listing types are supported?

All major commercial property categories are supported: offices, industrial and warehouse, retail, land and development, medical and consulting, hotel and leisure, and showrooms and bulky goods. All transaction types are covered: for sale, for lease, sold history, and businesses for sale.

***

### Legal notice and support

This actor collects publicly available listing data from CommercialRealEstate.com.au for informational and research purposes. Review the site's terms of service before running large-scale extractions.

For questions or issues, open a ticket in the **Issues** tab on this actor's page.

# Actor input Schema

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

CommercialRealEstate.com.au search, category, or individual listing URLs. Takes priority over all other filters when provided.

## `location` (type: `array`):

Australian suburb, city, or state to search (e.g. Sydney, Melbourne CBD, nsw/sydney). One URL is generated per entry. Ignored when Start URLs are provided.

## `listingMode` (type: `string`):

Type of listings to scrape.

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

Commercial property category to filter results.

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

Minimum asking price in Australian dollars.

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

Maximum asking price in Australian dollars.

## `minFloorArea` (type: `integer`):

Minimum building floor area in square metres.

## `maxFloorArea` (type: `integer`):

Maximum building floor area in square metres.

## `minLandArea` (type: `integer`):

Minimum land area in square metres.

## `maxLandArea` (type: `integer`):

Maximum land area in square metres.

## `tenureType` (type: `string`):

Filter by occupancy profile. Vacant Possession is ready for immediate use; Tenanted Investment has existing rental income.

## `keyword` (type: `string`):

Free-text keyword to narrow listing results (e.g. childcare, service station, cold storage).

## `sortBy` (type: `string`):

Order results are returned in.

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

Maximum total listings to extract across all pages.

## `harvestEmails` (type: `boolean`):

Visit each agency website and extract contact email addresses. Adds harvested\_emails to every record. Increases run time and cost.

## `deepScrape` (type: `boolean`):

Open each listing detail page to extract EOI dates, NBN status, transit distances, and full descriptions. Slower but significantly more complete.

## `flatten` (type: `boolean`):

Join array fields (images, highlights, property types) as pipe-separated strings for easy Excel/CSV export.

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

Australian residential proxies are strongly recommended to bypass Akamai Bot Manager and geo-IP restrictions.

## Actor input object example

```json
{
  "startUrls": [],
  "location": [],
  "listingMode": "sale",
  "propertyType": "any",
  "tenureType": "any",
  "sortBy": "featured",
  "maxItems": 100,
  "harvestEmails": false,
  "deepScrape": false,
  "flatten": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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": [],
    "location": [],
    "listingMode": "sale",
    "propertyType": "any",
    "tenureType": "any",
    "sortBy": "featured",
    "maxItems": 100,
    "harvestEmails": false,
    "deepScrape": false,
    "flatten": false,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/commercialrealestate-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": [],
    "location": [],
    "listingMode": "sale",
    "propertyType": "any",
    "tenureType": "any",
    "sortBy": "featured",
    "maxItems": 100,
    "harvestEmails": False,
    "deepScrape": False,
    "flatten": False,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/commercialrealestate-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 '{
  "startUrls": [],
  "location": [],
  "listingMode": "sale",
  "propertyType": "any",
  "tenureType": "any",
  "sortBy": "featured",
  "maxItems": 100,
  "harvestEmails": false,
  "deepScrape": false,
  "flatten": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call getascraper/commercialrealestate-au-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "CommercialRealEstate.com.au Property Scraper",
        "description": "Scrape Australian commercial property listings: sale prices, lease rates, land area, tenancy details, and agent mobile numbers from CommercialRealEstate.com.au.",
        "version": "0.1",
        "x-build-id": "azvxhW3Xn2b1ZMFQk"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/getascraper~commercialrealestate-au-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-getascraper-commercialrealestate-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/getascraper~commercialrealestate-au-scraper/runs": {
            "post": {
                "operationId": "runs-sync-getascraper-commercialrealestate-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/getascraper~commercialrealestate-au-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-getascraper-commercialrealestate-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",
                "required": [
                    "proxyConfiguration"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "CommercialRealEstate.com.au search, category, or individual listing URLs. Takes priority over all other filters when provided.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "location": {
                        "title": "Location",
                        "type": "array",
                        "description": "Australian suburb, city, or state to search (e.g. Sydney, Melbourne CBD, nsw/sydney). One URL is generated per entry. Ignored when Start URLs are provided.",
                        "default": []
                    },
                    "listingMode": {
                        "title": "Listing Mode",
                        "enum": [
                            "sale",
                            "lease",
                            "sold",
                            "business"
                        ],
                        "type": "string",
                        "description": "Type of listings to scrape.",
                        "default": "sale"
                    },
                    "propertyType": {
                        "title": "Property Type",
                        "enum": [
                            "any",
                            "offices",
                            "industrial",
                            "retail",
                            "land",
                            "medical",
                            "hotel-leisure",
                            "showrooms",
                            "other"
                        ],
                        "type": "string",
                        "description": "Commercial property category to filter results.",
                        "default": "any"
                    },
                    "minPrice": {
                        "title": "Min Price (AUD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum asking price in Australian dollars."
                    },
                    "maxPrice": {
                        "title": "Max Price (AUD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum asking price in Australian dollars."
                    },
                    "minFloorArea": {
                        "title": "Min Floor Area (m²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum building floor area in square metres."
                    },
                    "maxFloorArea": {
                        "title": "Max Floor Area (m²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum building floor area in square metres."
                    },
                    "minLandArea": {
                        "title": "Min Land Area (m²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum land area in square metres."
                    },
                    "maxLandArea": {
                        "title": "Max Land Area (m²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum land area in square metres."
                    },
                    "tenureType": {
                        "title": "Tenure Type",
                        "enum": [
                            "any",
                            "vacant_possession",
                            "tenanted"
                        ],
                        "type": "string",
                        "description": "Filter by occupancy profile. Vacant Possession is ready for immediate use; Tenanted Investment has existing rental income.",
                        "default": "any"
                    },
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Free-text keyword to narrow listing results (e.g. childcare, service station, cold storage)."
                    },
                    "sortBy": {
                        "title": "Sort Order",
                        "enum": [
                            "featured",
                            "newest",
                            "price-asc",
                            "price-desc"
                        ],
                        "type": "string",
                        "description": "Order results are returned in.",
                        "default": "featured"
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum total listings to extract across all pages.",
                        "default": 100
                    },
                    "harvestEmails": {
                        "title": "Harvest Agency Emails",
                        "type": "boolean",
                        "description": "Visit each agency website and extract contact email addresses. Adds harvested_emails to every record. Increases run time and cost.",
                        "default": false
                    },
                    "deepScrape": {
                        "title": "Deep Scrape (Property Details)",
                        "type": "boolean",
                        "description": "Open each listing detail page to extract EOI dates, NBN status, transit distances, and full descriptions. Slower but significantly more complete.",
                        "default": false
                    },
                    "flatten": {
                        "title": "Flatten Output (CSV-friendly)",
                        "type": "boolean",
                        "description": "Join array fields (images, highlights, property types) as pipe-separated strings for easy Excel/CSV export.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Australian residential proxies are strongly recommended to bypass Akamai Bot Manager and geo-IP restrictions.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
