# Coupang Product Scraper | KR Prices & Rocket (`lentic_clockss/coupang-scraper`) Actor

Scrape Coupang.com (쿠팡) — keyword search, categories, Rocket campaigns, Global, PDP & brand shops. Extract KRW prices, badges, ratings, variants. Export Excel/CSV/JSON.

- **URL**: https://apify.com/lentic\_clockss/coupang-scraper.md
- **Developed by:** [kane liu](https://apify.com/lentic_clockss) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

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

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## Coupang Product Scraper | KR Prices & Rocket Delivery

**Scrape Coupang.com (쿠팡) product listings, keyword search, categories, Rocket campaigns, Coupang Global, seller deals, brand shops, and product detail pages — then download structured Korea ecommerce data as Excel, CSV, or JSON.**

Use this Actor as a practical **Coupang product data API** for price monitoring, assortment research, and competitive analysis on Korea’s largest marketplace. Pick a mode, set limits, and get Dataset rows with KRW prices, Rocket / Tomorrow / Global badges, ratings, and the full product identity triple (`productId` + `itemId` + `vendorItemId`).

- Scrape **Coupang keyword search**, **category browse**, **Rocket / WOW campaigns**, **Coupang Global (로켓직구)**, **seller deals (판매자특가)**, **brand shops**, and **product detail pages (PDP)**
- Extract **price, currency (KRW), title, rating, review count, badges, delivery promise, brand, variants, coupon/final price**
- Optional **PDP enrich** on listings (`enrichDetails`) to backfill sale/final/coupon prices, brand, and variants
- Filter by **serviceKeys** (rocket / coupang_global / rocket_luxury), **brand**, **offerCondition**, **price range**, **rating**, and **sort**
- Export to **Excel / CSV / JSON**, or connect Make, n8n, Zapier, Python, or the Apify API
- **Pay per event** — Actor start + each Dataset result; **platform usage is included** (you do not pay separate Apify compute on top)

> **Unofficial tool.** This Actor is not affiliated with, endorsed by, or sponsored by Coupang Corp. It collects publicly reachable shopping surfaces and does **not** place orders, checkout, or access private WOW / login-only prices. **쿠팡플레이**, **쿠팡트래블**, and the **WING seller console** are out of scope.

---

### What does the Coupang Product Scraper do?

Coupang Product Scraper lets you **extract structured product data from Coupang.com** without running your own anti-bot browser fleet. Give it a Korean or English keyword, category ID/URL, campaign preset, Global/seller channel, brand shop, or product URL / ID triple, then start a run.

Under the hood, the Actor:

1. Validates your input (mode, keyword / category / campaign / product / brand shop, filters)
2. Enforces free-tier caps when you are on a free Apify plan
3. Calls a managed Cloud Run worker (`coupang-com`) that opens Coupang with Camoufox + KR residential egress (Akamai Bot Manager)
4. Parses listing cards (Next.js RSC `__next_f` + DOM `ProductUnit` badges) and PDP JSON-LD / SDP prices
5. Pushes Dataset rows ready for Excel / CSV / JSON export
6. Writes `RUN_SUMMARY` (and `ERROR_SUMMARY` on failure) to the key-value store

You run it like any other Apify Actor — schedule it, call it from the API, or plug it into automations.

---

### What Coupang data can I extract?

| Data | Keyword / Category / Campaign / Global | Product detail | Brand shop |
| --- | :---: | :---: | :---: |
| productId + itemId + vendorItemId | ✅ | ✅ | ✅* |
| Title / URL | ✅ | ✅ | ✅* |
| Price / currency (KRW) | ✅ | ✅ | ✅* |
| salePrice / finalPrice / couponPrice | ✅* | ✅ | ✅* |
| Rating / review count | ✅ | ✅ | — |
| Rocket / Tomorrow / Global badges | ✅ | ✅* | ✅* |
| Brand / variants / availability | ✅* | ✅ | — |
| Delivery promise | ✅* | ✅ | — |
| isAd / rank / searchId | ✅ | — | — |

\*When present on the page or after `enrichDetails`. Brand shops are CSR-heavy (best-effort DOM).

---

### Why scrape Coupang?

Coupang is Korea’s dominant ecommerce platform (로켓배송 / 로켓프레시 / 로켓직구). Teams scrape Coupang for **price monitoring**, **competitive analysis**, and **catalog research**:

- Monitor **Coupang.com** KRW prices, discounts, and Rocket delivery badges
- Track the **productId · itemId · vendorItemId** triple needed to reproduce an exact offer
- Cover **campaigns** (로켓배송, 와우회원할인), **Global**, **seller deals**, and **brand shops** — not keyword search alone
- Feed BI dashboards, pricing tools, or AI agents with structured Coupang rows

Compared with keyword-only Coupang scrapers that return a thin SERP card, this Actor covers **search + category + campaigns + Global + seller deals + brand shop + PDP enrich** in one input surface, with the full identity triple on every row.

---

### How to scrape Coupang products (no code required)

1. Create a free [Apify](https://apify.com/) account
2. Open [Coupang Product Scraper](https://apify.com/lentic_clockss/coupang-scraper)
3. Choose a **mode**: `keywordSearch`, `categoryBrowse`, `campaignBrowse`, `coupangGlobal`, `sellerDeal`, `productDetail`, or `brandShop`
4. Enter a **keyword**, **categoryId** / **categoryUrl**, **campaignPreset** (`rocket` / `wow`), or **productUrl** / IDs
5. *(Optional)* Set `sort`, `serviceKeys`, `brand`, `minPrice` / `maxPrice`, `enrichDetails`, `maxResults`
6. Click **Start** and download the Dataset as JSON, CSV, Excel, or JSONL

Start with `maxResults: 3–10` to verify the query, then scale up.

---

### How much does it cost to scrape Coupang?

This Actor uses **pay-per-event** pricing. You are charged for:

| Event | Price |
| --- | --- |
| Actor Start (`apify-actor-start`) | **$0.005** per start |
| Result (`apify-default-dataset-item`) | **$3.00 / 1,000** results (**$0.003** each) |

**Platform usage costs are included** — you do **not** pay separate Apify compute/proxy usage for this Actor on top of the event prices above (**User pays platform usage costs = No**).

#### Example cost estimates

| Results collected | Approx. event cost* |
| --- | ---: |
| 100 | ~$0.31 |
| 1,000 | ~$3.01 |
| 10,000 | ~$30.01 |

\*Assumes one Actor start at default memory billing for start events, plus `$0.003` per Dataset item. Exact start billing can scale with allocated memory (one start event per GB, minimum one).

#### Free plan limits

On a **free Apify plan**, this Actor enforces developer limits of **10 runs** and **200 results per run**. Upgrade to a paid Apify plan for unlimited runs (event prices still apply). Limits are set by the Actor developer, not Apify. A quota-exceeded run returns `SUCCEEDED` with `RUN_SUMMARY.status=FREE_TIER_LIMIT`.

---

### Input examples

#### Keyword search

```json
{
  "mode": "keywordSearch",
  "keyword": "무선 이어폰",
  "sort": "saleCountDesc",
  "serviceKeys": ["rocket"],
  "maxResults": 40,
  "enrichDetails": true,
  "enrichLimit": 5
}
````

#### Category browse (로켓프레시)

```json
{
  "mode": "categoryBrowse",
  "categoryId": "393760",
  "maxResults": 30
}
```

#### Rocket campaign

```json
{
  "mode": "campaignBrowse",
  "campaignPreset": "rocket",
  "maxResults": 20
}
```

#### Coupang Global (로켓직구)

```json
{
  "mode": "coupangGlobal",
  "maxResults": 20
}
```

#### Product detail (PDP)

```json
{
  "mode": "productDetail",
  "productUrl": "https://www.coupang.com/vp/products/9024167604?itemId=26462330372&vendorItemId=93437609809"
}
```

#### Brand shop

```json
{
  "mode": "brandShop",
  "brandSlug": "apple",
  "brandId": "349644",
  "maxResults": 20
}
```

***

### Output example

Listing row (search / category / campaign):

```json
{
  "id": "7006899364-22849384759-89884063702",
  "productId": "7006899364",
  "itemId": "22849384759",
  "vendorItemId": "89884063702",
  "title": "팬틴 극손상케어 샴푸 프루티 플로럴, 1.8L, 3개",
  "price": 49150,
  "currency": "KRW",
  "rating": 5,
  "reviewCount": 51892,
  "badges": ["ROCKET", "TOMORROW"],
  "isRocket": true,
  "isTomorrow": true,
  "url": "https://www.coupang.com/vp/products/7006899364?itemId=22849384759&vendorItemId=89884063702",
  "mode": "keywordSearch",
  "browseCountry": "KR",
  "source": "coupang"
}
```

After `enrichDetails`, rows may also include top-level `salePrice`, `finalPrice`, `couponPrice`, `brand`, `variants`, `deliveryPromise`, and a nested `pdp` object.

***

### Modes & coverage

| Mode | Input | Notes |
| --- | --- | --- |
| `keywordSearch` | `keyword` / `query` | `/np/search` SERP |
| `categoryBrowse` | `categoryId` or `categoryUrl` | Any numeric taxonomy ID (e.g. `178255` 가전디지털, `393760` 로켓프레시) |
| `campaignBrowse` | `campaignPreset` (`rocket`/`wow`) or `campaignId` / `campaignUrl` | `/np/campaigns/82` · `/np/campaigns/83` |
| `coupangGlobal` | — | `/np/coupangglobal` |
| `sellerDeal` | — | `/np/omp` |
| `productDetail` | `productUrl` or `productId` (+`itemId`+`vendorItemId`) | JSON-LD + SDP price stack |
| `brandShop` | `brandShopUrl` or `brandSlug`+`brandId` | `shop.coupang.com` (CSR, best-effort) |

**Market:** Korea only (`www.coupang.com`, ko-KR, KRW). Coupang Global items surface inside the KR catalog via the `COUPANG_GLOBAL` badge / `serviceKeys=coupang_global`.

**Out of scope:** 쿠팡플레이, 쿠팡트래블, WING seller console, WOW member-only login prices.

***

### Filters & sorting

| Input | Values |
| --- | --- |
| `sort` | `scoreDesc` (추천순) · `salePriceAsc` · `salePriceDesc` · `saleCountDesc` · `latestAsc` |
| `serviceKeys` | `rocket` · `coupang_global` · `rocket_luxury` |
| `brand` / `offerCondition` / `filterType` | RSC query filters (also via `filters`) |
| `minPrice` / `maxPrice` | KRW range |
| `rating` | Minimum average rating (0–5) |
| `enrichDetails` + `enrichLimit` | Re-fetch top N PDPs and merge price stack / brand / variants |

***

### Pagination (important)

Coupang’s current search UI exposes **no working pagination surface** — `?page=N` and `?listSize=` are ignored server-side, and no DOM pager exists (verified 2026-07-28). Each query returns **one full result page (~50–60 items)**. `maxPages` is accepted for forward-compatibility but capped at 1. For deeper coverage, split jobs across keywords, categories, campaigns, and sorter permutations.

***

### FAQ

**Do I need proxies?**\
No. The worker handles KR residential egress centrally (`WORKER_PROVIDES_PROXY=1`). You do not configure Apify Proxy for normal runs.

**Korean or English keywords?**\
Both work. Korean usually matches the canonical catalog ordering.

**Why fewer rows than `maxResults`?**\
One Coupang query ≈ one SERP page (~50–60 rows max). Campaign / brand-shop pages can be thinner.

**Is this affiliated with Coupang?**\
No. Unofficial third-party scraper for publicly reachable product pages.

**Where is the Live View / Standby API?**\
This Actor supports Standby mode with OpenAPI (`/search`, `/health`, `/openapi.json`) for HTTP-style calls when Standby is enabled.

***

### You might also like

Looking for other ecommerce scrapers? Try sibling Actors for Costco, Walmart, Cdiscount, and more from the same publisher — or Coupang **review-only** scrapers if you only need 상품평 text (this Actor focuses on product / listing economics).

# Actor input Schema

## `mode` (type: `string`):

keywordSearch | categoryBrowse | productDetail | brandShop | campaignBrowse | coupangGlobal | sellerDeal

## `browseCountry` (type: `string`):

Catalog market (KR only — Coupang operates a single Korean catalog; 로켓직구 global items surface in-catalog).

## `currency` (type: `string`):

Currency

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

Search keyword — Korean or English both work (keywordSearch).

## `query` (type: `string`):

Query (alias of keyword)

## `categoryUrl` (type: `string`):

Category URL (categoryBrowse), e.g. https://www.coupang.com/np/categories/393760

## `categoryId` (type: `string`):

Numeric category ID for categoryBrowse (/np/categories/{id}), e.g. 393760 (로켓프레시), 178255 (가전디지털).

## `productUrl` (type: `string`):

Product URL (productDetail), e.g. https://www.coupang.com/vp/products/{productId}?itemId=…\&vendorItemId=…

## `productId` (type: `string`):

Product ID (productDetail). Add itemId + vendorItemId to reproduce an exact offer.

## `itemId` (type: `string`):

Item ID (productDetail, optional)

## `vendorItemId` (type: `string`):

Vendor item ID (productDetail, optional)

## `brandShopUrl` (type: `string`):

Brand shop URL (brandShop), e.g. https://shop.coupang.com/{slug}/{id}

## `brandSlug` (type: `string`):

Brand slug (brandShop, with brandId)

## `brandId` (type: `string`):

Brand ID (brandShop, with brandSlug)

## `campaignUrl` (type: `string`):

Campaign URL (campaignBrowse), e.g. https://www.coupang.com/np/campaigns/82

## `campaignId` (type: `string`):

Numeric campaign id — 82=로켓배송, 83=와우회원할인

## `campaignPreset` (type: `string`):

Shortcut for campaignBrowse when campaignId/URL omitted (default rocket).

## `page` (type: `integer`):

Start page. NOTE: Coupang's current search UI has no working pagination — only page 1 exists per query.

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

Max pages per query (currently capped to 1 — Coupang removed the pagination surface).

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

Max results

## `enrichDetails` (type: `boolean`):

Enrich top rows with product-detail fields (brand, variants, coupon price)

## `enrichLimit` (type: `integer`):

Enrich limit

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

Coupang sorter. scoreDesc=추천순 (default), salePriceAsc=낮은가격순, salePriceDesc=높은가격순, saleCountDesc=판매량순, latestAsc=최신순.

## `serviceKeys` (type: `array`):

Delivery/service filters: rocket (로켓배송), coupang\_global (로켓직구), rocket\_luxury (로켓럭셔리).

## `minPrice` (type: `number`):

Min price filter (KRW)

## `maxPrice` (type: `number`):

Max price filter (KRW)

## `rating` (type: `number`):

Minimum average rating (0-5)

## `brand` (type: `string`):

Brand filter (RSC query key; keyword/category/campaign modes)

## `offerCondition` (type: `string`):

Offer condition filter (RSC query key, e.g. NEW)

## `filterType` (type: `string`):

filterType RSC query key

## `filters` (type: `object`):

Advanced filters bag (brand / offerCondition / filterType)

## `workerBaseUrl` (type: `string`):

Worker base URL override (allowlisted Cloud Run hosts only)

## Actor input object example

```json
{
  "mode": "keywordSearch",
  "browseCountry": "KR",
  "currency": "KRW",
  "keyword": "무선 이어폰",
  "page": 1,
  "maxPages": 1,
  "maxResults": 40,
  "enrichDetails": false,
  "enrichLimit": 3,
  "serviceKeys": []
}
```

# Actor output Schema

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

Normalized Coupang product rows from the default dataset.

## `runSummary` (type: `string`):

Structured summary record stored in the default key-value store.

## `inputEcho` (type: `string`):

Normalized input saved at run start.

## `errorSummary` (type: `string`):

Present when a failed run stores structured terminal error information.

# 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": "무선 이어폰"
};

// Run the Actor and wait for it to finish
const run = await client.actor("lentic_clockss/coupang-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": "무선 이어폰" }

# Run the Actor and wait for it to finish
run = client.actor("lentic_clockss/coupang-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": "무선 이어폰"
}' |
apify call lentic_clockss/coupang-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Coupang Product Scraper | KR Prices & Rocket",
        "description": "Scrape Coupang.com (쿠팡) — keyword search, categories, Rocket campaigns, Global, PDP & brand shops. Extract KRW prices, badges, ratings, variants. Export Excel/CSV/JSON.",
        "version": "0.1",
        "x-build-id": "8ImMBxPkY6XicscDY"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/lentic_clockss~coupang-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-lentic_clockss-coupang-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/lentic_clockss~coupang-scraper/runs": {
            "post": {
                "operationId": "runs-sync-lentic_clockss-coupang-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/lentic_clockss~coupang-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-lentic_clockss-coupang-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",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "keywordSearch",
                            "categoryBrowse",
                            "productDetail",
                            "brandShop",
                            "campaignBrowse",
                            "coupangGlobal",
                            "sellerDeal"
                        ],
                        "type": "string",
                        "description": "keywordSearch | categoryBrowse | productDetail | brandShop | campaignBrowse | coupangGlobal | sellerDeal",
                        "default": "keywordSearch"
                    },
                    "browseCountry": {
                        "title": "Browse country",
                        "enum": [
                            "KR"
                        ],
                        "type": "string",
                        "description": "Catalog market (KR only — Coupang operates a single Korean catalog; 로켓직구 global items surface in-catalog).",
                        "default": "KR"
                    },
                    "currency": {
                        "title": "Currency",
                        "type": "string",
                        "description": "Currency",
                        "default": "KRW"
                    },
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Search keyword — Korean or English both work (keywordSearch)."
                    },
                    "query": {
                        "title": "Query (alias)",
                        "type": "string",
                        "description": "Query (alias of keyword)"
                    },
                    "categoryUrl": {
                        "title": "Category URL",
                        "type": "string",
                        "description": "Category URL (categoryBrowse), e.g. https://www.coupang.com/np/categories/393760"
                    },
                    "categoryId": {
                        "title": "Category ID",
                        "type": "string",
                        "description": "Numeric category ID for categoryBrowse (/np/categories/{id}), e.g. 393760 (로켓프레시), 178255 (가전디지털)."
                    },
                    "productUrl": {
                        "title": "Product URL",
                        "type": "string",
                        "description": "Product URL (productDetail), e.g. https://www.coupang.com/vp/products/{productId}?itemId=…&vendorItemId=…"
                    },
                    "productId": {
                        "title": "Product ID",
                        "type": "string",
                        "description": "Product ID (productDetail). Add itemId + vendorItemId to reproduce an exact offer."
                    },
                    "itemId": {
                        "title": "Item ID",
                        "type": "string",
                        "description": "Item ID (productDetail, optional)"
                    },
                    "vendorItemId": {
                        "title": "Vendor item ID",
                        "type": "string",
                        "description": "Vendor item ID (productDetail, optional)"
                    },
                    "brandShopUrl": {
                        "title": "Brand shop URL",
                        "type": "string",
                        "description": "Brand shop URL (brandShop), e.g. https://shop.coupang.com/{slug}/{id}"
                    },
                    "brandSlug": {
                        "title": "Brand slug",
                        "type": "string",
                        "description": "Brand slug (brandShop, with brandId)"
                    },
                    "brandId": {
                        "title": "Brand ID",
                        "type": "string",
                        "description": "Brand ID (brandShop, with brandSlug)"
                    },
                    "campaignUrl": {
                        "title": "Campaign URL",
                        "type": "string",
                        "description": "Campaign URL (campaignBrowse), e.g. https://www.coupang.com/np/campaigns/82"
                    },
                    "campaignId": {
                        "title": "Campaign ID",
                        "type": "string",
                        "description": "Numeric campaign id — 82=로켓배송, 83=와우회원할인"
                    },
                    "campaignPreset": {
                        "title": "Campaign preset",
                        "enum": [
                            "rocket",
                            "wow"
                        ],
                        "type": "string",
                        "description": "Shortcut for campaignBrowse when campaignId/URL omitted (default rocket)."
                    },
                    "page": {
                        "title": "Start page",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Start page. NOTE: Coupang's current search UI has no working pagination — only page 1 exists per query.",
                        "default": 1
                    },
                    "maxPages": {
                        "title": "Max pages",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Max pages per query (currently capped to 1 — Coupang removed the pagination surface).",
                        "default": 1
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Max results",
                        "default": 40
                    },
                    "enrichDetails": {
                        "title": "Enrich with PDP",
                        "type": "boolean",
                        "description": "Enrich top rows with product-detail fields (brand, variants, coupon price)",
                        "default": false
                    },
                    "enrichLimit": {
                        "title": "Enrich limit",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Enrich limit",
                        "default": 3
                    },
                    "sort": {
                        "title": "Sort",
                        "enum": [
                            "scoreDesc",
                            "salePriceAsc",
                            "salePriceDesc",
                            "saleCountDesc",
                            "latestAsc"
                        ],
                        "type": "string",
                        "description": "Coupang sorter. scoreDesc=추천순 (default), salePriceAsc=낮은가격순, salePriceDesc=높은가격순, saleCountDesc=판매량순, latestAsc=최신순."
                    },
                    "serviceKeys": {
                        "title": "Service filters",
                        "type": "array",
                        "description": "Delivery/service filters: rocket (로켓배송), coupang_global (로켓직구), rocket_luxury (로켓럭셔리).",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "minPrice": {
                        "title": "Min price (KRW)",
                        "type": "number",
                        "description": "Min price filter (KRW)"
                    },
                    "maxPrice": {
                        "title": "Max price (KRW)",
                        "type": "number",
                        "description": "Max price filter (KRW)"
                    },
                    "rating": {
                        "title": "Min rating",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "number",
                        "description": "Minimum average rating (0-5)"
                    },
                    "brand": {
                        "title": "Brand filter",
                        "type": "string",
                        "description": "Brand filter (RSC query key; keyword/category/campaign modes)"
                    },
                    "offerCondition": {
                        "title": "Offer condition",
                        "type": "string",
                        "description": "Offer condition filter (RSC query key, e.g. NEW)"
                    },
                    "filterType": {
                        "title": "Filter type",
                        "type": "string",
                        "description": "filterType RSC query key"
                    },
                    "filters": {
                        "title": "Filters object",
                        "type": "object",
                        "description": "Advanced filters bag (brand / offerCondition / filterType)"
                    },
                    "workerBaseUrl": {
                        "title": "Worker base URL override",
                        "type": "string",
                        "description": "Worker base URL override (allowlisted Cloud Run hosts only)"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
