Japan Used Camera Sold Price vs Dealer Ask — Lens Resale Value avatar

Japan Used Camera Sold Price vs Dealer Ask — Lens Resale Value

Pricing

from $20.00 / 1,000 model sold comps

Go to Apify Store
Japan Used Camera Sold Price vs Dealer Ask — Lens Resale Value

Japan Used Camera Sold Price vs Dealer Ask — Lens Resale Value

Sold comps for any camera or lens model in Japan: what it actually sold for at auction next to the Japanese dealer ask per condition rank (未使用/A/AB+/AB/B), and the spread between them — the used-gear export and proxy-buying decision in one call. From $0.02. 中古カメラの業者ask×落札実売の差を1コールで。

Pricing

from $20.00 / 1,000 model sold comps

Rating

0.0

(0)

Developer

h ichi

h ichi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

Share

What did this camera actually sell for in Japan, what is a Japanese dealer asking for it, and how big is the gap? One call per model returns all three.

SideSourceWhat you getBasis
Dealer askFujiya Camera (フジヤカメラ, Nakano)Shelf price per condition rank (未使用 / A / AB+ / AB / AB- / B / 現状品 / コレクション), with the exact population count and median behind eachask · seller dealer
SoldYahoo! Auctions Japan (ヤフオク)Closed auctions with at least one bid = realized sale pricessold · seller mixed
SoldMercari Japan (メルカリ)Sold-out listings, as a second realized referencesold · seller consumer
Consumer askPayPay Flea Market (PayPayフリマ)Live listings (optional)ask · seller consumer

The headline field is spread: the dealer's median ask minus the realized sold median, overall and rank by rank. That is the used-camera export trade's buy decision expressed as one number.

No model-name matching is involved — a model number is already the search key on all four sites, so nothing is being guessed on your behalf.

Pricing — from $0.02 per model, no subscription

EventPriceWhen
model-analyzed$0.02Per model, whatever the number of sources
listing-scraped$0.002Only if you enable Include individual listings

A default run (1 model, 3 sources, summary only) costs $0.02 and took 29 seconds measured 2026-08-07. Apify's free plan includes $5/month of credit ≈ 250 default runs. No subscription, no minimum.

A model is only charged when the spread could actually be computed — i.e. when a dealer ask median and a realized sold median both came back. Measured 2026-08-07: Fujiya had zero used Nikon D850 bodies in stock, so that record shipped with three sold/ask medians in it and cost $0.00, because the thing you are buying is the gap, not the lookup. (If you deliberately select one side only — e.g. Fujiya alone for the rank ladder — the record is billed as soon as that side delivers.)

Why priceBasis and sellerType are on every block

A closed Yahoo! auction is a realized transaction. A dealer's shelf price is an aspiration nobody has agreed to yet. And a graded, inspected, shop-warrantied dealer ask is not the same quantity as a stranger's Mercari asking price either. Subtract the wrong pair and your "margin" is fiction. So:

  • every source block carries priceBasis (ask / sold) and a plain-English priceBasisLabel;
  • every source block carries sellerType (dealer / consumer / mixed) — this is what stops spread from quietly becoming "Fujiya vs some guy";
  • spread only ever pairs a dealer ask with a realized sale. A consumer ask is never promoted into it; those comparisons still ship, in comparison.pairs, tagged ask_vs_sold / sold_vs_sold / ask_vs_ask;
  • statsBasis says how each distribution was measuredexact (the whole filtered result set fit on one page), population_quantiles (read off the site's own price-sorted paging), sample (the first pages only). It is deliberately a different word from priceBasis, which is an economic label.

The rank ladder is the point

Japanese used-camera dealers grade every body and lens on a published ladder, and secondhand_state is a filter on the shop's search — so for every rank the Actor gets the exact population count and, by jumping to the page holding the median of a price-ascending sort, the exact population median. Not a first-page average.

spread.byRank then quotes each rank against the same realized sold median, which is what the trade actually acts on: an AB body at ¥236,500 against a ¥192,181 auction median is a different business from an AB+ at ¥370,150.

Input

FieldExampleNotes
models["Canon EOS R6"]Model name or number. Latin script works everywhere; Japanese also works. Each model costs $0.02
sources["fujiya","yahoo_auction","mercari"]The spread needs Fujiya plus one sold source. Price per model does not change
conditionRanks[]Empty = the whole ladder. Codes: 1000=未使用, 1001=A, 1002=AB+, 1003=AB, 1004=AB-, 1005=B, 1006=現状品, 1007=コレクション. Narrow it to speed up multi-model runs
mercariStatus"sold_out"sold_out (a second sold comp) / on_sale (consumer ask) / both (two separate blocks)
priceMinJpy / priceMaxJpy80000Optional window on the auction / flea-market side. The de-junking tool — see below
includeNewReferencefalseAlso price the dealer's new/outlet stock, for usedVsNewDiscountPct
maxListingsPerSource6030–300 listings sampled per source. Does not affect the dealer rank counts or rank medians
includeIndividualListingsfalseEnable to also get every sampled listing, +$0.002 each
convertToUsdtrueAdds USD next to JPY (one FX lookup per run)

Output example (type: "model_sold_comps", abridged — measured 2026-08-07)

{
"type": "model_sold_comps",
"model": "Canon EOS R6",
"spread": {
"comparable": true,
"basis": "dealer_ask_vs_sold",
"askSource": "fujiya_dealer_ask", "askSellerType": "dealer",
"askMedianJpy": 238150, "askListingsFound": 28,
"soldSource": "yahoo_auction_sold",
"soldMedianJpy": 192181, "soldListingsFound": 619, "soldPricedListings": 34,
"spreadJpy": 45969, "spreadPct": 23.9,
"soldP25ToAskMedianRatio": 0.606, "mixWarning": false,
"byRank": [
{"rank": "A", "dealerListings": 2, "askMedianJpy": 372900, "soldMedianJpy": 192181, "spreadJpy": 180719, "spreadPct": 94.0},
{"rank": "AB+", "dealerListings": 11, "askMedianJpy": 370150, "soldMedianJpy": 192181, "spreadJpy": 177969, "spreadPct": 92.6},
{"rank": "AB", "dealerListings": 12, "askMedianJpy": 236500, "soldMedianJpy": 192181, "spreadJpy": 44319, "spreadPct": 23.1},
{"rank": "AB-", "dealerListings": 3, "askMedianJpy": 231550, "soldMedianJpy": 192181, "spreadJpy": 39369, "spreadPct": 20.5}
],
"askMedianUsd": 1505.35, "soldMedianUsd": 1214.78, "spreadUsd": 290.57,
"note": "spreadJpy = dealer ask median - realized sold median. … It is not profit."
},
"sources": {
"fujiya_dealer_ask": {
"priceBasis": "ask", "sellerType": "dealer", "statsBasis": "exact",
"totalListingsFound": 28, "sampledListings": 28, "pricedListings": 28,
"priceJpy": {"min": 168850, "p25": 236500, "median": 238150, "p75": 370150, "max": 372900, "average": 286354},
"signals": {
"rankStats": [{"rank": "AB", "rankLabel": "AB", "count": 12, "medianJpy": 236500, "medianBasis": "exact"}, "…"],
"rankPremium": {"baseRank": "AB-", "baseMedianJpy": 231550, "premiumPct": {"A": 61.0, "AB+": 59.9, "AB": 2.1}},
"modelMixSampled": [["EOS R6 Mark II ボディー", 16], ["EOS R6 Mark III ボディー", 11], ["EOS R6 ボディー", 1]],
"distinctModelsSampled": 3,
"brandTop": [["Canon", 28]]
}
},
"yahoo_auction_sold": {
"priceBasis": "sold", "sellerType": "mixed", "statsBasis": "sample",
"totalListingsFound": 619, "pricedListings": 34, "priceFilterApplied": true,
"priceJpy": {"min": 128000, "p25": 144325, "median": 192181, "p75": 227328, "max": 425000, "average": 201663},
"signals": {"soldListings": 34, "unsoldListings": 0, "sellThroughRatioSampled": 1.0,
"bidCount": {"min": 1, "median": 3, "max": 104}}
},
"mercari_sold": {
"priceBasis": "sold", "sellerType": "consumer", "totalListingsFound": 1650,
"priceJpy": {"median": 206000}, "signals": {"medianDaysToSell": 6}
}
},
"comparison": {
"medianJpy": {"fujiya_dealer_ask": 238150, "yahoo_auction_sold": 192181, "mercari_sold": 206000},
"comparable": true, "mixedBasis": true,
"pairs": [
{"from": "yahoo_auction_sold", "to": "fujiya_dealer_ask", "basis": "ask_vs_sold", "sameBasis": false,
"sellerTypes": {"yahoo_auction_sold": "mixed", "fujiya_dealer_ask": "dealer"}, "diffJpy": 45969, "diffPct": 23.9},
{"from": "yahoo_auction_sold", "to": "mercari_sold", "basis": "sold_vs_sold", "sameBasis": true,
"diffJpy": 13819, "diffPct": 7.2}
]
},
"priceFilterJpy": {"min": 80000, "max": null,
"appliedTo": ["yahoo_auction_sold", "mercari_sold"],
"notAppliedTo": ["fujiya_dealer_ask"]},
"sourcesWithData": ["fujiya", "mercari", "yahoo_auction"],
"exchangeRateJpyUsd": 0.006321,
"checkedAt": "2026-08-07T07:03:45+00:00"
}

With includeIndividualListings: true you additionally get one record per listing, each tagged with source, priceBasis, sellerType and — on the dealer side — conditionRank.

Use cases

  • Sourcing for export — buy at auction, sell at the dealer band. spread.byRank tells you which grade the gap actually lives in
  • Pricing your own used stock — quote against the same rank ladder Japanese dealers publish
  • Insurance / estate valuation — a realized sold median plus a dealer ask, with the sample sizes attached
  • Deciding whether to sell or trade insellThroughRatioSampled (Yahoo) and medianDaysToSell (Mercari) are the liquidity, spread is the money you leave on the table by trading in
  • Watching a model over time — schedule it and track spreadPct per rank

Notes & limits — read these before trusting a number

  • A model name also matches its accessories. Measured 2026-08-07: Canon EOS R6 with no price floor returned a Yahoo sold p25 of ¥2,300 (straps, caps, batteries) against a ¥238,150 dealer ask, and a "71.9%" spread that was pure product mix. The Actor computes spread.soldP25ToAskMedianRatio and raises spread.mixWarning: true when it drops below 0.25. Fix it with priceMinJpy — the same model with a ¥80,000 floor gives the honest 23.9% above
  • The dealer's search is looser than a model number. Measured 2026-08-07: keyword=Nikon Z6II returns 18 used hits of which 14 are Z6III bodies and 4 are Z6II, and keyword=Z6II returns exactly the same set. No price statistic can reveal that, so signals.modelMixSampled ships the title histogram behind the ask median (in the example above: 16 Mark II, 11 Mark III, 1 original R6 — which is why the A / AB+ ranks sit near ¥370,000 and AB / AB- near ¥235,000). Always read it before quoting spread
  • priceMinJpy / priceMaxJpy are not applied to the dealer block, and the record says so in priceFilterJpy.notAppliedTo. Those counts and rank medians are read off the shop's own filters and were never enumerated here — a client-side window cannot honestly claim to have touched them
  • The dealer may simply not stock the model. Then spread.comparable is false with a note, the sold medians are still returned, and the model is free
  • totalListingsFound is what each site reports and is never rewritten by the price window. Each site counts differently (Mercari caps its hit count)
  • Check pricedListings before trusting a median: a tight window can leave a source with very few listings
  • Yahoo's sold filter is bidCount >= 1; ended auctions with no bid are sampled but excluded from the price statistics (signals.unsoldListings)
  • Mercari's medianDaysToSell uses updated - created, which also moves on price edits, so it skews low — a liquidity signal, not an exact time-to-sale
  • PayPay Flea Market can never return sold prices — they are not server-rendered. Nothing here pretends otherwise
  • A source that fails does not fail the run: it comes back as available: false with an error and the rest are still compared. Only a model where every source failed fails the run
  • Large multi-model runs may hit the internal time budget; affected blocks carry truncatedForTimeLimit. Run fewer models per call, or narrow conditionRanks
  • Read-only, no login, no browser, HTTP+JSON only, 256 MB. 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件につき、「日本の業者が今いくらで売っているか(状態ランク別)」と「実際にいくらで落札されたか」、そしてその差(スプレッド)を1レコードで返す Actor です。

  • 中核は spread: フジヤカメラの中古 ask 中央値 − ヤフオク落札(入札1件以上)の sold 中央値。状態ランク別(byRank)にも出します。実測(2026-08-07)では Canon EOS R6 が ask ¥238,150 / sold ¥192,181 = +23.9%、ランク別では AB +23.1% / AB+ +92.6% でした
  • 基準タグは2種類: priceBasis(ask / sold)に加えて sellerType(dealer / consumer / mixed)。保証・検品付きの業者 ask と、メルカリの個人出品 ask は別物なので、spread は「業者 ask × 実売 sold」の組み合わせしか作りません(個人 ask は comparison.pairs に basis タグ付きで残します)
  • ランク別の件数と中央値は正確値です: フジヤの secondhand_state は絞り込みフィルタなので、各ランクの母集団件数と(価格昇順ページの中央位置を直接取ることで)母集団中央値が取れます。1ページ目の平均ではありません
  • 料金: 型番1件 $0.02(model-analyzed)、個別明細は $0.002/件(listing-scraped、既定 OFF)。スプレッドが計算できなかった型番は課金されません — 実測で Nikon D850 はフジヤに中古在庫ゼロだったため $0.00 でした。無料プランの月$5クレジットで既定実行 約250回。サブスク不要
  • 必ず読んでほしい注意2点: ①型番はアクセサリにも一致します(EOS R6 は無フィルタだとヤフオク側 p25 が ¥2,300 = ストラップ等になり、スプレッドが 71.9% と嘘になります)。spread.mixWarning が立つので priceMinJpy で下限を切ってください。②業者側の検索は型番より緩い(実測: Nikon Z6II の18件中14件が Z6III)。signals.modelMixSampled に商品名の内訳を必ず出しているので、ask 中央値を引用する前に見てください
  • その他: priceMinJpy / priceMaxJpy は業者ブロックには適用しません(母集団の正確値を客観的に壊さないため。適用範囲は priceFilterJpy に明記)。1ソースが落ちても available: false として残り、他ソースの比較は続行します。ブラウザ不使用・ログイン不要・1.5秒に1リクエスト、ヤフオクと PayPayフリマは同一基盤のため逐次取得。個人情報は取得しません