# Daikokuya Japan Buyback — What a Shop Actually Paid (`jpmarketdata/daikokuya-japan-brand-buyback-checker`) Actor

Type a reference like 126610LN and see what Daikokuya in Japan actually paid for it, from six years of dated buyback records. You get the typical amount and range in yen, how many it bought, the year-by-year trend, and the price it offers today. $0.02 per model, no results = no charge. Unofficial.

- **URL**: https://apify.com/jpmarketdata/daikokuya-japan-brand-buyback-checker.md
- **Developed by:** [h ichi](https://apify.com/jpmarketdata) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 model analyzeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Daikokuya Japan Buyback — What a Shop Actually Paid

> **Unofficial** — independent tool, **not affiliated with, endorsed by, or sponsored by Daikokuya**. It reads only publicly visible pages. Support, reliability guarantees and the full disclaimer are at the bottom of this page.

**What it does:** Type a reference like `126610LN` and get what Daikokuya in Japan actually paid for that model, from its own archive of dated buyback records.

**You enter:** A reference number as the shop prints it, or a brand name in Japanese. Example: `126610LN`.

**You get:** One row — how many the shop bought, the typical amount and lowest–highest paid in yen, the median for every year on record, the first and last day it bought one, the amount it advertises for that reference today by condition, how much of that brand's price page is actually published, and the gap between the two.

**Price:** $0.02 per model. No results = no charge. +$0.002 per row if you also want the individual records and the brand's price page lines (off by default).

**Example:** enter `126610LN` → 256 purchases between 2020-09-20 and 2026-08-28 · typical ¥1,955,000 · range ¥1,350,000–2,483,000 · year medians ¥1,375,000 (2020) rising to ¥2,110,000 (2026) · advertised ¥2,250,000 unused today · so it paid 93.8% of its own headline (real run, 2026-09-10)

> Unofficial — not affiliated with Daikokuya. Reads public pages only.

### Why the buy side is the point

Every other price on the Japanese second-hand luxury market is an **ask** — what a seller wants. Chrono24, eBay, KOMEHYO, Mercari, the auction sites: all of them publish the sell side. A buyback shop publishes the **bid**, and Daikokuya publishes it twice over:

| | What it is | Where it comes from |
|---|---|---|
| **Paid** | Individual purchases, each with the day and the yen | The shop's buyback record archive |
| **Advertised** | The amount it offers per reference right now, by condition | The brand's own buyback price page |

The two together give you the thing neither one gives you alone: **the gap between the headline and the cheque.** On 2026-09-10 the Rolex page advertised ¥2,250,000 for an unused 126610LN, and the shop's own 2026 records put the median it paid at ¥2,110,000 — 93.8% of the headline. That is `offerVsPaid.paidShareOfOffer`.

The dated records also carry six years of history, so `byYear` is a market trend rather than a snapshot: for 126610LN the median rose from ¥1,375,000 in 2020 to ¥2,110,000 in 2026, +53%, and the count per year (2 → 41) doubles as a liquidity signal — how many of that model actually walk into this shop.

### Some brands publish no price at all — and you are told so

The advertised price page is not evenly filled in. A row can say 「お問い合わせ」, "ask us", instead of an amount. Measured 2026-09-10:

| Brand page | Rows | Rows with every amount published | `coverageRate` |
|---|---|---|---|
| Louis Vuitton | 42 | 42 | 1.0 |
| Chanel | 74 | 74 | 1.0 |
| Rolex | 32 | 26 | 0.8125 |
| **Omega** | 45 | **0** | **0.0** |
| **Patek Philippe** | 39 | **0** | **0.0** |

On the two 0% brands every single row declines to publish an unused price. **`offerNow` comes back empty for those, never as a zero and never borrowed from a neighbouring model.** `coverageRate` and `offerTable.columns` are what tell you the difference between "this shop pays nothing for it" and "this shop does not publish that number" — the second is true, the first would be a lie. Omega's used column is separately published on 44 of 45 rows, and `offerTable.columns` says that too.

None of this touches the dated records. Those carried an amount on 256 of 256 rows for `126610LN` and 401 of 401 for `エルメス バーキン`.

### Output

One row per run, plus one row per record and per price-page line when the individual rows are on.

`Measured on 2026-09-10 (real run, model "126610LN")`

```json
{
  "type": "buyback_summary",
  "model": "126610LN",
  "brand": "ロレックス",
  "brandSlug": "rolex",
  "category": "all",
  "status": "ok",
  "recordsFound": 256,
  "recordsRead": 256,
  "recordsComplete": true,
  "paidJpy": {
    "min": 1350000, "p25": 1840000, "median": 1955000,
    "p75": 2070000, "max": 2483000, "average": 1954687
  },
  "byYear": [
    {"year": 2020, "records": 2,  "median": 1375000},
    {"year": 2021, "records": 4,  "median": 1355000},
    {"year": 2022, "records": 5,  "median": 1750000},
    {"year": 2023, "records": 51, "median": 1870000},
    {"year": 2024, "records": 72, "median": 1905000},
    {"year": 2025, "records": 81, "median": 2000000},
    {"year": 2026, "records": 41, "median": 2110000}
  ],
  "dateRange": {"from": "2020-09-20", "to": "2026-08-28"},
  "offerNow": {"new": null, "unused": 2250000, "used": 2050000, "quoted": null},
  "offerBasis": "advertised-mail-in",
  "offerVsPaid": {
    "condition": "unused",
    "offerJpy": 2250000,
    "paidMedianJpy": 2110000,
    "year": 2026,
    "paidShareOfOffer": 0.9378
  },
  "buybackRateOfList": null,
  "coverageRate": 0.8125,
  "offerTable": {
    "brandSlug": "rolex",
    "url": "https://kaitori.e-daikoku.com/brand/brand/rolex.html",
    "updatedAt": "2026-09-09",
    "rowCount": 32,
    "quotedRows": 26,
    "modelMatched": true,
    "columns": [
      {"condition": "unused", "rows": 32, "priced": 26, "coverageRate": 0.8125},
      {"condition": "used",   "rows": 32, "priced": 32, "coverageRate": 1.0}
    ]
  },
  "hint": null,
  "sourceUrls": [
    "https://kaitori.e-daikoku.com/ex/archives/?category_key=none&freeword=126610LN&per_page=200",
    "https://kaitori.e-daikoku.com/brand/brand/rolex.html"
  ],
  "requestsUsed": 2,
  "disclaimer": "Unofficial - not affiliated with Daikokuya. ...",
  "fetchedAt": "2026-09-10T04:56:17.746524+00:00"
}
```

One dated purchase, returned only when **Also list the individual records** is on, at $0.002 each:

`Measured on 2026-09-10 (real run, model "126610LN")`

```json
{
  "type": "buyback_record",
  "model": "126610LN",
  "boughtOn": "2026-08-28",
  "brand": "ロレックス",
  "modelName": "サブマリーナ デイト 126610LN",
  "modelRef": "126610LN",
  "paidJpy": 2050000,
  "disclaimer": "Unofficial - not affiliated with Daikokuya. ..."
}
```

One line of the brand's advertised price page, same toggle, same $0.002:

`Measured on 2026-09-10 (real run, brand page "vuitton")`

```json
{
  "type": "offer_row",
  "model": "M41894",
  "brandSlug": "vuitton",
  "modelRef": "M41894",
  "offerNew": 103230,
  "offerUnused": null,
  "offerUsed": null,
  "offerQuoted": null,
  "askedConditions": [],
  "listPriceJpy": 111000,
  "rateOfList": 0.93,
  "offerBasis": "advertised-mail-in",
  "disclaimer": "Unofficial - not affiliated with Daikokuya. ..."
}
```

### What the numbers are measured over

- **`paidJpy` is money that changed hands**, not an asking price and not an estimate: each record is one item this shop bought, on the day shown. There were no missing amounts on any search measured 2026-09-10.
- **`recordsComplete`** says `true` when the whole archive for that word was read in one call and `false` when there is more behind it. A reference number normally finishes (126610LN: 256 records, complete). A bare brand name does not — `ロレックス` passed 600 records in the most recent 3.3 months alone — so its figures are a recent sample, and the row says so.
- **`byYear`** buckets by the day of purchase. A record whose date cannot be read is left out of the year table and out of `dateRange` rather than landing in the newest year.
- **`offerNow` is advertised, not agreed.** `offerBasis` is `advertised-mail-in` because the shop states that the amounts it publishes are a mail-in guide and a branch may pay differently. Amounts printed as 「〜 ¥2,050,000」 are the top of a range; the number kept is that ceiling.
- **`offerVsPaid.paidShareOfOffer` is paid ÷ advertised**, so 0.9378 means the shop paid 93.8% of its own headline. It uses the newest year in `byYear` and the unused column where the brand publishes one; `condition` and `year` in the same object say exactly which two numbers were divided.
- **`buybackRateOfList`** is filled in only for the brands whose page prints a list price and a percentage on the same line — the bag and leather-goods brands. Louis Vuitton's page gives list ¥111,000 / 93% / ¥103,230 for M41894, and its whole table's median rate was 0.93 over 42 rows on 2026-09-10. It is `null` for every watch brand rather than computed from two numbers that were never meant to be divided.
- **`offerTable.updatedAt`** is the day the shop last edited that brand's page. All ten brands measured had been edited within the previous ten days (Rolex 2026-09-09, Vuitton 09-03, Chanel 09-01).
- **A model that matches no line of the price page** leaves `offerNow` empty and sets `offerTable.modelMatched` to false. Matching is on the reference only — two Rolex lines share the reference 126500LN under different dial names, and matching on the name would pick a watch a million yen apart.

### An empty result is an answer, and it is free

A word this shop has never bought comes back as `status: "not_found"` with a `hint`, no amounts, and **no charge**. That is a real fact about a shop that has been buying for six years.

It is deliberately not the same thing as a failure. The site answers an empty search with a complete page carrying `お探しの実績は存在しません` — "the record you are looking for does not exist" — and that phrase, not a page size or a row count, is what this tool treats as an empty search. A page with neither that marker nor any record has changed shape, and the run **fails and says so** instead of reporting an empty market that was never measured.

### Cost and load

- Two calls for a normal run: the record archive, then the brand's price page. A word the shop has never bought stops after the first, and is not charged.
- Calls are **2.0 seconds apart and capped at 12 per run**, in code, with no input that can lower either.
- No login, no cookie, no browser, no proxy. 256 MB is enough.
- **No image is ever fetched, and no image address is ever returned.** The record photographs are named after the branch that made the purchase, and the shop's copyright page refuses use of its photographs; the parser has no image field at all.
- **No prose is copied.** What comes out is facts and arithmetic — brand, model name, reference, yen, date — and the statistics computed from them. No descriptions, no page text.
- **There is no person in this data.** The buyback archive is the shop's own record of what it bought; it has no seller field, no name, no contact detail, and this tool reads none of the site's customer-voice pages.

### If it stops working

Everything here is one host, `kaitori.e-daikoku.com`, over plain HTTPS with no login and no cookie, so a failure is the site or the network rather than an expired session. The failure messages separate the three cases that need different answers: the site did not answer at all, the site refused the call and wants less load, or the page changed shape. The last one names which anchor went missing — the record container, the empty-search marker, or the price table — so it can be checked against the live page directly.

### Disclaimer

Unofficial, independent tool — **not affiliated with, endorsed by, or sponsored by Daikokuya**. Brand names and references only say which item the numbers are about. Every figure is read from Daikokuya's own public pages at the moment shown in `fetchedAt` and is not an offer to anyone. Daikokuya states that the amounts it publishes on the web are a mail-in guide and that a branch may pay differently, and that condition, papers and accessories move the amount. Check before you act on any of it.

### 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

- [Mercari Japan Sold Prices — What Items Really Sell For](https://apify.com/jpmarketdata/mercari-japan-price-checker)
- [Yahoo! Auctions Japan Sold Prices — Median, Range, Bids](https://apify.com/jpmarketdata/yahoo-auction-sold-comps)
- [Hifido Japan Used Audio — What It Actually Sold For](https://apify.com/jpmarketdata/hifido-japan-audio-sold-comps)
- [Japan Used Camera & Lens — Dealer Price vs Sold Price](https://apify.com/jpmarketdata/japan-camera-gear-sold-comps)
- [Japan Figure & Gunpla — New Price vs Used Sold Price](https://apify.com/jpmarketdata/japan-figure-gunpla-resale-value)
- [Used iPhone & Android Prices Japan — Dealer vs Sold](https://apify.com/jpmarketdata/japan-phone-resale-value)
- [Yahoo, Mercari & PayPay Japan — Same Item, 3 Prices](https://apify.com/jpmarketdata/japan-resale-cross-market-checker)
- [Mercari & Yahoo Japan Demand — Sold vs Still Listed](https://apify.com/jpmarketdata/japan-sell-through-rate)

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 Daikokuya**. 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.

# Actor input Schema

## `model` (type: `string`):

What to look for in Daikokuya's buyback records: a reference number as the shop prints it, such as `126610LN` (Rolex), `M41894` (Louis Vuitton) or `AS5631` (Chanel). A brand name in Japanese (`ロレックス`, `エルメス`) also works and returns that brand's whole recent intake instead of one model. Everything in the run is measured over the records this word finds, so a reference number gives you one model's history and a brand name gives you a recent sample. One run is one model and costs a flat $0.02; a word the shop has never bought is not charged.

## `category` (type: `string`):

Which part of the buyback archive to look in. `all` searches everything; picking one drops records that merely share the word, which lowers the count and can move the typical amount. Leave it on `all` when you search a reference number - a reference is already specific, and a wrong kind here would find nothing. It does not change what you are charged.

## `brandPage` (type: `string`):

Leave empty and the brand is taken from the records themselves, which is right almost always. Fill it to force which of Daikokuya's brand price pages is read for the amount it advertises today - use the name in the page address, for example `rolex`, `vuitton`, `hermes`, `chanel`, `omega`, or a category page such as `bag` or `purse`. A name that is not one of the 37 brand pages or 9 category pages is ignored with a warning rather than failing the run. It does not change what you are charged.

## `maxRecords` (type: `integer`):

How many dated purchases the amounts and the year-by-year table are measured over, newest first, in a single request. `recordsComplete` says `true` when that reached the end of the archive for this word and `false` when there is more behind it - and short changes the answer: a reference number usually finishes well inside 200 (126610LN has 256 records covering 2020 to 2026), while a bare brand name has thousands and will always be a recent sample. It also caps the rows charged at $0.002 each when the individual rows below are on.

## `includeRecords` (type: `boolean`):

Off by default: a run costs a flat $0.02 for the summary. Turn it on to also get one row per dated purchase (day bought, brand, model name, reference, amount paid in yen) and one row per line of that brand's advertised price page (reference, amounts by condition, list price and buyback rate where the brand publishes them), at +$0.002 per row. The rows are the ones already read for the summary, so this adds rows, not waiting - at most the record limit above plus the brand page's own lines, which ran from 32 (Rolex) to 717 (Hermes) when measured. Runs stop at the run option Maximum cost per run, $3.00 unless you raise it.

## Actor input object example

```json
{
  "model": "126610LN",
  "category": "all",
  "brandPage": "",
  "maxRecords": 200,
  "includeRecords": false
}
```

# Actor output Schema

## `buybackPriceSummaries` (type: `string`):

One row per model with the typical amount paid and range in yen, how many it bought, the year-by-year trend, and how the amount it advertises today compares with what it has been paying.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "model": "126610LN",
    "category": "all",
    "brandPage": "",
    "maxRecords": 200,
    "includeRecords": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("jpmarketdata/daikokuya-japan-brand-buyback-checker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "model": "126610LN",
    "category": "all",
    "brandPage": "",
    "maxRecords": 200,
    "includeRecords": False,
}

# Run the Actor and wait for it to finish
run = client.actor("jpmarketdata/daikokuya-japan-brand-buyback-checker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "model": "126610LN",
  "category": "all",
  "brandPage": "",
  "maxRecords": 200,
  "includeRecords": false
}' |
apify call jpmarketdata/daikokuya-japan-brand-buyback-checker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jpmarketdata/daikokuya-japan-brand-buyback-checker"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ZSRabZra2G5bHTCi0/builds/V79yU3JCExoT1VkNk/openapi.json
