# Trade Me Property Scraper (`parseforge/trade-me-property-scraper`) Actor

Scrapes Trade Me Property listings for residential sale or rent. Returns each listing as a flat row with address, price, bedrooms, bathrooms, land area, and more. Filter by location, price, bedrooms, and keyword.

- **URL**: https://apify.com/parseforge/trade-me-property-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Real estate, Developer tools, Automation
- **Features:** Limited permissions
- **Stats:** 59 total users, 6 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $11.99 / 1,000 result items

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner-v4.webp)](https://apify.com/parseforge?fpr=vmoqkp)

### Trade Me Property Scraper

**Scrape Trade Me Property listings for sale or rent across New Zealand, with every listing returned as a flat row.** Filter by region, district, suburb, bedrooms, price, land area, and more. No login or API key. Export to CSV, JSON, Excel, or XML.

Trade Me Property is New Zealand's largest real estate marketplace, but its official API is limited and requires approval. This Actor reads the public listing pages directly, so you can collect residential for-sale and rental listings without any registration. Set location and property filters, and each matching listing is returned in one consistent schema.

| Who uses it | What they scrape Trade Me Property for |
|---|---|
| Real estate agents | Monitor new listings in their area to spot market trends and price changes. |
| Property investors | Find undervalued properties by filtering on price, land area, and location. |
| Data analysts | Build a dataset of rental yields across New Zealand suburbs for research. |
| Market researchers | Track housing supply and demand by region over time. |

### What it does

This Actor collects Trade Me Property listings for residential sale or rent, and returns each one as a flat row with address, price, bedrooms, bathrooms, land area, and other details.

- 🏠 **Residential for sale and rent:** Scrape either listing type with one Actor, using the same filters.
- 📍 **Location filters:** Narrow results by region, district, and suburb, from Auckland to Invercargill.
- 🛏️ **Property filters:** Set minimum and maximum bedrooms, bathrooms, price, land area, and floor area.
- 🐾 **Rental-specific filters:** Include only rental listings that allow pets.
- 🔍 **Keyword search:** Filter listings by a keyword in the title or description.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with Trade Me Property data

**📈 Track rental market trends.**

A property analyst scrapes all rental listings in Wellington each week, filters by suburb and bedrooms, and charts weekly rent changes to advise investors.

**🏡 Find undervalued properties.**

An investor scrapes for-sale listings in Canterbury with a maximum price and minimum land area, then cross-references with council data to spot bargains.

**📊 Build a national housing dataset.**

A data scientist scrapes all residential listings across New Zealand monthly, exports to CSV, and trains a price prediction model.

**🐾 Locate pet-friendly rentals.**

A tenant scrapes rental listings in Auckland with the pets allowed filter on, then contacts agents directly from the results.

### Why choose this scraper

|  | What you get |
|---|---|
| **No API key** | Scrapes the public Trade Me Property pages directly, no registration or approval needed. |
| **Flat output** | Every listing is returned as a single row, ready for spreadsheets or databases. |
| **Flexible filters** | Combine region, district, suburb, bedrooms, price, land area, and more. |
| **Large scale** | Paid users can scrape up to 1,000,000 listings per run. |

### How it compares

No other Store actor targets Trade Me Property the same way, so the honest comparison is with the alternatives teams actually weigh.

| | Trade Me Property Scraper | Build it in-house | By hand |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When Trade Me Property changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |

### Configure the run

Drive the Actor with a listing type, location filters, property filters, and a keyword. Filters run as each listing is read, so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "listingType": "residential-sale",
  "maxItems": 10
}
```

A larger pull:

```json
{
  "listingType": "residential-sale",
  "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.01599 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $1.60 |
| 1,000 results | $15.99 |
| 10,000 results | $159.90 |

#### Optional extras (from 2026-10-03)

Two opt-in inputs add data from the listing page itself, one extra request per listing. Both are off by default, so a run without them costs exactly what it did before, and a block that does not come back is never charged.

- **Include listing details** adds `description`, `viewCount`, `watchlistCount`, `capitalValue`, `attributes`, `broadband`, `photosFullSize`, `agentProfiles` (office phone, review counts), `agencyListingWebsite`, `memberNickname`, `memberSince`, `categoryName` and `listingExtras`.
- **Include recent local sales** adds `localSales` (nearby addresses with their sold price), `localSalesArea` and `localSalesAveragePrice`. For-sale listings only.

| Event | Price | Charged when |
|---|---|---|
| `apify-actor-start` | $0.005 per GB of run memory | the run starts |
| `listing-details` | $0.006 per listing | Include listing details is on and the listing page came back |
| `local-sales` | $0.004 per listing | Include recent local sales is on and Trade Me shows sold prices for that listing |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [Trade Me Property Scraper](https://apify.com/parseforge/trade-me-property-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to Trade Me Property through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/trade-me-property-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check your filters. If you set a district, you must also set a region. If you set a suburb, you must set both region and district. Also ensure your price or bedroom ranges are not too narrow.

**The Actor stops before reaching maxItems.**

Trade Me Property may not have enough listings matching your filters. Try broadening your filters or removing some.

**I get an error about invalid input.**

Make sure minBedrooms is not greater than maxBedrooms, and the same for bathrooms, price, land area, and floor area. Also check that region, district, and suburb are spelled correctly.

**The run is slow.**

Trade Me Property may rate-limit requests. The Actor includes delays to avoid blocking. If you need faster scraping, consider increasing your Apify plan or reducing maxItems.

### FAQ

| Question | Answer |
|---|---|
| Do I need a Trade Me API key? | No. This Actor scrapes the public Trade Me Property website, so no API key or registration is required. |
| Can I scrape both for-sale and rental listings? | Yes. Set the listingType input to residential-sale or residential-rent. You can run the Actor twice to get both. |
| How do I filter by location? | Use the region, district, and suburb inputs. Region is required for district, and district is required for suburb. Leave them blank to scrape all of New Zealand. |
| What is the maximum number of listings I can scrape? | Free users are limited to 100 listings per run. Paid users can set maxItems up to 1,000,000. |
| Does the Actor handle pagination? | Yes, it automatically follows pagination on Trade Me Property until it reaches maxItems or no more listings match. |
| What format is the output? | The Actor returns a dataset of flat JSON objects. You can export to CSV, JSON, Excel, or XML from the Apify platform. |
| Can I filter by price? | Yes, use minPrice and maxPrice. For sales, the price is in NZD. For rentals, it is the weekly rent in NZD. |
| Does it scrape listing descriptions? | The Actor collects the data available on the listing card and detail page, including title, address, price, bedrooms, bathrooms, and land area. The full description may not be included in every case. |
| Is this legal? | Scraping public data is generally allowed, but you should review Trade Me's terms of service and comply with any applicable laws. Apify provides tools for responsible scraping. |
| Can I schedule this Actor to run daily? | Yes, you can set up a schedule in Apify to run the Actor at regular intervals and receive notifications. |

### Related actors

- [trade-me-property-scraper](https://apify.com/parseforge/trade-me-property-scraper?fpr=vmoqkp): Scrape Trade Me Property listings with filters for location, price, bedrooms, and more.

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Trade Me Limited. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

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

Type of property listings to scrape: residential for-sale or rental.

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

Free users: Limited to 100. Paid users: Optional, max 1,000,000.

## `region` (type: `string`):

Filter by NZ region (e.g. auckland, wellington, canterbury). Leave blank for all regions.

## `district` (type: `string`):

Filter by district within the region (e.g. auckland-city, north-shore-city). Requires region to be set.

## `suburb` (type: `string`):

Filter by suburb within the district (e.g. ponsonby, remuera). Requires region and district to be set.

## `minBedrooms` (type: `integer`):

Minimum number of bedrooms.

## `maxBedrooms` (type: `integer`):

Maximum number of bedrooms.

## `minBathrooms` (type: `integer`):

Minimum number of bathrooms.

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

Filter by property type (e.g. House, Apartment, Townhouse, Unit, Section, Lifestyle).

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

Minimum price in NZD (for sales) or minimum weekly rent in NZD (for rentals).

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

Maximum price in NZD (for sales) or maximum weekly rent in NZD (for rentals).

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

Minimum land area in square metres.

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

Maximum land area in square metres.

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

Minimum floor area in square metres.

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

Maximum floor area in square metres.

## `petsOkay` (type: `boolean`):

Filter rental listings that allow pets.

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

Search keyword to filter listings by title or description.

## `includeListingDetails` (type: `boolean`):

Opens each listing and adds the full description, view count, watchlist count, capital value (CV), the full attribute list (toilets, garage and off-street parking, furnishings, availability and more), broadband availability, full-size photo URLs, agent office phones with review counts, and the listing member. One extra request per listing. Charged only for a row that receives it.

## `includeLocalSales` (type: `boolean`):

Adds the recent sold prices Trade Me shows next to a for-sale listing: nearby addresses with their sale price, the sales area name and its average sale price. One extra request per listing (shared with listing details when both are on). For-sale listings only. Charged only for a row that receives it.

## Actor input object example

```json
{
  "listingType": "residential-sale",
  "maxItems": 10,
  "includeListingDetails": false,
  "includeLocalSales": false
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset with all scraped items

# 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 = {
    "listingType": "residential-sale",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/trade-me-property-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 = {
    "listingType": "residential-sale",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/trade-me-property-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "listingType": "residential-sale",
  "maxItems": 10
}' |
apify call parseforge/trade-me-property-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/trade-me-property-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/DH6Fqg3eu5qNhg7cc/builds/XirmixX5QbjJRGrRF/openapi.json
