Trade Me API

New Zealand's marketplace as JSON, with every kind of price kept apart

The Trade Me API returns New Zealand's largest marketplace as clean JSON, in NZD, from one engine.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a Trade Me endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
T
/trademe/v1

8 active endpoints. Every call is 1 credit.

  • POST/trademe/v1/search
  • POST/trademe/v1/listing
  • POST/trademe/v1/cars/search
  • POST/trademe/v1/real_estate/search
  • POST/trademe/v1/seller_listings
  • POST/trademe/v1/seller_feedback
  • POST/trademe/v1/categories
  • +1 more

What Trade Me endpoints does ReefAPI ship?

8 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

8 endpoints

search

1 cr

Search Trade Me marketplace listings by keyword, category or seller.

required
optional
query, category, condition, buy_now_only, shipping, clearance, region, price_min, price_max, dollar_reserve_only, seller_id, sort, page, limit, include_sponsored, include_fallback_results, max_rotations

listing

1 cr

One Trade Me listing in full, live or closed.

required
listing_id
optional
max_rotations

cars/search

1 cr

Used and new cars on Trade Me Motors.

required
optional
query, make, model, year_min, year_max, odometer_min, odometer_max, price_min, price_max, body_style, fuel_type, transmission, vehicle_condition, seller_type, listing_format, region, sort, page, limit, include_sponsored, max_rotations

real_estate/search

1 cr

property on Trade Me Property, for sale or for rent.

required
optional
purpose, query, region, district_id, price_min, price_max, bedrooms_min, bedrooms_max, bathrooms_min, bathrooms_max, property_type, sales_method, sort, page, limit, include_sponsored, max_rotations

seller_listings

1 cr

A Trade Me member's profile and current marketplace listings.

required
seller_id
optional
sort, page, limit, include_sponsored, max_rotations

seller_feedback

1 cr

Feedback left for a Trade Me member, newest first.

required
seller_id
optional
page, limit, max_rotations

categories

1 cr

The Trade Me category tree one level at a time.

required
optional
category, max_rotations

suggest

1 cr

Trade Me's own search suggestions for the start of a keyword, with suggested categories.

required
query
optional
max_rotations

Every parameter, every allowed value →

Trade Me API

3 of 8 endpoints, ready to run

View docs ↗

Up to 100 Trade Me listings: id, title, the headline price and what it is (current bid, start price, Buy Now), bid count, reserve met or not, closing time, condition, region and suburb, pick-up and free shipping — sponsored rows counted separately.

1 credit0 required · 6 optional
POST/trademe/v1/search
ok1288 ms · 50 records · sample
{
  "ok": true,
  "meta": {
    "api": "trademe",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 1287.9,
    "record_count": 50,
    "cache_hit": false
  },
  "data": {
    "query": "mountain bike",
    "sort": "most_bids",
    "results": [
      {
        "listing_id": 6126438240,
        "title": "Trek Marlin 5 Mountain Bike",
        "subtitle": null,
        "url": "https://www.trademe.co.nz/a/listing/6126438240",
        "vertical": "marketplace",
        "listing_type": "auction",
        "category": {
          "number": "0005-0380-0050-7146-",
          "path": "/Sports/Cycling/Mountain-bikes/Front-suspension"
        },
        "price": 166,
        "price_type": "current_bid",
        "price_display": "$166.00",
        "currency": "NZD",
        "start_price": 1,
        "current_bid": 166,
        "minimum_next_bid": null,
        "buy_now_price": null,
        "asking_price": null,
        "rent_per_week": null,
        "was_price": null,
        "discount_percent": null,
        "bid_count": 19,
        "reserve_state": "met",
        "reserve_met": true,
        "is_clearance": false,
        "condition": "used",
        "region": "Hawke's Bay",
        "suburb": "Napier",
        "start_date": "2026-09-10T22:47:12.170000Z",
        "search_index_end_date": "2026-09-20T08:30:00Z",
        "image": "https://trademe.tmcdn.co.nz/photoserver/thumb/2327843572.jpg",
        "images": [
          "https://trademe.tmcdn.co.nz/photoserver/thumb/2327843611.jpg",
          "https://trademe.tmcdn.co.nz/photoserver/thumb/2327843620.jpg",
          "https://trademe.tmcdn.co.nz/photoserver/thumb/2327843634.jpg"
        ],
        "seller_id": 4070541,
        "is_super_seller": false,
        "is_dealer": null,
        "pickup": "required",
        "free_shipping": false,
        "suggested_shipping": null,
        "has_afterpay": false,
        "has_ping": true,
        "has_variants": false,
        "is_featured": false,
        "is_super_featured": false,
        "has_gallery": false,
        "is_bold": false,
        "is_highlighted": false,
        "sponsored": false
      },
      {
        "listing_id": 6126443511,
        "title": "Scott Aspect 770 Mountain Bike",
        "subtitle": null,
        "url": "https://www.trademe.co.nz/a/listing/6126443511",
        "vertical": "marketplace",
        "listing_type": "auction",
        "category": {
          "number": "0005-0380-0050-7146-",
          "path": "/Sports/Cycling/Mountain-bikes/Front-suspension"
        },
        "price": 121,
        "price_type": "current_bid",
        "price_display": "$121.00",
        "currency": "NZD",
        "start_price": 1,
        "current_bid": 121,
        "minimum_next_bid": null,
        "buy_now_price": null,
        "asking_price": null,
        "rent_per_week": null,
        "was_price": null,
        "discount_percent": null,
        "bid_count": 18,
        "reserve_state": "met",
        "reserve_met": true,
        "is_clearance": false,
        "condition": "used",
        "region": "Hawke's Bay",
        "suburb": "Napier",
        "start_date": "2026-09-10T22:53:49.050000Z",
        "search_index_end_date": "2026-09-20T08:30:00Z",
        "image": "https://trademe.tmcdn.co.nz/photoserver/thumb/2328237362.jpg",
        "images": [
          "https://trademe.tmcdn.co.nz/photoserver/thumb/2328237368.jpg",
          "https://trademe.tmcdn.co.nz/photoserver/thumb/2328237384.jpg",
          "https://trademe.tmcdn.co.nz/photoserver/thumb/2328237398.jpg"
        ],
        "seller_id": 4070541,
        "is_super_seller": false,
        "is_dealer": null,
        "pickup": "required",
        "free_shipping": false,
        "suggested_shipping": null,
        "has_afterpay": false,
        "has_ping": true,
        "has_variants": false,
        "is_featured": false,
        "is_super_featured": false,
        "has_gallery": false,
        "is_bold": false,
        "is_highlighted": false,
        "sponsored": false
      },
      {
        "listing_id": 6123905893,
        "title": "$1 Reserve Scott Aspect 730 Hardtail Mountain Bike Large",
        "subtitle": null,
        "url": "https://www.trademe.co.nz/a/listing/6123905893",
        "vertical": "marketplace",
        "listing_type": "auction",
        "category": {
          "number": "0005-0380-0050-7146-",
          "path": "/Sports/Cycling/Mountain-bikes/Front-suspension"
        },
        "price": 150,
        "price_type": "current_bid",
        "price_display": "$150.00",
        "currency": "NZD",
        "start_price": 1,
        "current_bid": 150,
        "minimum_next_bid": null,
        "buy_now_price": null,
        "asking_price": null,
        "rent_per_week": null,
        "was_price": null,
        "discount_percent": null,
        "bid_count": 17,
        "reserve_state": "met",
        "reserve_met": true,
        "is_clearance": false,
        "condition": "used",
        "region": "Auckland",
        "suburb": "Manukau",
        "start_date": "2026-09-09T08:41:34.450000Z",
        "search_index_end_date": "2026-09-18T09:00:34.170000Z",
        "image": "https://trademe.tmcdn.co.nz/photoserver/thumb/2328123860.jpg",
        "images": [
          "https://trademe.tmcdn.co.nz/photoserver/thumb/2328123861.jpg",
          "https://trademe.tmcdn.co.nz/photoserver/thumb/2328123859.jpg",
          "https://trademe.tmcdn.co.nz/photoserver/thumb/2328109394.jpg"
        ],
        "seller_id": 4807903,
        "is_super_seller": false,
        "is_dealer": null,
        "pickup": "required",
        "free_shipping": false,
        "suggested_shipping": null,
        "has_afterpay": false,
        "has_ping": true,
        "has_variants": false,
        "is_featured": true,
        "is_super_featured": false,
        "has_gallery": true,
        "is_bold": false,
        "is_highlighted": false,
        "sponsored": false
      }
    ],
    "count": 50,
    "total_results": 16659,
    "page": 1,
    "limit": 50,
    "has_more": true,
    "sponsored_count": 0,
    "sponsored_dropped": 0,
    "did_you_mean": null,
    "category_facets": [
      {
        "number": "0005-",
        "id": 5,
        "name": "Sports",
        "count": 15611
      },
      {
        "number": "0001-",
        "id": 1,
        "name": "Trade Me Motors",
        "count": 275
      },
      {
        "number": "0344-",
        "id": 344,
        "name": "Mobile phones",
        "count": 165
      }
    ],
    "fallback_results_dropped": 0,
    "filters": {}
  }
}
Real response, fetched from the live endpoint with the parameters on the left — trimmed to the first few rows, with seller names left out. Press Try it for the untrimmed response.

How the Trade Me API works

Trade Me is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 252 engines.

02
Call
POST /trademe/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 credit per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Find auctions closing soon, then check the reserve before you bid

Closing-soon auctions in a category, then the record for the ones worth a look - with the bid history, the minimum next bid and whether the reserve is met.

01search
POST/trademe/v1/search
{"category": "0005-0380-", "sort": "closing_soon", "limit": 50}

One flat credit, one page of 50 organic rows with sponsored listings counted apart. Take results[].listing_id where listing_type is auction.

02listing
POST/trademe/v1/listing
{"listing_id": "…"}

One flat credit. current_bid, minimum_next_bid, bid_count, reserve_met, time_left_seconds and the shipping options with prices.

03seller_feedback
POST/trademe/v1/seller_feedback
{"seller_id": 5062316}

One flat credit. The seller's recent feedback, whether a buyer or a seller left it, and the seller's replies.

Three flat credits for a category's closing auctions, one auction in full and its seller's feedback - every action is one request on our side (seller_listings two), so a sweep costs what you can count in advance.

request
curl -X POST https://api.reefapi.com/trademe/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"bike","limit":20}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "trademe",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

Half of Trade Me's houses for sale publish no price at all - and that is not a missing field

On Trade Me Property the price of a house for sale is a sentence, not a number. We counted 500 listings on 2026-09-16: exactly half say how the house is being sold instead of what it costs. The API returns price null for those - never 0 - and tells you the sale method on every listing.

What the listing saysListings of 500price returnedprice_type / sale_method
Price by negotiation158nullnull / negotiation
Asking price $525,000139525000asking / asking_price
Enquiries over $789,000111789000enquiries_over / enquiries_over
Auction on 30 Sept, 4:00 pm48nullnull / auction
Deadline sale by 8 Oct37nullnull / deadline_sale
For sale by tender7nullnull / tender

Rentals are different and simpler: 500 of 500 rental listings were priced per week, so rent_per_week is a number on every rental. price_display always carries Trade Me's own wording, so nothing the site shows is lost. One more trap at the other end: sorting houses by lowest price opens with listings whose asking price is a few hundred dollars - a placeholder, returned as published.

What Trade Me publishes, how each price is kept apart, and what it does not publish

trademe.co.nz only — one country, prices in NZD. Measured on 2026-09-16: 110 of 110 live calls across eight actions, 89 of 89 end-to-end cases, 18 listings cross-checked against three sources. Some of these lines go against us.

One market: New Zealand, prices in NZD

Trade Me is a New Zealand marketplace and there is no country parameter because there is no other market. Marketplace goods, Trade Me Motors cars and Trade Me Property sales and rentals come from the same engine. Jobs, motorbikes, boats and commercial property exist on Trade Me but are not offered yet.

Current bid, start price, Buy Now and asking price are separate fields

An auction carries a start price, a current bid once someone has bid, a minimum next bid and sometimes a Buy Now price; a Buy Now listing carries its Buy Now price; a car classified an asking price. price is the headline number and price_type says which it is, so an average never mixes a $1 opening bid with a Buy Now price.

🔴 Sponsored listings are injected into every page

On a keyword search Trade Me adds 5 to 7 sponsored listings at fixed slots on top of the results, and the same ones repeat on pages 1, 2 and 3. They are left out by default, counted in sponsored_dropped, and returned flagged with include_sponsored. count is exactly the organic rows you asked for.

Against us: half the houses for sale have no price

Of 500 houses for sale, 250 said Price by negotiation, Auction on a date, Deadline sale or For sale by tender instead of a number. price is null for those and sale_method says which; price_display keeps Trade Me's wording. Rentals are all priced per week.

Against us: a price range needs a category

Trade Me ignores a price range on a keyword-only marketplace search, so the API refuses that combination rather than returning unfiltered results. With a category the range works on every row.

Against us: search closing times can be an hour off around daylight saving

For listings closing after New Zealand's clocks changed on 27 September 2026, Trade Me's search results showed a closing time one hour later than the listing itself (10 of 10 checked; 0 difference on 9 of 9 before). Rows name it search_index_end_date; listing returns the listing's own end_date.

Closed listings still answer, but never as sold

A closed listing returns status closed with how the auction ended: no bids, reserve not met, or the highest bid met the reserve. Trade Me does not show logged-out visitors who won, so there is no sold flag and no winner.

What one call costs, and how reliable it was

search is about 64 KB for 50 rows and 1.5 s at the median; listing 15 KB and 1.2 s; cars/search 160 KB and real_estate/search 196 KB for 50 rows, both about 1.5 s. 110 live calls in the final run, 110 successes; 220 over two runs, 0 failures. Every action is one flat credit.

Checked against three sources, not trusted

On 18 listings in nine categories the title, price wording, Buy Now price, current bid, photo count, listing type, region, seller id, feedback score, positive percentage and nickname were compared with the raw record, the search result and the member's own profile: 0 mismatches.

What Trade Me does not publish

No product rating or review count (members are rated, not listings), no reserve amount, no winner on closed auctions, a barcode on 0 of 18 verified listings, and no bidder or question-asker names (masked by Trade Me).

What people build with Trade Me

The jobs this data is most often used for.

8

endpoints

1

credit per call

01

Resale and flipping tools watch auctions closing soon in a category, compare the current bid against the Buy Now price and skip auctions whose reserve is not met.

02

Price-intelligence teams track New Zealand second-hand and retail prices by category, with was-price, discount and Buy Now figures kept apart from bids.

03

Car dealers and valuation tools pull used cars by make, model, year and odometer, split dealer and private sellers and auctions from classifieds, and read registration and WoF expiry from each listing.

04

Property and rental analysts pull houses by region, district, bedrooms and sale method, and weekly rents by suburb, knowing which listings publish a number and which do not.

What Trade Me data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 252 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/trademe/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"bike","limit":20}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/trademe/v1/search",
    headers={"x-api-key": REEF_KEY},
    json={
  "query": "bike",
  "limit": 20
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up Trade Me.

Get a free key →
What is the price on an auction - the current bid or the Buy Now price?

Both are returned, separately, and price_type says which one price is. On an auction with bids, price is the current bid, with the start price, the minimum next bid and the Buy Now price (if the seller offers one) beside it. Before the first bid, price is the start price and current_bid is null. On a Buy Now listing, price is the Buy Now price. On a car classified it is the asking price. One thing to know when sorting: Trade Me's price sorts order an auction by its Buy Now price when it has one, so an auction at $2,200 with Buy Now $2,500 sits among the $2,500 listings.

Does it show whether the reserve has been met?

Yes: reserve_state is no_reserve, met, not_met or not_applicable (Buy Now and classifieds), and reserve_met is true or false where it applies. It matters: among the 500 most-bid sports auctions on 2026-09-16, 54 had not met their reserve despite having bids, and among 500 car auctions 252 had not. A $1 reserve auction shows no_reserve until someone bids. Trade Me does not publish the reserve amount itself, so it is not returned.

What are sponsored listings, and why are there more rows than I asked for?

Trade Me injects sponsored listings into every search page on top of the results you asked for: on a keyword search 5 to 7 of them at fixed slots (1st, 4th, 7th and so on), and the same sponsored listings repeat on page 2 and page 3. They are left out by default and counted in sponsored_dropped, so count is exactly the organic rows you requested; include_sponsored true returns them flagged sponsored. Listings that paid for a featured, bold, gallery or highlight upgrade are real results and stay in, with each upgrade flagged.

Can I get closed auctions?

Yes, by listing id. A listing that has ended keeps answering - a listing that closed in November 2024 still did on 2026-09-16 - and it comes back with status closed, time_left_seconds 0 and closed_result: no_bids, reserve_not_met or highest_bid_met_reserve, with the last bid and bid count. Trade Me does not show logged-out visitors who won or whether the sale completed, so the API never says sold.

Why does a search row's closing time sometimes differ from the listing's by an hour?

Because Trade Me's search results and its listing pages disagree around a daylight-saving change. For listings closing after New Zealand's clocks went forward on 27 September 2026, the search result's closing time was one hour later than the listing's own in 10 of 10 pairs we checked, and identical in 9 of 9 closing before it. The row field is named search_index_end_date so this is visible, and listing returns end_date from the listing itself, which keeps the local closing time.

Can I filter a search by price?

Yes, together with a category. Trade Me ignores a price range on a keyword-only search - the same 35,580 laptop results came back with or without it - so the API rejects that combination with a clear error instead of returning unfiltered results. With a category (for example 0002-0356- for laptops) the range works: 100 to 200 dollars returned 2,844 listings and every row on the page was inside it. cars/search and real_estate/search take price ranges directly; for rentals the range is per week.

Which regions can I filter by?

Every Trade Me region, by name: auckland, wellington, canterbury, otago and so on. Marketplace and car searches use Trade Me's seller regions (19, including Wairarapa, Timaru - Oamaru and International); property uses Trade Me Property's regions (15, with Manawatu / Whanganui and Nelson / Tasman combined) and can narrow to a district. The two lists are numbered differently on Trade Me - Auckland is a different number in each - and the API sends the right one for you.

What does Trade Me NOT publish?

No product rating or review count - Trade Me rates members, so the seller's feedback score, positive and negative counts and positive percentage come back instead, and rating is null on a listing. No reserve amount, and no winner or sold flag on a closed auction. A barcode (GTIN) was empty on 18 of 18 verified listings. Half of the houses for sale publish no price (see above). Bidders and people asking questions are masked by Trade Me, so only bid amounts, dates and the question-and-answer text are returned.

What is the Trade Me API?

Trade Me API is a ReefAPI endpoint group for new zealand's marketplace: auctions and buy now listings, cars and property, prices in nzd. It returns live JSON through POST requests under /trademe/v1.

Is the Trade Me API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Trade Me calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Trade Me login or account?

No login to Trade Me is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Trade Me data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Trade Me API use?

Trade Me actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Trade Me from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call trademe actions with the same key, credit pool and JSON envelope used by normal REST requests.

16 Classifieds & Second-hand APIs on the same key

One key, one credit pool, one response envelope. If you are pulling Trade Me, you are one call away from the rest of the category — no second contract, no second integration.

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 251 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-16.