Japan Resale Cross-Market Checker — Yahoo, Mercari, PayPay
Pricing
from $20.00 / 1,000 keyword analyzed across markets
Japan Resale Cross-Market Checker — Yahoo, Mercari, PayPay
One keyword, three Japanese resale markets, one call: Yahoo! Auctions sold prices, Mercari (sold out / on sale) and PayPay Flea Market. Returns median and quartiles per market plus the cross-market price gap, every number labelled sold or asking. From $0.02 — no subscription. 日本3市場の相場差を1コールで比較。
Pricing
from $20.00 / 1,000 keyword analyzed across markets
Rating
0.0
(0)
Developer
h ichi
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
What is this worth in Japan, and where is it cheapest? One call per keyword prices it on all three big Japanese resale marketplaces at once and returns the gap between them.
| Market | What you get | Basis |
|---|---|---|
| Yahoo! Auctions Japan (ヤフオク) | Closed auctions with at least one bid | sold |
| Mercari Japan (メルカリ) | Sold-out and/or on-sale listings | sold and/or asking |
| PayPay Flea Market (PayPayフリマ) | Live listings | asking |
Buying the same answer as three separate single-market scrapers costs $0.06 and leaves you to reconcile three schemas. Here it is one $0.02 record, with the markets already lined up next to each other.
Why the priceBasis labels matter more than the numbers
A closed Yahoo! auction is a realized sale price. A live PayPay listing is an asking price — what a seller hopes for, which nobody has agreed to yet. PayPay does not publish sold listings at all, so the asking price is the only thing that market can honestly supply.
Subtract those two medians without noticing and your "arbitrage margin" is fiction. So:
- every market block carries
priceBasis(sold/asking) and a plain-EnglishpriceBasisLabel - every entry of
comparison.pairsis taggedbasis:sold_vs_sold,sold_vs_askingorasking_vs_asking, plus a booleansameBasis - when Mercari is queried with both statuses it is returned as two separate blocks (
mercari_sold,mercari_on_sale) rather than one blended median — a single number may only ever have one basis comparison.mixedBasisandcomparison.notesay out loud when the headline spread crosses bases
sold_vs_sold (Yahoo ↔ Mercari sold out) is the pair you can act on. asking_vs_asking (Mercari on sale ↔ PayPay) tells you where to buy today. sold_vs_asking is context, not margin.
Pricing — from $0.02 per keyword, no subscription
| Event | Price | When |
|---|---|---|
| Keyword analyzed across markets | $0.02 | Per keyword, whatever the number of markets |
| Individual listing | $0.002 | Only if you enable Include individual listings |
A default run (1 keyword, 3 markets, summary only) costs $0.02 and takes about 10 seconds.
A keyword is only charged when at least two of the selected markets actually returned data (or the single one, if you selected only one). A "cross-market" record with one market in it is not a comparison, so it is free.
Input
| Field | Example | Notes |
|---|---|---|
keywords | ["nintendo switch"] | Japanese usually matches more listings than English. Each keyword costs $0.02 |
markets | ["yahoo_auction","mercari","paypay_flea"] | Multi-select, all three by default. The price per keyword does not change |
mercariStatus | "both" | both / sold_out (sold comps) / on_sale (asking) |
maxItemsPerMarket | 100 | 30–300 listings sampled per market (and per Mercari status) |
priceMinJpy / priceMaxJpy | 15000 | Optional price window, applied identically to all markets client-side |
includeIndividualItems | false | Enable to also get every sampled listing, +$0.002 each |
convertToUsd | true | Adds USD stats at the current rate (one FX lookup per run) |
Output example (type: "cross_market_summary", abridged, measured 2026-07-26)
{"type": "cross_market_summary","keyword": "nintendo switch","markets": {"yahoo_auction": {"market": "yahoo_auction","marketName": "Yahoo! Auctions Japan (closed auctions)","priceBasis": "sold","priceBasisLabel": "Sold — winning bid of an ended auction (bidCount >= 1)","available": true,"totalListingsFound": 229986,"sampledListings": 50,"pricedListings": 50,"priceJpy": {"min": 980, "p25": 3405, "median": 4540, "p75": 6520, "max": 62000, "average": 9026},"signals": {"soldListings": 50, "unsoldListings": 0, "sellThroughRatioSampled": 1.0,"bidCount": {"min": 1, "median": 1, "max": 1}},"sourceUrl": "https://auctions.yahoo.co.jp/closedsearch/closedsearch?p=nintendo+switch&n=50&b=1"},"mercari_sold": {"priceBasis": "sold", "priceJpy": {"median": 4775}, "signals": {"medianDaysToSell": 0}},"mercari_on_sale": {"priceBasis": "asking", "priceJpy": {"median": 3474}},"paypay_flea": {"priceBasis": "asking", "priceJpy": {"median": 14200},"signals": {"likeCount": {"median": 4}}}},"comparison": {"marketsCompared": ["yahoo_auction", "mercari_sold", "mercari_on_sale", "paypay_flea"],"medianJpy": {"yahoo_auction": 4540, "mercari_sold": 4775, "mercari_on_sale": 3474, "paypay_flea": 14200},"listingsFound": {"yahoo_auction": 229986, "mercari_sold": 15000, "mercari_on_sale": 15000, "paypay_flea": 149999},"comparable": true,"cheapestMarket": "mercari_on_sale", "priciestMarket": "paypay_flea","spreadJpy": 10726, "spreadPct": 308.8, "spreadBasis": "asking_vs_asking","mixedBasis": true,"pairs": [{"from": "yahoo_auction", "to": "mercari_sold", "basis": "sold_vs_sold", "sameBasis": true,"diffJpy": 235, "diffPct": 5.2, "cheaperMarket": "yahoo_auction"},{"from": "mercari_on_sale", "to": "paypay_flea", "basis": "asking_vs_asking", "sameBasis": true,"diffJpy": 10726, "diffPct": 308.8, "cheaperMarket": "mercari_on_sale"}],"note": "Bases are mixed. …"},"marketsWithData": ["mercari", "paypay_flea", "yahoo_auction"],"checkedAt": "2026-07-26T06:21:11+00:00"}
With includeIndividualItems: true you additionally get one record per listing, each tagged with market, marketEntry and priceBasis.
Use cases
- Cross-market sourcing — buy on the cheapest market, sell on the dearest; the
sold_vs_soldpair is the one with a realized price on both ends - Proxy buying & export — quote a Japanese client a defensible price band per marketplace in one request
- Repricing — schedule the Actor and watch the median per market move over time
- Deciding where to list —
listingsFoundis the supply you would compete with,signals.sellThroughRatioSampled(Yahoo) andsignals.medianDaysToSell(Mercari) are the liquidity - Market research — how big is the asking-vs-sold premium in Japan, per category
Notes & limits
- A broad keyword compares different products, not different markets. "nintendo switch" matched a console-heavy mix on PayPay and an accessory-heavy mix on Mercari, which is why the measured spread above is 308% — that number is real, but it is a product-mix artifact, not arbitrage. Narrow the keyword, or set
priceMinJpy/priceMaxJpy; with a ¥15,000 floor the four medians tighten to ¥16,990–¥31,000, which is the actual console band - Check
pricedListingsbefore trusting a median: a tight price window can leave a market with very few listings totalListingsFoundis what each site reports for the keyword and is never rewritten by the client-side price window; each site also counts differently (Mercari caps its hit count at 15,000)- PayPay Flea Market can never return sold prices — they are not server-rendered. Nothing in this Actor pretends otherwise
- Yahoo's sold filter is
bidCount >= 1; ended auctions that received no bid are sampled but excluded from the price statistics (signals.unsoldListings) - Mercari's
medianDaysToSellusesupdated - created, which also moves on price edits, so it skews low — read it as a liquidity signal, not an exact time-to-sale - A market that fails does not fail the run: it comes back as
available: falsewith anerror, and the remaining markets are still compared. Only a keyword where every market failed fails the run - Read-only, no login, no browser. Requests are throttled to one per 1.5 s, and Yahoo! Auctions and PayPay Flea Market are queried sequentially because they share one backend
- No personal data is collected — sellers are excluded from every record
日本語ガイド
キーワード1件につき、ヤフオク(落札)・メルカリ・PayPayフリマの3市場の相場を1レコードで比較する Actor です。
- 概要: 各市場の価格統計(最安・p25・中央値・p75・最高・平均)に加えて、市場間の価格差(
comparison)を返します。単体スクレイパー3本を買うと $0.06 かかり、スキーマの突き合わせも自分でやることになりますが、これは $0.02 の1レコードで揃った状態で返します。 - 価格の「基準」が最重要: ヤフオクの落札価格は実際に成約した価格(sold)、PayPayフリマは**出品価格(asking)**です(PayPay は売却済み商品を公開していないため asking しか取得できません)。この2つを無自覚に引き算すると、存在しない利ざやが出ます。そこで全ブロックに
priceBasis(sold/asking)、全ペアにbasis(sold_vs_sold/sold_vs_asking/asking_vs_asking)を必ず付けています。メルカリで「両方」を選んだ場合はmercari_soldとmercari_on_saleの2ブロックに分けて返します(1つの中央値が2つの基準を混ぜないため)。 - 使い方:
keywordsにキーワード(日本語の方がヒットしやすい)、marketsで市場を選択(既定は3市場)、mercariStatusでメルカリの売り切れ/販売中を選びます。priceMinJpy/priceMaxJpyは3市場に同一条件で適用されるので、付属品や大量セット出品を除いて比較したいときに使ってください。個別明細が必要なときだけincludeIndividualItemsを ON にします。 - 料金: キーワード1件 $0.02(市場を何個選んでも同額)、個別明細は $0.002/件(既定 OFF なので既定実行は $0.02 固定)。選択した市場のうち2市場以上(1市場だけ選んだ場合は1市場)からデータが返らなかったキーワードには課金されません — 1市場だけの結果は「横断比較」ではないためです。サブスクリプション不要です。
- 注意: 広いキーワードは「市場の違い」ではなく「商品構成の違い」を比較してしまいます(実測:
nintendo switchは PayPay が本体中心・メルカリが付属品中心になり、価格差 308% と出ました)。キーワードを絞るか価格帯を指定してください(¥15,000 以上に絞ると4つの中央値は ¥16,990〜¥31,000 に収束し、本体の実勢価格帯になります)。中央値を読む前にpricedListings(統計に使われた件数)を確認してください。 - その他: ヤフオクの sold 判定は入札1件以上、メルカリの
medianDaysToSellは出品〜更新の日数(値下げでも動くため短めに出ます)。1市場が失敗してもavailable: falseとして残り、他市場の比較は続行します(全市場×全キーワードが失敗したときだけ run を失敗させます)。ブラウザ不使用・ログイン不要・1.5秒に1リクエスト、ヤフオクと PayPayフリマは同一基盤のため逐次取得しています。個人情報は取得しません。