# Japan Hobby & Collectibles Prices (駿河屋 Suruga-ya) (`jpopendata/japan-hobby-surugaya`) Actor

Hobby/collectibles prices from Suruga-ya (suruga-ya.jp): new & used prices JPY, stock status, marketplace low price, release date, maker — figures, games, trading cards, anime goods, books. English schema for price research. Item facts only. Unofficial; not affiliated with A-Too Inc.

- **URL**: https://apify.com/jpopendata/japan-hobby-surugaya.md
- **Developed by:** [JP Open Data](https://apify.com/jpopendata) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 record scrapeds

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

## Japan Hobby & Collectibles Prices (駿河屋 Suruga-ya)

**Live hobby & collectibles prices from Suruga-ya (suruga-ya.jp) — Japan's biggest new+used hobby retailer: new price, used price, stock status, marketplace low price, release date and maker, in a clean English schema.**

This Actor searches the public product listings on suruga-ya.jp by keyword and/or category and returns each item as English-schema JSON: item title, item-type label (フィギュア / トレカ / …), Suruga-ya's own new-condition and used-condition prices (JPY), the primary (cheapest own-stock) price with its condition, the original list price (定価), the cheapest third-party marketplace (マケプレ) offer and offer count, in-stock flag, release date (ISO), maker/publisher, image URL and product URL. Optional in-stock and price-range filters are applied client-side.

Suruga-ya (run by A-Too Inc.) is the reference price source for Japanese second-hand hobby goods — figures, retro games, trading cards, anime merchandise, doujinshi, hobby books — but it is Japanese-only and invisible to most international tooling. This Actor is the bridge for price research, sourcing and arbitrage.

> **Unofficial tool.** Not affiliated with or endorsed by 株式会社エーツー (A-Too Inc.) or Suruga-ya (駿河屋). It collects **publicly available data only** (no login, no paywall), politely (strictly serial requests spaced **30 seconds apart — the Crawl-delay the site's robots.txt asks of all bots** —, hard per-run budget, no block evasion), fetches **only URLs the site's robots.txt leaves open to general bots**, and extracts **item facts only** — **no marketplace seller names, no review content, no personal data** (relevant e.g. under GDPR: no personal data is collected or processed). Users are responsible for ensuring their own use of the data complies with the source site's terms and applicable law.

***

### Quick start — verified input

Copy-paste this into the Actor's input (JSON tab) or pass it via API — it was run successfully on 2026-09-02 (10 Gundam items in the toys category with own-stock and marketplace prices, ~30 seconds; the default RESIDENTIAL JP proxy is applied automatically):

```json
{
  "keyword": "ガンダム",
  "category": "toys",
  "maxItems": 10
}
```

#### Common input mistakes

| Wrong | Right | Why |
|---|---|---|
| `{}` / both `keyword` and `category` empty | `{"keyword": "ガンダム"}` | With neither, the run falls back to the default keyword `フィギュア` with a warning. |
| `"keyword": "gundam"` | `"keyword": "ガンダム"` | Japanese keywords match far more items. |
| `"category": "figures"` / `"Manga"` in the UI | `"category": "toys"` / `"comics"` | Use a slug from the list (via API common aliases and Japanese labels are mapped; unknown values list all slugs). |
| `"maxItems": 500` with the default budget | `"maxItems": 240, "maxApiRequests": 10` | 24 items per request, 30 s apart — 500 items would need 21 requests (~10 minutes). |
| `"proxyConfiguration": { "useApifyProxy": false }` | keep the default (RESIDENTIAL, country JP) | suruga-ya.jp answers HTTP 403 to datacenter IPs; the default residential proxy is required. |
| `"priceMin": "1,000円"` | `"priceMin": 1000` | Integers in JPY (via API a string with ¥/commas is tolerated). |

Every invalid value stops the run **immediately** (before any upstream request) with a message that names the field and lists the valid values. Fields with a fixed list of values are validated by the Apify platform before the run even starts.

#### Empty results?

A run that finishes with `items: 0` and `complete: true` is not an error. Typical causes: `inStockOnly: true` for items Suruga-ya only lists via marketplace sellers, a `category` that does not contain the keyword's items (e.g. `books` + `ガンプラ`), or a tight price window with the default request budget (filters are client-side — raise `maxApiRequests`, remembering the 30 s spacing). Widen the query and re-run.

***

### Who is this for?

- **Overseas collectors & proxy-buying services** — know the fair Japanese market price for figures, trading cards, retro games and anime goods before buying or quoting; Suruga-ya prices are the domestic benchmark that Zenmarket/Buyee-style flows check by hand today.
- **Resellers & arbitrage** — new vs used vs marketplace price spreads per item, stock status, and the original list price for margin math.
- **Price-tracking & market tools** — a stable English schema over a Japanese-only source; re-run on a schedule for time series.
- **Market research** — release dates, makers and price levels across an entire franchise or category in one run.

### Sample output (dataset item)

```json
{
  "itemTitle": "ガンダム アーカイヴス PG UNLEASHED νガンダム編",
  "itemType": "アニメムック",
  "categoryId": null,
  "category": null,
  "priceJpy": 3800,
  "condition": "used",
  "priceNewJpy": 4400,
  "priceUsedJpy": 3800,
  "listPriceJpy": 4400,
  "marketplacePriceJpy": 3211,
  "marketplaceOfferCount": 7,
  "inStock": true,
  "releaseDate": "2026-07-14",
  "maker": "大日本絵画",
  "imageUrl": "https://www.suruga-ya.jp/database/photo.php?shinaban=185285927&size=m",
  "itemUrl": "https://www.suruga-ya.jp/product/detail/185285927",
  "source": "駿河屋 (suruga-ya.jp search listings)",
  "sourceUrl": "https://www.suruga-ya.jp/",
  "license": "Publicly available data — unofficial tool; users are responsible for compliance with the source site's terms",
  "retrievedAt": "2026-08-25T13:12:44.000Z"
}
```

`priceJpy` is Suruga-ya's cheapest own-stock price and `condition` says whether that price is for the `new` or `used` copy; `priceNewJpy` / `priceUsedJpy` carry both when both exist. `inStock` refers to Suruga-ya's own stock; items the site shows as 品切れ (out of stock) come with `priceJpy: null` but often still carry a `marketplacePriceJpy` — the cheapest third-party marketplace offer. `listPriceJpy` is the original retail price (定価).

### Input reference

```json
{
  "keyword": "ガンダム",
  "category": "toys",
  "inStockOnly": true,
  "priceMin": 1000,
  "priceMax": 50000,
  "maxItems": 100,
  "maxApiRequests": 10
}
```

`keyword` and/or `category` (Japanese keywords match best; with neither, the actor falls back to `フィギュア` with a warning). `category` takes a slug — `games`, `portable-games`, `nintendo-switch`, `playstation5`, `anime`, `movies`, `tokusatsu`, `toys`, `hobby`, `dolls`, `radio-control`, `minicars`, `books`, `comics`, `magazines`, `pamphlets`, `doujinshi`, `doujin-soft`, `av-equipment`, `home-appliances`, `cameras` — or any numeric suruga-ya.jp category id (the `category` value in the site's search URLs; useful for finer subcategories like specific consoles). For figures and trading cards, keyword search (`フィギュア`, `トレカ`, a franchise name) works best. The in-stock and price filters are applied **client-side after fetching** — the equivalent URL parameters are disallowed by the site's robots.txt, and this Actor strictly requests only robots-permitted URLs. Tight filters therefore discard part of what was fetched; raise `maxApiRequests` if a filtered run comes back incomplete.

### Pricing

Pay per result — see the pricing tab. One upstream page holds 24 items.

### FAQ

**Where does the data come from?**
Live from the public, login-free search listing pages on suruga-ya.jp at run time. Every record embeds the source, source URL, a license note, and the retrieval timestamp.

**Is this an official Suruga-ya / A-Too service?**
No. **Unofficial**, independently built and maintained, and **not affiliated with or endorsed by 株式会社エーツー (A-Too Inc.)**. It reads only publicly available pages.

**Is marketplace seller information included?**
No — deliberately. The Actor reads only the search list pages, which show marketplace offers as a lowest price plus an offer count; seller shop names appear only on product detail pages, which this Actor **never fetches**. The test suite asserts that no person- or seller-related field can appear in the output.

**Does it respect robots.txt?**
Yes, strictly — including the parts that cost us speed. The search list pages are open to general bots; several filter URL-parameters (`inStock=`, `rankBy=`, `is_marketplace=`, …) are disallowed, so this Actor never sends them and filters client-side instead. The site's robots.txt asks all bots for a **Crawl-delay of 30 seconds — this Actor honors it verbatim** (strictly serial requests, 30 s apart), which is why runs take a couple of minutes rather than seconds.

**Why is there no JAN/EAN barcode field?**
JAN codes appear only on product detail pages, which sit behind a bot challenge on the site's side. This Actor does not evade challenges, so it stays on the open list pages — every other field above is available there.

**Do I need a proxy?**
Yes — and it is on by default. suruga-ya.jp sits behind a CDN that challenges requests from datacenter IP ranges (including Apify's default datacenter proxies) with HTTP 403. The default `proxyConfiguration` therefore uses Apify **RESIDENTIAL** proxies with country **JP**; leave it as is, or point it at your own Japanese residential proxy. Residential proxy bandwidth is billed as Apify platform usage on top of the Actor price. The Actor itself never rotates identities or evades blocks — it makes the same polite, serial, 30-second-spaced requests through whichever single egress you give it, and fails visibly when blocked.

**Who is responsible for how the data is used?**
You are. The Actor collects publicly available factual data politely, but the legality of your specific use (redistribution, database rights, the source site's terms) is your responsibility as the user.

**How fresh are the results?**
Prices and stock are what the site's search returns at retrieval time. Suruga-ya prices move with demand; treat each run as a snapshot and re-run for fresh data.

**What about server load?**
Strictly serial requests, 30 s apart (the site's own requested crawl delay), 24 items per request, hard per-run request budget (max 60 = at most ~1,440 items per run), exponential backoff, no CAPTCHA/login/block evasion. If the site changes its page format, the Actor stops with a clear error instead of silently mis-parsing; if it blocks persistently, the run fails visibly.

### Search terms this Actor answers

surugaya scraper · suruga-ya price data · japan hobby prices · japanese figures price data · retro games japan prices · anime merchandise data · japan trading card prices · japanese collectibles market data · 駿河屋 相場 データ · japan used games price research · doujinshi prices · japan anime goods scraper

### More Japan data Actors by the same developer

- **Japan Used Media Prices (BOOKOFF ブックオフ)** — the sister Actor for shopping.bookoff.co.jp: used & new books, comics, CDs, DVDs and games with prices, condition, stock and JAN barcodes. The natural companion for cross-checking second-hand media prices across Japan's two biggest used-goods retailers.
- **Yahoo Auctions Japan Sold Prices (ヤフオク落札相場)** — actual sold-item comps from auctions.yahoo.co.jp; the perfect companion for what items *sold* for vs Suruga-ya's asking prices.
- **Japan Hotels & Ryokan Prices (jalan.net)** — hotel/ryokan prices, plans and ratings by prefecture and area.
- **Japan Luxury Hotels & Ryokan (ikyu.com)** — the high-end accommodation roster with advertised prices.
- **Japan Government Tenders & Awards** — tender notices and award results from the kkj.go.jp portal.
- **Japan Medical Facilities** — every registered hospital, clinic, dental clinic, and pharmacy (MHLW open data).
- **Japan Care Facilities** — long-term care providers across 35 service types (MHLW open data, CC BY).
- **Japan Government Subsidies & Grants** — open subsidy calls from the official jGrants API.
- **Japan Renewable Energy FIT/FIP Facilities** — METI-certified renewable installations, privacy-safe schema.
- **Japan Financial Licenses & Registrations** — FSA-licensed banks, securities firms, crypto exchanges and more.
- **Japan Construction & Real-Estate Licenses** — licensed contractors and brokers from MLIT's official register.
- **Japan Trade Statistics** — monthly import/export flows by HS code and partner country, from Japan Customs.

***

*Unofficial tool; not affiliated with 株式会社エーツー (A-Too Inc.) / Suruga-ya. Publicly available data only; users are responsible for compliance with the source site's terms and applicable law. No personal data and no seller data are collected.*

# Actor input Schema

## `keyword` (type: `string`):

Search keyword, e.g. "ガンダム", "フィギュア", "ポケモンカード". Japanese keywords match best. Required unless a category is given (category-only runs browse that whole category). Default "フィギュア" so a run with no input succeeds; with both keyword and category empty the actor falls back to it with a warning.

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

Optional. A suruga-ya.jp category slug — games, portable-games, nintendo-switch, playstation5, anime, movies, tokusatsu, toys, hobby, dolls, radio-control, minicars, books, comics, magazines, pamphlets, doujinshi, doujin-soft, av-equipment, home-appliances, cameras (case-insensitive; "manga", "switch", "figures" and Japanese labels are mapped) — or a numeric category id from suruga-ya.jp search URLs (the URL itself is accepted too). Unknown values stop the run with the full slug list. Leave empty to search all categories.

## `inStockOnly` (type: `boolean`):

Optional, default false. Keep only items Suruga-ya itself currently sells (new or used). Applied client-side after fetching — the equivalent URL parameter is disallowed by the site's robots.txt. Marketplace-only offers are excluded when enabled.

## `priceMin` (type: `integer`):

Optional. Lower bound on the primary own-stock price (priceJpy) in JPY (e.g. 1000). Applied client-side after fetching, so tight ranges may need a higher request budget. Leave empty for no minimum.

## `priceMax` (type: `integer`):

Optional. Upper bound on the primary own-stock price (priceJpy) in JPY (e.g. 50000). Applied client-side after fetching. Leave empty for no maximum.

## `maxItems` (type: `integer`):

Optional, default 10. Stop after this many dataset records (1..1000). One request = one 24-item result page, and requests are spaced 30 s apart (robots.txt Crawl-delay), so 100 records take ~2.5 minutes.

## `maxApiRequests` (type: `integer`):

Optional, default 10. Hard budget of HTTP requests to suruga-ya.jp for this run (one request = one 24-item result page). Requests are strictly serial and spaced 30 s apart, honoring the Crawl-delay the site's robots.txt asks of all bots. When the budget runs out the run still SUCCEEDS with the records collected so far and complete=false in RUN\_SUMMARY (not an error).

## `proxyConfiguration` (type: `object`):

Apify proxy settings. Required: suruga-ya.jp sits behind a CDN that blocks datacenter IP ranges (HTTP 403), so the default uses Apify RESIDENTIAL proxies (country JP). Proxy bandwidth is billed as Apify platform usage. Never used for rotation/evasion — one client identity per run.

## Actor input object example

```json
{
  "keyword": "ガンダム",
  "category": "toys",
  "inStockOnly": false,
  "priceMin": 1000,
  "priceMax": 50000,
  "maxItems": 10,
  "maxApiRequests": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "JP"
  }
}
```

# Actor output Schema

## `records` (type: `string`):

Structured Suruga-ya item price records with source attribution (source, sourceUrl, license, retrievedAt) on every item.

# 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 = {
    "keyword": "フィギュア",
    "maxItems": 10,
    "maxApiRequests": 10,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "JP"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("jpopendata/japan-hobby-surugaya").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 = {
    "keyword": "フィギュア",
    "maxItems": 10,
    "maxApiRequests": 10,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "JP",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("jpopendata/japan-hobby-surugaya").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 '{
  "keyword": "フィギュア",
  "maxItems": 10,
  "maxApiRequests": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "JP"
  }
}' |
apify call jpopendata/japan-hobby-surugaya --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jpopendata/japan-hobby-surugaya"
        }
    }
}

```

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/BNtnS2FSl7RuDHcRo/builds/rktBvE6g5QLzWvzWn/openapi.json
