Japan Resale Price Check – Mercari & Yahoo Sold Prices
Pricing
$20.00 / 1,000 price summaries
Japan Resale Price Check – Mercari & Yahoo Sold Prices
What does it sell for in Japan? One row per keyword and marketplace with median, quartiles, sample size, days-to-sell and USD from recent sold listings on Mercari, Yahoo! Auctions and Yahoo! Flea Market. Optional asking-price rows, condition and price filters, exclude keywords. Read-only, MCP-ready.
Pricing
$20.00 / 1,000 price summaries
Rating
0.0
(0)
Developer
Task Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Ask "what does this sell for in Japan?" and get one row per marketplace with the answer: median, quartiles, sample size, days-to-sell and a USD conversion — computed from recent sold listings on Mercari, Yahoo! Auctions and Yahoo! Flea Market. Pass one keyword or a list of hundreds, optionally add asking-price rows to see the gap between what sellers ask and what buyers pay, and narrow the sample by condition, price band or exclude keywords. Built for resellers, proxy-buying (代購) services, price researchers and AI agents that need a number, not a list. No coding required.
What data can you extract?
Every row is one keyword × marketplace × price type. No individual listings are returned — use the sibling listing Actors named in listingsActor for that.
| Field | Description |
|---|---|
keyword, keywordUsed, keywordMapped | What you asked, what was searched, whether a Japanese alias was applied |
marketplace, priceType | mercari / yahoo_auctions / yahoo_fleamarket; sold (completed sales) or asking (current listings) |
fetchStatus, lowSample, priceDispersionHigh, hint | ok, partial, no_matches, no_valid_prices, blocked_suspected, request_failed; warnings; plain-language note |
n, requestedSampleSize, sampleComplete, stopReason, pagesFetched | How many priced listings were used, and how the sample was gathered |
sampleOrder, sampleTimeField, sampleNewestAt, sampleOldestAt | In what order the marketplace returned the sample and the time window it covers |
totalAvailable, totalRelation | Matches the marketplace reported for the query; capped when Mercari stops counting at 15,000 |
scanned, excludedInvalidPrice, excludedNoBid, excludedOtherMarket, excludedByFilter, duplicatesRemoved | Where the rest of the scanned listings went |
priceMinJpy, p25Jpy, medianJpy, p75Jpy, priceMaxJpy, meanJpy, iqrJpy, spreadRatio, outlierShare | Price statistics in yen (R type-7 quantiles) |
medianUsd, p25Usd, p75Usd, fxRate, fxDate, fxSource, fxStatus, fxBase, fxQuote, fxFetchedAt | USD conversion and exactly which rate produced it |
medianDaysToSell, daysToSellN, daysToSellBasis | Yahoo! Flea Market only: median days from listing to sale |
medianListingDays, listingDaysN | Yahoo! Auctions only: median auction duration of the sold sample |
shippingIncludedShare, shippingKnownN | Share of the sample with seller-paid domestic shipping |
conditionNewShare … conditionUnknownShare | Condition mix of the sample on a common five-step scale |
bidCountMedian | Yahoo! Auctions only |
listingsActor, chargeStatus, checkedAt | Where to get the underlying listings; billing note; timestamp |
Why use it?
- Pricing before you buy or list — a median and quartiles beat eyeballing a page of listings, and three marketplaces side by side show where an item is cheap to source and where it sells high.
- Ask vs. sold —
includeAsking: trueadds the asking-price row so you can see how far current sellers sit above what actually closes. - Bulk pricing — pass a list of dozens of model numbers and get a spreadsheet back; each row is one cheap event, not hundreds of listing results.
- Time-to-sell — Yahoo! Flea Market rows carry the median days from listing to sale, a liquidity signal the price alone does not give.
- AI agents / MCP — one row is exactly what an agent needs to answer a price question; this Actor is discoverable and callable through the Apify MCP server.
How to use it (no coding)
- Click Start (or Try for free).
- Enter one or more Keywords — Japanese product names match best, e.g.
ポケモンカード 151,MG ガンダム,iPhone 15 Pro 256GB. - Optionally pick Marketplaces and a Sample size (default 200 recent sales per marketplace).
- Open Advanced to add asking-price rows, exclude words like
まとめ売りorBOX, set a price band or condition filter, or pin the exchange rate. - Click Start and read the table, or download CSV / JSON. A per-query report is saved as
SEARCH_REPORT.
Input example
{"keywords": ["ポケモンカード 151", "MG ガンダム"],"marketplaces": ["mercari", "yahoo_auctions", "yahoo_fleamarket"],"sampleSize": 200,"includeAsking": true,"excludeKeywords": ["まとめ売り", "BOX"],"conditionFilter": ["new", "like_new"]}
All fields are optional. Running with no input prices ポケモンカード 151 on all three marketplaces.
Output example
Measured on 2026-09-09 for ポケモンカード 151 (no filters):
| marketplace | n | medianJpy | p25Jpy | p75Jpy | medianUsd | medianDaysToSell | medianListingDays | priceDispersionHigh |
|---|---|---|---|---|---|---|---|---|
| mercari | 200 | 3,050 | 1,780 | 14,850 | 19.77 | — | — | true |
| yahoo_fleamarket | 200 | 6,000 | 1,388 | 19,250 | 38.89 | 1.51 | — | true |
| yahoo_auctions | 200 | 7,750 | 2,042 | 19,125 | 50.22 | — | 5.27 | true |
priceDispersionHigh is true for all three: "ポケモンカード 151" covers single cards, packs and boxes, so the quartiles span 1,400–19,000 yen. Add excludeKeywords: ["BOX", "パック"] or a tighter keyword to price one product. One row as JSON:
{"keyword": "ポケモンカード 151","keywordUsed": "ポケモンカード 151","keywordMapped": false,"marketplace": "yahoo_fleamarket","priceType": "sold","fetchStatus": "ok","lowSample": false,"priceDispersionHigh": true,"hint": "Prices are widely spread (IQR > 1.5 × median). The keyword may cover different products, sets or conditions — check the listings before relying on the median.","n": 200,"requestedSampleSize": 200,"sampleOrder": "end_time_desc (API default for sold)","sampleTimeField": "endedAt","sampleNewestAt": "2026-09-09T10:36:43.000Z","sampleOldestAt": "2026-09-08T02:11:40.000Z","sampleComplete": true,"stopReason": "sample_size","pagesFetched": 2,"totalAvailable": 2406,"totalRelation": "exact","scanned": 200,"excludedInvalidPrice": 0,"excludedNoBid": 0,"excludedOtherMarket": 0,"excludedByFilter": 0,"duplicatesRemoved": 0,"priceMinJpy": 300,"p25Jpy": 1388,"medianJpy": 6000,"p75Jpy": 19250,"priceMaxJpy": 128000,"meanJpy": 12410,"iqrJpy": 17862,"spreadRatio": 13.87,"outlierShare": 0.08,"medianUsd": 38.89,"p25Usd": 9.0,"p75Usd": 124.76,"fxBase": "USD","fxQuote": "JPY","fxRate": 154.3,"fxDate": "2026-09-08","fxFetchedAt": "2026-09-09T10:36:40.000Z","fxSource": "frankfurter.dev (ECB reference rate)","fxStatus": "fetched","medianDaysToSell": 1.51,"daysToSellN": 200,"daysToSellBasis": "endTime − openTime of sold flea-market listings","medianListingDays": null,"listingDaysN": 0,"shippingIncludedShare": 1,"shippingKnownN": 200,"conditionNewShare": 0.31,"conditionLikeNewShare": 0.42,"conditionGoodShare": 0.2,"conditionFairShare": 0.05,"conditionPoorShare": 0.02,"conditionUnknownShare": 0,"bidCountMedian": null,"listingsActor": "datalab-jp/yahoo-auctions-flea-market-scraper","chargeStatus": "charged","checkedAt": "2026-09-09T10:36:44.000Z"}
How the statistics are computed
- Sample. For each keyword and marketplace the Actor reads sold listings from the marketplace's own JSON search endpoint until
sampleSizepriced listings are collected (or results run out). Yahoo! Flea Market and Yahoo! Auctions return sold listings newest-ended first, so their samples are the most recent sales; Mercari's sold search is not strictly chronological —sampleOrderand thesampleNewestAt/sampleOldestAtwindow tell you exactly what was used. Samples are never pooled across marketplaces. - What counts as sold. Mercari: status sold-out. Yahoo! Flea Market: status SOLD. Yahoo! Auctions: closed auctions with at least one bid (bid-less closed auctions go to
excludedNoBid). Flea-market items that the Yahoo! Auctions API also returns are left out of the auctions row (excludedOtherMarket) so nothing is counted twice. n= listings with a positive numeric price after exclude keywords, price band, condition filter and de-duplication. Prices are the figures the marketplace shows for the listing, not settled payment amounts.- Quantiles use R's type-7 definition (linear interpolation):
h = (n − 1)·p,Q(p) = (1 − g)·x[⌊h⌋] + g·x[⌊h⌋ + 1].iqrJpy = p75 − p25;spreadRatio = p75 / p25(null when p25 ≤ 0);outlierShareis the share outside[p25 − 1.5·IQR, p75 + 1.5·IQR]. P25–P75 is the middle half of the sample — not a confidence interval and not a guaranteed range for the next sale. priceDispersionHighisiqr > 1.5 × median. It flags a wide spread; it does not prove the keyword mixes products (a single product in varying condition can also spread).- Days to sell is reported only where both timestamps are known and mean what the name says: Yahoo! Flea Market
endTime − openTime(medianDaysToSell), Yahoo! AuctionsendTime − startTime(medianListingDays, the auction duration). Mercari has no reliable sale timestamp, so no figure is given rather than a guess. - USD = JPY ÷
fxRate, wherefxRateis yen per US dollar from yourusdJpyRateinput or the ECB reference rate via frankfurter.dev (previous business day,fxDate). If neither is available the USD columns are null andfxStatussays why; yen statistics are unaffected. - Low sample.
lowSampleis true when0 < n < 20. Treat those medians as indicative only.
Data guarantees
- Zero results cost nothing. A keyword with no sold listings still gets a row (
n: 0,fetchStatus: no_matches, ahint) but noprice-summarycharge. Partial fetches (fetchStatus: partial) are not charged either. - Every number is traceable. The row states the sample order, time window, exclusions, total available and the FX rate used.
- Hard cost caps.
maxKeywordsandmaxSummaryRowsbound the run; each billable row is one event regardless ofsampleSize. - Japanese labels and machine codes wherever a label appears in the sibling listing Actors, so results join cleanly.
Scheduling & automation
Run a keyword list daily or weekly to build a price history — append the rows to a sheet or database keyed on keyword + marketplace + priceType + checkedAt. Connect a run-finished webhook to Slack, Discord, Zapier or Make from the Actor's Integrations tab. The Examples tab has ready-made tasks (three-market check, ask vs. sold, bulk keyword list).
Performance
Each row needs 2–5 API requests (200 sales at 100–120 per page). Measured locally on 2026-09-09: 3 rows in about 1 second, 12 rows in about 2 seconds, with three queries in flight.
How much does it cost?
Pay-per-event, no start fee:
| Event | What it is | Price |
|---|---|---|
Price summary (price-summary) | Each statistics row with n > 0 and a complete fetch | $0.02 |
Ten keywords across three marketplaces, sold prices only, cost $0.60. Adding asking prices doubles the rows. Rows with n = 0 or a partial fetch are free. Use maxSummaryRows to cap spend.
Integrations: API, MCP, and AI agents
This Actor is read-only: it reads publicly visible listing data, performs no login, bid, purchase or write action, and is safe for autonomous agents to call.
API (curl)
curl -X POST "https://api.apify.com/v2/acts/datalab-jp~japan-resale-price-check/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"keywords": ["ポケモンカード 151"], "sampleSize": 200}'
Python (apify-client)
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("datalab-jp/japan-resale-price-check").call(run_input={"keywords": ["ポケモンカード 151", "MG ガンダム"],"includeAsking": True,})rows = client.dataset(run["defaultDatasetId"]).list_items().items
JavaScript (apify-client)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('datalab-jp/japan-resale-price-check').call({ keywords: ['ポケモンカード 151'] });const { items } = await client.dataset(run.defaultDatasetId).listItems();
Use with AI agents (MCP)
Discoverable through the Apify MCP server (search-actors "Japan resale price", "Mercari sold prices") and eligible for agentic payments. Reading a row: quote medianJpy (and medianUsd) with n; if priceDispersionHigh is true, say the keyword is broad and suggest a tighter one or exclude words; if lowSample is true, say the figure is indicative; if fetchStatus is no_matches, relay the hint. To show the actual listings, call the Actor named in listingsActor.
Trust & maintenance
- Exercised by an automated weekly health check (real queries on all three marketplaces,
n > 0) in addition to Apify's daily Store test. - Marketplace endpoints change from time to time. Breakages reported on the Issues tab are answered within two business days, and fixes ship as new builds without changing the input contract.
- The Actor never returns a fabricated result: when a marketplace answers with an error or an unexpected body, the row says
blocked_suspectedorrequest_failedand is not charged.
Related Actors
- Mercari Japan Scraper – Listings & Item Details — the individual Mercari listings behind the
mercarirow - Yahoo Auctions Japan Scraper – Live, Sold & Flea Market — the individual Yahoo listings behind the
yahoo_auctionsandyahoo_fleamarketrows - Yahoo! Auctions Sold Scraper, Japan Flea Market Scraper, Suruga-ya, CardRush TCG, Melonbooks, Diskunion — the rest of our Japanese resale family
FAQ
Why are the three medians so different? They are different markets: Yahoo! Auctions prices are final bids on auctions, Mercari and Yahoo! Flea Market are fixed prices, and buyer demographics differ. That difference is the information — read the rows side by side rather than averaging them.
Why is Mercari's sample window months long while Yahoo's is a day?
Mercari's sold search is not ordered by sale time, so the 200 listings can span months; sampleOldestAt tells you. Yahoo returns newest-ended first. For a strictly recent Mercari price, use a narrower keyword so fewer, fresher listings match.
Can I get the listings behind a number?
Yes — run the Actor named in listingsActor with the same keyword and status: ["sold_out"]. This Actor deliberately returns only statistics.
Is a low median for "iPhone 15 Pro" right?
Probably not what you meant: on a broad keyword, cases and cables outnumber phones, and priceDispersionHigh will be true. Add priceMin or exclude words (ケース, フィルム) or include the storage size.
Is this legal? The Actor reads only publicly visible listing data through the JSON endpoints each marketplace's own web pages use, without logging in, at bounded request rates, and stores no per-listing data — only aggregates. You are responsible for using the results in accordance with applicable laws and each marketplace's terms.
Compliance & ethics
Read-only; publicly visible listing data only; no login, bid, purchase or write action; bounded request volume (100–120 listings per request, three queries in parallel, retries with back-off). Output is aggregate statistics; no seller or buyer identities are stored.