Mercari Sold Price & Sell-Through Scraper avatar

Mercari Sold Price & Sell-Through Scraper

Pricing

Pay per usage

Go to Apify Store
Mercari Sold Price & Sell-Through Scraper

Mercari Sold Price & Sell-Through Scraper

Scrape Mercari SOLD listings: final sold prices, sell-through rate, days-to-sell, condition & brand from one search term. Sold comps for reseller pricing & Japan-sourcing arbitrage — not active listings. Mercari Japan live; US + Depop roadmap.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Kite

Kite

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Mercari Sold Price & Sell-Through Scraper (Mercari Japan)

Scrape Mercari SOLD listings — final sold prices, sell-through rate, days-to-sell, condition and brand — from one search term. Every other Mercari scraper on the Store returns active listings (asking prices). This one returns sold history: what items actually sold for and how fast — the data resellers, Japan-sourcing arbitrageurs and pricing tools actually pay for.

Asking prices tell you what sellers hope to get. Sold prices tell you what buyers actually paid. This Actor gives you the second one — plus the real demand signal: sell-through rate.

Scope (honest): Mercari Japan is live and verified (public JSON API, JPY, no login, runs without residential proxy). Mercari US and Depop are on the roadmap (both need a residential proxy at runtime and are not yet verified — see Platform support below).

What you get

For each sold item:

fielddescription
platformmercari_jp (live); mercari_us / depop on roadmap
titleitem title
soldPricefinal sold price (number)
currencyJPY (Mercari Japan)
conditionNew / Like new / Good / Fair / Poor / Damaged
brandbrand name when present
soldDatedate the sale completed (soldDateEstimated: true — derived from last status change)
daysToSelldays from listing to sale (daysToSellEstimated: true)
urllisting URL
imageUrlfirst photo
querythe search term you passed

Plus a SUMMARY record (in the run's key-value store) — instant pricing intelligence:

{
"count": 8,
"medianSoldPrice": 11300,
"avgSoldPrice": 17320.63,
"p25SoldPrice": 5500,
"p75SoldPrice": 28980,
"avgDaysToSell": 18.25,
"sellThroughRate": 0.6,
"currency": "JPY"
}

sellThroughRate = sold count / (sold + active count) for your query — a real demand signal computed from Mercari's own result totals. A high sell-through + short days-to-sell = a fast-moving item worth sourcing.

Example output (one real row)

{
"platform": "mercari_jp",
"title": "幻級 70s PENDLETON オンブレ ペンドルトン",
"soldPrice": 5500,
"currency": "JPY",
"condition": "Good",
"brand": "PENDLETON",
"soldDate": "2026-05-30",
"soldDateEstimated": true,
"daysToSell": 4,
"daysToSellEstimated": true,
"url": "https://jp.mercari.com/item/m76760088287",
"imageUrl": "https://static.mercdn.net/thumb/item/webp/m76760088287_1.jpg",
"query": "pendleton flannel"
}

Use cases

  • Reseller pricing — price your listings off what actually sold, not optimistic asks. Median + p25/p75 sold price per keyword in one run.
  • Japan-sourcing arbitrage — vintage denim (Levi's, Lee, Wrangler), workwear and designer goods often sell 50-75% cheaper on Mercari Japan than on US resale. Pull JP sold comps to find what flips and what it's worth.
  • Inventory sell-through analysissellThroughRate + avgDaysToSell tell you which SKUs move fast before you buy them.
  • Market & trend research — track sold-price drift, brand demand and condition premiums over time for any search term.
  • Feeding pricing tools / dashboards — clean normalized JSON to power a repricer, a sourcing screener, or a BI dashboard.

Input

fieldtypedefaultnotes
searchTermstringrequired
platformenum both / mercari / depopmercarimercari (Japan) is the live, verified path
mercariMarketenum jp / usjpjp = fully supported (public JSON API, JPY). us = roadmap (needs residential proxy).
maxItemsint50per platform
conditionstringoptional case-insensitive substring filter
priceMin / priceMaxintoptional
proxyConfigurationproxyRESIDENTIALoptional for JP; required for US/Depop roadmap paths

Example input

{
"searchTerm": "Pendleton flannel",
"platform": "mercari",
"mercariMarket": "jp",
"maxItems": 50
}

Platform support (honest status)

  • Mercari Japan (mercariMarket: "jp") — LIVE, verified on-platform. Uses Mercari's public api.mercari.jp/v2/entities:search JSON API with a self-signed DPoP proof (no login, no account). Clean per-item sold status + result totals for sell-through. Prices in JPY. Works without a residential proxy. Verified on the Apify cloud (a real run returns sold comps + full SUMMARY).
  • Mercari US (mercariMarket: "us") — roadmap, not yet verified. The US web API is session-auth-gated, so this path drives a real browser to mint the session and read the in-page search JSON. Requires a residential proxy at runtime (datacenter IPs are tunnel-blocked).
  • Depop — roadmap, not yet verified. Public webapi.depop.com/api/v3/search API with an isSold flag, but it sits behind Cloudflare bot protection that a clean residential IP alone does not defeat. Use Mercari Japan for guaranteed results.

Proxy

Mercari blocks datacenter IPs on most paths, but the Mercari Japan JSON path is the forgiving one and is the recommended default — it runs without a residential proxy. The US/Depop roadmap paths will require Apify RESIDENTIAL proxy.

Pricing

Pay-per-result (coming): ~$2 per 1,000 sold-comp records. No subscription. You only pay for sold items actually returned. This sits above raw active-listing scrapers because sold/sell-through data is higher-value and harder to get — yet trivial next to the margin a reseller protects per item. (Pricing is being finalized in Apify's monetization flow.)

Public, non-authenticated search data only. No login, no buyer PII, no seller names/emails — aggregate price intelligence only, the same risk class as the eBay/Poshmark sold-comps actors already on the Store. The Actor backs off and rotates sessions to respect rate limits.

Local development

npm install
npm test # offline unit tests (DPoP signature, normalization, stats)
npm start # runs the Actor locally (reads INPUT from ./storage)