# Rakuten Ichiba Product Scraper (`axlymxp/rakuten-ichiba-product-scraper`) Actor

Scrape Rakuten Ichiba (楽天市場) products — name, price in JPY, shop, review score & count, points, shipping, and optional full detail (description, variants, stock). Search by keyword, genre, or item URL. Clean JSON for price monitoring, market research and reselling. Pay only for results.

- **URL**: https://apify.com/axlymxp/rakuten-ichiba-product-scraper.md
- **Developed by:** [axly](https://apify.com/axlymxp) (community)
- **Categories:** E-commerce, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 dataset items

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

## Rakuten Ichiba Product Scraper 🛍️🇯🇵

Extract product listings from **Rakuten Ichiba (楽天市場)** — Japan's largest online
marketplace — as clean, structured JSON. Search by **keyword, genre, price and
sort**, or drop in **direct item URLs**, and get prices in JPY, shop info, review
scores, Rakuten points, shipping, and (optionally) the **full item detail**:
description, variants/SKUs, stock and availability.

Built on Rakuten's **open, anti-bot-free** search API — no CAPTCHA fights, no
flaky browser automation — so runs are fast and reliable.

***

### Who is this for?

| You are…                           | You use it to…                                                                           |
| ---------------------------------- | ---------------------------------------------------------------------------------------- |
| 🔁 **Reseller / arbitrage**        | Monitor competitor prices, points & stock across shops; feed repricing tools.            |
| 📊 **Market researcher / analyst** | Map a category or keyword landscape, brand presence and review signals on the JP market. |
| 🛒 **E-commerce / SaaS developer** | Get a stable, schema-consistent product feed you can schedule and pipe via webhook.      |
| 🧠 **AI / LLM builder**            | Feed structured Japanese marketplace data into agents and RAG pipelines.                 |

***

### What you get (output fields)

| Field                                | Type    | Description                                           |
| ------------------------------------ | ------- | ----------------------------------------------------- |
| `item_id`                            | string  | Rakuten item id.                                      |
| `name`                               | string  | Product title.                                        |
| `url`                                | string  | Canonical item page URL.                              |
| `price`                              | integer | Current price (JPY).                                  |
| `review_average`                     | number  | Average review score (0–5).                           |
| `review_count`                       | integer | Number of reviews.                                    |
| `points`                             | integer | Rakuten points earned.                                |
| `shipping_price`                     | integer | Shipping cost (JPY; 0 = free).                        |
| `free_shipping`                      | boolean | Whether shipping is free.                             |
| `is_sold_out`                        | boolean | Sold-out flag.                                        |
| `is_used`                            | boolean | Used / second-hand.                                   |
| `shop_id` / `shop_name` / `shop_url` | –       | Seller identity & storefront.                         |
| `genre_ids` / `genres`               | array   | Rakuten category path.                                |
| `image` / `images`                   | –       | Product image URLs.                                   |
| **Detail (optional)**                |         | *When “Include full detail” is on, or for item URLs:* |
| `description_html`                   | string  | Full HTML product description.                        |
| `variants`                           | array   | `{sku, price, quantity, back_order}` per variant.     |
| `available` / `availability_code`    | –       | Live availability.                                    |
| `points_value` / `tax_rate`          | number  | Points & tax detail.                                  |
| `source`                             | string  | Which input produced the row.                         |
| `scraped_at`                         | string  | ISO-8601 scrape timestamp.                            |

Full definitions in the dataset schema tab.

***

### High-value use cases

- **Price & points monitoring** — schedule daily runs on your SKUs/keywords and
  diff price, points and stock over time.
- **Competitive assortment analysis** — pull an entire genre to see who sells what,
  at what price, with what review strength.
- **Reselling / sourcing** — find under-priced, high-rating, free-shipping items
  across thousands of Rakuten shops.
- **Review-signal research** — rank a category by `review_average × review_count`
  to find proven best-sellers.
- **Catalog enrichment** — resolve a list of item URLs to full detail (variants,
  stock, description) for your own store or dataset.

***

### Input parameters

| Field                   | Type    | Default     | Description                                                  |
| ----------------------- | ------- | ----------- | ------------------------------------------------------------ |
| `searchQueries`         | array   | `[]`        | Keywords to search (one search each).                        |
| `itemUrls`              | array   | `[]`        | Direct item URLs or `shop/item` shorthand.                   |
| `genreId`               | integer | –           | Restrict searches to a Rakuten genre (category) id.          |
| `minPrice` / `maxPrice` | integer | –           | Price band in JPY.                                           |
| `sort`                  | enum    | `standard`  | `standard`, `priceAsc`, `priceDesc`, `newest`, `popularity`. |
| `usedOnly`              | boolean | `false`     | Only used items.                                             |
| `includeAds`            | boolean | `false`     | Include sponsored (PR) cards.                                |
| `includeDetails`        | boolean | `false`     | Enrich each product with full detail.                        |
| `maxItems`              | integer | `200`       | Global result cap.                                           |
| `maxItemsPerQuery`      | integer | `300`       | Organic rows per keyword.                                    |
| `proxyConfiguration`    | object  | Apify Proxy | Egress proxy.                                                |

#### Example input

```json
{
    "searchQueries": ["マグカップ", "coffee beans"],
    "sort": "popularity",
    "minPrice": 1000,
    "maxPrice": 5000,
    "includeDetails": true,
    "maxItems": 500,
    "maxItemsPerQuery": 250
}
```

#### Example output (one row)

```json
{
    "item_id": "10000832",
    "name": "ディーンアンドデルーカ モーニングマグ …",
    "url": "https://item.rakuten.co.jp/deandeluca/dd0050/",
    "price": 1540,
    "currency": "JPY",
    "review_average": 4.63,
    "review_count": 73,
    "points": 14,
    "shipping_price": 460,
    "free_shipping": false,
    "shop_id": 376432,
    "shop_name": "DEAN & DELUCA 公式",
    "genre_ids": ["558944", "566115", "566121", "566157"],
    "num_variants": 4,
    "available": true,
    "source": "search:マグカップ",
    "scraped_at": "2026-08-03T09:12:44Z"
}
```

***

### Scheduling & integrations

- **Schedule** daily/hourly runs from the Apify Console for continuous price/stock
  monitoring.
- **Webhooks** fire on run completion — push new results straight into your app.
- **Export** to JSON, CSV, Excel, or Google Sheets; stream to S3 or a database via
  the Apify API/integrations (Make, Zapier).

### Use with AI assistants (MCP)

This Actor works as a tool for AI agents through the **Apify MCP server**, so a
Claude/ChatGPT-style assistant can search Rakuten Ichiba and read structured
product data on demand. Point your MCP client at Apify and call this Actor by name.

***

### FAQ

**Is there a result limit?** Rakuten returns up to ~6,750 items per keyword. Split
by genre or price band, or use many keywords, to go wider.

**How fresh is the data?** Every run fetches live data at request time.

**Do I need a Rakuten account or API key?** No. The Actor uses Rakuten's public
web search and a built-in guest token for detail — no credentials required.

**Does it get blocked?** The web search endpoint has no anti-bot gate, so runs are
stable. The default Apify Proxy provides a clean, consistent IP.

**Japanese text?** Output preserves original Japanese (UTF-8). Item names, shops,
and descriptions come through exactly as on Rakuten.

**Is scraping this legal?** You are responsible for how you use the data. This
Actor collects only publicly available listing information; review Rakuten's terms
and your local regulations before large-scale or commercial use.

**Something looks off / a field is missing?** Rakuten occasionally changes their
payloads. Report an issue on the Actor page and it will be fixed quickly.

# Actor input Schema

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

Keywords to search on Rakuten Ichiba (one search per keyword). Japanese or English. Leave empty if you only use item URLs.

## `itemUrls` (type: `array`):

Direct Rakuten item page URLs (item.rakuten.co.jp/<shop>/<item>/) to fetch. Each returns a full product row with detail. Also accepts <shop>/<item> shorthand.

## `genreId` (type: `integer`):

Restrict searches to a Rakuten genre (category) ID. Find it in a category URL (…/category/<genreId>/) or leave empty for all categories.

## `minPrice` (type: `integer`):

Only include products priced at or above this amount, in yen.

## `maxPrice` (type: `integer`):

Only include products priced at or below this amount, in yen.

## `sort` (type: `string`):

Result ordering for keyword searches.

## `usedOnly` (type: `boolean`):

Return only used (second-hand) items. Off = new and used.

## `includeAds` (type: `boolean`):

Include sponsored/CPC ad cards in the results. Off = organic listings only (cleaner data).

## `includeDetails` (type: `boolean`):

Enrich every product with the full item detail from Rakuten's mobile API: HTML description, sales copy, variants (SKU/price/stock), availability, tax and points detail. One extra request per product (slower, richer). Item URLs always include detail.

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

Global cap across all queries and URLs. The run stops once this many products are pushed.

## `maxItemsPerQuery` (type: `integer`):

Cap results per keyword (Rakuten returns up to ~6750 per query). Lower this to sample across many keywords.

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

Egress proxy. Rakuten's read APIs work from most connections; the default Apify Proxy provides a stable IP.

## Actor input object example

```json
{
  "searchQueries": [
    "マグカップ",
    "coffee beans"
  ],
  "itemUrls": [
    "https://item.rakuten.co.jp/deandeluca/dd0050/"
  ],
  "sort": "standard",
  "usedOnly": false,
  "includeAds": false,
  "includeDetails": false,
  "maxItems": 200,
  "maxItemsPerQuery": 300,
  "proxyConfiguration": {
    "useApifyProxy": 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 = {
    "searchQueries": [
        "マグカップ"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("axlymxp/rakuten-ichiba-product-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": ["マグカップ"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("axlymxp/rakuten-ichiba-product-scraper").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 '{
  "searchQueries": [
    "マグカップ"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call axlymxp/rakuten-ichiba-product-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=axlymxp/rakuten-ichiba-product-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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