# Rakuten Product Scraper (`sian.agency/rakuten-product-scraper`) Actor

Scrape Rakuten Ichiba products — price (JPY), points, ratings, reviews, shop, genre, images, specs & stock. Keyword or genre search, full detail enrichment, clean JSON/CSV, no code.

- **URL**: https://apify.com/sian.agency/rakuten-product-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** E-commerce, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 overview product extracteds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Product Scraper — Prices, Points, Specs & Stock in JSON 🚀

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Amazon Product Scraper](https://img.shields.io/badge/Store-Amazon%20Product%20Scraper-FF9900)](https://apify.com/sian.agency/amazon-product-scraper?fpr=sian) [![Yodobashi Product Scraper](https://img.shields.io/badge/Store-Yodobashi%20Product%20Scraper-1AE392)](https://apify.com/sian.agency/yodobashi-product-scraper?fpr=sian) [![Google Shopping Price Scraper](https://img.shields.io/badge/Store-Google%20Shopping%20Price%20Scraper-4285F4)](https://apify.com/sian.agency/google-shopping-price-scraper?fpr=sian)

#### 🎉 Turn any Rakuten Ichiba search into a clean dataset — 25 fields per product, with tax-included JPY prices, Rakuten points, ratings, stock and full spec sheets.
##### Built for e-commerce sellers, pricing analysts and Japan-market researchers who need reliable 楽天 (Rakuten) data without writing a single line of code.

---

### 📋 Overview

**Rakuten Ichiba is Japan's #1 online marketplace — and this Rakuten product scraper turns it into structured data on demand.** Type a keyword (Japanese or English), pick a category, or target a single shop, and get back a clean spreadsheet of every product: price, points, reviews, availability and more.

**Why thousands of professionals choose us:**
- ✅ **No account, no API key, no code**: Paste keywords, hit Start, download JSON/CSV/Excel. That's the whole workflow.
- ⚡ **Two modes, one dataset**: Fast **Overview** pulls ~45 products per page; **Detail** enriches each one with the full spec table, long description and complete image gallery.
- 🎯 **25 structured fields per product**: item code, title, JPY price, Rakuten points, free-shipping flag, shop, genre, rating, review count, images and live stock — decision-ready every time.
- 💰 **Pay-per-result pricing**: You're charged only for products you actually extract. Start free — no credit card needed.
- 💎 **Native Rakuten filters**: Sort, price band, genre id and shop code mirror the exact controls real shoppers use, so your data matches what buyers see.
- ✨ **NEW**: Authoritative tax-included price scraped straight from each product page in Detail mode — the number your customers actually pay.

---

### ✨ Features

- 🔍 **Keyword search (JP + ASCII)**: Search `コーヒー`, `coffee`, `ワイヤレスイヤホン` or any term — exactly like the Rakuten Ichiba search bar.
- 🧭 **Genre & category browsing**: Scope a keyword to a Rakuten category, or sweep an entire genre with no keyword at all.
- 🏬 **Single-shop targeting**: Restrict results to one Rakuten storefront by shop code for competitor or supplier monitoring.
- 🔃 **Native sort orders**: Standard relevance, price low→high, price high→low, newest arrivals or most reviewed.
- 💵 **Price-band filtering**: Set min/max price in JPY to capture only the segment you care about.
- 🎁 **Rakuten points capture**: Every record includes the loyalty points a purchase earns — critical for true landed-cost analysis in Japan.
- 🚚 **Free-shipping flag**: Instantly see which listings ship free.
- 🔬 **Detail enrichment**: Full specifications table, long product description and the complete image gallery per product.
- 📸 **Full image galleries**: Every product image URL, ready for feeds and catalogs.
- 📊 **Clean JSON / CSV / Excel export**: One search in, one tidy dataset out — no reshaping required.

---

### 🎬 Quick Start

Add one or more keywords, choose Overview or Detail, set how many results you want, and run. Results stream into the Apify dataset as clean rows you can export or pull via API. Most first runs finish in under a minute.

```bash
curl -X POST https://api.apify.com/v2/acts/sian.agency~rakuten-product-scraper/runs?token=YOUR_TOKEN \
-H 'Content-Type: application/json' \
-d '{"keywords": ["コーヒー"], "scrapeMode": "overview", "maxResults": 25}'
````

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Add your keywords

Enter one or more search terms — Japanese (`プロテイン`) or English (`coffee`), one per line. No account or API key required.

#### Step 2: Choose your depth

Pick **Overview** for fast, wide catalog sweeps, or **Detail** to enrich every product with its full spec sheet, description and image gallery.

#### Step 3: Run and export

Hit Start, then download your results as JSON, CSV or Excel — or pull them straight from the dataset API.

**That's it! In under a minute, you'll have:**

- A clean table of Rakuten Ichiba products with prices, points and stock
- Ratings, review counts and shop details for every listing
- Export-ready data for pricing sheets, feeds or dashboards

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `keywords` | array | No\* | Free-text Rakuten Ichiba searches (Japanese or ASCII), one per line |
| `scrapeMode` | string | No | `overview` (fast) or `detail` (adds specs, description & full gallery) |
| `sort` | string | No | `standard`, `price_asc`, `price_desc`, `newest` or `reviews` |
| `minPrice` | integer | No | Only return products at or above this price (JPY) |
| `maxPrice` | integer | No | Only return products at or below this price (JPY) |
| `genreId` | string | No | Rakuten category id — scope a keyword, or sweep a whole genre (advanced) |
| `shopCode` | string | No | Restrict results to a single Rakuten shop (advanced) |
| `maxResults` | integer | No | Max products across all keywords (FREE: 25, PAID: unlimited) |

\* Provide at least one `keyword` **or** a `genreId` so there's something to scrape.

**Example (keyword search):**

```json
{
  "keywords": ["コーヒー"],
  "scrapeMode": "overview",
  "sort": "reviews",
  "maxResults": 100
}
```

**Bulk keywords + filters:**

```json
{
  "keywords": ["coffee", "ワイヤレスイヤホン", "プロテイン"],
  "scrapeMode": "detail",
  "minPrice": 1000,
  "maxPrice": 10000,
  "sort": "price_asc",
  "maxResults": 500
}
```

***

### 📤 Output

Results are saved to the Apify dataset with **25 structured fields** including:

| Field | Type | Description |
|-------|------|-------------|
| `productTitle` | string | Full product name as shown on Rakuten Ichiba |
| `price` | integer | Current tax-included price in Japanese yen (JPY) |
| `currency` | string | ISO currency code (JPY) |
| `points` | integer | Rakuten points earned on purchase |
| `free_shipping` | boolean | Whether postage is free |
| `review_average` | number | Average customer rating (0–5) |
| `review_count` | integer | Total number of reviews |
| `availability` | boolean | Whether the product is in stock |
| `shop_name` | string | Rakuten shop selling the item |
| `shop_url` | string | Link to the shop's storefront |
| `genre_id` | string | Rakuten genre (category) id |
| `item_code` | string | Canonical Rakuten product key |
| `url` | string | Direct link to the product page |
| `thumbnail` | string | Primary product image URL |
| `images` | array | Full image gallery (complete in Detail mode) |
| `specs` | object | Full key-value specifications table (Detail mode) |
| `description` | string | Long product description (Detail mode) |

Plus `item_id`, `catchcopy`, `shop_code`, `tag_ids`, `image_count`, `item_caption`, `source` and run `metadata`.

**Example:**

```json
{
  "thumbnail": "https://thumbnail.image.rakuten.co.jp/@0_mall/ajitokurashi/cabinet/coffee/drip-01.jpg",
  "item_code": "ajitokurashi:10000123",
  "item_id": 10000123,
  "productTitle": "ドリップコーヒー 100杯分 深煎りブレンド 自家焙煎",
  "url": "https://item.rakuten.co.jp/ajitokurashi/drip-100/",
  "source": "overview",
  "catchcopy": "送料無料 まとめ買いでお得",
  "price": 1980,
  "currency": "JPY",
  "points": 19,
  "free_shipping": true,
  "shop_name": "味と暮らし 楽天市場店",
  "shop_code": "ajitokurashi",
  "shop_url": "https://www.rakuten.co.jp/ajitokurashi/",
  "genre_id": "303017",
  "tag_ids": [1000317, 1002679],
  "review_average": 4.52,
  "review_count": 1843,
  "availability": true,
  "images": ["https://thumbnail.image.rakuten.co.jp/@0_mall/ajitokurashi/cabinet/coffee/drip-01.jpg"],
  "image_count": 1,
  "item_caption": "深煎りの香り高いドリップコーヒー",
  "description": null,
  "specs": {},
  "metadata": {
    "scrapeMode": "overview",
    "searches": ["コーヒー"],
    "sort": "standard",
    "userTier": "PAID",
    "scrapedAt": "2026-07-14T09:12:44Z"
  }
}
```

***

### 💼 Use Cases & Examples

#### 1. Price & Rakuten-points monitoring

**Sellers and pricing analysts tracking how their catalog stacks up on Japan's biggest marketplace.**

**Input:** Your product keywords or genre id, on a daily schedule
**Output:** JPY prices, Rakuten points and free-shipping flags per listing
**Use:** Spot undercuts, protect margin and factor loyalty points into true landed cost.

#### 2. Competitor pricing intelligence

**Brands and agencies benchmarking rivals across Rakuten Ichiba shops.**

**Input:** Competitor keywords or a specific `shopCode`
**Output:** Live prices, points, ratings and stock for every matching product
**Use:** Build a Rakuten price scraper feed that shows exactly where you sit versus the market.

#### 3. Catalog & assortment research

**Category managers mapping what sells in a Japanese product category.**

**Input:** A Rakuten `genreId` swept with no keyword
**Output:** The full assortment — titles, prices, shops and review signals
**Use:** Find whitespace, size the category and prioritize new SKUs.

#### 4. In-stock & availability checks

**Operations teams monitoring whether key products are purchasable right now.**

**Input:** Exact product keywords or shop code, run frequently
**Output:** A boolean availability flag plus price on every record
**Use:** Trigger restock alerts and catch out-of-stock competitors.

#### 5. Product-spec extraction for feeds

**Marketplace and comparison sites that need complete product detail.**

**Input:** Keywords in **Detail** mode
**Output:** Full specifications table, long description and every image URL
**Use:** Populate product feeds, PDPs and comparison pages with rich Rakuten Ichiba data.

#### 6. Japan market & demand research

**Analysts studying pricing, popularity and demand signals in Japan e-commerce.**

**Input:** Broad keywords sorted by `reviews` or `newest`
**Output:** Ratings, review counts and price distributions across shops
**Use:** Quantify demand, track trends and inform Japan market-entry decisions.

***

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/rakuten-product-scraper').call({
  keywords: ['コーヒー'],
  scrapeMode: 'overview',
  maxResults: 100,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/rakuten-product-scraper').call(
    run_input={'keywords': ['coffee'], 'scrapeMode': 'detail', 'maxResults': 100}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~rakuten-product-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"keywords": ["コーヒー"], "scrapeMode": "overview", "maxResults": 100}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: Schedule (e.g. daily price check) or webhook
2. **HTTP Request**: Call the actor API with your keywords
3. **Process**: Handle the JSON results — compare prices, flag stock-outs
4. **Action**: Save to a sheet, push to a dashboard or send an alert

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **25 products** per run — full feature access, same data quality
- No credit card required
- Perfect for testing keywords and small projects

#### PAID Tier (Production Ready)

- **Unlimited** products per run — scrape entire catalogs and genres in one go
- Faster, uninterrupted runs
- Pay-per-result: you're charged only for products successfully extracted

💰 **Best price on the market** — transparent pay-per-result pricing with a genuinely free tier, so you only pay for the Rakuten Ichiba data you keep.

🔗 [View current pricing](https://apify.com/sian.agency/rakuten-product-scraper?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: How many products can I scrape?**
A: FREE tier: up to 25 products per run. PAID tier: unlimited — sweep whole genres or catalogs in a single run.

**Q: Do I need a Rakuten account or an API key?**
A: No. Just enter keywords and run — no account, no API key, no code.

**Q: Can I search in Japanese?**
A: Yes. Keywords work in Japanese (`コーヒー`, `ワイヤレスイヤホン`) or English (`coffee`) — exactly like the Rakuten Ichiba search bar.

**Q: What's the difference between Overview and Detail mode?**
A: Overview is the fast path (~45 products per page) with prices, points, ratings and stock. Detail adds the full specifications table, the long product description, the complete image gallery and the authoritative tax-included price from each product page.

**Q: Are prices tax-included and in yen?**
A: Yes. Prices are in Japanese yen (JPY), and Detail mode captures the authoritative tax-included price shown on the product page.

**Q: What output formats are available?**
A: JSON, CSV and Excel — export directly from the Apify dataset or pull via API.

**Q: Can I limit results to one shop or category?**
A: Yes. Use `shopCode` to restrict to a single Rakuten shop, or `genreId` to scope or sweep an entire category.

**Q: Is this legal?**
A: Yes — the actor only extracts publicly available product data. See the legal section below.

***

### 🐛 Troubleshooting

**No results returned**

- Make sure you provided at least one keyword **or** a `genreId`.
- Widen your `minPrice`/`maxPrice` band — tight filters can exclude everything.
- Try a broader keyword; very specific phrases may match few or no listings.

**Fewer results than expected**

- Check `maxResults` — on the FREE tier it caps at 25 products per run.
- Some keywords simply have a small catalog on Rakuten Ichiba.

**Missing specs or description**

- Those fields are populated in **Detail** mode only. Switch `scrapeMode` to `detail`.

**Shop filter returns nothing**

- Verify the `shopCode` matches the first path segment of an item URL: `item.rakuten.co.jp/<shopCode>/...`.

***

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

> **Trademark disclaimer:** Rakuten Product Scraper is an independent tool and is **not affiliated with, endorsed by, or sponsored by Rakuten**. "Rakuten", "Rakuten Ichiba" (楽天市場) and related marks are trademarks of their respective owners. This actor accesses only publicly available data and is intended for lawful, ethical use.

***

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue in the actor's repository
- Check the [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

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

🔍 **KEYWORD SEARCH:** Free-text Rakuten Ichiba searches — exactly what you'd type into the site's search bar. Japanese or ASCII both work.

📝 **EXAMPLES:** `コーヒー` · `coffee` · `iphone ケース` · `ワイヤレスイヤホン` · `プロテイン`

💡 **TIP:** Add one keyword per line — each runs as its own search and all results land in the same dataset.

🖊️ **BULK EDIT:** Click "Bulk edit" to paste many keywords at once (one per line).

✅ **IMPORTANT:** Provide at least one keyword OR a genre id (below) so there's something to scrape.

## `scrapeMode` (type: `string`):

⚙️ **SCRAPE DEPTH:** Choose how much data to pull per product.

⚡ **Overview (fast):** Search results only — item code, title, price (JPY), Rakuten points, free-shipping flag, shop, genre, rating, review count, image & availability. Fastest and cheapest path (~45 products per page).

🔬 **Detail (enriched specs + description):** Everything in Overview PLUS the full specifications table, the long product description, the complete image gallery and the authoritative tax-included price scraped from each product page.

💡 **TIP:** Start with Overview to scope your catalog, then switch to Detail when you need the complete spec sheet for feeds or comparisons.

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

🔃 **RESULT ORDERING:** Order search results using Rakuten's own native sort options — so you get the same ranking real shoppers see.

🎯 **Standard** is Rakuten's relevance ranking · 💲 **Price** sorts ascending or descending · ⭐ **Most reviewed** leads with the most-reviewed items · 🆕 **Newest** prioritizes the latest arrivals.

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

💵 **MINIMUM PRICE:** Only return products at or above this price in Japanese yen (JPY). Leave blank for no lower bound.

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

💰 **MAXIMUM PRICE:** Only return products at or below this price in Japanese yen (JPY). Leave blank for no upper bound.

## `genreId` (type: `string`):

🧭 **GENRE (CATEGORY) BROWSING (Advanced):** Scope a search to a Rakuten genre, or scrape a whole genre with no keyword at all.

🔧 **HOW TO GET IT:** Open any Rakuten category page — the numeric genre id appears in the URL (e.g. `303017` for drip coffee). You can also read it off the `genre_id` field of any result this actor returns.

💡 **TIP:** Combine it with a keyword to narrow that keyword to a category, or use it alone to sweep a whole genre.

## `shopCode` (type: `string`):

🏬 **SHOP FILTER (Advanced):** Restrict results to a single Rakuten shop by its shop code (e.g. `ajinomoto`). The shop code is the first path segment of any item URL: `item.rakuten.co.jp/<shopCode>/...`.

⚠️ **NOTE:** The shop filter is applied by Rakuten's official API path (used automatically when a Rakuten App ID is configured). Leave blank to include every shop.

## `maxResults` (type: `integer`):

🔢 **RESULT CAP:** Maximum number of products to return across all keywords combined.

🎁 **TIER-BASED LIMITS:**

- **FREE users:** Up to 25 products per run
- **PAID users:** Unlimited — scrape entire catalogs in a single run

💡 **TIP:** Keep this low while you dial in your keywords, then raise it once the output looks right.

## Actor input object example

```json
{
  "keywords": [
    "コーヒー"
  ],
  "scrapeMode": "overview",
  "sort": "standard",
  "maxResults": 100
}
```

# Actor output Schema

## `rakutenProducts` (type: `string`):

Scraped Rakuten Ichiba products with prices, points, ratings, images, specs and availability.

# 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("sian.agency/rakuten-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 = { "keywords": ["コーヒー"] }

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/rakuten-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 '{
  "keywords": [
    "コーヒー"
  ]
}' |
apify call sian.agency/rakuten-product-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Rakuten Product Scraper",
        "description": "Scrape Rakuten Ichiba products — price (JPY), points, ratings, reviews, shop, genre, images, specs & stock. Keyword or genre search, full detail enrichment, clean JSON/CSV, no code.",
        "version": "1.0",
        "x-build-id": "PJlzzLMDnTljp9S9F"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~rakuten-product-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-rakuten-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/sian.agency~rakuten-product-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-rakuten-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/sian.agency~rakuten-product-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-rakuten-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "keywords": {
                        "title": "🔍 Search Keywords",
                        "type": "array",
                        "description": "🔍 **KEYWORD SEARCH:** Free-text Rakuten Ichiba searches — exactly what you'd type into the site's search bar. Japanese or ASCII both work.\n\n📝 **EXAMPLES:** `コーヒー` · `coffee` · `iphone ケース` · `ワイヤレスイヤホン` · `プロテイン`\n\n💡 **TIP:** Add one keyword per line — each runs as its own search and all results land in the same dataset.\n\n🖊️ **BULK EDIT:** Click \"Bulk edit\" to paste many keywords at once (one per line).\n\n✅ **IMPORTANT:** Provide at least one keyword OR a genre id (below) so there's something to scrape.",
                        "default": [
                            "コーヒー"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "scrapeMode": {
                        "title": "⚙️ Scrape Mode",
                        "enum": [
                            "overview",
                            "detail"
                        ],
                        "type": "string",
                        "description": "⚙️ **SCRAPE DEPTH:** Choose how much data to pull per product.\n\n⚡ **Overview (fast):** Search results only — item code, title, price (JPY), Rakuten points, free-shipping flag, shop, genre, rating, review count, image & availability. Fastest and cheapest path (~45 products per page).\n\n🔬 **Detail (enriched specs + description):** Everything in Overview PLUS the full specifications table, the long product description, the complete image gallery and the authoritative tax-included price scraped from each product page.\n\n💡 **TIP:** Start with Overview to scope your catalog, then switch to Detail when you need the complete spec sheet for feeds or comparisons.",
                        "default": "overview"
                    },
                    "sort": {
                        "title": "🔃 Sort Order",
                        "enum": [
                            "standard",
                            "price_asc",
                            "price_desc",
                            "newest",
                            "reviews"
                        ],
                        "type": "string",
                        "description": "🔃 **RESULT ORDERING:** Order search results using Rakuten's own native sort options — so you get the same ranking real shoppers see.\n\n🎯 **Standard** is Rakuten's relevance ranking · 💲 **Price** sorts ascending or descending · ⭐ **Most reviewed** leads with the most-reviewed items · 🆕 **Newest** prioritizes the latest arrivals.",
                        "default": "standard"
                    },
                    "minPrice": {
                        "title": "💵 Min Price (JPY)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "💵 **MINIMUM PRICE:** Only return products at or above this price in Japanese yen (JPY). Leave blank for no lower bound."
                    },
                    "maxPrice": {
                        "title": "💰 Max Price (JPY)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "💰 **MAXIMUM PRICE:** Only return products at or below this price in Japanese yen (JPY). Leave blank for no upper bound."
                    },
                    "genreId": {
                        "title": "🧭 Genre / Category ID (Advanced)",
                        "type": "string",
                        "description": "🧭 **GENRE (CATEGORY) BROWSING (Advanced):** Scope a search to a Rakuten genre, or scrape a whole genre with no keyword at all.\n\n🔧 **HOW TO GET IT:** Open any Rakuten category page — the numeric genre id appears in the URL (e.g. `303017` for drip coffee). You can also read it off the `genre_id` field of any result this actor returns.\n\n💡 **TIP:** Combine it with a keyword to narrow that keyword to a category, or use it alone to sweep a whole genre."
                    },
                    "shopCode": {
                        "title": "🏬 Shop Code (Advanced)",
                        "type": "string",
                        "description": "🏬 **SHOP FILTER (Advanced):** Restrict results to a single Rakuten shop by its shop code (e.g. `ajinomoto`). The shop code is the first path segment of any item URL: `item.rakuten.co.jp/<shopCode>/...`.\n\n⚠️ **NOTE:** The shop filter is applied by Rakuten's official API path (used automatically when a Rakuten App ID is configured). Leave blank to include every shop."
                    },
                    "maxResults": {
                        "title": "🔢 Max Results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "🔢 **RESULT CAP:** Maximum number of products to return across all keywords combined.\n\n🎁 **TIER-BASED LIMITS:**\n- **FREE users:** Up to 25 products per run\n- **PAID users:** Unlimited — scrape entire catalogs in a single run\n\n💡 **TIP:** Keep this low while you dial in your keywords, then raise it once the output looks right.",
                        "default": 100
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
