# Commercialrealestate Property Search Scraper (`alexist/commercialrealestate-property-search-scraper`) Actor

Extract comprehensive commercial property data from Commercial Real Estate Australia. Scrape 200+ listings per search with property details, pricing, location, agency info, and multimedia — perfect for market analysis, lead generation, and portfolio tracking.

- **URL**: https://apify.com/alexist/commercialrealestate-property-search-scraper.md
- **Developed by:** [Alex](https://apify.com/alexist) (community)
- **Categories:** Automation, Developer tools, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Commercial Real Estate Property Scraper: Capture Australian Commercial Listings

***

### What Is Commercial Real Estate Australia?

Commercial Real Estate Australia (commercialrealestate.com.au) is the country's leading online marketplace for commercial property transactions. It hosts thousands of active listings for office, retail, industrial, and mixed-use properties across all Australian states. Real estate professionals, investors, and market researchers rely on this platform to track market trends, identify opportunities, and monitor competitor activity. Manually extracting property data from search results is tedious and error-prone — the **Commercial Real Estate Property Scraper** automates bulk collection with precision.

***

### Overview

The **Commercial Real Estate Property Scraper** extracts detailed property cards from Commercial Real Estate Australia search pages, converting listings into structured, analysis-ready datasets. It is ideal for:

- **Real estate agents & brokers** monitoring competitor listings and market activity
- **Investors** tracking property sales, pricing trends, and market conditions
- **Market researchers** analyzing commercial real estate supply and demand
- **Property data aggregators** feeding listings into CRM or marketplace platforms
- **Valuers & appraisers** gathering comparative property data

The scraper captures 35 essential fields per property, from headline and pricing to location and multimedia assets, with support for up to 200 items per search URL.

***

### Input Format

The scraper accepts a JSON configuration object:

```json
{
    "urls": [
        "https://www.commercialrealestate.com.au/for-sale/"
    ],
    "max_items_per_url": 200,
    "ignore_url_failures": true
}
```

| Field | Description | Type |
|---|---|---|
| `urls` | Array of Commercial Real Estate Australia property search URLs to scrape | Array of strings |
| `max_items_per_url` | Maximum number of property listings to extract per URL (1–200+) | Integer |
| `ignore_url_failures` | If `true`, scraper continues if individual URLs fail; if `false`, entire run stops | Boolean |

**Examples of valid URLs:**

- `https://www.commercialrealestate.com.au/for-sale/` (all sales)
- `https://www.commercialrealestate.com.au/for-lease/` (all leases)
- `https://www.commercialrealestate.com.au/for-sale/nsw/` (state-specific)
- `https://www.commercialrealestate.com.au/for-sale/sydney/` (suburb-specific)

> **Tip:** Use state and suburb filters to narrow results and reduce scraping time. Set `ignore_url_failures: true` for large batch runs to ensure completion even if a single URL times out.

***

### Output Format

**Sample output**

```json
{
  "ad_id": null,
  "seo_url": "/property/560-650-high-street-epping-vic-3076-2021009535",
  "headline": "Dominant Large Format Retail centre of quality and scale rarely released to market",
  "highlights": [
    {
      "__typename": "HighlightItemType",
      "item_text": "A modern 26,550sqm LFR centre"
    },
    {
      "__typename": "HighlightItemType",
      "item_text": "7.62-year WALE (by income)"
    },
    {
      "__typename": "HighlightItemType",
      "item_text": "Highly diversified tenancy mix"
    }
  ],
  "short_description": "JLL Retail Investments is pleased to present Epping Home & Life for sale via Expressions of Interest  a modern 26,550sqm Large Format Retail (LFR) centre strategically positioned at the heart of the...",
  "card_image": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_1_1_260720_080932-w2500-h1875",
  "displayable_street": "560-650 High Street",
  "displayable_address": "560-650 High Street Epping VIC 3076",
  "displayable_location": "Epping VIC",
  "displayable_location_with_postcode": "Epping VIC 3076",
  "suburb": "Epping",
  "state": "VIC",
  "postcode": "3076",
  "area": "Whittlesea City Council - Greater Area",
  "region": "Melbourne Region",
  "displayable_price": "Contact Agents",
  "main_category": "Shop & Retail",
  "search_type": 6,
  "product_type_enum": 28,
  "sale_method": "Standard",
  "status_flag": "New",
  "sale_type": "For Sale",
  "sold_leased_date": null,
  "sold_leased_pricing": null,
  "area_header_display": "26,550 m²",
  "auction_date": null,
  "auction_time": null,
  "is_under_offer": false,
  "has_video": false,
  "has_virtual_tour": false,
  "property_type_details": [
    {
      "__typename": "BusinessCategoryResultType",
      "type": 188,
      "name": "Shop & Retail"
    }
  ],
  "property_images": [
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_1_1_260720_080932-w2500-h1875",
      "image_number": 1
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_2_1_260720_080932-w2500-h1875",
      "image_number": 2
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_3_1_260720_080932-w2500-h1875",
      "image_number": 3
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_4_1_260720_080932-w2500-h1875",
      "image_number": 4
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_5_1_260720_080932-w2500-h1875",
      "image_number": 5
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_6_1_260720_080932-w2500-h1875",
      "image_number": 6
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_7_1_260720_080932-w2500-h1875",
      "image_number": 7
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_8_1_260720_080932-w2500-h1875",
      "image_number": 8
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_9_1_260720_080932-w2500-h1875",
      "image_number": 9
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_10_1_260720_080932-w2500-h1875",
      "image_number": 10
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_11_1_260720_080932-w2500-h1875",
      "image_number": 11
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_12_1_260720_080932-w2500-h1875",
      "image_number": 12
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_13_1_260720_080932-w2500-h1875",
      "image_number": 13
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_14_1_260720_080932-w2500-h1875",
      "image_number": 14
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_15_1_260720_080932-w2500-h1875",
      "image_number": 15
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_16_1_260720_080932-w2500-h1875",
      "image_number": 16
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_17_1_260720_080932-w2500-h1875",
      "image_number": 17
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_18_1_260720_080932-w2500-h1875",
      "image_number": 18
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_19_1_260720_080932-w2500-h1875",
      "image_number": 19
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_20_1_260720_080932-w2500-h1875",
      "image_number": 20
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_21_1_260720_080932-w2500-h1875",
      "image_number": 21
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_22_1_260720_080932-w2500-h1875",
      "image_number": 22
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_23_1_260720_080932-w2500-h1875",
      "image_number": 23
    },
    {
      "__typename": "PropertyImageType",
      "full_size_url": "https://bucket-api.commercialrealestate.com.au/v1/bucket/image/2021009535_24_1_260720_080932-w2500-h1875",
      "image_number": 24
    }
  ],
  "agency": {
    "__typename": "PropertyListingAgencyType",
    "agency_color": "#131E29",
    "agency_name": " JLL Melbourne",
    "large_logo_url": "https://images.domain.com.au/img/Agencys/22861/logo_cre_22861.GIF?date=2024-12-02-11-21-54?date=639201750253356893",
    "agency_contact": [
      {
        "__typename": "ListingContactDetailType",
        "full_name": "Stuart Taylor",
        "mugshot_url": "https://images.domain.com.au/img/22861/contact_1874215.jpeg?updated=202607201809"
      },
      {
        "__typename": "ListingContactDetailType",
        "full_name": "Nick Willis",
        "mugshot_url": "https://www.commercialrealestate.com.au/content/skin-redesign/img/no_portrait.png"
      },
      {
        "__typename": "ListingContactDetailType",
        "full_name": "Tom Noonan",
        "mugshot_url": "https://images.domain.com.au/img/22861/contact_1874214.png?updated=202607201809"
      }
    ]
  },
  "location_breadcrumb": {
    "__typename": "BreadcrumbType",
    "link": "/for-sale/epping-vic-3076/"
  },
  "map_location": {
    "__typename": "MapLocationType",
    "longitude": 145.0243955,
    "latitude": -37.6548214
  },
  "from_url": "https://www.commercialrealestate.com.au/for-sale/"
}
```

Each scraped property returns 35 fields across identification, location, pricing, status, and media categories:

#### Identification & URL

| Field | Meaning |
|---|---|
| `Ad ID` | Unique identifier for the property listing on the platform |
| `SEO URL` | Canonical URL of the property detail page |
| `Headline` | Primary heading/title displayed on the listing card |

#### Description & Content

| Field | Meaning |
|---|---|
| `Short Description` | Brief summary of the property (1–2 sentences) |
| `Highlights` | Key features highlighted by the agent (e.g., "Renovated," "Corner block") |
| `Card Image` | URL of the primary listing image |
| `Property Images` | Array or list of all property image URLs |

#### Location Data

| Field | Meaning |
|---|---|
| `Displayable Street` | Street address line (e.g., "123 Example Road") |
| `Displayable Address` | Full street address including building/unit details |
| `Displayable Location` | Locality name (e.g., "Sydney", "Melbourne CBD") |
| `Displayable Location With Postcode` | Location and postcode combined (e.g., "Sydney NSW 2000") |
| `Suburb` | Suburb or locality name |
| `State` | Australian state/territory code (NSW, VIC, QLD, etc.) |
| `Postcode` | Australian postal code (4 digits) |
| `Area` | Specific commercial precinct or business district |
| `Region` | Broader region or metropolitan area |
| `Location Breadcrumb` | Navigation path showing location hierarchy |
| `Map Location` | Latitude/longitude coordinates or map embed data |

#### Pricing & Transaction

| Field | Meaning |
|---|---|
| `Displayable Price` | Listed price or price range (e.g., "$2.5M – $2.8M", "POA") |
| `Sale Type` | Type of sale (e.g., private sale, auction, off-market) |
| `Sale Method` | Method used (e.g., negotiated, online auction, expressions of interest) |
| `Sold Leased Date` | Date the property was sold or leased (if historical listing) |
| `Sold Leased Pricing` | Final transaction price (for sold/leased properties) |
| `Auction Date` | Scheduled auction date (if applicable) |
| `Auction Time` | Scheduled auction time (if applicable) |

#### Property Type & Category

| Field | Meaning |
|---|---|
| `Main Category` | Broad category (e.g., "Office", "Retail", "Industrial") |
| `Search Type` | Listing type (e.g., "For Sale", "For Lease") |
| `Product Type Enum` | Standardized property type code (e.g., `office_sale`, `retail_lease`) |
| `Property Type Details` | Detailed property classification and specifications |

#### Status & Condition

| Field | Meaning |
|---|---|
| `Status Flag` | Current listing status (active, withdrawn, sold, leased, etc.) |
| `Is Under Offer` | Boolean flag indicating if the property has a pending offer |
| `Area Header Display` | Buildable area or land size displayed (e.g., "450 sqm") |

#### Agency & Media

| Field | Meaning |
|---|---|
| `Agency` | Real estate agency/agent name and contact details |
| `Has Video` | Boolean flag—`true` if listing includes agent video tour |
| `Has Virtual Tour` | Boolean flag—`true` if 3D virtual tour or walkthrough is available |

***

### How to Use

1. **Identify search URLs** — Navigate to Commercial Real Estate Australia and apply filters (state, suburb, property type, price range). Copy the filtered search URL from your browser.
2. **Prepare input JSON** — Paste one or more search URLs into the `urls` array. Set `max_items_per_url` to your desired limit (e.g., `200` for comprehensive data).
3. **Enable error tolerance** — Set `ignore_url_failures: true` for stable, uninterrupted batch runs.
4. **Start the scraper** — Run the actor and monitor the console for progress.
5. **Export and analyze** — Download results as JSON, CSV, or Excel. Import into spreadsheets, CRM, or database for further analysis.

**Best practices:**

- Use state or suburb filters to keep URLs focused and reduce scraping time.
- Start with `max_items_per_url: 50` to test; increase to `200` for full harvests.
- Schedule scrapes during off-peak hours to reduce server load and timeout risks.
- Combine multiple state URLs in a single run to collect nationwide market data efficiently.

**Troubleshooting common issues:**

- **No data returned**: Verify the URL is a search results page (not a property detail page). Ensure the page has loaded listings before scraping.
- **Partial results**: Some listings may be hidden behind login walls or JavaScript. Use the actor logs to identify which URLs succeeded.
- **Timeouts**: Large result sets may be slow to load. Reduce `max_items_per_url` or split into state-specific URLs.

***

### Use Cases & Business Value

- **Market intelligence:** Track supply, pricing trends, and sell-through rates by location and property type
- **Competitive analysis:** Monitor competitor listings, agent activity, and market positioning in your region
- **Lead generation:** Build prospect lists of property owners, agents, and investment opportunities
- **Portfolio management:** Maintain a database of your own and competitor listings for ongoing comparison
- **Investment analysis:** Gather transaction data to identify undervalued properties or emerging markets
- **Academic research:** Analyze commercial property market dynamics, vacancy rates, and investment patterns

By automating data collection, you gain hours back each week and access insights that manual browsing cannot provide at scale.

***

### Conclusion

The **Commercial Real Estate Property Scraper** transforms Commercial Real Estate Australia listings into actionable datasets. Whether you are a real estate professional tracking market conditions, an investor identifying opportunities, or a researcher analyzing trends, this scraper delivers comprehensive property data quickly and reliably. Collect hundreds of listings per run and unlock commercial real estate intelligence that drives smarter decisions.

# Actor input Schema

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

Add the URLs of the property list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.commercialrealestate.com.au/for-sale/"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 100
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://www.commercialrealestate.com.au/for-sale/"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("alexist/commercialrealestate-property-search-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 = {
    "urls": ["https://www.commercialrealestate.com.au/for-sale/"],
    "ignore_url_failures": True,
    "max_items_per_url": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("alexist/commercialrealestate-property-search-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 '{
  "urls": [
    "https://www.commercialrealestate.com.au/for-sale/"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 100
}' |
apify call alexist/commercialrealestate-property-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/geOBwJCL0AjXinP6v/builds/PSf7pet5lubcyowSs/openapi.json
