# Mandarake 万代书店 Japan Collectibles Price & Stock Stats (`jpmarketdata/mandarake-market-cn`) Actor

二次元收藏与日本代购必备：输入关键词，一次调用即可拿到まんだらけ（万代书店 / Mandarake，日本最大的二手动漫、漫画、手办、同人与卡牌连锁）通贩的行情——在售价的中位数与四分位、售罄价（定价销售，售罄价≈实际成交价）、在售/售罄件数构成、持货门店排行，并附美元换算。适合手办捡漏、代购报价与跨境转卖定价。From $0.02 per keyword, no subscription.

- **URL**: https://apify.com/jpmarketdata/mandarake-market-cn.md
- **Developed by:** [h ichi](https://apify.com/jpmarketdata) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 keyword market summaries

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/platform/actors/running/actors-in-store#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

## Japan Collectibles Price & Stock Stats — for Chinese-Speaking Buyers

**中文 · English · 日本語** —— 输入一个关键词，一次调用拿到まんだらけ（万代书店 / Mandarake）通贩的行情：在售价、售罄价、在售与售罄的件数构成、哪些门店有货。

***

### 中文说明

#### 这是给谁用的（Who this is for）

**日本二次元、手办、同人与卡牌的跨境转卖，压倒性地是一门面向中文买家的生意**——从代购下单、日拍捡漏到国内出货，链路的每一环都在问同一个问题：这个东西在日本到底值多少钱。而**まんだらけ在中文圈本来就有一个通行的名字：万代书店**（30 多家实体店共用一个通贩目录，是日本最大的二手动漫/漫画/手办/同人/卡牌连锁），它的价格是全球日系收藏品的参照点，但它没有公开 API。

这个 Actor 把它变成可以直接进报价单的行情记录：

- **在售价行情** —— 现在能买到的全部商品的中位数 / 四分位 / 最低 / 最高。
- **售罄（实际成交）价行情** —— **万代书店是定价销售**，所以一件售罄商品的挂牌价就是它实际卖掉的价格。这是日系收藏品零售里，最接近公开「成交价（sold comps）」的东西。
- **库存构成** —— 在售与售罄各多少件（市场深度与动销的信号）。
- **门店排行** —— 货在哪几家店（中野、涩谷、Sahra、Grandchaos…）。
- 可选：每一件取样商品（标题、价格、门店、库存状态、商品链接）。

价格以日元给出，可选附上美元换算。数据按需从万代书店的公开通贩页面获取，无需登录，运行之间不存储任何数据。

本 Actor 是英文版 [Mandarake Japan Collectibles](https://apify.com/jpmarketdata/mandarake-market-checker) 的**中文语言包**：抓取逻辑与统计口径完全相同，只有标题、商店说明、文档和输入项标签改写成中文。

#### 概览 Overview

每个关键词返回**一条 `market_summary` 汇总记录**：在售价统计、售罄价统计、总命中数、在售总数、售罄总数、取样件数、持货门店 Top 5、汇率。开启单件输出后，另外为每一件取样商品返回一条记录。

#### 输入 Input

| 字段 | 示例 | 说明 |
|---|---|---|
| `keywords` | `["ガンダム"]` | 日文关键词命中率最高；英文通常也可用（标题多为双语）。每个关键词 $0.02 |
| `categoryCode` | `"02"` | 可选分类过滤：11=漫画/轻小说、12=周边、02=玩具/手办、05=卡牌/贴纸、04=动画、03=同人… 留空 = 全部 |
| `maxItemsPerKeyword` | `120` | 每个关键词取样多少件最新商品（30–360，120 = 一页） |
| `includeIndividualItems` | `false` | 开启后输出每一件商品的记录（+$0.002/件） |
| `convertToUsd` | `true` | 按当前汇率附上美元统计 |

```json
{
    "keywords": ["ガンダム", "ポケモンカード"],
    "categoryCode": null,
    "maxItemsPerKeyword": 120,
    "includeIndividualItems": false,
    "convertToUsd": true
}
```

常用日文关键词对照：高达 = `ガンダム` / 宝可梦卡 = `ポケモンカード` / 美少女战士 = `セーラームーン` / 新世纪福音战士 = `エヴァンゲリオン` / 手办 = `フィギュア` / 同人志 = `同人誌` / 赛璐璐画 = `セル画`。

#### 输出 Output

字段名保持英文，这是 API 接口：

```json
{
  "type": "market_summary",
  "keyword": "ガンダム",
  "totalListingsFound": 71934,
  "inStockTotal": 22848,
  "soldOutTotal": 49086,
  "sampledListings": 120,
  "sampledInStock": 78,
  "sampledSoldOut": 42,
  "askPriceJpy": {"min": 250, "p25": 1200, "median": 4000, "p75": 7000, "max": 45000, "average": 5480},
  "askPriceUsd": {"median": 25.48, "...": "..."},
  "soldPriceJpy": {"min": 250, "median": 1800, "max": 12000, "...": "..."},
  "shopTop": [["Nakano", 34], ["Sahra", 21], ["Grandchaos", 12]],
  "exchangeRateJpyUsd": 0.00637
}
```

怎么读：`askPriceJpy.median` 是**现在要买它得花多少钱**；`soldPriceJpy.median` 是**它实际卖掉时的价格**（万代书店定价销售，售罄价即实售价）。两者之间的差距，就是你在日本这一侧的进货空间。`inStockTotal` 与 `soldOutTotal` 的比例是动销信号：售罄占比高而在售很薄，说明这个题材在走货。

#### 每项统计的口径（basis）

- **`totalListingsFound` 包含售罄商品**；`inStockTotal`（来自单独的筛选计数，是精确值）才是你现在买得到的量。
- **`askPriceJpy` / `soldPriceJpy` 是样本统计**，样本量为 `sampledListings`（以及其中的 `sampledInStock` / `sampledSoldOut`），按最新上架顺序取样。想要更稳的分布就调高 `maxItemsPerKeyword`。
- **`shopTop` 也是样本统计**，反映的是取样这批商品的门店分布，不是全站库存的门店分布。

#### 本 Actor 不做什么

- **不给出成交时间，因此做不了时间序列。** 售罄商品不带成交日期——能给的信号是「在售/售罄的构成」和「两条价格分布」，不是价格走势曲线。
- **不是全站爬虫。** 它按关键词取样并返回统计，不倾倒整个目录。
- **不代购、不下单、不查配送。** 只读公开页面。
- **不处理个人数据。** 万代书店是第一方零售商，没有卖家个人信息。
- **不保证与实体店同价。** 通贩目录与门店现货并不总是一致。

#### 价格 Pricing —— 每个关键词 $0.02 起，无订阅

| 计费事件 | 价格 | 何时发生 |
|---|---|---|
| 关键词行情汇总（`keyword-analyzed`） | **$0.02** | 每分析一个关键词 |
| 单件商品记录（`item-scraped`） | **$0.002** | 仅当开启「输出单件商品」时 |

默认运行（1 个关键词、只要汇总）花费 **$0.02**。**零结果的关键词绝不收费。** Apify 每月赠送 $5 免费额度。

#### 注意事项 Notes & limits

- 成人向商品会计入总数，并在单件记录上以 `isAdult` 标记。
- 只读且限速（约 1 请求 / 1.5 秒）。无需登录、不涉及个人数据、运行之间不存储任何数据。
- 与株式会社まんだらけ无任何关联。数据用于市场调研，大额交易前请自行核实。
- 页面结构变化时**明确报错**，而不是返回看似正常的空结果。

#### 用途 Use cases

- **选品与套利** —— 通过代购下单前，先把万代书店的在售价与 eBay / 煤炉的成交价对齐比较。
- **给自己的库存定价** —— 售罄价分布代表日本市场实际支付的价格，而不是卖家期望的价格。
- **收藏与题材追踪** —— 一次调用看清某个系列、某个角色的市场深度与价格水位。

***

### English

#### Overview

Price and availability statistics for any keyword on Mandarake — Japan's biggest secondhand store for anime, manga, figures, doujinshi, toys and trading cards. One call per keyword returns in-stock ask prices, sold-out (realized) prices, the stock split and the top shops, plus optionally every sampled item.

This listing is the **Chinese-language package** of our English Actor [Mandarake Japan Collectibles](https://apify.com/jpmarketdata/mandarake-market-checker). The scraping and the statistics are identical; the documentation, store copy and input labels are written for Chinese-speaking collectors, proxy buyers and resellers (万代书店 / 手办 / 二次元 日本代购).

#### Input

| Field | Example | Notes |
|---|---|---|
| `keywords` | `["ガンダム"]` | Japanese keywords match best; English often works. $0.02 per keyword |
| `categoryCode` | `"02"` | Optional category filter (11=Comics, 12=Goods, 02=Toys, 05=Cards, 04=Anime, 03=Doujins…) |
| `maxItemsPerKeyword` | `120` | Newest listings sampled per keyword (30–360) |
| `includeIndividualItems` | `false` | Enable to get each item as a record (+$0.002 each) |
| `convertToUsd` | `true` | Adds USD stats at the current exchange rate |

#### Output

One `type: "market_summary"` record per keyword (`askPriceJpy`, `soldPriceJpy`, `totalListingsFound`, `inStockTotal`, `soldOutTotal`, `sampledListings`, `shopTop`, USD conversion) — see the JSON example in the Chinese section — plus optionally one `item` record per sampled listing. Mandarake sells at fixed prices, so a sold-out item's listed price is the price it actually sold at (pseudo sold comps).

#### Pricing

| Event | Price |
|---|---|
| Keyword market summary (`keyword-analyzed`) | **$0.02** |
| Individual item record (`item-scraped`) | **$0.002** each |

Individual items are OFF by default, so a default run is a flat **$0.02** per keyword. Keywords with zero listings are never charged. No subscription.

#### Notes & limits

- `totalListingsFound` includes sold-out items; `inStockTotal` (exact, from a separate filtered count) is what you can buy now.
- Sold-out listings carry no sale date, so no time series is possible — the split and the two price distributions are the signal.
- `askPriceJpy`, `soldPriceJpy` and `shopTop` are **sample** statistics over `sampledListings`.
- Adult-flagged items are included in counts and marked `isAdult` on individual records.
- Read-only and throttled (~1 request / 1.5 s). No login, no personal data, nothing stored between runs. Not affiliated with Mandarake Inc.

***

### 日本語

#### 概要 Overview

まんだらけ通販の相場をキーワード単位で1コールで返します。販売中商品の価格統計、**売切商品の価格統計**（まんだらけは定価販売のため売切価格≒実売価格）、在庫/売切の件数内訳、在庫を持つ店舗トップ5。中国語圏の利用者（万代书店 / 手办 / 二次元 日本代购）向けに中国語で書き直したパッケージで、英語版は [Mandarake Japan Collectibles](https://apify.com/jpmarketdata/mandarake-market-checker)（取得・統計処理は同一）。

#### 入力 Input

`keywords`（日本語推奨）／`categoryCode`（任意、02=おもちゃ・05=カード類 など）／`maxItemsPerKeyword`（既定 120、30〜360）／`includeIndividualItems`（既定 OFF）／`convertToUsd`（既定 ON）。

#### 出力 Output

キーワードごとに `market_summary` を1件（`askPriceJpy` / `soldPriceJpy` / `totalListingsFound` / `inStockTotal` / `soldOutTotal` / `sampledListings` / `shopTop` / USD換算）。`includeIndividualItems` が ON のときは、取得した各商品の明細（タイトル・価格・店舗・在庫状況・商品URL）も出力します。

#### 料金 Pricing

キーワードサマリー（`keyword-analyzed`）**$0.02**／個別商品レコード（`item-scraped`）**$0.002 / 件**。個別明細は**既定 OFF** なので既定実行はキーワードあたり $0.02 固定です。**0件のキーワードには課金されません。** サブスクリプション不要。

#### 注意 Notes

売切商品には販売日時が無いため**時系列分析はできません**（在庫/売切の構成と2本の価格分布が信号です）。`totalListingsFound` は売切を含み、いま買えるのは `inStockTotal` です。価格統計・店舗内訳は**サンプル基準**（母数は `sampledListings`）。アダルト商品は件数に含まれ、個別レコードでは `isAdult` で示します。リクエストは約1.5秒間隔、ログイン不要・個人情報なし・実行間の保存なし。株式会社まんだらけとは無関係です。

# Actor input Schema

## `keywords` (type: `array`):

一个或多个搜索关键词（日文命中率最高，英文通常也可用，因为标题多为双语）。例如：ガンダム（高达）、セーラームーン（美少女战士）、ポケモンカード（宝可梦卡）、Gundam MG、Evangelion figure。

## `categoryCode` (type: `string`):

把搜索限定到某一个万代书店分类。常用代码：00=全部、11=漫画/轻小说、12=周边、01=书籍、10=杂志、02=玩具/手办、03=同人、06=影像/游戏、07=偶像/声优、05=卡牌/贴纸、04=动画。留空表示全部分类。

## `maxItemsPerKeyword` (type: `integer`):

每个关键词取样多少件最新商品。120 = 一个结果页。件数越多统计越稳。仅在开启「输出单件商品」时才影响费用（+$0.002/件）。

## `includeIndividualItems` (type: `boolean`):

默认关闭：一次运行每个关键词汇总固定 $0.02。开启后还会输出每一件取样商品（标题、价格、门店、在售/售罄、商品链接），费用 +$0.002/件。

## `convertToUsd` (type: `boolean`):

按当前汇率（open.er-api.com）在日元统计旁边附上美元统计。

## Actor input object example

```json
{
  "keywords": [
    "ガンダム"
  ],
  "maxItemsPerKeyword": 120,
  "includeIndividualItems": false,
  "convertToUsd": true
}
```

# 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 = {
    "keywords": [
        "ガンダム"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("jpmarketdata/mandarake-market-cn").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 = { "keywords": ["ガンダム"] }

# Run the Actor and wait for it to finish
run = client.actor("jpmarketdata/mandarake-market-cn").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "keywords": [
    "ガンダム"
  ]
}' |
apify call jpmarketdata/mandarake-market-cn --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=jpmarketdata/mandarake-market-cn",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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