# Rakuten Marketplace Scraper (`hassy/rakuten-marketplace-scraper`) Actor

Extract product data from Rakuten Japan marketplace efficiently. Get product names, prices, reviews, availability, and more using official Rakuten API. Perfect for market research, price monitoring, and competitive analysis.
楽天市場の商品データを効率的に収集。公式APIを使用して商品名、価格、レビュー、在庫状況などを取得。市場調査、価格監視、競合分析に最適。

- **URL**: https://apify.com/hassy/rakuten-marketplace-scraper.md
- **Developed by:** [Hassy](https://apify.com/hassy) (community)
- **Categories:** E-commerce
- **Stats:** 50 total users, 1 monthly users, 0.0% runs succeeded, 3 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Rakuten Marketplace Scraper

Extract comprehensive product data from Rakuten Japan, the country's largest e-commerce marketplace, using the official Rakuten API for reliable and accurate data collection.

### 🚀 What does this Actor do?

This Actor efficiently extracts product information from Rakuten Japan marketplace, providing structured data perfect for:

- **Market Research**: Analyze product trends and pricing strategies
- **Competitive Analysis**: Monitor competitor products and pricing
- **Price Monitoring**: Track price changes over time
- **Product Discovery**: Find new products and suppliers
- **Data Analytics**: Build comprehensive e-commerce datasets

### 📊 Data Extracted

For each product, you'll get:

- **Product Name**: Complete product title
- **Price**: Current selling price (¥)
- **Shop Information**: Store name and URL
- **Reviews**: Average rating and review count
- **Availability**: Stock status
- **Product URL**: Direct link to product page
- **Product Code**: Unique identifier
- **Images**: Product image URLs
- **Category**: Product genre/category
- **Timestamp**: When data was extracted

### 🔧 Input Configuration

#### Required Parameters

- **keyword** (string): Search term for products (e.g., "iPhone", "ノートパソコン")

#### Optional Parameters

- **maxItems** (number): Maximum products to extract (1-1000, default: 100)
- **sort** (string): Sort order
  - `standard`: Default relevance
  - `+itemPrice`: Price ascending
  - `-itemPrice`: Price descending
  - `+reviewCount`: Review count ascending
  - `-reviewCount`: Review count descending
- **genreId** (string): Specific category ID to filter results
- **shopCode** (string): Extract from specific shop only
- **startPage** (number): Starting page number (default: 1)

### 📋 Example Input

```json
{
  "keyword": "GoPro",
  "maxItems": 50,
  "sort": "-reviewCount"
}
```

### 📤 Output Format

Data is exported in JSON format with the following structure:

```json
{
  "itemName": "GoPro HERO12 Black アクションカメラ",
  "itemPrice": 59800,
  "itemUrl": "https://item.rakuten.co.jp/...",
  "itemCode": "shop:12345",
  "shopName": "GoPro公式ストア",
  "shopUrl": "https://www.rakuten.co.jp/gopro/",
  "reviewCount": 156,
  "reviewAverage": 4.8,
  "availability": true,
  "imageUrl": "https://thumbnail.image.rakuten.co.jp/...",
  "genreName": "TV・オーディオ・カメラ",
  "catchcopy": "国内正規品",
  "scrapedAt": "2025-09-17T21:36:48.385Z"
}
```

### 🛡️ Features & Benefits

#### ✅ Official API Integration

- Uses Rakuten's official API for reliable data access
- No risk of IP blocking or rate limiting issues
- Always up-to-date with latest product information

#### ✅ Smart Rate Limiting

- Built-in delays to respect API limits
- Automatic retry logic for failed requests
- Optimized for maximum efficiency

#### ✅ Data Quality

- Comprehensive error handling
- Data validation and normalization
- Consistent output format

#### ✅ Scalable Performance

- Handle large datasets efficiently
- Pagination support for extensive searches
- Memory-optimized processing

### 🔑 Setup Requirements

To use this Actor, you'll need a **Rakuten Application ID**:

1. Visit [Rakuten Web Service](https://webservice.rakuten.co.jp/)
2. Register for a free developer account
3. Create a new application
4. Copy your Application ID
5. Add it to your Apify account secrets as `RAKUTEN_APP_ID`

**Note**: The Actor includes a demo mode that works without an API key for testing purposes.

### 💡 Use Cases

#### E-commerce Businesses

- Monitor competitor pricing strategies
- Discover trending products in your niche
- Analyze market demand and pricing patterns

#### Market Researchers

- Collect comprehensive product datasets
- Track seasonal pricing trends
- Analyze consumer review patterns

#### Data Analysts

- Build machine learning datasets
- Perform price elasticity analysis
- Create market intelligence reports

#### Dropshippers

- Find profitable products to sell
- Monitor supplier pricing changes
- Identify high-demand, low-competition items

### 🌐 Language Support

This Actor supports both Japanese and English:

- **日本語**: 楽天市場の商品データを効率的に収集
- **English**: Extract product data from Rakuten Japan marketplace

### 📈 Performance

- **Speed**: ~10-30 products per minute (depending on API limits)
- **Reliability**: 99%+ success rate with built-in error handling
- **Scalability**: Handle 1000+ products in a single run
- **Memory**: Optimized for large datasets

### 🔒 Compliance & Ethics

- Uses official Rakuten API (no scraping violations)
- Respects rate limits and terms of service
- No personal data collection
- GDPR compliant data handling

### 🆘 Support

Need help? Contact us:

- GitHub Issues: Report bugs or request features
- Documentation: Comprehensive guides and examples
- Community: Join our Discord for tips and tricks

### 📄 License

This Actor is available under the MIT License. See LICENSE file for details.

***

**Ready to extract Rakuten marketplace data?** Click "Try for free" to get started!

*Built with ❤️ for the e-commerce community*

# Actor input Schema

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

Product search term (e.g., 'iPhone', 'ノートパソコン', 'GoPro')

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

Maximum number of products to extract (1-1000)

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

How to sort the search results

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

Rakuten genre ID to filter by specific category

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

Extract products from specific shop only

## `startPage` (type: `integer`):

Page number to start extraction from

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

Proxy settings for requests

## Actor input object example

```json
{
  "keyword": "GoPro",
  "maxItems": 50,
  "sort": "standard",
  "genreId": "559887",
  "shopCode": "gopro",
  "startPage": 1,
  "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 = {
    "keyword": "GoPro"
};

// Run the Actor and wait for it to finish
const run = await client.actor("hassy/rakuten-marketplace-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 = { "keyword": "GoPro" }

# Run the Actor and wait for it to finish
run = client.actor("hassy/rakuten-marketplace-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 '{
  "keyword": "GoPro"
}' |
apify call hassy/rakuten-marketplace-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hassy/rakuten-marketplace-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/cH6jC0hYCwR79FgQC/builds/VXIZpys8qTMiRE5Cs/openapi.json
