Japan Used Camera & Lens — Dealer Price vs Sold Price
Pricing
from $20.00 / 1,000 model sold comps
Japan Used Camera & Lens — Dealer Price vs Sold Price
Type a camera or lens model and get what it sold for at auction in Japan (sold comps) next to what dealer Fujiya Camera asks, by condition rank. Returns sold median on Yahoo! Auctions and Mercari, dealer median per condition, gap in %. $0.02 per model, no gap = no charge. Unofficial.
Pricing
from $20.00 / 1,000 model sold comps
Rating
0.0
(0)
Developer
h ichi
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Share
What it does: Prices one camera or lens model at dealer Fujiya Camera (by condition) and as sold on Yahoo! Auctions and Mercari, and returns the gap between the two.
You enter: models, e.g. Canon EOS R6; a minimum price (e.g. ¥80,000) keeps straps and caps out of the results
You get: sold median on Yahoo! Auctions and Mercari, dealer median overall and per condition (unused / A / AB+ / AB / AB- / B) with counts, dealer-vs-sold gap in yen and %, bid counts, roughly how fast items sell — yen and USD, from up to 60 sold listings per site.
Price: $0.02 per model — every model in a run is charged, however many sites. +$0.002 per listing if you also want the list. Charged only when a dealer price and a sold price both come back.
Example: enter Canon EOS R6 (minimum price ¥80,000) → sold median ¥192,181 from 34 priced auctions · dealer asks ¥238,150 · gap ¥45,969 (+23.9%) · AB-condition dealer price ¥236,500
Unofficial — not affiliated with Fujiya Camera, Yahoo! Auctions, Mercari or PayPay Flea Market. Reads public pages only.
Pricing — $0.02 per model
| Event | Price | When |
|---|---|---|
model-analyzed | $0.02 | Per model, whatever the number of sources |
listing-scraped | $0.002 | Only 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. You pay per model; there is no monthly fee and 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.)
A model none of the sites has ever listed is an answer, not a failure. Measured 2026-08-18: a made-up model name is answered normally by Fujiya, Yahoo! Auctions, Mercari and PayPay Flea Market — each with 0 listings. That record ships with totalListingsFound: 0 on every source, the run ends normally, and it costs $0.00. A failed run means the sites could not be read at all.
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-EnglishpriceBasisLabel; - every source block carries
sellerType(dealer/consumer/mixed) — this is what stopsspreadfrom quietly becoming "Fujiya vs some guy"; spreadonly ever pairs a dealer ask with a realized sale. A consumer ask is never promoted into it; those comparisons still ship, incomparison.pairs, taggedask_vs_sold/sold_vs_sold/ask_vs_ask;statsBasissays how each distribution was measured —exact(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 frompriceBasis, 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 number of listings in that rank and, by jumping to the page holding the median of a price-ascending sort, the exact median across every one of them (not a sample). 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
| Field | Example | Notes |
|---|---|---|
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 source of sold prices) / on_sale (consumer ask) / both (two separate blocks) |
priceMinJpy / priceMaxJpy | 80000 | Optional window on the auction / flea-market side. The de-junking tool — see below |
includeNewReference | false | Also price the dealer's new/outlet stock, for usedVsNewDiscountPct |
maxListingsPerSource | 60 | 30–300 listings sampled per source. Does not affect the dealer rank counts or rank medians |
includeIndividualListings | false | Enable to also get every sampled listing, +$0.002 each |
convertToUsd | true | Adds USD next to JPY (one FX lookup per run) |
Output example (type: "model_sold_comps", abridged)
Measured on 2026-08-07 (real run, Canon EOS R6 with a ¥80,000 price floor).
{"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.byRanktells 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 in —
sellThroughRatioSampled(Yahoo) andmedianDaysToSell(Mercari) are the liquidity,spreadis the money you leave on the table by trading in - Watching a model over time — schedule it and track
spreadPctper rank
Notes & limits — read these before trusting a number
- A model name also matches its accessories. Measured 2026-08-07:
Canon EOS R6with 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 computesspread.soldP25ToAskMedianRatioand raisesspread.mixWarning: truewhen it drops below 0.25. Fix it withpriceMinJpy— 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 Z6IIreturns 18 used hits of which 14 are Z6III bodies and 4 are Z6II, andkeyword=Z6IIreturns exactly the same set. No price statistic can reveal that, sosignals.modelMixSampledships 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 quotingspread priceMinJpy/priceMaxJpyare not applied to the dealer block, and the record says so inpriceFilterJpy.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.comparableisfalsewith anote, the sold medians are still returned, and the model is free totalListingsFoundis what each site reports and is never rewritten by the price window. Each site counts differently (Mercari caps its hit count)- Check
pricedListingsbefore 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
medianDaysToSellusesupdated - 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: falsewith anerrorand 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 narrowconditionRanks - 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 でした。従量課金です - 必ず読んでほしい注意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フリマは同一基盤のため逐次取得。個人情報は取得しません
If something goes wrong
- Wrong number or a failed run? Open a ticket on the Issues tab. I read every one and reply within 2 business days (Japan time).
- You never get a fake "empty" result. If the site can't be read, the run fails and says so.
- No results = no charge. You only pay for results you actually get.
- Checked every week. An automatic test runs this tool weekly; if the site changes, I fix it.
- Public pages only. No login, no personal data, and it goes easy on the site.
More tools by the same author
- Japan Figure & Gunpla — New Price vs Used Sold Price
- Used iPhone & Android Prices Japan — Dealer vs Sold
- Yahoo, Mercari & PayPay Japan — Same Item, 3 Prices
- Mercari & Yahoo Japan Demand — Sold vs Still Listed
- Pokemon Card Japan Sold Prices — Raw vs Graded per Card
- Mercari Japan Sold Prices — What Items Really Sell For
- Yahoo! Auctions Japan Sold Prices — Median, Range, Bids
- Mercari Japan Listings — One Row per Item, $0.0015 Each
All tools (Japan marketplaces, real estate, jobs, racing, prediction markets): https://apify.com/jpmarketdata
Disclaimer
Unofficial, independent tool — not affiliated with, endorsed by, or sponsored by Mercari, Yahoo! Auctions, PayPay Flea Market or Fujiya Camera. Product names and logos belong to their owners and only say where the data comes from. Data is read from public pages, for market research; check before you act on it.