Japan Figure & Gunpla — New Price vs Used Sold Price avatar

Japan Figure & Gunpla — New Price vs Used Sold Price

Pricing

from $20.00 / 1,000 figure/kit valued across markets

Go to Apify Store
Japan Figure & Gunpla — New Price vs Used Sold Price

Japan Figure & Gunpla — New Price vs Used Sold Price

Type a figure or Gunpla kit name and get what it costs new in Japan and what it resells used. Returns HobbyLink Japan retail price, Mandarake used price, sold price on Yahoo! Auctions and Mercari, and the resale premium over retail before fees. $0.02 per keyword when two sites answer. Unofficial.

Pricing

from $20.00 / 1,000 figure/kit valued across markets

Rating

0.0

(0)

Developer

h ichi

h ichi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Share

What it does: Prices a figure or kit new (HobbyLink Japan), at a used shop (Mandarake) and as sold (Yahoo! Auctions, Mercari), and returns the resale premium over retail.

You enter: product names, e.g. RG Nu Gundam (best when it names one product); optionally sources, price range

You get: retail price and Japanese list price, Mandarake used price (in stock and sold out), sold median on Yahoo! Auctions and Mercari, resale premium over retail before fees, which resale site pays more — yen and USD, from up to 60 listings per site.

Price: $0.02 per keyword — every keyword in a run is charged, however many sites. +$0.002 per listing if you also want the list. Charged when at least two sites return data, including records where the shop no longer sells the item so no resale premium can be shown.

Example: enter RG Nu Gundam → retail ¥4,500 (HobbyLink Japan, best-matching product) · resold for ¥8,141 (Yahoo! Auctions + Mercari) · premium +80.9% before fees · Mandarake used ask ¥6,650

Unofficial — not affiliated with HobbyLink Japan, Mandarake, BOOKOFF, Yahoo! Auctions, Mercari or PayPay Flea Market. Reads public pages only.

Two tags on every number, because they are two different questions

  • priceBasiswho is selling: retail (a shop selling new) / shop_used (a second-hand chain reselling at its own fixed price) / c2c (a private seller).
  • priceKindwhat the number is: list / asking (nobody has agreed to it) / sold (somebody paid it).

They are kept orthogonal, never collapsed. Mandarake sells at fixed prices, so a sold-out Mandarake listing is a realized price while an in-stock one is an ask — the same product, two different quantities, so they come back as two blocks (mandarake_sold_out, mandarake_in_stock), never one blended median.

Entries are then grouped into pools keyed <priceBasis>_<priceKind>retail_list, c2c_sold, shop_used_asking, … — so each pool is homogeneous on both axes, and every premium is stamped with the pair it came from (basis: "c2c_sold_vs_retail_best_match"). A pool's median is the median of its sources' medians, not a median over pooled prices: sample sizes differ by an order of magnitude between sources, and pooling raw rows would silently weight the answer by whichever site returned the most.

The retail anchor (read this before comparing runs)

HLJ's catalogue mixes ¥500 decal sheets, ¥900 magazines and ¥4,000 art books in with the kits, and its search matches all of them. Measured on RG Nu Gundam: 273 hits, 24 sampled, catalogue median ¥500 — 20 of the 24 rows are decals — while rank 1 is the actual kit at ¥4,500.

So the anchor is an explicit input, never a silent threshold:

retailAnchorAnchorRG Nu Gundam premium
best_match (default)HLJ's top relevance-ranked priced hit — one product, one price, nothing averaged¥4,500 → +80.9 %
catalog_medianMedian of the whole HLJ sample. Right when the keyword names a category ("nendoroid")¥500 → +1528.2 %

Both are always reported in premium.byAnchor, so one run shows you what the other choice would have said. A top-N median was tried and rejected: it repairs RG Nu Gundam but breaks PG Unleashed RX-78-2, where three books outvote the kit (¥25,000 → ¥3,300).

Retail is also reported twice on purpose: retailMedianJpy is what HLJ charges today (an importer's real acquisition cost) and msrpMedianJpy is the Japanese list price 定価 before any HLJ discount — premium.vsMsrp divides by that one.

Pricing — $0.02 per keyword

EventPriceWhen
Keyword analyzed$0.02Per keyword, whatever the number of sources
Individual listing$0.002Only if you enable Include individual listings

A default run (1 keyword, 4 sources, summary only) costs $0.02 and took 6.3 s measured. All six sources, three keywords, summaries only: $0.06, 24.1 s.

You pay per keyword; there is no monthly fee and no minimum.

A keyword is only charged when at least two of the selected sources actually returned data (or the single one, if you selected only one). A "retail vs resale" record with one source in it is not a comparison, so it is free. The two Mandarake blocks are one source and cannot satisfy that on their own.

A record can be charged with no resale premium in it. When the shop no longer sells the item, premium.available is false and premium.reason says so — the item being out of print is part of the answer, and the record is charged as soon as two sources returned data.

A keyword no source has ever listed is an answer, not a failure. Measured 2026-08-18: a made-up product name is answered normally by HLJ, Mandarake, Yahoo! Auctions and Mercari — each with 0 listings. That record ships with totalListingsFound: 0 everywhere, the run ends normally, and it costs $0.00. A failed run means the sites could not be read at all.

Input

FieldExampleNotes
keywords["RG Nu Gundam"]The keyword is the join key across all sources — best when it names one product. Japanese matches more second-hand listings. $0.02 each
sources["hlj","mandarake","yahoo_auction","mercari"]Default four = one per channel plus the sold-price leg. bookoff and paypay_flea are opt-in depth. Price per keyword is unchanged
retailAnchor"best_match"best_match (a product keyword) or catalog_median (a category keyword). Both always reported
mercariStatus"sold_out"sold_out (realized, default) / on_sale (asking) / both (two blocks, one extra request)
maxItemsPerSource6020–240 listings sampled per source (and per Mercari status)
priceMinJpy / priceMaxJpy4000Optional window, applied identically to every source. Cuts parts, stickers and bulk lots
includeIndividualItemsfalseEnable to also get every sampled listing, +$0.002 each
convertToUsdtrueAdds USD stats at the current rate (one FX lookup per run)

Output example (type: "resale_value_summary", abridged)

Measured on 2026-08-07 (real run, RG Nu Gundam).

{
"type": "resale_value_summary",
"keyword": "RG Nu Gundam",
"premium": {
"retailAnchor": "best_match", "retailAnchorUsed": "best_match",
"retailMedianJpy": 4500, "msrpMedianJpy": 4500,
"retailBestMatch": {
"relevanceRank": 1, "id": "BANH578426-UP", "title": "RG NU Gundam",
"priceJpy": 4500, "listPriceJpy": 4500, "stockStatusCode": "instock",
"releaseDate": "October 2025",
"url": "https://www.hlj.com/1-144-scale-rg-nu-gundam-banh578426-up"
},
"resalePool": "c2c_sold", "resaleMedianJpy": 8141,
"resaleSources": ["yahoo_auction", "mercari_sold"],
"basis": "c2c_sold_vs_retail_best_match",
"premiumJpy": 3641, "premiumPct": 80.9, "ratio": 1.809, "aboveRetail": true,
"byPool": {
"shop_used_sold": {"medianJpy": 4500, "premiumPct": 0.0, "sources": ["mandarake_sold_out"]},
"shop_used_asking": {"medianJpy": 6650, "premiumPct": 47.8, "sources": ["mandarake_in_stock"]},
"c2c_sold": {"medianJpy": 8141, "premiumPct": 80.9, "sources": ["yahoo_auction", "mercari_sold"]}
},
"byAnchor": {
"best_match": {"retailJpy": 4500, "msrpJpy": 4500, "premiumPct": 80.9},
"catalog_median": {"retailJpy": 500, "msrpJpy": 500, "premiumPct": 1528.2}
},
"retailMedianUsd": 28.44, "resaleMedianUsd": 51.46, "premiumUsd": 23.01,
"note": "Premium is a realized resale median over a retail median… It is gross — Japanese marketplace fees (~10%), shipping and proxy/export costs are not deducted."
},
"identity": {
"joinKey": "keyword", "retailListingsFound": 273,
"retailPriceDispersionRatio": 8.25, "dispersionThreshold": 2.0,
"looksLikeOneProduct": false,
"note": "The retail hits span a wide price range… every resale median is keyword-wide."
},
"pools": {
"retail_list": {"priceBasis": "retail", "priceKind": "list", "medianJpy": 500, "aggregation": "single_source"},
"shop_used_sold": {"priceBasis": "shop_used", "priceKind": "sold", "medianJpy": 4500, "aggregation": "single_source"},
"shop_used_asking": {"priceBasis": "shop_used", "priceKind": "asking", "medianJpy": 6650, "aggregation": "single_source"},
"c2c_sold": {"priceBasis": "c2c", "priceKind": "sold", "medianJpy": 8141,
"sourceMediansJpy": {"yahoo_auction": 6580, "mercari_sold": 9702},
"aggregation": "median_of_source_medians"}
},
"resaleSpread": {
"available": true, "pool": "c2c_sold",
"cheapestSource": "yahoo_auction", "cheapestMedianJpy": 6580,
"priciestSource": "mercari_sold", "priciestMedianJpy": 9702,
"spreadJpy": 3122, "spreadPct": 47.4
},
"sources": {
"hlj_retail": {
"priceBasis": "retail", "priceKind": "list", "available": true,
"totalListingsFound": 273, "sampledListings": 24, "pricedListings": 24,
"priceJpy": {"min": 500, "p25": 500, "median": 500, "p75": 4125, "max": 60000, "average": 4596},
"statisticsBasis": "sample",
"signals": {"stockBreakdown": {"instock": 15, "backorder": 9},
"inStockRatioSampled": 0.625, "releaseYearTop": [[2025, 11], [2021, 8]]}
},
"mandarake_in_stock": {"priceKind": "asking", "totalListingsFound": 10, "priceJpy": {"median": 6650},
"statisticsBasis": "exact", "signals": {"shopTop": [["Kokura", 2]]}},
"mandarake_sold_out": {"priceKind": "sold", "totalListingsFound": 9, "priceJpy": {"median": 4500},
"signals": {"shopTop": [["Complex", 3], ["Grandchaos", 2]]}},
"yahoo_auction": {"priceKind": "sold", "totalListingsFound": 2, "priceJpy": {"median": 6580},
"signals": {"sellThroughRatioSampled": 1.0, "bidCount": {"median": 4}}},
"mercari_sold": {"priceKind": "sold", "totalListingsFound": 32, "priceJpy": {"median": 9702},
"signals": {"medianDaysToSell": 12}}
},
"channelsWithData": ["retail", "shop_used", "c2c"],
"checkedAt": "2026-08-07T06:56:00+00:00"
}

With includeIndividualItems: true you additionally get one record per listing (type: "listing"), each tagged with source, sourceEntry, priceBasis and priceKind.

Use cases

  • Flipping and proxy buyingpremium.premiumPct on the c2c_sold pool is the gross spread between buying new and selling used. resaleSpread says which marketplace pays more for the same item
  • Preorder decisions — a kit already trading above list price (aboveRetail: true) while HLJ still shows instock is a kit to buy now; signals.stockBreakdown and releaseYearTop say how long that window is
  • Export and reselling outside JapanretailMedianUsd is landed-cost input, resaleMedianUsd is the Japanese ceiling you are arbitraging against
  • Collection valuation — schedule the Actor over your want list and watch ratio move
  • Deciding where to listtotalListingsFound is the supply you would compete with, signals.sellThroughRatioSampled (Yahoo) and signals.medianDaysToSell (Mercari) are the liquidity

Notes & limits

  • The keyword is the join key — there is no name matching. identity.retailPriceDispersionRatio (retail p75/p25) and looksLikeOneProduct tell you whether that held. When it is false, best_match still pins the retail side to one product but every resale median is keyword-wide; narrow the keyword or set priceMinJpy / priceMaxJpy
  • The premium is gross. Japanese marketplace fees (~10 %), shipping, and proxy/export costs are not deducted
  • sold beats asking: the headline uses c2c_sold when it exists and falls back to c2c_asking with a different note — an asking-based premium is an upper bound, not a margin
  • Check pricedListings before trusting a median. A narrow keyword can leave a source with two or three listings; totalListingsFound is what each site reports and is never rewritten by the client-side price window
  • statisticsBasis says how each block's median and middle 50% range were produced: exact (the whole result set was read), population_quantiles (read out of BookOff's price-sorted result set, covering every hit rather than a sample), sample, or stratified_sample (a price window was applied on top of BookOff's spread sample)
  • BookOff is media-first. It carries art books, magazines, discs and games — measured, it returns 0 hits for most kit keywords and its Gundam hits are books. Useful for anime/hobby media, not for kits; it is off by default
  • PayPay Flea Market can never return sold prices — they are not server-rendered. Nothing here pretends otherwise
  • An out-of-print item may have no retail anchor at all. premium.available: false with a reason, rather than a division by a made-up number — and that absence is itself why a premium exists
  • A source that fails does not fail the run: it comes back as available: false with an error, and the remaining sources are still compared. Only a keyword where every source failed fails the run
  • Read-only, no login, no browser. Requests to one host 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回の実行で返します(HLJ の新品価格を基準に、まんだらけ/ブックオフの店頭中古とヤフオク落札/メルカリ/PayPay の個人間実売を比較。全数値に retail/shop_used/c2clist/asking/sold のタグ付き、キーワード1件 $0.02・既定 OFF の個別明細のみ $0.002/件)。

中文: 一次运行即可得到日本手办与高达模型的「相对定价的溢价」(以 HLJ 新品价为基准,对比万代书店/BookOff 的店铺二手与雅虎拍卖/煤炉/PayPay 的个人成交价,每个关键词 $0.02,按量计费)。

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.
  • Charged when at least two sites answer — including records where the shop no longer sells the item, so no resale premium can be worked out. The sold prices are still the result.
  • 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

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 BOOKOFF, Mandarake, Mercari, Yahoo! Auctions, PayPay Flea Market or HobbyLink Japan. 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.