Trade Me NZ Scraper icon

Trade Me NZ Scraper

Scrape trademe.co.nz across all five sections: Marketplace goods and auctions, Property, Motors, Jobs and Services. Search or paste URLs, walk…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Trade Me NZ Scraper at a glance

Trade Me NZ Scraper is a ready-to-run Apify actor from abotapi for collecting ecommerce data. Its documented output includes section, listing id, title, price and price (number), which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.00 per 1,000 results on the Apify Free plan and from $1.20 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Ecommerce, Real Estate, Jobs
Region
Oceania
Pricing
$2.00 per 1,000 results (Free plan), from $1.20 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
48 options
Run success
98.3% of completed public runs in the last 30 days

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

What Trade Me NZ Scraper can do

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

Choose what to collect

These inputs let you configure Trade Me NZ Scraper - Marketplace, Property, Motors & Jobs. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredSearch mode uses keywords and filters. URL mode scrapes category, search or individual listing links you paste.

Choices: search, url

verticalstringWhich Trade Me section to scrape: Marketplace (general goods and auctions), Property, Motors (vehicles), Jobs, or Services.

Choices: marketplace, property, motors, jobs, services

queriesarrayOne or more keyword searches within the selected section (for example: iphone, mountain bike). Leave empty to browse the whole section or a category.
listingTypestringProperty section only. Which property market to search.

Choices: residential-sale, residential-rent, commercial-sale, lifestyle

regionstringProperty or Jobs section. Region name or id (for example: auckland, wellington, canterbury).
districtstringProperty or Jobs section. District within the region.
suburbstringProperty section. Suburb within the district.
Show 41 more inputs
More input fields
InputWhat it controls
propertyTypestringProperty section. For example: House, Apartment, Townhouse, Unit, Section, Lifestyle.
minBedroomsintegerProperty section. Minimum number of bedrooms.
maxBedroomsintegerProperty section. Maximum number of bedrooms.
minBathroomsintegerProperty section. Minimum number of bathrooms.
minLandAreaintegerProperty section. Minimum land area in square metres.
maxLandAreaintegerProperty section. Maximum land area in square metres.
minFloorAreaintegerProperty section. Minimum floor area in square metres.
maxFloorAreaintegerProperty section. Maximum floor area in square metres.
petsOkaybooleanProperty section (rentals). Only listings that allow pets.
makestringMotors section. For example: Toyota, Ford, Mazda.
modelstringMotors section. For example: Corolla, Ranger.
minYearintegerMotors section. Earliest manufacture year.
maxYearintegerMotors section. Latest manufacture year.
minOdometerintegerMotors section. Minimum odometer reading.
maxOdometerintegerMotors section. Maximum odometer reading.
bodyStylestringMotors section. For example: Hatchback, Sedan, SUV, Ute.
transmissionstringMotors section. For example: Automatic, Manual.
fuelstringMotors section. For example: Petrol, Diesel, Electric, Hybrid.
categorystringMarketplace, Jobs or Services section. Category id or slug to narrow the search.
conditionstringMarketplace section. Item condition.

Choices: , New, Used

buyNowOnlybooleanMarketplace section. Only listings with a Buy Now price.
jobTypestringJobs section. For example: Full time, Part time, Contract.
minPriceintegerMinimum price in NZD (or minimum salary for Jobs).
maxPriceintegerMaximum price in NZD (or maximum salary for Jobs).
startUrlsarrayTrade Me category, search-result or individual listing URLs. Results continue from the page number in the URL onward.
sortstringResult ordering. Applicability varies by section: Marketplace supports Default, FeaturedFirst, PriceAsc, PriceDesc, TitleAsc, ExpiryAsc, ExpiryDesc, BidsMost, BuyNowPrice; Jobs supports BestMatch, JobsLatestListingDesc, HighestSalary, LowestSalary; Services supports ReviewsDesc. Also orders a pasted category or search URL in URL mode, taking precedence over any ordering already encoded in that URL. Leave as Default if unsure.

Choices: Default, FeaturedFirst, PriceAsc, PriceDesc, TitleAsc, ExpiryAsc, ExpiryDesc, BidsMost, BuyNowPrice, BestMatch, JobsLatestListingDesc, HighestSalary, LowestSalary, ReviewsDesc

keywordstringOptional free-text term applied on top of the section and filters. Also applies to a pasted URL in URL mode, but only when that URL does not already contain a search term of its own, in which case the URL's own term wins.
fetchDetailsbooleanFetch each listing's full detail page and the seller's member feedback (positive/negative counts and score). Slower and adds a per-item detail charge.
includeMemberFeedbackCommentsbooleanWhen full details are enabled, also collect the seller's individual feedback comments.
maxFeedbackCommentsintegerWith feedback comments on, the most recent comments to collect for each seller (paged 25 at a time). Previously the actor always returned up to 25.
maxItemsintegerMaximum number of listings to return. This is the main limit. Set 0 for unlimited.
maxPagesintegerLimit on result pages to walk per search. Leave empty to walk every result page; the run still stops at Max items.
resumeFromRunIdstringPaste a previous run ID or dataset ID to continue an interrupted or paginated walk. Listings already collected there (matched by listingId) are skipped, so this run only saves the new ones. Leave empty for a normal fresh run.
incrementalModebooleanON: the actor remembers the listings it saw for this exact search scope (keyed automatically, or use State key) and on each scheduled run marks every listing NEW, UPDATED, UNCHANGED, REAPPEARED or EXPIRED, pushing only new and changed rows plus EXPIRED tombstones, and stamping each row with changeType, changedFields, firstSeenAt and lastSeenAt. COMPARED: every output field (title, prices, Buy Now, closing date, location, photos, category, seller and seller feedback, vehicle/property attributes). EXCLUDED from the comparison but still in the output: scrapedAt and viewCount (a page-view counter that moves on every visit), plus anything you list under Ignore fields. EXPIRED rows are only produced when the search ran to its natural end from page 1 (not for a capped, Max pages-limited, resumed or ?page=N>1 run). With Incremental mode ON, Max items limits the listings scanned. OFF (default): every run returns the full result set, unchanged.
stateKeystringName of the incremental baseline when Incremental mode is ON. Leave empty to key it automatically on a hash of the search scope (recommended). Reuse the same key across runs to compare like with like; a different key starts a new baseline.
emitUnchangedbooleanWith Incremental mode ON, also push listings that did not change (changeType UNCHANGED). Default OFF: unchanged listings are remembered but not pushed, and not billed.
emitExpiredbooleanWith Incremental mode ON, push a tombstone row (changeType EXPIRED, last known values) for listings the previous run saw that this run's search no longer returns - only when the search ran to completion. Default ON.
ignoreFieldsForChangesarrayWith Incremental mode ON, output fields listed here never count as a change (they are excluded from changeType and changedFields while staying in the output). Use a field name (photoUrls) or a dotted path for a nested field (sellerFeedback.totalCount). Built-in defaults already cover scrapedAt and viewCount.
mcpConnectorsarrayOptionally send results into apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a page per item; other connectors get a best-effort write. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
notionParentPageUrlstringURL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

verticalSection
listingIdListing ID
titleTitle
priceDisplayPrice
pricePrice (number)
oldPricePrevious price
locationLocation
primaryImageMain photo (image)
startPriceStart price
buyNowPriceBuy Now
regionRegion
suburbSuburb
Show 48 more fields
districtDistrict
categoryCategory
makeMake
modelModel
yearYear
odometerOdometer
addressAddress
bedroomsBeds
bathroomsBaths
propertyTypeProperty type
agencyNameAgency
sellerTypeSeller type
memberIdMember ID
sellerFeedbackSeller feedback
urlURL
photoUrlsPhotos
scrapedAtScraped at
descriptionDescription
attributesAttributes
viewCountViews
bidderAndWatchersBidders and watchers
quantityRemainingQuantity
latitudeLatitude
longitudeLongitude
agencyPhoneAgency phone
agencyWebsiteAgency website
agentsAgents
shippingOptionsShipping
paymentOptionsPayment
sellerFeedback.memberIdMember ID
sellerFeedback.nicknameSeller
sellerFeedback.totalCountFeedback count
sellerFeedback.uniquePositivePositive
sellerFeedback.uniqueNegativeNegative
sellerFeedback.feedbackPercentFeedback %
sellerFeedback.dateJoinedJoined
sellerFeedback.isSuperSellerSuper seller
sellerFeedback.comments.feedbackIdFeedback ID
sellerFeedback.comments.typeType
sellerFeedback.comments.textComment
sellerFeedback.comments.fromNicknameFrom
sellerFeedback.comments.isSellerFrom a seller
sellerFeedback.comments.dateEnteredDate
sellerFeedback.comments.responseSeller response
changeTypeChange
changedFieldsChanged fields
firstSeenAtFirst seen
lastSeenAtLast seen

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "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,
  "longitude": 174,
  "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"
}

Ways to use this data

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

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Trade Me NZ Scraper return?

The documented output for Trade Me NZ Scraper includes section, listing id, title, price, price (number), previous price, location and main photo. Availability of each field depends on the source page and the selected mode.

How much does Trade Me NZ Scraper cost?

It costs $2.00 per 1,000 results on the Apify Free plan and from $1.20 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

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.

Ready to collect with Trade Me NZ Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.