# Commercialrealestate.com.au Scraper — Listings & Contacts (`trev0n/commercialrealestate-au-scraper`) Actor

Scrape commercial property listings from commercialrealestate.com.au — offices, retail, industrial, warehouses & land, for sale or lease. Get prices, land & building areas, highlights, photos, map coordinates, agency details, agent mobiles & emails. Paste any search, property or agency URL.

- **URL**: https://apify.com/trev0n/commercialrealestate-au-scraper.md
- **Developed by:** [Paweł](https://apify.com/trev0n) (community)
- **Categories:** Real estate, Lead generation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 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

## 🏢 Commercialrealestate.com.au Scraper

🎯 **The fastest way to turn Australia's #1 commercial property portal into clean, structured, ready-to-use data.**

Automatically extract thousands of commercial listings from [commercialrealestate.com.au](https://www.commercialrealestate.com.au) — **offices, retail, industrial, warehouses, land, medical, hotels and businesses**, for sale or lease — complete with **prices, land & building areas, property highlights, agency details, agent mobile numbers, contact emails, photos, map coordinates and FAQs**.

---

### 🚀 What Does It Do?

It works entirely from links you paste in — no manual copy-pasting, no clicking through hundreds of pages. Just filter on the website, copy the URL, and hit Start.

💡 **It accepts any commercialrealestate.com.au URL and handles each automatically:**

- **🔍 Search & category pages** — Paste a search link (e.g. offices for sale in NSW, warehouses for lease in VIC) and the scraper walks through every result page, collecting the full record for each listing until it hits your limit.
- **📋 Specific property, agency or agent pages** — Paste individual links to pull just those exact records.

---

### 👥 Who Is This For?

| 🏢 Use Case                            | 💬 How It Helps                                                                                   |
| -------------------------------------- | ------------------------------------------------------------------------------------------------- |
| 🏦 **Commercial investors & buyers**   | Build a live, nationwide shortlist of properties matching your budget, area and asset type        |
| 📈 **Property analysts & researchers** | Track asking prices, areas, sale methods and supply by region — and watch how they move over time |
| 📣 **Agencies & brokers**              | Monitor competitor stock, pricing and which agents are winning which listings                     |
| 🤝 **Lead-gen & sales teams**          | Get agency names, direct phone numbers, agent mobiles and contact emails to power your outreach   |
| 🏗️ **Developers & site finders**       | Surface land and development sites with land/floor areas and exact locations                      |
| 🧾 **Proptech & data teams**           | Feed a constantly refreshed commercial-listings dataset straight into your app or model           |

---

### ✨ Features

- 🌐 **Full-site coverage** — Offices, retail, industrial, land, medical, hotels and businesses — for sale, lease, sold and leased
- 🧭 **Automatic pagination** — Walks every result page so nothing slips through
- 🏷️ **Rich property data** — Prices, sale methods, land & building areas, property highlights and listing FAQs
- 📞 **Agency & agent contacts** — Agency name, website and phone, plus every agent's name, mobile and profile link
- 📧 **Email finder** — Optionally discovers agency contact emails for ready-to-use leads
- 🗺️ **Location intelligence** — Suburb, state, postcode, region and precise map coordinates
- 🌐 **Connectivity & FAQs** — NBN status and the listing's own Q&A, captured automatically
- 🖼️ **Every photo** — Full-resolution image URLs for each listing
- 🎛️ **Smart Filters** — Filter on the site by type, location, price and sale method, then just paste the link
- ⚡ **Fast & Scalable** — Pulls hundreds of fully-detailed listings per minute, thousands per run
- 🔄 **Deduplication** — Never collect the same listing twice, even across dozens of pages
- 📤 **Export Anywhere** — Download results as JSON, CSV, Excel, or push to Google Sheets, Zapier, Make, or your CRM

---

### 🎛️ Filters & Options

| Option                             | What It Does                                                                                                                                  |
| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| 🔗 **Start URLs**                  | Any commercialrealestate.com.au link — a search page, a single property, an agency or an agent. The scraper recognises each one automatically |
| 📋 **Full Property Details**       | Open every listing for the complete record (areas, agents, FAQs, photos) — or stay on listing cards for a lighter, even faster run            |
| 📧 **Find Agency Emails**          | Look up each agency's website to discover contact email addresses                                                                             |
| 🧱 **Spreadsheet-Friendly Output** | Flatten results into simple columns for CSV/Excel — or keep the rich nested structure                                                         |
| 🔢 **Max Results**                 | Control exactly how many listings to extract per run                                                                                          |
| 🔗 **Direct URLs**                 | Optionally provide specific property, agency or agent URLs to scrape                                                                          |

---

### 📦 What You Get (Output Fields)

Every listing includes:

#### Listing & Description

| Field       | Example                                                                                                                                                   |
| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| listingId   | `"2020820243"`                                                                                                                                            |
| headline    | `"Functional Warehouse With Two Gantry Cranes"`                                                                                                           |
| description | `"Positioned in a tightly held industrial precinct, this freestanding warehouse offers high clearance, dual gantry cranes and excellent truck access..."` |
| highlights  | `["Two gantry cranes", "Internal clearance up to 8m*", "Secure hardstand"]`                                                                               |
| url         | `"https://www.commercialrealestate.com.au/property/14-bessemer-street-blacktown-nsw-2148-2020820243"`                                                     |

#### Pricing & Sale

| Field          | Example            |
| -------------- | ------------------ |
| priceDisplay   | `"Contact Agent"`  |
| listingMode    | `"sale"`           |
| saleType       | `"For Sale"`       |
| saleMethod     | `"Private Treaty"` |
| statusFlag     | `"New"`            |
| isUnderOffer   | `false`            |
| auctionDate    | `"2026-07-15"`     |
| soldLeasedDate | `null`             |

#### Location

| Field              | Example                                    |
| ------------------ | ------------------------------------------ |
| displayableAddress | `"14 Bessemer Street, Blacktown NSW 2148"` |
| suburb             | `"Blacktown"`                              |
| state              | `"NSW"`                                    |
| postcode           | `"2148"`                                   |
| region             | `"Sydney Region"`                          |
| latitude           | `-33.7689`                                 |
| longitude          | `150.9065`                                 |

#### Size & Type

| Field             | Example                               |
| ----------------- | ------------------------------------- |
| propertyTypeNames | `["Factory, Warehouse & Industrial"]` |
| mainCategory      | `"Industrial/Warehouse"`              |
| landArea          | `"2,238 m²"`                          |
| buildArea         | `"1,216 m²"`                          |

#### Agency & Agents

| Field              | Example                                                                              |
| ------------------ | ------------------------------------------------------------------------------------ |
| agencyName         | `"Cushman & Wakefield Parramatta"`                                                   |
| agencyWebsite      | `"http://www.cushmanwakefield.com/en"`                                               |
| generalPhoneNumber | `"02 9229 6881"`                                                                     |
| fullAddress        | `"Level 5, 16-18 Smith Street, Parramatta NSW 2150"`                                 |
| agents             | `[{ "name": "Carl Pearce", "mobile": "0409 483 202", "profileUrl": "https://..." }]` |
| harvestedEmails    | `["info@cushmanwakefield.com"]`                                                      |

#### Connectivity & FAQs

| Field            | Example                                                                                |
| ---------------- | -------------------------------------------------------------------------------------- |
| nbnTechType      | `"FTTP"`                                                                               |
| nbnServiceStatus | `"Available"`                                                                          |
| listingFaqList   | `[{ "question": "What is the floor area?", "answer": "The floor area is 1,216 m²." }]` |

#### Media

| Field     | Example                                                                          |
| --------- | -------------------------------------------------------------------------------- |
| cardImage | `"https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2020820243_1"`  |
| images    | `["https://...image/..._1", "https://...image/..._2", "https://...image/..._3"]` |

---

### 📊 Example Output

```json
{
    "listingId": "2020820243",
    "headline": "Functional Warehouse With Two Gantry Cranes",
    "description": "Positioned in a tightly held industrial precinct, this freestanding warehouse offers high internal clearances, two gantry cranes and excellent truck access.",
    "highlights": ["Two gantry cranes", "Internal clearance up to 8m*", "Secure hardstand"],
    "listingMode": "sale",
    "priceDisplay": "Contact Agent",
    "saleType": "For Sale",
    "saleMethod": "Private Treaty",
    "statusFlag": "New",
    "isUnderOffer": false,
    "displayableAddress": "14 Bessemer Street, Blacktown NSW 2148",
    "suburb": "Blacktown",
    "state": "NSW",
    "postcode": "2148",
    "region": "Sydney Region",
    "latitude": -33.7689,
    "longitude": 150.9065,
    "propertyTypeNames": ["Factory, Warehouse & Industrial"],
    "mainCategory": "Industrial/Warehouse",
    "landArea": "2,238 m²",
    "buildArea": "1,216 m²",
    "agencyName": "Cushman & Wakefield Parramatta",
    "agencyWebsite": "http://www.cushmanwakefield.com/en",
    "generalPhoneNumber": "02 9229 6881",
    "agents": [
        {
            "name": "Carl Pearce",
            "mobile": "0409 483 202",
            "photo": "https://images.domain.com.au/img/29887/contact_1894074.jpeg",
            "profileUrl": "https://www.commercialrealestate.com.au/agent-profile/carl-pearce-1894074/"
        }
    ],
    "harvestedEmails": ["info@cushmanwakefield.com"],
    "nbnTechType": "FTTP",
    "nbnServiceStatus": "Available",
    "listingFaqList": [
        { "question": "What is the floor area for 14 Bessemer Street?", "answer": "The floor area is 1,216 m²." }
    ],
    "images": [
        "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2020820243_1",
        "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2020820243_2"
    ],
    "url": "https://www.commercialrealestate.com.au/property/14-bessemer-street-blacktown-nsw-2148-2020820243",
    "scrapedAt": "2026-06-17T08:15:00.000Z"
}
````

***

### 📋 Dataset Views

The Apify Console gives you **3 ready-made table views** to browse your results instantly:

| View                   | What It Shows                                                                          |
| ---------------------- | -------------------------------------------------------------------------------------- |
| 📊 **Overview**        | Headline, price, address, suburb, areas and property type — your at-a-glance shortlist |
| 🤝 **Agency & agents** | Agency, website, phone, agents and any harvested emails — built for outreach           |
| 📋 **Full Details**    | Every single field — the complete dataset                                              |

***

### ❓ FAQ

**🤔 What kind of properties does it cover?**
Every commercial category on commercialrealestate.com.au — offices, retail, industrial, warehouses, land, medical, hotels and businesses — across for sale, for lease, sold and leased.

**🤔 Can I scrape a specific search, like "warehouses for lease in Melbourne"?**
Absolutely. Filter on the website, copy the resulting search link, and paste it in — the scraper collects every matching listing across all pages.

**🤔 Does it include agent phone numbers and emails?**
Yes. Every listing carries the agency phone and each agent's name and mobile. Switch on the email finder to also collect agency contact emails.

**🤔 How many listings can I collect in one run?**
As many as you like — set Max Results. There are thousands of listings per state, and the scraper paginates through all of them.

**🤔 Is the data accurate and up to date?**
Yes — it reads live data straight from the listings at the moment you run it, including the latest prices, statuses and contacts.

**🤔 Can I export the data?**
Yes — JSON, CSV, Excel, XML, HTML, RSS. You can also push data directly to Google Sheets, Zapier, Make, or any webhook/API endpoint.

**🤔 How often should I run this?**
For fresh data, run daily or weekly. You can schedule automatic runs on Apify with just a few clicks.

**🤔 Does it work with proxies?**
Yes — residential proxies are recommended for the best results, and it works out of the box with Apify's built-in proxy service.

***

### 🛠️ Need Custom Filters or Features?

**I'm happy to customize this scraper for your specific needs!** 🤝

Whether you need:

- 🎯 Additional filters (by price range, area size, property type, region, sale method, or keyword)
- 📊 Extra data fields or custom output formats
- 🔄 Integration with your CRM, Google Sheets, or database
- ⏰ Scheduled scraping with automatic deduplication
- 🌐 Scraping from other commercial real-estate platforms alongside commercialrealestate.com.au

👉 **Don't hesitate to reach out via private message** — I respond quickly and I'm always open to building exactly what you need. No request is too small or too specific!

***

### ⚖️ Legal & Ethical Use

This scraper collects **only publicly available information** from commercialrealestate.com.au. It does not access private data, bypass authentication, or log in to any account. Please use the data responsibly and in compliance with applicable laws and platform terms of service.

# Actor input Schema

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

commercialrealestate.com.au URLs to scrape. Any shape is accepted and auto-classified: search/listing pages (for-sale, for-lease, sold, leased, businesses-for-sale), individual property pages, agent profiles, or agency profiles.

## `fanOutToDetail` (type: `boolean`):

When enabled, each listing found on a search page is opened to collect the full ~40-field detail record. When disabled, only the ~15 fields available on the listing card are returned (faster and cheaper).

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

Follow the agency website (and its /contact page) to extract contact email addresses.

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

Expand nested objects into underscore-separated top-level keys for CSV-friendly output. Disable to keep nested JSON.

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

Hard cap on the number of records pushed to the dataset.

## `detailBatchSize` (type: `integer`):

How many listings' full detail to fetch in a single batched request. Higher = fewer requests and faster, but larger responses. Set to 1 to disable batching.

## `maxConcurrency` (type: `integer`):

Maximum number of parallel requests.

## `minConcurrency` (type: `integer`):

Minimum number of parallel requests.

## `maxRequestRetries` (type: `integer`):

How many times a failed (e.g. Akamai 403/429) request is retried on a fresh proxy session before being given up.

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

The site is behind Akamai and blocks datacenter IPs — Australian RESIDENTIAL proxies are strongly recommended.

## `debug` (type: `boolean`):

Dump the raw **NEXT\_DATA** JSON and page HTML to the key-value store and log candidate object shapes (for tuning field mappings).

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.commercialrealestate.com.au/for-sale/nsw/"
    }
  ],
  "fanOutToDetail": true,
  "harvestEmails": true,
  "flatten": true,
  "maxItems": 10,
  "detailBatchSize": 20,
  "maxConcurrency": 12,
  "minConcurrency": 1,
  "maxRequestRetries": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "AU"
  },
  "debug": false
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `agencyContacts` (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.commercialrealestate.com.au/for-sale/nsw/"
        }
    ],
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "AU"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("trev0n/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": [{ "url": "https://www.commercialrealestate.com.au/for-sale/nsw/" }],
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "AU",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("trev0n/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": [
    {
      "url": "https://www.commercialrealestate.com.au/for-sale/nsw/"
    }
  ],
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "AU"
  }
}' |
apify call trev0n/commercialrealestate-au-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Commercialrealestate.com.au Scraper — Listings & Contacts",
        "description": "Scrape commercial property listings from commercialrealestate.com.au — offices, retail, industrial, warehouses & land, for sale or lease. Get prices, land & building areas, highlights, photos, map coordinates, agency details, agent mobiles & emails. Paste any search, property or agency URL.",
        "version": "1.0",
        "x-build-id": "gY0VHyzodc7MWBYJB"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/trev0n~commercialrealestate-au-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-trev0n-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/trev0n~commercialrealestate-au-scraper/runs": {
            "post": {
                "operationId": "runs-sync-trev0n-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/trev0n~commercialrealestate-au-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-trev0n-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": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "commercialrealestate.com.au URLs to scrape. Any shape is accepted and auto-classified: search/listing pages (for-sale, for-lease, sold, leased, businesses-for-sale), individual property pages, agent profiles, or agency profiles.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "fanOutToDetail": {
                        "title": "Fan out to detail pages",
                        "type": "boolean",
                        "description": "When enabled, each listing found on a search page is opened to collect the full ~40-field detail record. When disabled, only the ~15 fields available on the listing card are returned (faster and cheaper).",
                        "default": true
                    },
                    "harvestEmails": {
                        "title": "Harvest agency emails",
                        "type": "boolean",
                        "description": "Follow the agency website (and its /contact page) to extract contact email addresses.",
                        "default": true
                    },
                    "flatten": {
                        "title": "Flatten output",
                        "type": "boolean",
                        "description": "Expand nested objects into underscore-separated top-level keys for CSV-friendly output. Disable to keep nested JSON.",
                        "default": true
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Hard cap on the number of records pushed to the dataset.",
                        "default": 100
                    },
                    "detailBatchSize": {
                        "title": "Detail batch size",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "How many listings' full detail to fetch in a single batched request. Higher = fewer requests and faster, but larger responses. Set to 1 to disable batching.",
                        "default": 20
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of parallel requests.",
                        "default": 12
                    },
                    "minConcurrency": {
                        "title": "Min concurrency",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Minimum number of parallel requests.",
                        "default": 1
                    },
                    "maxRequestRetries": {
                        "title": "Max request retries",
                        "minimum": 0,
                        "type": "integer",
                        "description": "How many times a failed (e.g. Akamai 403/429) request is retried on a fresh proxy session before being given up.",
                        "default": 5
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "The site is behind Akamai and blocks datacenter IPs — Australian RESIDENTIAL proxies are strongly recommended.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "AU"
                        }
                    },
                    "debug": {
                        "title": "Debug",
                        "type": "boolean",
                        "description": "Dump the raw __NEXT_DATA__ JSON and page HTML to the key-value store and log candidate object shapes (for tuning field mappings).",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
