# Qoo10 Japan Scraper | 1$/1k Cheap (`trev0n/qoo10-japan-scraper`) Actor

Scrape Qoo10 Japan (qoo10.jp) product listings by keyword or category — or paste any Qoo10 URL. Get title, sale & list price, discount, rating, reviews, seller, ship-from country, Q-points and images. Optional full product details and incremental monitoring for cheap daily runs.

- **URL**: https://apify.com/trev0n/qoo10-japan-scraper.md
- **Developed by:** [Paweł](https://apify.com/trev0n) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 4 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.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 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

## 🛒 Qoo10 Japan Scraper

🎯 **Turn Qoo10 Japan into a clean product feed — prices, discounts, ratings, sellers and shipping, ready in seconds.**

This scraper collects **structured product data** from Qoo10 Japan (qoo10.jp): product titles, sale & list prices, discount rates, star ratings, review counts, seller names, ship-from country, reward points and images. Search by keyword, browse a whole category, or paste your own Qoo10 links — then export everything to a spreadsheet in one click.

### 🚀 What Does It Do?

This scraper automatically searches Qoo10 Japan and collects **ready-to-use product data** — no manual browsing, no copy-pasting. Just set your keyword or category, hit Start, and get a tidy table of every matching product.

💡 **Two modes of operation:**

1. **🔍 Discovery Mode** — Enter a keyword and/or pick a category, and the scraper walks the search results page by page, pulling every product it finds.
2. **📋 Direct URL Mode** — Paste any Qoo10 search page, category page or product link, and it scrapes exactly those.

### 👥 Who Is This For?

| 🏢 Use Case | 💬 How It Helps |
| --- | --- |
| 📊 **E-commerce sellers** | Track competitor prices, discounts and best-sellers across Qoo10 Japan |
| 💄 **Beauty & K-brand resellers** | Monitor Korean skincare & cosmetics pricing and new arrivals in Japan |
| 🔎 **Price-comparison sites** | Feed live Qoo10 prices and reward points into your platform |
| 📈 **Market researchers** | Analyse assortments, ratings and shipping origins by category |
| 🛍️ **Deal & coupon publishers** | Surface the biggest discounts and sponsored deals automatically |
| 🤝 **Dropshippers** | Build product catalogs with images, prices and seller details |

### ✨ Features

- 🌐 **Full Qoo10 Japan coverage** — Search the entire store or drill into any of 14 curated categories
- 🈶 **Japanese & Latin search** — Works with `マウス`, `serum`, `iphone case` — anything you'd type into Qoo10
- 💰 **Rich pricing** — Sale price, original list price, discount amount, discount % and Q-points reward
- ⭐ **Ratings & reviews** — Star rating and review count straight from the results
- 🏪 **Seller & shipping** — Seller name, shop link, seller grade and ship-from country
- 🖼️ **Product images** — Main image on every result, full gallery in detail mode
- 🔬 **Optional full details** — Open each product for brand, description, availability, condition, category and every photo
- 🎛️ **Smart Filters** — Price range, minimum rating, minimum reviews, ship-from country, exclude sponsored, title contains
- 🔄 **Incremental Monitoring** — On repeat runs, get only what changed (new products, price drops) — 80–95% cheaper
- ♻️ **Deduplication** — Sponsored rows and repeats are removed automatically
- ⚡ **Fast & Scalable** — Hundreds of products per run, no browser overhead
- 📤 **Export Anywhere** — Download results as JSON, CSV, Excel, or push to Google Sheets, Zapier, Make, or your CRM

### 🎛️ Filters & Options

| Option | What It Does |
| --- | --- |
| 🔎 **Search keyword** | The term to search for on Qoo10 Japan (Japanese or Latin text) |
| 🗂️ **Category** | Restrict to a Qoo10 category (skincare, shoes, supplements, and more) |
| 💴 **Min / Max price** | Keep only products within your price range (JPY) |
| ⭐ **Min rating** | Keep only products at or above a star rating |
| 🗣️ **Min reviews** | Keep only products with at least this many reviews |
| 🌏 **Ships from** | Keep only products shipped from Japan, Korea, China and more |
| 🚫 **Exclude sponsored** | Drop the promoted "PR" products from your results |
| 🔤 **Title contains** | Quickly refine a broad search by a word in the title |
| 🔬 **Full product details** | Open each product for brand, description, gallery, availability and category |
| 🔢 **Max items** | Control how many products to extract per run |
| 🔗 **Direct URLs** | Optionally provide specific Qoo10 URLs to scrape |

### 📦 What You Get (Output Fields)

Every product includes:

#### Product Info

| Field | Example |
| --- | --- |
| productId | `1209235072` |
| title | `エクソソーム保湿アンプル 30ml 韓国コスメ 韓国ブランド 公式ショップ` |
| productUrl | `https://www.qoo10.jp/item/ONINGVIBE-...30ML.../1209235072` |
| imageUrl | `https://gd.image-qoo10.jp/li/072/235/...g_300-w-st_g.jpg` |
| imageCount | `15` |

#### Pricing

| Field | Example |
| --- | --- |
| price | `2808` |
| listPrice | `4680` |
| priceCurrency | `JPY` |
| discountAmount | `1872` |
| discountRate | `40` |
| hasDiscount | `true` |
| qPoints | `28` |

#### Ratings

| Field | Example |
| --- | --- |
| rating | `4.7` |
| reviewCount | `8861` |

#### Seller & Shipping

| Field | Example |
| --- | --- |
| sellerName | `Oningvibe` |
| sellerId | `Oningvibe` |
| sellerUrl | `https://www.qoo10.jp/shop/Oningvibe` |
| sellerGrade | `General seller` |
| shipsFrom | `KR` |
| shipsFromLabel | `韓国` |
| isAd | `false` |

#### Full Details (detail mode only)

| Field | Example |
| --- | --- |
| brand | `SKIN1004` |
| description | `Long product description from the product page…` |
| images | `["https://gd.image-qoo10.jp/...", "..."]` |
| availability | `InStock` |
| itemCondition | `NewCondition` |
| category | `スキンケア` |

### 📊 Example Output

```json
{
    "productId": "1209235072",
    "title": "エクソソーム保湿アンプル 30ml 韓国コスメ 韓国ブランド 公式ショップ 韓国スキンケア 美容液 化粧品 セラム",
    "productUrl": "https://www.qoo10.jp/item/ONINGVIBE-.../1209235072",
    "imageUrl": "https://gd.image-qoo10.jp/li/072/235/9209235072.g_300-w-st_g.jpg",
    "imageCount": 15,
    "price": 2808,
    "listPrice": 4680,
    "priceCurrency": "JPY",
    "discountAmount": 1872,
    "discountRate": 40,
    "hasDiscount": true,
    "qPoints": 28,
    "rating": 4.6,
    "reviewCount": 1243,
    "sellerName": "Oningvibe",
    "sellerId": "Oningvibe",
    "sellerUrl": "https://www.qoo10.jp/shop/Oningvibe",
    "sellerGrade": "General seller",
    "shipsFrom": "KR",
    "shipsFromLabel": "韓国",
    "isAd": false,
    "searchKeyword": "serum",
    "searchCategory": "skincare",
    "scrapedAt": "2026-07-01T14:10:49.773Z"
}
````

### 📋 Dataset Views

The Apify Console gives you **4 ready-made table views** to quickly browse your results:

| View | What It Shows |
| --- | --- |
| 📊 **Overview** | Title, price, list price, discount, rating, reviews, seller, ship-from |
| 💰 **Pricing & deals** | Sale price, list price, discount amount & %, Q-points, sponsored flag |
| 🔄 **Monitoring changes** | Only what changed since the last run (incremental mode) |
| 📋 **Full Details** | Every single field — the complete dataset |

### ❓ FAQ

**🤔 Which Qoo10 site does this cover?**
Qoo10 Japan (qoo10.jp). It's the flagship, most active Qoo10 marketplace, home to a huge Korean beauty, fashion and lifestyle assortment.

**🤔 Can I search in Japanese?**
Yes — enter Japanese or Latin keywords. You can also browse a whole category without any keyword.

**🤔 Do I get discounts and reward points?**
Yes — every product carries its sale price, original list price, discount amount and %, and Q-points reward when available.

**🤔 What's "incremental monitoring"?**
Run the same search on a schedule and the scraper returns only new products and price changes since last time — typically 80–95% cheaper than a full re-scrape.

**🤔 Can I export the data?**
Yes — JSON, CSV, Excel, XML, HTML, RSS. You can also push data directly to Google Sheets, Zapier, Make, or any webhook/API endpoint.

**🤔 How often should I run this?**
For fresh data, run daily or weekly. You can schedule automatic runs on Apify with just a few clicks.

**🤔 Does it work with proxies?**
Yes — residential proxies (Japan) are recommended and used by default for the best results, via Apify's built-in proxy service.

### 🛠️ Need Custom Filters or Features?

**I'm happy to customize this scraper for your specific needs!** 🤝

Whether you need:

- 🎯 Additional filters (brand, category tree depth, seller grade, Q-points thresholds)
- 📊 Extra data fields or custom output formats
- 🔄 Integration with your CRM, Google Sheets, or database
- ⏰ Scheduled scraping with automatic deduplication
- 🌐 Scraping from other marketplaces alongside Qoo10

👉 **Don't hesitate to reach out via private message** — I respond quickly and I'm always open to building exactly what you need. No request is too small or too specific!

### ⚖️ Legal & Ethical Use

This scraper collects **only publicly available information** from Qoo10 Japan. It does not access private data, bypass authentication, or log into any account. Please use the data responsibly and in compliance with applicable laws and platform terms of service.

# Actor input Schema

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

What to search for on Qoo10 Japan (e.g. 'マウス', 'serum', 'iphone case'). Works with Japanese or Latin text. Combine with a category to narrow the results, or leave empty to browse a whole category.

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

Restrict the search to a Qoo10 category. Choose 'Any category' to search across the whole store.

## `startUrls` (type: `array`):

Optional. Paste any qoo10.jp URLs — a search page (https://www.qoo10.jp/gmkt.inc/Search/Default.aspx?keyword=...), a category page, or an individual product (https://www.qoo10.jp/g/<code>). Auto-classified. When provided, these REPLACE the keyword/category fields above (the client-side filters still apply).

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

Only keep products priced at or above this (JPY).

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

Only keep products priced at or below this (JPY).

## `minRating` (type: `integer`):

Only keep products whose star rating is at least this value.

## `minReviews` (type: `integer`):

Only keep products with at least this many reviews.

## `shipsFrom` (type: `string`):

Only keep products shipped from a specific country.

## `excludeAds` (type: `boolean`):

Drop the sponsored/promoted rows tagged 'PR' in Qoo10 search results.

## `titleContains` (type: `string`):

Only keep products whose title (or seller name) contains this text (case-insensitive). A quick way to refine a broad keyword.

## `fetchProductDetails` (type: `boolean`):

When enabled, every product is opened to collect the full record: long description, brand, every gallery image, availability, item condition and category. When disabled (default, cheapest), only the ~18 rich fields already on the search row are returned — no extra request per product.

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

Hard cap on the number of records pushed to the dataset.

## `maxPages` (type: `integer`):

Maximum number of search-result pages to crawl per start URL (~40 products per page).

## `maxConcurrency` (type: `integer`):

Maximum number of parallel requests. Higher values finish faster and cost less (Apify bills memory × time), but very high values risk Qoo10's 523 WAF page. 25 is a safe default on residential JP proxy; raise it if runs stay block-free.

## `maxRequestRetries` (type: `integer`):

How many times a failed/blocked request is retried on a fresh proxy session.

## `incremental` (type: `boolean`):

Track changes across runs. The first run records a baseline; later runs emit only NEW, UPDATED (e.g. price drops) and REAPPEARED products — typically 80–95% cheaper for daily monitoring of the same search.

## `stateKey` (type: `string`):

Optional. Identifier for this monitoring baseline. Leave empty to derive one automatically from the keyword + category. Use a fixed value to keep one baseline across config tweaks.

## `emitUnchanged` (type: `boolean`):

Incremental only. Also output products that did not change since the last run.

## `emitExpired` (type: `boolean`):

Incremental only. Also output products that disappeared since the last run (sold out / delisted), tagged EXPIRED.

## `skipReposts` (type: `boolean`):

Incremental only. Drop NEW products whose content matches a recently expired one (same item re-listed under a new code).

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

Default is NO proxy — Qoo10's 523 block page is absorbed by the built-in retry-on-fresh-session, so plain runs return the full result set faster and far cheaper (no per-GB residential bill). Only switch on RESIDENTIAL in Japan if you hit persistent blocks on large or repeated runs.

## Actor input object example

```json
{
  "keyword": "serum",
  "category": "any",
  "shipsFrom": "all",
  "excludeAds": false,
  "fetchProductDetails": false,
  "maxItems": 200,
  "maxPages": 20,
  "maxConcurrency": 25,
  "maxRequestRetries": 8,
  "incremental": false,
  "emitUnchanged": false,
  "emitExpired": false,
  "skipReposts": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `monitoring` (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 = {
    "keyword": "serum",
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("trev0n/qoo10-japan-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": "serum",
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("trev0n/qoo10-japan-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 '{
  "keyword": "serum",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call trev0n/qoo10-japan-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Qoo10 Japan Scraper | 1$/1k Cheap",
        "description": "Scrape Qoo10 Japan (qoo10.jp) product listings by keyword or category — or paste any Qoo10 URL. Get title, sale & list price, discount, rating, reviews, seller, ship-from country, Q-points and images. Optional full product details and incremental monitoring for cheap daily runs.",
        "version": "1.0",
        "x-build-id": "LyarQBwGCPciJwy3U"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/trev0n~qoo10-japan-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-trev0n-qoo10-japan-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/trev0n~qoo10-japan-scraper/runs": {
            "post": {
                "operationId": "runs-sync-trev0n-qoo10-japan-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/trev0n~qoo10-japan-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-trev0n-qoo10-japan-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": {
                    "keyword": {
                        "title": "Search keyword",
                        "type": "string",
                        "description": "What to search for on Qoo10 Japan (e.g. 'マウス', 'serum', 'iphone case'). Works with Japanese or Latin text. Combine with a category to narrow the results, or leave empty to browse a whole category."
                    },
                    "category": {
                        "title": "Category",
                        "enum": [
                            "any",
                            "ladies_fashion",
                            "bags_accessories",
                            "shoes",
                            "underwear_legwear",
                            "rice_grains",
                            "skincare",
                            "contact_lenses",
                            "home_appliances",
                            "beauty_health_appliances",
                            "phone_cases",
                            "earphones_headphones",
                            "supplements",
                            "beauty_support",
                            "diet"
                        ],
                        "type": "string",
                        "description": "Restrict the search to a Qoo10 category. Choose 'Any category' to search across the whole store.",
                        "default": "any"
                    },
                    "startUrls": {
                        "title": "Start URLs (advanced — overrides filters)",
                        "type": "array",
                        "description": "Optional. Paste any qoo10.jp URLs — a search page (https://www.qoo10.jp/gmkt.inc/Search/Default.aspx?keyword=...), a category page, or an individual product (https://www.qoo10.jp/g/<code>). Auto-classified. When provided, these REPLACE the keyword/category fields above (the client-side filters still apply).",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "minPrice": {
                        "title": "Min price (¥)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only keep products priced at or above this (JPY)."
                    },
                    "maxPrice": {
                        "title": "Max price (¥)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only keep products priced at or below this (JPY)."
                    },
                    "minRating": {
                        "title": "Min rating (0–5)",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Only keep products whose star rating is at least this value."
                    },
                    "minReviews": {
                        "title": "Min reviews",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only keep products with at least this many reviews."
                    },
                    "shipsFrom": {
                        "title": "Ships from",
                        "enum": [
                            "all",
                            "JP",
                            "KR",
                            "CN",
                            "US",
                            "HK",
                            "SG"
                        ],
                        "type": "string",
                        "description": "Only keep products shipped from a specific country.",
                        "default": "all"
                    },
                    "excludeAds": {
                        "title": "Exclude sponsored (PR) products",
                        "type": "boolean",
                        "description": "Drop the sponsored/promoted rows tagged 'PR' in Qoo10 search results.",
                        "default": false
                    },
                    "titleContains": {
                        "title": "Title contains",
                        "type": "string",
                        "description": "Only keep products whose title (or seller name) contains this text (case-insensitive). A quick way to refine a broad keyword."
                    },
                    "fetchProductDetails": {
                        "title": "Fetch full product details",
                        "type": "boolean",
                        "description": "When enabled, every product is opened to collect the full record: long description, brand, every gallery image, availability, item condition and category. When disabled (default, cheapest), only the ~18 rich fields already on the search row are returned — no extra request per product.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Hard cap on the number of records pushed to the dataset.",
                        "default": 200
                    },
                    "maxPages": {
                        "title": "Max search pages",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of search-result pages to crawl per start URL (~40 products per page).",
                        "default": 20
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of parallel requests. Higher values finish faster and cost less (Apify bills memory × time), but very high values risk Qoo10's 523 WAF page. 25 is a safe default on residential JP proxy; raise it if runs stay block-free.",
                        "default": 25
                    },
                    "maxRequestRetries": {
                        "title": "Max request retries",
                        "minimum": 0,
                        "type": "integer",
                        "description": "How many times a failed/blocked request is retried on a fresh proxy session.",
                        "default": 8
                    },
                    "incremental": {
                        "title": "Incremental monitoring",
                        "type": "boolean",
                        "description": "Track changes across runs. The first run records a baseline; later runs emit only NEW, UPDATED (e.g. price drops) and REAPPEARED products — typically 80–95% cheaper for daily monitoring of the same search.",
                        "default": false
                    },
                    "stateKey": {
                        "title": "Monitoring state key",
                        "type": "string",
                        "description": "Optional. Identifier for this monitoring baseline. Leave empty to derive one automatically from the keyword + category. Use a fixed value to keep one baseline across config tweaks."
                    },
                    "emitUnchanged": {
                        "title": "Emit unchanged products",
                        "type": "boolean",
                        "description": "Incremental only. Also output products that did not change since the last run.",
                        "default": false
                    },
                    "emitExpired": {
                        "title": "Emit expired products",
                        "type": "boolean",
                        "description": "Incremental only. Also output products that disappeared since the last run (sold out / delisted), tagged EXPIRED.",
                        "default": false
                    },
                    "skipReposts": {
                        "title": "Skip reposts",
                        "type": "boolean",
                        "description": "Incremental only. Drop NEW products whose content matches a recently expired one (same item re-listed under a new code).",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Default is NO proxy — Qoo10's 523 block page is absorbed by the built-in retry-on-fresh-session, so plain runs return the full result set faster and far cheaper (no per-GB residential bill). Only switch on RESIDENTIAL in Japan if you hit persistent blocks on large or repeated runs.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
