# Trademe Properties Spider (`getdataforme/trademe-properties-spider`) Actor

Scrape comprehensive residential property listings from TradeMe, New Zealand's leading marketplace. Extract prices, locations, agent details, and high-res images for market analysis, investments, and research....

- **URL**: https://apify.com/getdataforme/trademe-properties-spider.md
- **Developed by:** [GetDataForMe](https://apify.com/getdataforme) (community)
- **Categories:** AI, Agents, E-commerce
- **Stats:** 12 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $9.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.

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

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

## Trademe Properties Spider

### Introduction

The Trademe Properties Spider is a powerful Apify Actor designed to scrape residential property listings from TradeMe, New Zealand's leading online marketplace. It efficiently extracts detailed property data, including prices, locations, agent information, and high-resolution images, enabling users to gather comprehensive real estate insights. This tool is ideal for market analysis, investment research, and automated data collection, providing reliable and structured data in JSON format.

### Features

- **Comprehensive Data Extraction**: Captures key property details such as listing ID, title, price, location, bedrooms, bathrooms, and agent contacts.
- **High-Resolution Images**: Retrieves multiple photo URLs for each listing, ensuring visual data is readily available.
- **Flexible Configuration**: Allows customization of the starting URL and item limits to target specific searches or regions.
- **Reliable Performance**: Built on Apify's robust infrastructure for scalable and error-resistant scraping.
- **JSON Output**: Delivers clean, structured data suitable for integration with databases, analytics tools, or APIs.
- **Rate Limiting Awareness**: Respects TradeMe's API guidelines to avoid overloading servers and ensure ethical scraping.
- **Easy Integration**: Outputs data in a format compatible with downstream processing for reports, dashboards, or machine learning models.

### Input Parameters

| Parameter | Type    | Required | Description                                                                 | Example |
|-----------|---------|----------|-----------------------------------------------------------------------------|---------|
| Url       | string  | No       | The API URL for the TradeMe residential property search endpoint. Customize to filter by region, price, or other criteria. | "https://api.trademe.co.nz/v1/search/property/residential.json?page=1\&rows=22\&return\_canonical=true\&return\_metadata=true\&return\_ads=true\&return\_empty\_categories=true\&return\_super\_features=true\&return\_did\_you\_mean=true\&canonical\_path=%2Fproperty%2Fresidential%2Fsale\&rsqid=3e140f5dac734fe8948a26815db8bad6-001" |
| itemLimit | integer | No       | Specifies the maximum number of property listings to process and extract.   | 10     |

### Example Usage

#### Input Configuration

```json
{
  "Url": "https://api.trademe.co.nz/v1/search/property/residential.json?page=1&rows=22&return_canonical=true&return_metadata=true&return_ads=true&return_empty_categories=true&return_super_features=true&return_did_you_mean=true&canonical_path=%2Fproperty%2Fresidential%2Fsale&rsqid=3e140f5dac734fe8948a26815db8bad6-001",
  "itemLimit": 10
}
```

#### Output Example

```json
[
  {
    "listing_id": 5740810364,
    "title": "Family Ready - Ross Street Renovation",
    "category": "0350-5748-3399-",
    "start_price": 0,
    "start_date": "/Date(1768889420553)/",
    "end_date": "/Date(1773727820553)/",
    "is_featured": true,
    "has_gallery": true,
    "is_bold": true,
    "is_highlighted": true,
    "category_path": "/Trade-Me-Property/Residential/For-Sale",
    "picture_href": "https://trademe.tmcdn.co.nz/photoserver/thumb/2281317303.jpg",
    "region": "Wellington",
    "suburb": "Kilbirnie",
    "price_display": "Deadline sale by 5 Feb",
    "photo_urls": [
      "https://trademe.tmcdn.co.nz/photoserver/thumb/2281317304.jpg",
      "https://trademe.tmcdn.co.nz/photoserver/thumb/2281317305.jpg"
    ],
    "address": "21 Ross Street",
    "district": "Wellington",
    "area": 169,
    "land_area": 381,
    "bathrooms": 2,
    "bedrooms": 4,
    "parking": "",
    "property_type": "House",
    "agency_name": "New Zealand Sotheby's International Realty Wellington",
    "agency_phone": null,
    "agency_website": "https://www.nzsothebysrealty.com/",
    "agent_name": "Steve Rodwell",
    "agent_mobile": "(021) 907948",
    "agent_photo": "https://trademe.tmcdn.co.nz/property/agent_profile/160x160/agent_individual_profile4632223v12.jpg",
    "actor_id": "UlgSWhmHfGboZLrXl",
    "run_id": "y6Lxxh3joyf2rtEea"
  }
]
```

### Use Cases

- **Market Research**: Analyze property trends, average prices, and availability in specific regions for investment decisions.
- **Competitive Intelligence**: Monitor competitor listings and pricing strategies for real estate agencies.
- **Price Monitoring**: Track property values over time to identify undervalued opportunities or market shifts.
- **Content Aggregation**: Build databases of property listings for websites, apps, or newsletters.
- **Academic Research**: Gather data for studies on housing markets, urban development, or socioeconomic factors.
- **Business Automation**: Automate lead generation for real estate professionals by extracting agent contacts and property details.

### Installation and Usage

1. Search for "Trademe Properties Spider" in the Apify Store.
2. Click "Try for free" or "Run".
3. Configure input parameters (e.g., set the URL and item limit).
4. Click "Start" to begin extraction.
5. Monitor progress in the log.
6. Export results in your preferred format (JSON, CSV, Excel).

### Output Format

The Actor outputs an array of JSON objects, each representing a property listing. Key fields include `listing_id` (unique identifier), `title` (property name), `price_display` (pricing info), `region` and `suburb` (location), `bedrooms`, `bathrooms`, `area`, `land_area`, `photo_urls` (array of image links), and agent details like `agency_name`, `agent_name`, and `agent_mobile`. Dates are in TradeMe's format, and boolean flags indicate features like `is_featured`. This structure ensures easy parsing and integration.

### Error Handling

The Actor handles common errors gracefully, such as invalid URLs or API rate limits, by logging issues and retrying requests. If the item limit is exceeded or data is unavailable, it stops processing and provides partial results. Check the run logs for details on any failures.

### Rate Limiting and Best Practices

TradeMe's API may impose rate limits; the Actor includes built-in delays to comply. Best practices include starting with small item limits for testing, avoiding excessive runs, and respecting TradeMe's terms of service. For large-scale scraping, consider scheduling runs during off-peak hours.

### Limitations

- Limited to TradeMe's residential property API; does not cover commercial or rental listings.
- Output depends on API availability; changes in TradeMe's structure may require updates.
- Image URLs may expire; download promptly for long-term use.

### Support

For custom/simplified outputs or bug reports, please contact:

- Email: support@getdataforme.com
- Subject line: "custom support"
- Contact form: https://getdataforme.com/contact/

We're here to help you get the most out of this Actor!

***

# Actor input Schema

## `Url` (type: `string`):

The url for the spider.

## `itemLimit` (type: `integer`):

Specifies the maximum number of items to process.

## Actor input object example

```json
{
  "Url": "https://www.trademe.co.nz/a/property/residential/sale/bay-of-plenty/rotorua/owhata/listing/5798891576",
  "itemLimit": 10
}
```

# Actor output Schema

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

Scraped data items from dataset

# 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 = {
    "itemLimit": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("getdataforme/trademe-properties-spider").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 = { "itemLimit": 10 }

# Run the Actor and wait for it to finish
run = client.actor("getdataforme/trademe-properties-spider").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 '{
  "itemLimit": 10
}' |
apify call getdataforme/trademe-properties-spider --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getdataforme/trademe-properties-spider"
        }
    }
}

```

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/hA753kDNAlgEZyRvv/builds/jLz3NMWOUlDed0Bm9/openapi.json
