# Mandarake Japan Collectibles — Prices In Stock & Sold Out (`jpmarketdata/mandarake-market-checker`) Actor

Type a keyword and get what anime figures, manga, toys and cards cost on Mandarake, Japan's biggest secondhand shop. Returns search-wide in-stock/sold-out counts, plus typical in-stock and sold-out prices (sold comps) from the first 120 items. $0.02 per keyword, no results = no charge. Unofficial.

- **URL**: https://apify.com/jpmarketdata/mandarake-market-checker.md
- **Developed by:** [h ichi](https://apify.com/jpmarketdata) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 1 total users, 0 monthly users, 87.9% 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/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

## Mandarake Japan Collectibles — Prices In Stock & Sold Out

**What it does:** Type a keyword and get what anime figures, manga, toys and trading cards cost on Mandarake, Japan's biggest secondhand collectibles store.

**You enter:** one or more keywords, Japanese works best, e.g. `ガンダム`; optional category (toys, cards, comics…).

**You get:** in-stock and sold-out counts for the whole search; typical in-stock price and range, and typical sold-out price (fixed-price shop, so close to what items went for) — measured on the first 120 listings returned; the shops they sit in. Optional: one row each.

**Price:** $0.02 per keyword — every keyword in your list is charged. +$0.002 per item if you also want the list. A keyword that returns nothing is never charged.

**Example:** enter `ガンダム` → 72,464 listings found (23,157 in stock, 49,307 sold out) · of the first 120, typical in-stock price ¥4,000 (range ¥200–48,000) and typical sold-out price ¥5,000 (only 5 sold-out items in that sample) · top shops Nakano and Kyoto (real run, 2026-08-17)

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

### Pricing — $0.02 per keyword

| Event | Price | When |
|---|---|---|
| Keyword market summary | $0.02 | Per keyword analyzed |
| Individual item | $0.002 | Only if you enable **Include individual items** |

A default run (1 keyword, summary only) costs **$0.02**. You are never charged for a keyword that returns zero listings. You pay per keyword you ask for; there is no monthly fee.

### Input

| Field | Example | Notes |
|---|---|---|
| `keywords` | `["ガンダム"]` | Japanese works best, English usually works too (measured 2026-08-18: `gundam` 72,482 listings, `ガンダム` 72,447). A broad word returns a **mixed-category** middle price — `ガンダム` covers figures, manga and cards at once. Narrow it with a product name or a model code (`MG サザビー`, `RG νガンダム`, `HGUC 1/144`) and a `categoryCode` |
| `categoryCode` | `"02"` | Optional category filter: 11=Comics, 12=Goods, 02=Toys, 05=Cards/Stickers, 04=Anime, 03=Doujins… Use it together with a product name to keep the middle price inside one kind of item |
| `maxItemsPerKeyword` | `120` | Newest listings sampled per keyword (30–360) |
| `includeIndividualItems` | `false` | Enable to get each item as a record |
| `convertToUsd` | `true` | Adds USD stats at the current exchange rate |

### Output example (summary)

Measured on 2026-08-17 (real run, `ガンダム`, default input). Note that only 5 of the 120 sampled listings were sold out, so `soldPriceJpy` rests on 5 items.

```json
{
  "type": "market_summary",
  "keyword": "ガンダム",
  "totalListingsFound": 72464,
  "inStockTotal": 23157,
  "soldOutTotal": 49307,
  "countMismatch": false,
  "keywordStatus": "ok",
  "hint": null,
  "sampledListings": 120,
  "sampledInStock": 115,
  "sampledSoldOut": 5,
  "askPriceJpy": {
    "min": 200,
    "p25": 2000,
    "median": 4000,
    "p75": 9500,
    "max": 48000,
    "average": 10622
  },
  "soldPriceJpy": {
    "min": 1800,
    "p25": 3800,
    "median": 5000,
    "p75": 5300,
    "max": 5500,
    "average": 4280
  },
  "shopTop": [
    [
      "Nakano + 1 others",
      7
    ],
    [
      "Kyoto",
      7
    ],
    [
      "Sahra + 3 others",
      6
    ],
    [
      "Complex",
      6
    ],
    [
      "Nakano",
      5
    ]
  ],
  "checkedAt": "2026-08-17T17:40:45.818696+00:00",
  "askPriceUsd": {
    "min": 1.26,
    "p25": 12.56,
    "median": 25.12,
    "p75": 59.67,
    "max": 301.49,
    "average": 66.72
  },
  "soldPriceUsd": {
    "min": 11.31,
    "p25": 23.87,
    "median": 31.41,
    "p75": 33.29,
    "max": 34.55,
    "average": 26.88
  },
  "exchangeRateJpyUsd": 0.006281
}
```

### Use cases

- **Sourcing & arbitrage** — compare Mandarake's ask prices against eBay/Mercari sold prices before ordering through a proxy service
- **Pricing your inventory** — the sold-out price distribution tells you what the Japanese market actually pays, not what sellers hope for
- **Collection tracking** — check how much of a series or character is on the market, and at what price, without opening the site

### Notes & limits

- **A broad keyword gives you a mixed middle price.** `ガンダム` (72,447 listings) mixes figures, model kits, manga and cards, so its median is the middle of all of them together. For a price you can act on, search the product as it is sold — `MG サザビー` (6 listings) — or add a `categoryCode`
- `totalListingsFound` includes sold-out items; `inStockTotal` (exact, from a separate filtered count) is what you can buy now
- **The shop's two counts can disagree on a narrow keyword.** They are built from different indexes: measured 2026-08-18, `MG Sazabi` declares 1 item in the all-items search and 2 in the in-stock-only search. When that happens the row carries `countMismatch: true` and `soldOutTotal: null` — both raw counts are still there, and nothing is rounded to make them agree
- **A keyword that found nothing still gets its row**, with `keywordStatus: "not_found"`, a one-line `hint` on what to try next, and no charge. A keyword with hits has `keywordStatus: "ok"` and `hint: null`
- Sold-out listings carry no sold *date*, so no time-series is possible — the split and the two price distributions are the signal
- Adult-flagged items are included in counts and marked `isAdult` on individual records
- Every summary also carries `checkedAt`, the UTC time the search was read, and `soldPriceUsd` when the USD conversion is on
- Read-only and throttled (~1 request / 1.5 s). No login, no personal data, nothing stored between runs

***

### 日本語ガイド

**まんだらけ通販の相場をキーワード単位で1コールで返す Actor です。**

- **概要**: キーワードごとに、販売中商品の価格統計(中央値と価格帯)、**売切商品の価格統計**(まんだらけは定価販売のため売切価格≒実売価格)、在庫/売切の件数内訳、在庫を持つ店舗トップ5を集計します。海外コレクター・代購業者・リセーラー向けに英語フィールド名+USD換算付き。
- **使い方**: `keywords` に検索キーワード(日本語推奨、英語も概ね有効: 実測 2026-08-18 で gundam 72,482件 / ガンダム 72,447件)を入力してください。**一般語は異種混在の中央値**になります(ガンダム = フィギュア・プラモ・漫画・カードの混合)。商品名や型番(`MG サザビー` 6件、`RG νガンダム`)と `categoryCode`(02=おもちゃ、05=カード類 など)で絞ってください。0件のときは `keywordStatus: "not_found"` と `hint` が付き、課金されません。まんだらけの2種類の件数(全件/在庫のみ)が食い違う場合は `countMismatch: true`・`soldOutTotal: null` として両方の生の件数をそのまま返します。
- **料金**: キーワードサマリー1件 $0.02。個別商品データが必要な場合のみ `includeIndividualItems` を ON(+$0.002/件)。0件のキーワードには課金されません。従量課金です。

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

- [BookOff Japan Used Manga, Books, CDs — Price & Stock](https://apify.com/jpmarketdata/bookoff-market-checker)
- [@cosme Japan Beauty Ranking — Top 50 Ratings & Prices](https://apify.com/jpmarketdata/cosme-beauty-market-checker)
- [Digimart Japan Used Guitar & Instrument Prices](https://apify.com/jpmarketdata/digimart-instrument-market-checker)
- [Fujiya Camera Japan Used Camera Prices by Condition](https://apify.com/jpmarketdata/fujiya-camera-market-checker)
- [HobbyLink Japan Gunpla & Figure Prices + Stock Status](https://apify.com/jpmarketdata/hlj-hobby-market-checker)
- [Iosys Japan Used iPhone & Phone Prices by Condition](https://apify.com/jpmarketdata/iosys-phone-market-checker)
- [Tackleberry Japan Used Fishing Tackle Prices & Counts](https://apify.com/jpmarketdata/tackleberry-tackle-market-checker)
- [Yuyu-tei Japan TCG Card Prices — Sell & Buy-back Price](https://apify.com/jpmarketdata/yuyutei-tcg-price-checker)
- [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)

Other language editions of this tool: [中文](https://apify.com/jpmarketdata/mandarake-market-cn) · [한국어](https://apify.com/jpmarketdata/mandarake-market-kr)

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

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

One or more search keywords (Japanese works best, English usually works too — measured 2026-08-18: 'gundam' 72,482 listings, 'ガンダム' 72,447). A broad word returns a mixed-category middle price: 'ガンダム' covers figures, model kits, manga and cards at once. For a price you can act on, search the product as it is sold and add a category: 'MG サザビー' (6 listings), 'RG νガンダム', 'HGUC 1/144'. A keyword that finds nothing comes back with keywordStatus 'not\_found' and is not charged.

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

Restrict the search to one Mandarake category. Common codes: 00=All, 11=Comics/Light Novels, 12=Goods, 01=Books, 10=Magazines, 02=Toys, 03=Doujins, 06=AV/Games, 07=Idols/Voice Actors, 05=Cards/Stickers, 04=Anime. Leave empty for all categories.

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

How many newest listings to sample per keyword. 120 = one result page. More items = better statistics. Affects cost only when 'Include individual items' is enabled (+$0.002 per item).

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

Off by default: a run costs a flat $0.02 per keyword summary. Enable to also get every sampled item (title, price, shop, in-stock/sold-out, item URL) at +$0.002 per item.

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

Adds USD statistics next to JPY using the current exchange rate (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-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 = { "keywords": ["ガンダム"] }

# Run the Actor and wait for it to finish
run = client.actor("jpmarketdata/mandarake-market-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 '{
  "keywords": [
    "ガンダム"
  ]
}' |
apify call jpmarketdata/mandarake-market-checker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jpmarketdata/mandarake-market-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/h09wUjBVb58N1vEdN/builds/0tWNMQsf9TOsIVqkL/openapi.json
