# Hareruya2 Scraper - Japanese Pokemon Card Prices (JPY) (`lulzasaur/hareruya2-scraper`) Actor

Scrape Hareruya2 (hareruya2.com), Japan's major Pokemon TCG singles retailer. Search cards or scrape set collections for card name, set code/name, rarity, collector number, condition rank, price in JPY, stock and product URL from its Shopify storefront JSON.

- **URL**: https://apify.com/lulzasaur/hareruya2-scraper.md
- **Developed by:** [lulz bot](https://apify.com/lulzasaur) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 results

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

## Hareruya2 Scraper — Japanese Pokemon Card Prices (JPY)

Scrape **Hareruya2** ([hareruya2.com](https://www.hareruya2.com)), one of Japan's largest Pokemon TCG singles retailers (sister store of Hareruya MTG). Search cards by name or scrape entire set collections and get structured data for every listing: card name, set code and set name, collector number, rarity, energy type, condition rank, price in **JPY**, stock status, SKU, image and product URL.

Japanese card prices are a key market signal for Pokemon TCG — Japanese singles often move before English prints, and Hareruya2 is one of the most liquid JP marketplaces. Use this actor for price tracking, arbitrage vs. TCGplayer/Cardmarket, portfolio valuation, or building JP Pokemon price datasets.

### Features

- **Search by card name** — Japanese terms match best (`ピカチュウ`, `リザードン`, `ナンジャモ`), English (`pikachu`) also works
- **Scrape whole collections/sets** by collection handle (e.g. a set's collection page)
- **Fully parsed card titles** — Hareruya2 titles encode everything: `【状態A】ピカチュウ(PROMO){雷}〈227/S-P〉[S-P]` is split into condition rank, card name, rarity, energy type, collector number and set code
- **Condition ranks** — unmarked = standard near-mint stock; `状態A/B/C` = played condition ranks, mapped to English labels
- **Live stock + set names** via each product's storefront JSON (toggleable)
- **Prices in JPY** with compare-at (sale) prices where present
- No login, no browser — fast and cheap

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `searchQueries` | array | `["pikachu"]` | Card/product names to search. Japanese recommended. |
| `collectionHandles` | array | `[]` | Collection handles from `hareruya2.com/collections/<handle>` URLs. |
| `maxListings` | integer | `60` | Max products per query/collection (search pages hold 60). |
| `scrapeDetails` | boolean | `true` | Fetch stock, tags/set name, image per search result. |
| `proxyConfiguration` | object | none | Optional Apify Proxy for very large runs. |

#### Example input

```json
{
    "searchQueries": ["リザードン", "pikachu"],
    "collectionHandles": ["2025lb_m2a"],
    "maxListings": 100,
    "scrapeDetails": true
}
```

### Output

One dataset record per product:

```json
{
    "title": "【状態A】ピカチュウ(PROMO){雷}〈227/S-P〉[S-P]#2265",
    "cardName": "ピカチュウ",
    "setCode": "S-P",
    "setName": "プロモカード",
    "collectorNumber": "227/S-P",
    "rarity": "PROMO",
    "energyType": "雷",
    "condition": "A",
    "conditionLabel": "Rank A - excellent, light wear",
    "lotNumber": "2265",
    "isSingle": true,
    "priceJpy": 450000,
    "compareAtPriceJpy": null,
    "currency": "JPY",
    "inStock": true,
    "sku": "rc_ITPTBSTMLLAO_SfFV",
    "productId": "10212328079680",
    "handle": "39954",
    "url": "https://www.hareruya2.com/products/39954",
    "imageUrl": "https://www.hareruya2.com/cdn/shop/products/....jpg",
    "tags": ["同名検索:ピカチュウ", "..."],
    "searchQuery": "ピカチュウ",
    "collectionHandle": null,
    "store": "hareruya2.com",
    "scrapedAt": "2026-08-17T12:00:00.000Z"
}
```

Sealed products and supplies are returned too, with `isSingle: false` and the raw title as `cardName`.

### Tips

- **Use Japanese search terms** for the widest coverage — the store is Japanese-first.
- Sold-out listings are mostly filtered out of search by the store; `inStock` (with `scrapeDetails` on) gives the definitive per-product status.
- `condition: "NM"` means the listing has no condition mark, i.e. Hareruya2's standard (near-mint) stock.
- Prices are integer/decimal **Japanese Yen** — no currency conversion is applied.

### Use cases

- Track JP prices of chase cards (Moonbreon, SARs, promos) over time
- JP-to-EN arbitrage screening against TCGplayer / Cardmarket / eBay
- Value collections of Japanese singles at real retail ask prices
- Feed price data into Discord bots, spreadsheets, or ML models

This actor scrapes only publicly available product listings.

# Actor input Schema

## `searchQueries` (type: `array`):

Card or product names to search on hareruya2.com. Japanese terms match best (e.g. 'ピカチュウ', 'リザードン', 'ナンジャモ'), but English names like 'pikachu' also work. Each query returns matching Pokemon singles, sealed products and supplies with prices in JPY.

## `collectionHandles` (type: `array`):

Scrape whole Hareruya2 collections instead of (or in addition to) searches. Use the handle from a collection URL, e.g. for hareruya2.com/collections/2025lb\_m2a enter '2025lb\_m2a'. Each product includes stock and tags directly.

## `maxListings` (type: `integer`):

Maximum number of products to return per search query or collection. Search returns 60 products per page.

## `scrapeDetails` (type: `boolean`):

For search results, also fetch each product's storefront JSON for stock status, set name (from tags), image and compare-at price. Adds one fast request per product. Collections already include this data. Turn off for the fastest price-only scrape.

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

Proxy settings. Hareruya2 serves its Shopify storefront directly and works without a proxy; enable Apify Proxy if you hit rate limits on very large runs.

## Actor input object example

```json
{
  "searchQueries": [
    "pikachu"
  ],
  "collectionHandles": [],
  "maxListings": 60,
  "scrapeDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "searchQueries": [
        "pikachu"
    ],
    "collectionHandles": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("lulzasaur/hareruya2-scraper").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 = {
    "searchQueries": ["pikachu"],
    "collectionHandles": [],
}

# Run the Actor and wait for it to finish
run = client.actor("lulzasaur/hareruya2-scraper").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 '{
  "searchQueries": [
    "pikachu"
  ],
  "collectionHandles": []
}' |
apify call lulzasaur/hareruya2-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lulzasaur/hareruya2-scraper"
        }
    }
}

```

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/ziYaLv09sFI2rI7Ft/builds/OqaJR7pDr5aeldLft/openapi.json
