Trade Me NZ Scraper - Marketplace, Property, Motors & Jobs
Pricing
from $1.20 / 1,000 listing results
Trade Me NZ Scraper - Marketplace, Property, Motors & Jobs
Scrape trademe.co.nz across all five sections: Marketplace goods and auctions, Property, Motors, Jobs and Services. Search or paste URLs, walk pagination, and enrich with full detail plus seller feedback (positive/negative counts and score).
Pricing
from $1.20 / 1,000 listing results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
1
Bookmarked
32
Total users
12
Monthly active users
7 days ago
Last modified
Categories
Share
Trade Me Scraper: Listings Across Marketplace, Property, Motors, Jobs and Services
Trade Me Scraper turns New Zealand's largest online marketplace into clean structured data. Collect listings from Marketplace, Property, Motors, Jobs and Services in one actor, with prices, locations, photos, listing specifics and, on request, full descriptions and seller feedback. Search by keyword and filters, or paste category, search and individual listing links, then export to JSON, CSV or Excel, or pull the results straight into your app through the API.
Why This Scraper?
- Five sections, one actor. Marketplace, Property, Motors, Jobs and Services, so you don't need a different tool for each part of Trade Me.
- Two ways to search. Keywords with filters for each section, or paste category, search and individual listing links.
- Section-specific fields on every record. Bedrooms and land area for Property, make, model, year and odometer for Motors, salary range for Jobs, plus the fields common to every listing.
- Optional full detail and seller feedback. Description, the full photo gallery, agent contact details, and a member's feedback score and history, only when you turn on full detail.
- Walks the whole result list. Collects as many result pages as a search has, or a limit you set, and stops once your item limit is reached.
- Resume long or interrupted walks. Continue from a previous run's dataset so a later run only collects (and pays for) the new listings.
- Optional export to your apps. Pipe results into the apps you already use through MCP connectors, with no change to the dataset.
Use Cases
- Property researchers and agencies: track new listings, price changes and open homes across a region.
- Car buyers and dealers: monitor Motors listings by make, model, year and odometer to spot good-value vehicles.
- Marketplace resellers: watch categories or keyword searches for new stock and Buy Now prices.
- Recruiters and job seekers: pull Jobs listings by region, category and salary range.
- Trust and reputation checks: pull a seller's feedback score and history before buying from or dealing with them.
Data You Get
Sample shape: values are illustrative placeholders, not from a live listing.
| Field | Example |
|---|---|
vertical | "property" (also "marketplace", "motors", "jobs", "services") |
listingId | "0000000001" |
title | "Sample Listing Title" |
url | "https://www.trademe.co.nz/Browse/Listing.aspx?id=0000000001" |
category | "Property > Residential > Auckland" |
priceDisplay | "$1,234,000" |
startPrice / buyNowPrice | 1234 / 1500 |
region / suburb / district | "Auckland" / "Sample Suburb" / "Sample District" |
photoUrls | ["https://trademe.tmcdn.co.nz/photoserver/full/000000000.jpg"] |
listedDate / closesDate | "2026-01-01T00:00:00.000Z" / "2026-01-08T00:00:00.000Z" |
sellerType | "member" (also "dealer") |
memberId | "0000000" |
sellerFeedback | { "uniquePositive": 100, "uniqueNegative": 1, "feedbackPercent": 99, "isSuperSeller": true } (with full detail on) |
bedrooms / bathrooms / propertyType | 3 / 2 / "House" (Property) |
address | "1 Example Street, Sample Suburb" (Property) |
agencyName / agents | "Sample Agency" / [{ "name": "Agent Name", "mobilePhone": "+64000000000" }] (Property; agents with full detail on) |
make / model / year / odometer | "Toyota" / "Corolla" / 2020 / 50000 (Motors) |
description | "Sample listing description text." (with full detail on) |
scrapedAt | "2026-01-01T00:00:00.000Z" |
Property records also carry land area, floor area, rateable value, latitude and longitude, parking and any open homes; with full detail on they add agency phone, agency website, agency license and a full agency object. Motors records also carry body style, transmission, fuel, exterior colour, 4WD flag, dealer flag and dealer name; with full detail on they add doors, seats, engine size, WOF expiry, registration expiry, owner count and import history. Any record also carries view count, bidder and watcher count, quantity remaining, shipping options, payment options, store details, a member passthrough object, and the listing's own named specifics (each prefixed attr_); sellerFeedback additionally carries up to 25 of the seller's most recent feedback comments when that option is turned on.
How to Use
- Pick a section (Marketplace, Property, Motors, Jobs or Services) and a mode: Search (keywords and filters) or URL (paste links).
- Fill in the filters for that section, and turn on full detail if you want descriptions, the full photo gallery and seller feedback.
- Set Max items to control how many listings are returned, then click Start.
- Download the dataset as JSON, CSV or Excel, or read it through the API.
Search Marketplace by keyword:
{"vertical": "marketplace","mode": "search","queries": ["iphone"],"maxItems": 50}
Search Property with filters and full detail plus seller feedback:
{"vertical": "property","mode": "search","listingType": "residential-sale","region": "auckland","minBedrooms": 3,"minPrice": 800000,"maxPrice": 1500000,"fetchDetails": true,"maxItems": 40}
Search Motors with vehicle filters:
{"vertical": "motors","mode": "search","make": "Toyota","model": "Corolla","minYear": 2015,"maxPrice": 20000,"maxItems": 30}
Paste links (category, search or individual listings):
{"mode": "url","startUrls": ["https://www.trademe.co.nz/a/property/residential/sale","https://www.trademe.co.nz/a/motors/used-cars"],"maxItems": 40}
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/trademe-co-nz-scraper").call(run_input={"vertical": "property", "mode": "search", "region": "auckland", "maxItems": 40})for listing in client.dataset(run["defaultDatasetId"]).iterate_items():print(listing["title"], listing["priceDisplay"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('abotapi/trademe-co-nz-scraper').call({ vertical: 'property', mode: 'search', region: 'auckland', maxItems: 40 });const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.
How Max pages and Max items shape a walk
Each keyword search or pasted category link walks its own result pages, in the order Trade Me and your Sort order return them, until it runs out of pages, reaches Max pages (if you set one), or reaches its share of Max items, whichever comes first. When a run has several searches or links, each gets a roughly even share of the overall Max items. Leave Max pages empty to walk every result page a search has; the run still stops once Max items is reached.
Resume and long-catalogue walks
- Resume from a previous run (
resumeFromRunId) loads everylistingIdalready saved in a previous run's dataset before this run starts scraping, so this run only pushes, and only pays for, the new listings. Paste the previous run's ID or its dataset ID. An ID that doesn't match a run or dataset your Apify account can read fails the run immediately, before any scraping, rather than quietly re-collecting everything. - A checkpoint is saved automatically as the run progresses. If the run is interrupted by an Apify platform migration, or you click Resurrect on a failed run, it continues from where it left off in the same run, without re-pushing or re-charging for listings it already collected. No input is needed for this; it's automatic.
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 listing, not the full JSON. Each item becomes one entry with a title and its key fields, price, location, category, and section-specific fields such as make and model or bedrooms, flattened to plain text. The complete record always stays in the Apify dataset.
- Authorize a connector once under Apify, Settings, API & Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
- For Notion, also set
notionParentPageUrlto 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.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
vertical | string | marketplace | Which section to scrape: Marketplace, Property, Motors, Jobs, or Services. |
mode | string | search | search (keywords + filters) or url (paste links). |
queries | array | none (prefill: ["iphone"]) | Keyword searches within the section (search mode). Leave empty to browse the whole section or a category. |
listingType | string | residential-sale | Property section only: residential-sale, residential-rent, commercial-sale, or lifestyle. |
region | string | none | Property or Jobs section: region name or id (for example auckland, wellington). |
district | string | none | Property or Jobs section: district within the region. |
suburb | string | none | Property section: suburb within the district. |
propertyType | string | none | Property section: for example House, Apartment, Townhouse, Unit, Section, Lifestyle. |
minBedrooms | integer | none | Property section: minimum bedrooms. |
maxBedrooms | integer | none | Property section: maximum bedrooms. |
minBathrooms | integer | none | Property section: minimum bathrooms. |
minLandArea | integer | none | Property section: minimum land area in square metres. |
maxLandArea | integer | none | Property section: maximum land area in square metres. |
minFloorArea | integer | none | Property section: minimum floor area in square metres. |
maxFloorArea | integer | none | Property section: maximum floor area in square metres. |
petsOkay | boolean | false | Property section (rentals): only listings that allow pets. |
make | string | none | Motors section: vehicle make, for example Toyota. |
model | string | none | Motors section: vehicle model, for example Corolla. |
minYear | integer | none | Motors section: earliest manufacture year. |
maxYear | integer | none | Motors section: latest manufacture year. |
minOdometer | integer | none | Motors section: minimum odometer reading in km. |
maxOdometer | integer | none | Motors section: maximum odometer reading in km. |
bodyStyle | string | none | Motors section: for example Hatchback, Sedan, SUV, Ute. |
transmission | string | none | Motors section: for example Automatic, Manual. |
fuel | string | none | Motors section: for example Petrol, Diesel, Electric, Hybrid. |
category | string | none | Marketplace, Jobs, or Services section: category id or slug. |
condition | string | "" (Any) | Marketplace section: item condition, Any, New, or Used. |
buyNowOnly | boolean | false | Marketplace section: only listings with a Buy Now price. |
jobType | string | none | Jobs section: for example Full time, Part time, Contract. |
minPrice | integer | none | Minimum price in NZD (minimum salary for Jobs). |
maxPrice | integer | none | Maximum price in NZD (maximum salary for Jobs). |
startUrls | array | none (prefill: ["https://www.trademe.co.nz/a/property/residential/sale"]) | Category, search, or individual listing links (URL mode). Results continue from the page number already in the URL. |
sort | string | Default | Result ordering; which values apply depends on the section. Also orders a pasted category or search URL in URL mode, taking precedence over any ordering already in that URL. |
keyword | string | none | Free-text term used when Keyword searches is empty (it does not combine with Keyword searches). Also applies to a pasted URL, unless that URL already carries its own search term. |
fetchDetails | boolean | false | Fetch each listing's full detail page and the seller's member feedback. Adds a per-item detail charge. |
includeMemberFeedbackComments | boolean | false | With full detail on, also collect the seller's individual feedback comments. |
maxItems | integer | 20 | Maximum number of listings to return. Set 0 for unlimited. |
maxPages | integer | none (walks every result page; 0 has the same effect) | Limit on result pages to walk per search. The run still stops at Max items. |
resumeFromRunId | string | none | A previous run ID or dataset ID to continue an interrupted or paginated walk. Listings already saved there (matched by listingId) are skipped. |
proxy | object | Apify Proxy enabled | Connection configuration. The default is recommended. |
mcpConnectors | array | none | Optional: send a summary of each listing to apps you authorized under Integrations. |
notionParentPageUrl | string | none | Notion connector only: page under which item pages are created. |
maxNotifyListings | integer | 50 | Cap on items written to each connector per run. Does not affect the dataset. |
Output Example
Sample shape: values are illustrative placeholders, not from a live listing.
{"vertical": "property","listingId": "0000000001","title": "Sample Listing Title","url": "https://www.trademe.co.nz/Browse/Listing.aspx?id=0000000001","priceDisplay": "$1,234,000","region": "Auckland","suburb": "Sample Suburb","district": "Sample District","address": "1 Example Street, Sample Suburb","bedrooms": 3,"bathrooms": 2,"propertyType": "House","latitude": -36.0,"longitude": 174.0,"agencyName": "Sample Agency","agents": [{ "name": "Agent Name", "mobilePhone": "+64000000000", "email": "agent@example.com" }],"memberId": "0000000","sellerFeedback": {"nickname": "sample_seller","uniquePositive": 100,"uniqueNegative": 1,"feedbackPercent": 99,"isSuperSeller": true},"photoUrls": ["https://trademe.tmcdn.co.nz/photoserver/full/000000000.jpg"],"scrapedAt": "2026-01-01T00:00:00.000Z"}
Plan Requirement
The default connection works well for this actor, and it rotates connections automatically when one is refused. For large or frequent runs, or when full detail is turned on for many listings, the residential proxy group gives more headroom; pick it under Connection. Any Apify account with usage credits can run this actor; the Pricing tab shows the current rates.
FAQ
How much does it cost?
You pay a small start fee per run, a fee per listing returned, plus a detail charge for each listing that gains full detail or seller feedback. That happens when you turn on full detail, and always for individual listing links pasted in URL mode, since those are fetched in full so the record is populated. The Pricing tab shows the current rates. Use Max items to cap the cost of any run.
Is it legal to scrape Trade Me?
This actor collects only publicly available marketplace data. You are responsible for how you use it: follow Trade Me's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Prices and listing facts are generally public, but photos and any agency or dealer branding may be subject to third-party rights.
Can I run this on a schedule, or only collect new listings?
There's no separate incremental mode. Schedule the actor from the Schedules tab for repeat runs, and use Resume from a previous run with the earlier run's ID (or its dataset ID) so a new run only saves listings it hasn't already collected, instead of starting over.
Why weren't my filters applied when I pasted a URL?
The Search-mode filters (region, price, bedrooms, and so on) only apply in Search mode. In URL mode, a pasted category link is scraped by its category path only: filters in the link's query string, such as price or bedrooms, are not carried over. A pasted keyword-search link runs as a site-wide keyword search on its own search term. Sort order applies to both, and the Extra keyword filter applies when the link has no search term of its own.
Why is sellerFeedback missing from my results?
Turn on Fetch full details + seller feedback. Without it, you get the search-result fields only. Feedback (positive and negative counts, score, join date) is fetched per listing, and only when that option is on and the listing has a resolvable seller id.
Why did my run fail instead of returning an empty dataset?
Only one thing fails the run outright: a Resume from a previous run ID that doesn't match a run or dataset your Apify account can read. That check runs before any scraping, so you get a clear error instead of a resume that silently didn't happen. Everything else, an empty category, filters that match nothing, or a search that Trade Me's servers wouldn't answer after several retries, finishes the run normally: that entry contributes no listings (with a warning in the log), while any other keyword search or pasted link in the same run keeps collecting.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.
๐ Want more car data?
Pair this actor with these related scrapers from the same team:
| ๐ท๏ธ Subito.it Scrape Subito.it listings across cars, real estate, marketplace, jobs, and more. Search... | ๐ท๏ธ Gumtree UK Scrape gumtree.com classifieds across motors, property, jobs, services, pets and goods... |
| ๐ท๏ธ Mudah.my Cars, Property, Jobs & Marketplace Scraper Scrape Mudah.my listings across every category: cars, motorcycles, property, mobiles... | ๐ท๏ธ Kijiji.ca Scraper Scrape Kijiji.ca listings across property, vehicles, jobs, electronics, furniture... |
| ๐ท๏ธ Gumtree AU Scraper Scrape gumtree.com.au classifieds across every vertical: for-sale goods, motors, real... | ๐ท๏ธ Tutti.ch Scrape listings from tutti.ch across all 23 categories, including vehicles, property... |
๐ Browse all abotapi scrapers
๐ฌ Support & custom scrapers
- ๐ Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
- ๐ ๏ธ Need another site, extra fields or a private build? Email contact@abotapi.com or message Telegram @abotapi.
- โญ Enjoying it? A quick review on the actor page helps other users find it.