Mercari Sold Price & Sell-Through Scraper
Pricing
Pay per usage
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
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:
| field | description |
|---|---|
platform | mercari_jp (live); mercari_us / depop on roadmap |
title | item title |
soldPrice | final sold price (number) |
currency | JPY (Mercari Japan) |
condition | New / Like new / Good / Fair / Poor / Damaged |
brand | brand name when present |
soldDate | date the sale completed (soldDateEstimated: true — derived from last status change) |
daysToSell | days from listing to sale (daysToSellEstimated: true) |
url | listing URL |
imageUrl | first photo |
query | the 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 analysis —
sellThroughRate+avgDaysToSelltell 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
| field | type | default | notes |
|---|---|---|---|
searchTerm | string | — | required |
platform | enum both / mercari / depop | mercari | mercari (Japan) is the live, verified path |
mercariMarket | enum jp / us | jp | jp = fully supported (public JSON API, JPY). us = roadmap (needs residential proxy). |
maxItems | int | 50 | per platform |
condition | string | — | optional case-insensitive substring filter |
priceMin / priceMax | int | — | optional |
proxyConfiguration | proxy | RESIDENTIAL | optional 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 publicapi.mercari.jp/v2/entities:searchJSON 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/searchAPI with anisSoldflag, 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.)
Legal / scope
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 installnpm test # offline unit tests (DPoP signature, normalization, stats)npm start # runs the Actor locally (reads INPUT from ./storage)