# View.com.au – Australia Property Listings, Sold & Rental Data (`abotapi/view-com-au-scraper`) Actor

Scrape Australian property listings from view.com.au across sale, rent, and recently sold. Search by suburb, city, state, or URL. Extract prices, full addresses, agent and agency contacts, photos, GPS coordinates, market insights, and structured property details.

- **URL**: https://apify.com/abotapi/view-com-au-scraper.md
- **Developed by:** [AbotAPI](https://apify.com/abotapi) (community)
- **Categories:** Real estate, Automation, Travel
- **Stats:** 7 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

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

## View.com.au Scraper

Search and extract all property listings for sale, rent, and recently sold across Australia from view com au. Collect property prices, full addresses, agent and agency contacts, photos, GPS coordinates, and market insights for any suburb, city, or state - all in structured, ready-to-use format.

### What does View com au Scraper do?

This actor searches view.com.au and collects property listing data including:

- **For Sale** - properties currently on the market
- **For Rent** - rental listings with weekly prices
- **Sold** - recently sold properties with sale prices

For every listing, you get the full address, asking price (or sold price), bedrooms, bathrooms, car spaces, land size, property images, listing agent contact details, agency info, GPS coordinates, days on market, and more.

### Why use this scraper?

- **Lightning fast** - extracts ~25 listings per page load with no individual property page visits needed
- **Structured data** - prices parsed into numeric values, addresses split into components, coordinates included
- **Three input modes** - search by location, paste search list URLs, or paste individual property detail URLs (`detail` mode)
- **Flexible search** - state-wide, city-level, or suburb-level searches with price/bedroom/bathroom filters
- **Resumable** - automatically saves progress and resumes from checkpoint on failure
- **Optional detail enrichment** - turn on `includeDetailPage` for full descriptions, floor plans, and sale history per property

### Quick Start

Scrape for-sale properties in Melbourne CBD:

```json
{
  "mode": "location",
  "locations": [{ "suburb": "Melbourne", "state": "VIC", "postcode": "3000" }],
  "listingType": "buy",
  "maxListings": 50,
  "maxPages": 2
}
````

Scrape multiple locations at once:

```json
{
  "mode": "location",
  "locations": [
    { "suburb": "Melbourne", "state": "VIC", "postcode": "3000" },
    { "suburb": "Sydney", "state": "NSW", "postcode": "2000" },
    { "suburb": "Brisbane", "state": "QLD", "postcode": "4000" }
  ],
  "listingType": "buy",
  "maxListings": 100,
  "maxPages": 4
}
```

Scrape all of Victoria (state-wide):

```json
{
  "mode": "location",
  "locations": [{ "state": "VIC" }],
  "listingType": "buy",
  "maxListings": 100,
  "maxPages": 4
}
```

Scrape from a search list URL:

```json
{
  "mode": "url",
  "urls": ["https://www.view.com.au/for-sale/vic/in-melbourne-3000/"],
  "maxListings": 50
}
```

Scrape specific property detail pages you already have:

```json
{
  "mode": "detail",
  "detailUrls": [
    "https://www.view.com.au/property/vic/kew-east-3102/24-normanby-road-kew-east-vic-3102-14802144/"
  ]
}
```

### Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `mode` | String | `location` | Search mode: `location`, `url`, or `detail` |
| `locations` | Array | `[{"suburb":"Melbourne","state":"VIC","postcode":"3000"}]` | Locations to search. Each location has a state (required), suburb (optional), and postcode (optional) |
| `urls` | Array | - | Search list page URLs (for `url` mode) |
| `detailUrls` | Array | - | Individual property detail page URLs, one record scraped per URL (for `detail` mode) |
| `listingType` | String | `buy` | Listing type: `buy`, `rent`, or `sold` |
| `propertyTypes` | Array | *(all)* | Filter: `house`, `apartment`, `townhouse`, `land`, `studio` |
| `priceMin` | Integer | - | Minimum price (AUD) |
| `priceMax` | Integer | - | Maximum price (AUD) |
| `bedroomsMin` | Integer | - | Minimum bedrooms |
| `bathroomsMin` | Integer | - | Minimum bathrooms |
| `carsMin` | Integer | - | Minimum car spaces |
| `sort` | String | `default` | Sort order: `default`, `price-asc`, `price-desc` |
| `maxListings` | Integer | `25` | Stop after this many listings |
| `maxPages` | Integer | `2` | Max search pages per location (25 results/page) |
| `includeDetailPage` | Boolean | `false` | Fetch full per-property data (description, floor plans, sale history) |
| `outputFormat` | Array | `["json"]` | Export formats: `json`, `csv` |
| `proxyConfiguration` | Object | - | Proxy settings (Apify proxy or custom) |
| `resumeFromCheckpoint` | Boolean | `true` | Resume from last checkpoint on failure |

#### Location Flexibility

Each location uses a form with **State** (required dropdown), **Suburb** (optional text), and **Postcode** (optional text). You can add multiple locations to search them all in one run.

| Location | Scope | ~Results |
|----------|-------|---------|
| State: `VIC` | All of Victoria | ~52,000 |
| Suburb: `Melbourne`, State: `VIC` | Metro Melbourne | ~25,000 |
| Suburb: `Melbourne`, State: `VIC`, Postcode: `3000` | Melbourne CBD | ~2,300 |
| Suburb: `Kew East`, State: `VIC`, Postcode: `3102` | Single suburb | ~50 |

> **Note:** State is always required. Postcode-only searches are not supported by view.com.au.

### Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step **after** the scrape; the Apify dataset is never changed.

**What gets written to the connector:** a condensed, human-readable **summary** of each record, not the full JSON. Each item becomes one entry with a **title** (the listing's name / address) and its key fields flattened to plain text (price, beds/baths, agent, URL, etc.). Nested objects are collapsed to their main value (e.g. an address object to its full-address text) and long lists are trimmed to the first few names. The **complete, full-fidelity record always stays in the Apify dataset**; the connector copy is a readable digest for browsing in your app.

- **Notion** → one page per item (title + a summary body), created under the page you set in `notionParentPageUrl`.
- **Linear / Airtable / other** → one record/issue per item with the same title + fields.

How to enable:

1. Authorize a connector once under **Apify → Settings → Integrations** (Notion, Linear, Airtable, or Apify).
2. Select it in the **"Pipe results into your apps"** input field. (If the picker is empty, you haven't authorized a connector yet.)
3. For **Notion**, also set `notionParentPageUrl` to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip; the export only runs when a connector is selected.

### Output

Each listing in the dataset contains:

```json
{
  "id": 12345678,
  "listingUrl": "https://www.view.com.au/property/vic/sampleville-3000/5-10-example-street-12345678/",
  "address": {
    "full": "5/10 Example Street, SAMPLEVILLE VIC 3000",
    "streetNumber": "10",
    "streetName": "Example Street",
    "unitNumber": "5",
    "suburb": "SAMPLEVILLE",
    "state": "VIC",
    "postcode": "3000",
    "city": "Melbourne",
    "country": "Australia",
    "countryCode": "AU"
  },
  "price": {
    "display": "$850,000 - $900,000",
    "value": 850000,
    "currency": "AUD",
    "priceType": "range",
    "isRange": true,
    "min": 850000,
    "max": 900000
  },
  "features": {
    "bedrooms": 3,
    "bathrooms": 2,
    "carSpaces": 1
  },
  "propertyType": "apartment",
  "sourcePropertyType": "Apartment & Unit",
  "listingType": "buy",
  "saleMethod": "Sale",
  "status": "On Market",
  "rank": "Premium",
  "images": [
    {
      "url": "https://view.com.au/viewstatic/images/listing/.../800-w/12345678-1-ABC1234.jpg",
      "sequence": 1
    }
  ],
  "agents": [
    {
      "id": 99999,
      "firstName": "Jane",
      "lastName": "Smith",
      "phone": "9000 1234",
      "mobile": "0400 000 000",
      "numberOfSoldListings": 25,
      "averageSoldPrice": 920000
    }
  ],
  "agency": {
    "id": 10001,
    "name": "Sample Realty",
    "profileLink": "/agency/sample-realty-10001/",
    "brandColour": "1A1A1A"
  },
  "location": {
    "lat": -37.81,
    "lon": 144.96
  },
  "lgaName": "Sample Council",
  "createdAt": "2026-01-15 09:30:00",
  "source": {
    "portal": "view.com.au",
    "scrapedAt": "2026-02-22T12:00:00.000Z"
  }
}
```

#### Extra detail-page fields (`detail` mode, or `includeDetailPage: true`)

Records that come from a property detail page carry a richer attribute set than search-result cards. You get these whenever you use **`detail` mode** (paste property URLs) or turn on **`includeDetailPage`** in `location` / `url` mode:

- `heading` - listing headline
- `description` - full property description
- `floorPlans` - floor plan images
- `landPricePerSqm` - calculated land value per sqm (when available)
- `staticMapUrl` - static map image of the property location (when available)
- `videoUrl` / `virtualTourUrl` - video and virtual-tour links (when available)
- `valuationEstimate` - estimated property value (value + value type)
- `suburbTrend` - suburb median price/rent and yearly trend
- Agent `email` and `profileLink`

### Dataset Views

The output dataset includes 4 pre-configured table views:

| View | Fields |
|------|--------|
| **Overview** | ID, type, property, address, price, features, URL, days on market, status |
| **Media** | ID, address, images, floor plans, hero image |
| **Agents & Agencies** | ID, address, agents, agency |
| **Location & Market** | ID, address, coordinates, council, days on market, last sold price/year, $/sqm |

# Actor input Schema

## `mode` (type: `string`):

Search by Location builds URLs from suburb/state. Search List URLs lets you paste view.com.au search result page URLs directly. Property Detail URLs scrapes individual property pages you paste (one record per URL).

## `locations` (type: `array`):

Locations to search. State is required. Suburb and postcode are optional - omit for broader searches.

## `listingType` (type: `string`):

Type of property listings to scrape

## `propertyTypes` (type: `array`):

Filter by property type. Leave empty for all types.

## `priceMin` (type: `integer`):

Minimum property price in AUD

## `priceMax` (type: `integer`):

Maximum property price in AUD

## `bedroomsMin` (type: `integer`):

Minimum number of bedrooms

## `bathroomsMin` (type: `integer`):

Minimum number of bathrooms

## `carsMin` (type: `integer`):

Minimum number of car spaces

## `sort` (type: `string`):

Sort order for search results

## `urls` (type: `array`):

Paste view.com.au search result page URLs (listing pages). These are URLs that show multiple properties, e.g. https://www.view.com.au/for-sale/vic/in-melbourne-3000/. Do NOT use individual property detail URLs (e.g. /property/vic/...).

## `detailUrls` (type: `array`):

Paste individual view.com.au property detail page URLs, e.g. https://www.view.com.au/property/vic/melbourne-3000/123-example-street-12345678/. One record is scraped per URL with full detail-page data. Only used when Search Mode is 'Property Detail URLs'.

## `maxListings` (type: `integer`):

Stop after scraping this many listings. Leave empty for no limit.

## `maxPages` (type: `integer`):

Maximum search result pages per location. Each page has ~25 results.

## `includeDetailPage` (type: `boolean`):

Fetch each property detail page for full data (description, all images, floor plans, sale history). Slower but more complete.

## `outputFormat` (type: `array`):

Export data in these formats

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

Configure proxy for reliable access. Residential AU proxies recommended.

## `resumeFromCheckpoint` (type: `boolean`):

Continue from last saved checkpoint if the run was interrupted

## `mcpConnectors` (type: `array`):

Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. Notion gets a page per item; other connectors receive a best-effort write/digest. Leave empty to skip; this never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).

## `notionParentPageUrl` (type: `string`):

URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.

## `maxNotifyListings` (type: `integer`):

Cap on items written to each connector per run. Does not affect the dataset.

## Actor input object example

```json
{
  "mode": "location",
  "locations": [
    {
      "suburb": "Melbourne",
      "state": "VIC",
      "postcode": "3000"
    }
  ],
  "listingType": "buy",
  "sort": "date-desc",
  "urls": [
    "https://www.view.com.au/for-sale/vic/in-melbourne-3000/"
  ],
  "detailUrls": [
    "https://www.view.com.au/property/vic/kew-east-3102/24-normanby-road-kew-east-vic-3102-14802144/"
  ],
  "maxListings": 25,
  "maxPages": 2,
  "includeDetailPage": false,
  "outputFormat": [
    "json"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "AU"
  },
  "resumeFromCheckpoint": true,
  "maxNotifyListings": 50
}
```

# Actor output Schema

## `defaultDataset` (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 = {
    "locations": [
        {
            "suburb": "Melbourne",
            "state": "VIC",
            "postcode": "3000"
        }
    ],
    "urls": [
        "https://www.view.com.au/for-sale/vic/in-melbourne-3000/"
    ],
    "detailUrls": [
        "https://www.view.com.au/property/vic/kew-east-3102/24-normanby-road-kew-east-vic-3102-14802144/"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "AU"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/view-com-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 = {
    "locations": [{
            "suburb": "Melbourne",
            "state": "VIC",
            "postcode": "3000",
        }],
    "urls": ["https://www.view.com.au/for-sale/vic/in-melbourne-3000/"],
    "detailUrls": ["https://www.view.com.au/property/vic/kew-east-3102/24-normanby-road-kew-east-vic-3102-14802144/"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "AU",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("abotapi/view-com-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 '{
  "locations": [
    {
      "suburb": "Melbourne",
      "state": "VIC",
      "postcode": "3000"
    }
  ],
  "urls": [
    "https://www.view.com.au/for-sale/vic/in-melbourne-3000/"
  ],
  "detailUrls": [
    "https://www.view.com.au/property/vic/kew-east-3102/24-normanby-road-kew-east-vic-3102-14802144/"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "AU"
  }
}' |
apify call abotapi/view-com-au-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "View.com.au – Australia Property Listings, Sold & Rental Data",
        "description": "Scrape Australian property listings from view.com.au across sale, rent, and recently sold. Search by suburb, city, state, or URL. Extract prices, full addresses, agent and agency contacts, photos, GPS coordinates, market insights, and structured property details.",
        "version": "1.0",
        "x-build-id": "ijwo8NjU6mJ56zqDm"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/abotapi~view-com-au-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-abotapi-view-com-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/abotapi~view-com-au-scraper/runs": {
            "post": {
                "operationId": "runs-sync-abotapi-view-com-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/abotapi~view-com-au-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-abotapi-view-com-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": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Search Mode",
                        "enum": [
                            "location",
                            "url",
                            "detail"
                        ],
                        "type": "string",
                        "description": "Search by Location builds URLs from suburb/state. Search List URLs lets you paste view.com.au search result page URLs directly. Property Detail URLs scrapes individual property pages you paste (one record per URL).",
                        "default": "location"
                    },
                    "locations": {
                        "title": "Locations",
                        "type": "array",
                        "description": "Locations to search. State is required. Suburb and postcode are optional - omit for broader searches.",
                        "items": {
                            "type": "object",
                            "properties": {
                                "suburb": {
                                    "title": "Suburb (Optional)",
                                    "type": "string",
                                    "description": "Suburb or city name, e.g. Melbourne, Kew East. Leave empty for state-wide search.",
                                    "editor": "textfield"
                                },
                                "state": {
                                    "title": "State",
                                    "type": "string",
                                    "description": "Australian state or territory",
                                    "enum": [
                                        "NSW",
                                        "VIC",
                                        "QLD",
                                        "SA",
                                        "WA",
                                        "TAS",
                                        "NT",
                                        "ACT"
                                    ],
                                    "editor": "select"
                                },
                                "postcode": {
                                    "title": "Postcode (Optional)",
                                    "type": "string",
                                    "description": "4-digit postcode for suburb-level precision, e.g. 3000",
                                    "editor": "textfield",
                                    "pattern": "^[0-9]{4}$"
                                }
                            },
                            "required": [
                                "state"
                            ]
                        }
                    },
                    "listingType": {
                        "title": "Listing Type",
                        "enum": [
                            "buy",
                            "rent",
                            "sold"
                        ],
                        "type": "string",
                        "description": "Type of property listings to scrape",
                        "default": "buy"
                    },
                    "propertyTypes": {
                        "title": "Property Types (Optional)",
                        "type": "array",
                        "description": "Filter by property type. Leave empty for all types.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "house",
                                "apartment",
                                "townhouse",
                                "land",
                                "studio",
                                "villa",
                                "rural"
                            ],
                            "enumTitles": [
                                "House",
                                "Apartment & Unit",
                                "Townhouse",
                                "Land",
                                "Studio",
                                "Villa",
                                "Rural"
                            ]
                        }
                    },
                    "priceMin": {
                        "title": "Minimum Price (Optional)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum property price in AUD"
                    },
                    "priceMax": {
                        "title": "Maximum Price (Optional)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum property price in AUD"
                    },
                    "bedroomsMin": {
                        "title": "Minimum Bedrooms (Optional)",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Minimum number of bedrooms"
                    },
                    "bathroomsMin": {
                        "title": "Minimum Bathrooms (Optional)",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Minimum number of bathrooms"
                    },
                    "carsMin": {
                        "title": "Minimum Car Spaces (Optional)",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Minimum number of car spaces"
                    },
                    "sort": {
                        "title": "Sort Order (Optional)",
                        "enum": [
                            "default",
                            "date-desc",
                            "updatedAt-desc",
                            "price-asc",
                            "price-desc"
                        ],
                        "type": "string",
                        "description": "Sort order for search results",
                        "default": "date-desc"
                    },
                    "urls": {
                        "title": "Search List URLs",
                        "type": "array",
                        "description": "Paste view.com.au search result page URLs (listing pages). These are URLs that show multiple properties, e.g. https://www.view.com.au/for-sale/vic/in-melbourne-3000/. Do NOT use individual property detail URLs (e.g. /property/vic/...).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "detailUrls": {
                        "title": "Property Detail URLs",
                        "type": "array",
                        "description": "Paste individual view.com.au property detail page URLs, e.g. https://www.view.com.au/property/vic/melbourne-3000/123-example-street-12345678/. One record is scraped per URL with full detail-page data. Only used when Search Mode is 'Property Detail URLs'.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxListings": {
                        "title": "Maximum Listings",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Stop after scraping this many listings. Leave empty for no limit.",
                        "default": 25
                    },
                    "maxPages": {
                        "title": "Maximum Pages per Location",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum search result pages per location. Each page has ~25 results.",
                        "default": 2
                    },
                    "includeDetailPage": {
                        "title": "Include Detail Page Data",
                        "type": "boolean",
                        "description": "Fetch each property detail page for full data (description, all images, floor plans, sale history). Slower but more complete.",
                        "default": false
                    },
                    "outputFormat": {
                        "title": "Output Formats",
                        "type": "array",
                        "description": "Export data in these formats",
                        "items": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ],
                            "enumTitles": [
                                "JSON",
                                "CSV"
                            ]
                        },
                        "default": [
                            "json"
                        ]
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Configure proxy for reliable access. Residential AU proxies recommended.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "AU"
                        }
                    },
                    "resumeFromCheckpoint": {
                        "title": "Resume from Checkpoint",
                        "type": "boolean",
                        "description": "Continue from last saved checkpoint if the run was interrupted",
                        "default": true
                    },
                    "mcpConnectors": {
                        "title": "Pipe results into your apps (optional)",
                        "type": "array",
                        "description": "Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. Notion gets a page per item; other connectors receive a best-effort write/digest. Leave empty to skip; this never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
                    },
                    "notionParentPageUrl": {
                        "title": "Notion parent page (Notion connector only)",
                        "type": "string",
                        "description": "URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
                    },
                    "maxNotifyListings": {
                        "title": "Max items to export per connector",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Cap on items written to each connector per run. Does not affect the dataset.",
                        "default": 50
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
