Trade Me Listings
Pricing
from $2.00 / 1,000 results
Trade Me Listings
Returns current Trade Me property-for-sale, property-for-rent and car listings for New Zealand with price, location and property or vehicle details, and no seller or agent identities.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
Sub Rosa
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Returns current listings from trademe.co.nz, New Zealand's main classifieds site, in three categories: residential property for sale, residential property for rent, and cars. Each item carries the listing id and canonical URL, the title, the price as shown and as a number, the region, district and suburb, the street address when a licensed agency or property manager placed the listing, bedrooms, bathrooms, floor and land area for property, make, model, year, odometer, body style, transmission, fuel and the auction-or-classified sale type for cars, the listing start date, the photo count, and the business name of the agency or dealer behind the listing when there is one. The data comes from the public search pages, fetched logged out, as they stand at the moment of the run. A default run returns 90 items in about ten seconds across four page fetches. The result price is $0.002 per item, with a $0.01 charge per run.
No agent, seller, landlord or contact identities are collected. The source pages carry individual agents' names, mobile numbers and photos, members' ids, map coordinates, photo URLs, and vehicle plates and VINs; none of that leaves the extractor. A private seller's or private landlord's street address is treated as that person's data and is not returned either: address is only ever filled alongside the organisation that placed the listing. See Limits and honesty and Legal below.
Who uses it
- A property analyst tracking asking prices and rents by suburb: pulls
property-saleandproperty-rentfor one or more regions each morning, keepsid,priceText,price,suburb,district,bedrooms,landAreaandlistedAt, and builds a time series of what is on the market and how long it stays there. - A dealer or fleet buyer watching the used-car market: pulls
motorsdaily, filtersmake,model,year,odometerKm,priceandsaleType, and flags new arrivals below a target price before visiting the listing page, keeping auctions (wherepriceis a bid, not an asking price) apart from classifieds. - A researcher or journalist measuring the rental market: pulls
property-rentacross all regions, usesprice(weekly rent),bedroomsandregionto compare rents between regions, and usesagencyNameto separate managed rentals from private ones without naming any landlord.
Sample output
One real item from a real run, as JSON:
{"id": "6128190765","url": "https://www.trademe.co.nz/a/property/residential/lifestyle-property/auckland/rodney/tahekeroa/listing/6128190765","title": "Country Charm With Captivating Views!","category": "property-sale","priceText": "Price by negotiation","price": null,"currency": "NZD","saleType": null,"region": "Auckland","district": "Rodney","suburb": "Tahekeroa","address": "47 Haul Road","bedrooms": 4,"bathrooms": 2,"floorArea": 197,"landArea": 116700,"make": null,"model": null,"year": null,"odometerKm": null,"bodyStyle": null,"transmission": null,"fuel": null,"listedAt": "2026-09-12T01:08:31.360Z","agencyName": "Ray White Pinehill (Access Real Estate Ltd), (Licensed: REAA 2008)","photoCount": 24,"sourceUrl": "https://www.trademe.co.nz/a/property/residential/sale/auckland","scrapedAt": "2026-09-26T03:59:18.133Z"}
Ten more, covering all three categories, private-party rentals with address null, and a car auction, are in sample.json.
Data dictionary
Every field is present on every item. Fields that do not apply to a category, or that the lister left blank, are null, never missing and never an empty string.
| Field | Type | Meaning | Example |
|---|---|---|---|
id | string | Trade Me's listing id | "6128190765" |
url | string | Canonical listing page | "https://www.trademe.co.nz/a/motors/cars/nissan/march/listing/6150375031" |
title | string or null | Listing title as the lister wrote it, after the house free-text filter (any sentence carrying a phone number, an email address, a name after an honorific or a role, or a licence number is dropped; null when nothing remains) | "2015 Nissan March S Model" |
category | string | property-sale, property-rent or motors | "motors" |
priceText | string or null | Price exactly as shown on the listing card | "Asking price: $7,949", "$820 per week", "Auction on 7 Oct, 9:30 am" |
price | number or null | The first dollar amount in priceText. For property-rent it is the weekly rent. For "Enquiries over" and "Offers over" it is that threshold. For a car auction (saleType "auction") it is the current bid, or the start price when no bid has been placed, not a valuation. Null when priceText shows no amount | 7949 |
currency | string | Always "NZD" | "NZD" |
saleType | string or null | Trade Me listing type, cars only: "auction" (bids placed on the site, closing at a set time) or "classified" (an asking price, buyer contacts the seller). Null for property, where every listing is a classified advertisement and the sale method (auction, tender, deadline sale, negotiation) is a matter of priceText, and null for a car record that carries neither marker | "classified" |
region | string or null | Region name as the source gives it. Property uses the 15 Trade Me regions; cars use the older, finer set (for example Manawatu, Whanganui, Nelson Bays) | "Wellington" |
district | string or null | District within the region; property only | "Rodney" |
suburb | string or null | Suburb or town | "Porirua" |
address | string or null | Street address of the property, only when the listing is placed by a licensed real estate agency or property manager and that organisation is named in agencyName. Null for every private-party listing (a private seller's or landlord's street address is that person's data; suburb, district and region carry the location), null when the agency published no address, and always null for cars | "47 Haul Road" |
bedrooms | integer or null | Bedrooms; property only | 4 |
bathrooms | integer or null | Bathrooms; property only | 2 |
floorArea | number or null | Floor area in square metres; property only | 197 |
landArea | number or null | Land area in square metres; property only | 116700 |
make | string or null | Vehicle make; cars only | "Nissan" |
model | string or null | Vehicle model; cars only | "March" |
year | integer or null | Vehicle year; cars only | 2015 |
odometerKm | integer or null | Odometer in kilometres; cars only | 86630 |
bodyStyle | string or null | Body style; cars only | "Hatchback" |
transmission | string or null | Transmission; cars only | "Automatic" |
fuel | string or null | Fuel type; cars only | "Petrol" |
listedAt | string or null | Listing start, ISO 8601, UTC | "2026-09-26T03:10:03.230Z" |
agencyName | string or null | Business name of the licensed real estate agency, property manager or registered motor dealer, as the source shows it (licence suffix included). Null for private sellers and private landlords, and null when the source shows an agency without its licence flag. Never an individual | "Portage Cars New Lynn" |
photoCount | integer or null | Number of photos on the listing | 17 |
sourceUrl | string | Search page the item was extracted from | "https://www.trademe.co.nz/a/motors/cars" |
scrapedAt | string | Extraction time, ISO 8601, UTC | "2026-09-26T03:59:21.269Z" |
Input
| Field | Type | Default | Meaning |
|---|---|---|---|
categories | array of strings | all three | Any of property-sale, property-rent, motors. maxItems is split evenly across the categories you choose, so a default run returns 30 of each. |
regions | array of strings | empty, meaning all | Region slugs: auckland, canterbury, wellington, waikato, bay-of-plenty, manawatu-whanganui, otago, northland, hawkes-bay, taranaki, nelson-tasman, southland, gisborne, marlborough, west-coast. Property is fetched one region page at a time in this order (largest first) until the category's share is filled. Cars are fetched from national pages and filtered by region afterwards, because Trade Me's region-filtered car search uses URL parameters its robots.txt disallows; a sparse region therefore yields fewer cars per page. Unknown slugs are logged and ignored. |
query | string | empty | Keep only items whose title, address, suburb, district, make, model or body style contains this text, case-insensitive. It is a filter applied after fetching, not a site search, because the site's search URLs are disallowed by robots.txt. |
maxItems | integer | 90 | Stop after this many items. Each fetched page yields up to about 70 property listings or 22 cars, so a run over all regions can reach roughly 1,000 property listings per category and about 460 cars before it runs out of allowed pages. |
proxyConfiguration | object | Apify datacenter proxy | Standard Apify proxy settings. Datacenter proxies are sufficient. |
Pricing
Pay per event, two events. actor-start: $0.01, once per run, covers the fixed overhead of starting. result: $0.002 per item, that is $2 per 1,000 items. Items are pushed and charged in the same step, so a run never delivers more items than it charges for, and a run stops cleanly when your maximum charge is reached. A default run of 90 items costs $0.19.
Measured platform cost: the default run fetches four pages, about 4.4 MB, and the crawler runs for about 11 seconds. Scaled to 1,000 items that is 15 to 46 pages (property pages carry about 70 listings, car pages 22) and roughly 25 MB, about a minute of crawl time at the 40 requests a minute limit, and at Apify's list prices ($0.40 per compute unit at 1 GB of memory, $0.20 per GB of transfer) about $0.015 per 1,000 items. The $2 price is therefore roughly 130 times the platform cost, above the house floor of three times.
Free allowance: Apify's free plan carries $5 of usage a month. At these prices that covers 26 default runs of 90 items ($0.19 each, $4.94 in all), or about 2,400 items across fewer, larger runs, before a paid plan is needed.
Limits and honesty
- One page per region for property and one page per make for cars. Trade Me's robots.txt disallows paginated search URLs (
?page=), search strings and region query parameters, and this Actor honours that. The reachable pool is therefore the first page of each allowed listing page: about 70 property listings per region per category (fewer in small regions) and 22 cars per make page across 20 common makes plus the national cars page. A run asking for more than that stops when the pages run out and says so in the log. - Featured and promoted listings are included. The first page of each region carries the current results plus the featured listings shown around them; all belong to the same search and all are returned. A listing featured on more than one page is returned once. Order within a run follows the page.
priceis the first dollar amount in the displayed text. Property auctions, tenders, deadline sales and "price by negotiation" listings havepricenull; "enquiries over" and "offers over" carry that threshold. Car auctions (saleType"auction") carry the current bid, or the start price when no bid has been placed, which can be as low as $1; that number is where the bidding stands, not what the car will sell for. UsepriceTextandsaleTypetogether to tell the cases apart.saleTypeis derived from the listing record in the page state, which marks classifieds explicitly and leaves auctions unmarked (the source omits false booleans), with the reserve state and a start price on auction records confirming the reading. A car record carrying neither marker gets null rather than a guess. Property is always null here: on Trade Me every property listing is a classified advertisement, and its sale method lives inpriceText.addressfollows the house ruling on property addresses. It is filled only when a licensed real estate agency or property manager placed the listing and is named inagencyName; for every private-party listing, and for the occasional listing where the source shows an agency without its licence flag,addressis null andsuburb,districtandregioncarry the location. Cars never carry an address.- Region names differ between verticals. Property uses 15 regions; cars use Trade Me's older set (Manawatu and Whanganui separately, Nelson Bays, Wairarapa, Timaru - Oamaru). The
regionsfilter folds the car names onto the 15 slugs; theregionfield keeps the source's own name. - Not collected, on purpose: individual agents' names, phone numbers, photos and profile links; members' ids; private-party street addresses; vehicle number plates and VINs; agency phone numbers, websites and logos; open home times; map coordinates; photo URLs.
titleis free text a lister wrote and passes through the house free-text filter (stripContactProsein the sharedsrc/scrub.js) before output: any sentence carrying a phone number, an email address, a name after an honorific or a role, or a licence number is dropped, andtitleis null when nothing remains. New Zealand landlines with a two-digit area code ("(09) 123 4567") and numbers typed without separators ("0211234567") are shapes the shared filter does not know, so this Actor drops sentences carrying those too. This is a filter, not a guarantee; a number written in a form neither rule recognises can pass.- Listing detail pages are not fetched. Descriptions, full photo sets, rateable values, bid counts and open-home times are on those pages and are not returned.
- The site changes its front end from time to time. The extractor reads the application state the page embeds for crawlers; when that changes, the daily test fails, the house status page shows this Actor as under maintenance, a fix ships, and the changelog records it.
- Running locally without an Apify login: set
proxyConfigurationto{ "useApifyProxy": false }in the input, otherwise the SDK tries the Apify proxy without credentials.
Legal
Robots. Trade Me's robots.txt (https://www.trademe.co.nz/robots.txt) was checked on 2026-09-25 for the exact paths this Actor fetches. The crawler's product token SubRosaBot matches none of the named groups in the file, so the User-agent: * group applies. That group opens with Allow: / and later says Disallow: /a/property/, but it then allows, by name and with a terminal anchor, each of the thirty property pages used here: Allow: /a/property/residential/sale/<region>$ for all fifteen regions and Allow: /a/property/residential/*/<region>$, which covers the rent pages; the longer, more specific allow rule wins over the shorter disallow. For cars, Allow: /a/motors/cars* covers /a/motors/cars and the twenty /a/motors/cars/<make> pages; the disallow rules beside it apply to a trailing slash, to numeric path segments, to refine and search paths and to any query string, none of which this Actor requests. What robots.txt does disallow and this Actor does not fetch: paginated results (?page=), search and refine URLs, and region and district query parameters. Property listing detail pages are allowed by longer rules in the file; this Actor does not fetch them either, because every field it returns is on the search page. All 51 URLs the Actor can request were checked against the file with the same parser the crawler uses at run time, under the declared identity, and all 51 are allowed. The crawler also reads robots.txt at the start of every run and skips anything that has since become disallowed. Trade Me last changed the file's parameter blocks on 15 September 2025 by its own comment.
Terms. Trade Me's site terms and conditions (https://help.trademe.co.nz/hc/en-us/articles/360007001532-Trade-Me-site-terms-and-conditions), clause 3.3 under "Your general commitments", say: "No scraping: You may not use a robot, spider, scraper or other unauthorised automated means to access the Site or information featured on it for any purpose. You also may not manually scrape, harvest or otherwise extract data from our Site without our express permission." The house holds no Trade Me account, has never registered one, and never logs in, so it has not entered those terms as a member. The statement the site addresses to automated visitors is its robots.txt, and that is the consent the house honours exactly. This Actor fetches only logged-out public pages that robots.txt permits, at 40 requests a minute and two at a time, under the declared identity SubRosaBot/1.0 (SubRosaBot/1.0 (+https://subrosa.dev/bots) in full), with header generation off, no session pool and no cookies kept. Trade Me serves the fully rendered search page, listing records included, to clients whose User-Agent declares a crawler, and answers a browser User-Agent sent from a non-browser client with an empty 406; this Actor takes only what the site serves to declared crawlers and never impersonates a browser. If Trade Me asks the house to stop, in any form, the Actor is unpublished the same day and the changelog says why.
Personal data. The source's search pages show, for each listing, fields this Actor reads and drops before output: for property, the listing agents' full names, mobile and office phone numbers, photos and profile slugs, the agency's phone number, website, logos and branding, the member id of the lister, the listing's photo URLs and thumbnail, its map coordinates (latitude, longitude, easting, northing), the agency's internal reference code, open home times, and, for rentals, the ideal-tenant, maximum-tenant and smoking preferences; for cars, the member id of the seller, the number plate, the VIN, the dealer's showroom URL and logos, the photo URLs and thumbnail, and the seller's preferred contact time. None of these is in the output. Under the house ruling on property addresses, a street address is returned only when the listing is placed by a licensed agency or property manager whose business name is in the item; a private seller's or private landlord's street address is that person's data, so address is null on every private-party listing and the locality fields carry the location. The only names returned are the business names of licensed agencies, property managers and registered dealers. title passes through the house free-text filter before output, which drops any sentence carrying a phone number, an email address, a name after an honorific or a role, or a licence number; this is a filter, not a guarantee.
You. A buyer who holds a Trade Me account is bound by the terms they accepted there, including clause 3.3 above, and is responsible for whether and how they use this data. You are responsible for your downstream use of the output and for the law that applies to you.
Changelog
- 2026-09-26: house scrub module adopted.
titlenow passes through the sharedstripContactProse(sentence-level: phone, email, honorific or role plus name, licence number), with a New Zealand addition for two-digit area codes and unspaced numbers; the live test reads the shared phone and email rules and the schema's identifier keys;sameDomainDelaySecswritten explicitly as 0 (trademe.co.nz robots.txt states no Crawl-delay, checked 2026-09-26); test fixtures use 555 numbers and example.com addresses only. - 2026-09-25: review fixes. Identity moved to the shared house module (
SubRosaBot/1.0 (+https://subrosa.dev/bots)); delivery routed throughcreateDeliverer;addressnow null on private-party listings per the house ruling;saleTypeadded for cars; Legal and Pricing sections rewritten to the scaffold; sample and tests regenerated. - 2026-09-25: first release.
Support
Open an issue on the Actor's Issues tab. Replies within one day.