Japan Used Watch Market — Search, Stats, History & Alerts
Pricing
from $2.40 / 1,000 listings
Japan Used Watch Market — Search, Stats, History & Alerts
Search, benchmark and monitor Japan's used watch shops (WATCHNIAN, Hard Off) in one schema: canonical brands, reference numbers, normalized grades, box & warranty card, JPY/USD. Median prices per model, daily price history, NEW / PRICE_DROP alerts to Slack, Discord, n8n.
Pricing
from $2.40 / 1,000 listings
Rating
0.0
(0)
Developer
Keiya
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 minutes ago
Last modified
Categories
Share
Japan Used Watch Market: Grand Seiko, Rolex & more — Search, Stats, History & Alerts
Quick start
- Click Try for free / open the Actor in Apify Console.
- Keep the prefilled input (
{"mode": "search", "sources": ["watchnian", "offmall"], "keywords": ["Seiko"], "maxItems": 10}) or type your own: a brand ("Grand Seiko"), a model ("Speedmaster") or a reference number ("SBGA211", "16233"). - Press Start. Listings appear in the Output tab in under a minute, with reference number, condition grade, box & warranty card, and price in JPY and USD.
Japan has the deepest second-hand watch market in the world, and some of its lowest prices: Grand Seiko, vintage Seiko, Rolex, Omega and Cartier, all graded, serviced and sold with a shop warranty. The listings are only in Japanese, and each shop has its own grading. This Actor turns them into one clean dataset you can pipe into Google Sheets, n8n, Slack, Discord or your own pricing model.
Who uses it
| You are… | You use… |
|---|---|
| A Chrono24 / eBay seller sourcing from Japan | search for a reference with "box + warranty card" and a grade floor; monitor to be first on new stock |
| A Grand Seiko or vintage Seiko collector | monitor on "Grand Seiko" / "King Seiko" / a ref, with alerts to Slack or Discord |
| An overseas dealer benchmarking Japanese prices | stats (median per reference, by shop and grade) and history (how the Tokyo median moves) |
Shops
| Shop | Id | Listings | What you get |
|---|---|---|---|
| WATCHNIAN (ウォッチニアン, formerly 一風騎士 / Ippuukishi) | watchnian | ~3,900 used watches | brand, ref (from the shop's own data), grade N / S / SA / A / AB / B / C / Q, men's/women's, price (after any reduction), box & warranty card (from the product page), image |
| Hard Off Off Mall (ハードオフ オフモール, stores nationwide) | offmall | ~24,000 wristwatches on sale | brand, ref (from the shop's model code), grade N / S / A / B / C / D / ジャンク, price, image. Off Mall has no accessories field |
Want a shop added? Open an issue on the Actor page. If it's publicly crawlable, it goes on the roadmap.
What you can do
| Mode | What it does |
|---|---|
| search | Listings matching keywords / brands / grades / price. Keywords match brand + title in English or Japanese, and reference numbers. For WATCHNIAN listings in the result, the product page is read once to add box / warranty card / warranty date. |
| stats | Per-model summary of in-stock listings: count, min / median / max in JPY and USD, broken down by shop and grade, plus the cheapest listing. Models are grouped by brand + reference number, so the same watch groups across shops. Use the median: watch prices spread widely. |
| monitor | Run on a schedule. It keeps a snapshot and emits only what changed: NEW, PRICE_DROP, PRICE_UP, SOLD_OUT, with box / warranty card on new WATCHNIAN listings. An optional webhook goes to Slack / Discord / n8n / Make / Zapier. |
| history | Daily min / median / count per model, by shop and grade, from stored daily snapshots. There is no crawling, so it returns in seconds. Needs keywords, brands or models. |
Brands, references and model keys
- Brands are canonical English names, whatever the shop prints: オメガ / OMEGA →
Omega, タグ・ホイヤー / TAG HEUER →TAG Heuer, チューダー(チュードル) →Tudor. - Sub-brands are separated:
- Grand Seiko (from the title, or a ref starting
SBG…) is never lumped in with Seiko. - Casio G-SHOCK (from the title, or refs like
GW-,GA-,DW-,GMW-,MTG-) is separate from Casio.
- Grand Seiko (from the title, or a ref starting
refis the reference number. It comes from the shop's structured data when there is one (WATCHNIAN "Ref.3510.50"), otherwise from the title or model code.modelis"brand ref"(e.g.omega 3510.50,rolex 126233g). Without a ref, it is the brand plus the cleaned title.
Condition grades, normalized
NEW > UNUSED > SA (like new) > A > AB > B > C > JUNK (not working / parts). ANTIQUE is an ungraded antique piece. The shop's own label is always kept in conditionGradeRaw.
| Shop | Raw → normalized |
|---|---|
| WATCHNIAN | N 新品 → NEW · S 未使用 → UNUSED · SA 新品同様 → SA · A → A · AB → AB · B → B · C (may need repair) → C · Q アンティーク → ANTIQUE |
| Off Mall | N 新品・未開封 → NEW · S 新品同様・廃盤 → SA · A 使用回数の少ない美品 → A · B 日常使用・傷汚少 → AB · C 使用感・傷汚れ多 → B · D ダメージ多 → C · ジャンク → JUNK |
Box & warranty card (accessories)
Overseas buyers ask about these first. For WATCHNIAN listings returned by search or alerted by monitor, the product page is read and its "付属品" line is normalized:
"accessories": {"box": true, "warrantyCard": true, "bodyOnly": false,"warrantyDate": "2019-12","summary": "box + warranty card","raw": "メーカー保証書( 2019年12月購入) / メーカー箱"}
summary is one of box + warranty card, warranty card, no box, box, no warranty card, watch only, other accessories only. Each returned WATCHNIAN listing costs one extra request. stats and history don't read product pages, so accessories is null there, and always null for Off Mall.
Input
{"mode": "search","sources": ["watchnian", "offmall"],"keywords": ["Grand Seiko"],"grades": ["UNUSED", "SA", "A"],"maxPriceJpy": 800000,"maxItems": 30}
Monitor example (schedule it hourly):
{"mode": "monitor","sources": ["watchnian"],"keywords": ["Grand Seiko", "King Seiko"],"alertWebhookUrl": "https://hooks.slack.com/services/XXX/YYY/ZZZ","alertEvents": ["NEW", "PRICE_DROP"]}
The first monitor run only builds the snapshot and emits nothing. Each monitor keeps one snapshot per shop, keyed by its filters. Give each schedule a distinct monitorId if several use the same filters.
Request budget:
- Every request is one listing page (WATCHNIAN 60 watches, Off Mall 30), read newest-first.
- An hourly light monitor is normally 2 requests, plus one product page per new WATCHNIAN listing.
"fullScan": truereads everything: WATCHNIAN ≈ 66 pages (~3 min), Off Mall ≈ 800 pages (~27 min). A good setup is a frequent light monitor plus a daily full scan of WATCHNIAN only.
Price history since 2026-11-05
The Actor's own scheduled full scans store the complete inventory of each shop: WATCHNIAN every day, Off Mall once a week, on Sundays (~800 pages). history mode reads those snapshots:
{ "mode": "history", "models": ["omega 3510.50", "grand seiko sbga211"], "days": 90 }
Each row is one model × day: count, minJpy, medianJpy, maxJpy, plus byShop, byGrade and byShopGrade.
- History is still being collected. Treat the first 30 days as indicative only.
- Off Mall numbers appear on Sunday rows only, so compare them week to week.
Output
{"source": "watchnian","sourceName": "WATCHNIAN (Ippuukishi)","sourceItemId": "ik-00-0743891","url": "https://watchnian.com/shop/g/gik-00-0743891/","title": "スピードマスター オートマティック 3510.50 ブラック","brand": "Omega","brandJa": "オメガ","ref": "3510.50","model": "omega 3510.50","gender": "men","conditionGrade": "A","conditionGradeRaw": "A","accessories": { "box": false, "warrantyCard": true, "bodyOnly": false, "warrantyDate": "2004-12", "summary": "warranty card, no box", "raw": "メーカー保証書( 2004年12月国内購入)" },"priceJpy": 550000,"priceUsd": 3474.6,"fxJpyPerUsd": 158.29,"inStock": true,"category": "used","scrapedAt": "2026-11-04T06:00:00.000Z"}
stats rows and monitor events have the same shape as in the camera Actor: stats adds count, minJpy, medianJpy, maxJpy, byShop, byGrade; events add eventType and the price change.
Pricing
Pay per event, no subscription:
| Event | Price |
|---|---|
listing (search mode, per listing) | $0.003 |
model-stats (stats mode, per model row) | $0.005 |
alert-event (monitor mode, per NEW / PRICE_DROP / PRICE_UP / SOLD_OUT) | $0.01 |
history-row (history mode, per model × day row) | $0.002 |
Higher Apify plans get progressively lower prices (Bronze / Silver / Gold discounts).
Integrations
- Google Sheets: Apify → Integrations → Google Sheets.
- Slack / Discord: paste an incoming-webhook URL into
alertWebhookUrl. - n8n / Make / Zapier: the Apify node, or point
alertWebhookUrlat a webhook trigger. - AI agents: see the next section.
AI agents (MCP)
A dedicated MCP server, @keiya-dev/japan-used-market-mcp (open source, MIT), gives Claude, Cursor and other MCP clients tools backed by this Actor. Pass "market": "watch" (the server also covers used cameras, its default):
| Tool | Mode |
|---|---|
search_listings | search, with reference number, gender and box / warranty card |
price_stats | stats |
price_history | history |
start_monitor | creates a scheduled monitor (Task + Schedule) in your Apify account |
list_markets | shops and grades per market (no run) |
Claude Desktop: add this to claude_desktop_config.json. On macOS it is ~/Library/Application Support/Claude/claude_desktop_config.json; on Windows, %APPDATA%\Claude\claude_desktop_config.json. Then restart the app:
{"mcpServers": {"japan-used-market": {"command": "npx","args": ["-y", "@keiya-dev/japan-used-market-mcp"],"env": { "APIFY_TOKEN": "apify_api_..." }}}}
Get the token at Apify Console → Settings → API & Integrations. Runs are billed to your Apify account, as with any other run.
Then just ask: "Find a Grand Seiko SBGA211 in SA or better with box and papers in Japan, with the USD price", "What's the median price of a Rolex 16233 in Japan, by shop?", "Alert me on Discord when a new King Seiko appears."
Claude Code: claude mcp add japan-used-market -e APIFY_TOKEN=apify_api_... -- npx -y @keiya-dev/japan-used-market-mcp
Remote / HTTP clients: run npx -y @keiya-dev/japan-used-market-mcp --http --port 3000. The endpoint is /mcp (Streamable HTTP); send your token as Authorization: Bearer <APIFY_TOKEN>.
The generic Apify MCP server also works: add the Actor keiya_dev/japan-used-watch-market as a tool.
Limitations & fair use
- Prices are the shops' tax-included asking prices (税込), not sold prices. USD is a mid-market conversion for convenience.
- Only public listing pages and, for WATCHNIAN, the product pages of returned or alerted listings are read. There is no login, no search endpoint and no sort parameter: both shops' robots.txt forbid those.
- Both shops list watches on sale only. A sold watch disappears, and
SOLD_OUTfor it is detected on full scans. - Serial numbers are never collected.
- If a shop's bot protection challenges a run, a page can't be loaded or a shop changes its layout, the run fails with a message saying what to do. It writes no partial data, charges nothing and leaves the monitor snapshot unchanged.
- Not affiliated with any of the shops.
Changelog
- 0.1: WATCHNIAN (all used watches) and Hard Off Off Mall (wristwatches). Search / stats / monitor / history, box & warranty card, brand + ref model keys.
- 2026-11-04: Off Mall refs drop the case / movement / serial suffix where the brand needs it (Grand Seiko "SBGX063-9F62-0ABO" → "SBGX063", TAG Heuer "CAR2A11-EAH0983" → "CAR2A11"), so they group with WATCHNIAN in stats and history. Other brands' refs are unchanged.
Related
- Japan Used Camera Market: the same four modes for used cameras and lenses (Fujiya Camera, Sanpou Camera, Naniwa, Hard Off). It uses the same grading idea and the same output shape.
If this saved you a trip to Ginza, a review on the Store helps others find it.