BookOff Japan Used Media — Price & Stock Stats in One Call
Pricing
from $20.00 / 1,000 keyword market analyzeds
BookOff Japan Used Media — Price & Stock Stats in One Call
Used-price stats for any keyword on BookOff's official Japanese online store, in one call: population quartiles (min/Q1/median/Q3/max) of the whole result set — not a first-page sample — plus stock split, out-of-stock share and discount vs list price. From $0.02, no subscription. ブックオフの中古相場を1コールで。
Pricing
from $20.00 / 1,000 keyword market analyzeds
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 does a used copy of this actually sell for in Japan? One call per keyword answers it with the quartiles of the entire result set — not the first page, not an average of whatever the site felt like showing first.
This Actor reads BookOff's official online store (ブックオフ公式オンラインストア — Japan's largest secondhand chain for books, manga, CDs, DVDs and games, 800+ physical stores behind one catalog) and returns one compact market record per keyword:
usedPriceJpy— min / Q1 / median / Q3 / max of the whole population. For a 4,893-hit keyword that is the real 25th/50th/75th percentile of all 4,893 listings, obtained in 5 requests, not an estimate from 120 samplesoutOfStockRatioSampled— BookOff keeps sold-out products listed with their last price, so the sold-out share is a turnover signal and the sold-out prices are the closest public thing to sold comps for Japanese used mediastockBreakdown— in stock / low / last one / out of stockdiscountVsListPricePct— how far below the Japanese list price (定価) the used copies sitnewPriceJpy,genreTop, plus USD conversion at the current rate- Optionally every sampled listing (title, price, condition, stock, list price, discount, release date, store-pickup flag, URL)
Existing BookOff scrapers on the Store return raw listing dumps: you pay per record, then compute the statistics yourself. This one returns the statistics, at a flat price per keyword, in ~8 seconds.
No login, no API key, nothing stored between runs.
Pricing — from $0.02 per keyword, no subscription
| Event | Price | When |
|---|---|---|
| Keyword market summary | $0.02 | Per keyword analyzed |
| Individual listing | $0.002 | Only if you enable Include individual listings |
A default run (1 keyword, summary only) costs $0.02 and takes about 8 seconds. A keyword that returns zero listings is never charged.
Input
| Field | Example | Notes |
|---|---|---|
keywords | ["ガンダム"] | Japanese works best — the catalog is Japanese-only. Each keyword costs $0.02 |
genreCode | "11" | Optional: 12 Books / 11 Comics / 13 Magazines / 31 CD / 71 DVD & Blu-ray / 51 Games. Empty = all genres |
maxItemsPerKeyword | 120 | Listings inspected for the stock / discount / genre mix (30–360, 120 per page). Does not affect the quartiles; below 120 it only caps how many individual listings are returned |
includeIndividualItems | false | Enable to also get each sampled listing as a record |
convertToUsd | true | Adds USD stats at the current exchange rate |
Exact vs population quantiles vs sample — always labelled
Every record carries usedPriceJpyBasis, so you never have to guess how a number was produced:
usedPriceJpyBasis | What it means | How it is obtained | When you get it |
|---|---|---|---|
exact | True statistics over every matching listing | The whole result set fits on one page (≤120 hits), so all of it is read — 1 request | Narrow keywords |
population_quantiles | min / Q1 / median / Q3 / max are real population quantiles, count = the full hit count | Listings are sorted by used price ascending and the Actor jumps straight to the page holding the rank of each quantile (e.g. hits 1,224 / 2,447 / 3,670 of 4,893 = pages 11 / 21 / 31), plus one descending page for the maximum — 5 requests | Most keywords |
sample | Ordinary sample statistics over the listings that were inspected, count = sample size | Fallback. Used when the price order turns out not to be monotonic across pages, or when a multi-keyword run hits its time budget (then truncatedForTimeLimit: true is also set) | Rare |
The fallback is the point: if the store ever changes its sort behaviour, the Actor stops claiming population quantiles instead of quietly returning wrong percentiles.
newPriceJpy, stockBreakdown, outOfStockRatioSampled, discountVsListPricePct and genreTop are always sample-based (sampledListings tells you the size). With the default maxItemsPerKeyword: 120 the sample is the 120 cheapest listings, so read the stock split as "the low-price end of this market"; raise it to 240/360 and the sample is automatically spread across the price range using the quantile pages that are fetched anyway — no extra requests, no extra time.
Output example (type: "market_summary", values measured for ガンダム)
{"type": "market_summary","keyword": "ガンダム","genre": null,"genreName": null,"totalListingsFound": 4893,"sampledListings": 120,"usedPriceJpy": {"min": 99, "q1": 330, "median": 550, "q3": 1375, "max": 77000, "count": 4893},"usedPriceJpyBasis": "population_quantiles","newPriceJpy": {"min": 528, "q1": 660, "median": 990, "q3": 1650, "max": 6600, "count": 14},"stockBreakdown": {"inStock": 12, "lowStock": 6, "lastOne": 4, "outOfStock": 98},"outOfStockRatioSampled": 0.8167,"discountVsListPricePct": {"median": 78},"genreTop": [["コミック", 61], ["書籍", 34], ["DVD・ブルーレイ", 12]],"usedPriceUsd": {"min": 0.63, "q1": 2.11, "median": 3.52, "q3": 8.8, "max": 492.8},"exchangeRateJpyUsd": 0.0064,"checkedAt": "2026-07-25T09:00:00+00:00","sourceUrl": "https://shopping.bookoff.co.jp/search/keyword/%E3%82%AC%E3%83%B3%E3%83%80%E3%83%A0?per-page=120&sort=50&p=1"}
With includeIndividualItems: true you additionally get one record per listing:
{"type": "item","keyword": "ガンダム","id": "0016400324","title": "閉ざされた世界 THE BACK HORN,THE BACK HORN","priceJpy": 99,"condition": "used","stockStatus": "last_one","listPriceJpy": 1257,"discountPct": 92,"releaseDate": "2010/08/04","storePickup": true,"url": "https://shopping.bookoff.co.jp/used/0016400324"}
Use cases
- Import & resale sourcing — check the Japanese used price band for a title before buying through a proxy service, and compare it against eBay/Mercari sold prices
- Pricing your own inventory — the median and Q3 of the whole result set are what the Japanese market actually charges, not what the loudest listing asks
- Turnover screening — a high
outOfStockRatioSampledwith a thin in-stock count means the title moves; a low one means it sits on shelves - Catalog / rights research — how deep is the secondhand supply of a series, a label or an artist, and at what discount to list price
- Repricing & monitoring — schedule the Actor and track the median per keyword over time
Notes & limits
- Trading cards, figures and hobby goods are out of scope. BookOff's official online store has no TCG / hobby genre — only books, comics, magazines, CDs, DVDs & Blu-ray and games. Use a Mandarake or Suruga-ya source for cards and figures
- Keywords are matched against a Japanese catalog; English keywords mostly do not match. Use 日本語 (ガンダム, 鬼滅の刃, 米津玄師)
- BookOff is a fixed-price retailer, not a marketplace: prices are asks, and a sold-out product's price is the last price it was offered at — a good pseudo sold comp, but it is a product-master price, not a record of individual transactions, and it carries no sale date (so no time series)
- The store's default order is 人気順 (popularity), which is best-seller/ad weighted. This Actor always sends an explicit sort so the statistics are not skewed
totalListingsFoundcounts every matching listing, in stock or not- "In stock only" / "used only" filters exist in the site's UI but their query parameters are not publicly stable, so v1 reports the stock split from the sample instead of filtering server-side
- Read-only and throttled (1 request / 1.5 s), 5 requests per keyword. Multi-keyword runs have a 95-second soft budget: keywords beyond it still return a summary, marked
truncatedForTimeLimitwithusedPriceJpyBasis: "sample" - No personal data is collected — BookOff is a first-party retailer, there are no sellers
日本語ガイド
ブックオフ公式オンラインストアの中古相場を、キーワード1件につき1レコードで返す Actor です。
- 概要: キーワードごとに 中古価格の分位点(最安・Q1・中央値・Q3・最高値) を返します。特徴は、先頭ページのサンプル統計ではなく 検索結果の母集団そのものの分位点 を返せること — 中古価格の安い順に並べ替え、各分位点の順位が載っているページへ直接ジャンプして読み取ります(例: 全4,893件なら 11 / 21 / 31 ページ目、計5リクエスト)。あわせて在庫内訳(在庫あり/残りわずか/残り1点/在庫なし)、在庫なし比率(ブックオフは売り切れ商品も価格付きで残るため、回転率と「実売価格に近い値」の指標になります)、定価に対する割引率の中央値、新品価格、ジャンル内訳、USD換算を返します。
- 使い方:
keywordsに日本語のキーワードを入れてください(カタログが日本語のため)。genreCodeでジャンルを絞れます(12=書籍 / 11=コミック / 13=雑誌 / 31=CD / 71=DVD・ブルーレイ / 51=ゲーム)。個別商品の明細が必要なときだけincludeIndividualItemsを ON にします。 - 料金: キーワードサマリー1件 $0.02、個別商品レコードは $0.002/件(既定 OFF なので既定実行は $0.02 固定)。0件のキーワードには課金されません。 サブスクリプション不要です。
- 数値の根拠は必ず明示:
usedPriceJpyBasisがexact(全件が1ページに収まり全数集計)/population_quantiles(母集団分位点)/sample(サンプル統計)のどれかを示します。ページ間で価格順が単調でない場合や、複数キーワードで時間予算(95秒)を超えた場合は母集団分位点を名乗らずsampleに落ちます(誤った数値を黙って出さないため)。在庫内訳・割引率・ジャンル内訳・新品価格は常にサンプル基準です。 - 対象外: トレカ・ホビー・フィギュア系のジャンルは公式オンラインストアに存在しないため対象外です(書籍・コミック・雑誌・CD・DVD・ゲームのみ)。トレカやフィギュアの相場はまんだらけ等のソースをご利用ください。
- その他: ブックオフは定価販売の中古小売であり、価格は「出品価格」です。売り切れ商品の価格は「最後に提示されていた価格」であって個々の成約記録ではなく、販売日時も取得できません(時系列分析は不可)。既定の並び順(人気順)は広告・売れ筋バイアスがあるため、本 Actor は常にソートを明示して取得します。