# SHEIN Product Scraper | Prices SKUs Global (`lentic_clockss/shein-scraper`) Actor

Scrape SHEIN regional storefronts — keyword search, category PLP & PDP across US, UK, EU, Asia & more. Extract goods\_id, local+USD prices, SKUs, colors, images, ratings. Export Excel/CSV/JSON for fashion market research & price monitoring.

- **URL**: https://apify.com/lentic\_clockss/shein-scraper.md
- **Developed by:** [kane liu](https://apify.com/lentic_clockss) (community)
- **Categories:** E-commerce, Lead generation, Automation
- **Stats:** 1 total users, 0 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

## SHEIN Product Scraper | Prices SKUs Global

**Scrape SHEIN product listings, keyword search, category pages, and product details across global regional storefronts — then download structured fashion e-commerce data as Excel, CSV, or JSON.**

Use this Actor as a practical **SHEIN product data API** for fashion market research, price monitoring, assortment tracking, and competitive analysis on [shein.com](https://www.shein.com/) regional sites (`us.shein.com`, `uk.shein.com`, `de.shein.com`, `fr.shein.com`, and 40+ more). Choose a mode, set region and filters, and get Dataset rows with `goodsId`, local + USD prices, titles, images, SKUs, colors, and ratings.

- Scrape **SHEIN keyword search** (`/pdsearch`), **category PLP** (`-c-{id}.html`), **product PDP**, and the **category taxonomy**
- Cover **global regions**: US, UK, EU, Asia-Pacific, LATAM and more via `{region}.shein.com`
- Extract **goods_id, title, sale/retail price, currency, USD dual price, images, SKUs, colors, ratings, stock**
- Optional **PDP enrich** (`enrichDetails` + `enrichLimit`) for SKU lists, gallery images, soft reviews
- Filter listings with **sort**, **minPrice / maxPrice**, **color / size / refine**, multi-**keywords**
- 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 SHEIN or Zoetop Business Co., Ltd. It collects publicly reachable product listing and detail surfaces and does **not** log in, checkout, place orders, or access private accounts. Checkout, Affiliate login, and full review pagination APIs are out of scope.

---

### What does the SHEIN Product Scraper do?

[SHEIN Product Scraper](https://apify.com/lentic_clockss/shein-scraper) lets you **extract structured product data from SHEIN regional storefronts** without running your own browser and proxy fleet. Give it a keyword, category slug / `catId` / `bucket`, product URL, or `goodsId`, then start a run.

Under the hood, the Actor:

1. Validates your input (mode, region, query / category / product, filters)
2. Enforces free-tier caps when you are on a free Apify plan
3. Calls a managed Cloud Run worker that opens SHEIN with a real browser session
4. Parses product cards, listing BFF payloads, and PDP `gbRawData.modules`
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 SHEIN data can I extract?

| Data | Keyword search | Category PLP | Product PDP | Categories |
| --- | :---: | :---: | :---: | :---: |
| goodsId / URL | ✅ | ✅ | ✅ | — |
| Title / name | ✅ | ✅ | ✅ | category name |
| Sale / retail price | ✅ | ✅ | ✅ | — |
| Currency + USD dual price | enrich | enrich | ✅ | — |
| image / images gallery | ✅ / enrich | ✅ / enrich | ✅ | — |
| SKU list / colors / stock | enrich | enrich | ✅ | — |
| Rating / soft reviews | ✅ / enrich | ✅ / enrich | ✅ | — |
| categorySlug / catId | — | ✅ | ✅ | ✅ (tree) |
| region / host | ✅ | ✅ | ✅ | ✅ |

---

### Why scrape SHEIN?

SHEIN is one of the largest global fast-fashion marketplaces, with regional storefronts, deep category trees, and frequent price changes. Teams scrape SHEIN for **price monitoring**, **assortment research**, **competitor tracking**, and **SKU / colorway coverage**:

- Monitor **keyword search** and **category PLPs** across Women, Men, Kids, Beauty, Shoes, Sale, New In, and more
- Track **local currency prices** plus **USD amounts** when present on PDP
- Pull **SKU / size / color** matrices and image galleries via enrich or product detail mode
- Map the **category taxonomy** (L1/L2 + promo paths) for assortment planning
- Feed BI dashboards, pricing tools, Google Sheets, BigQuery, or AI agents with clean rows

Compared with keyword-only SHEIN scrapers, this Actor covers **search + category + PDP + taxonomy** across **many regional subdomains** in one input surface — with sort, price filters, and optional PDP enrich.

---

### How to scrape SHEIN (no code required)

1. Create a free [Apify](https://apify.com/) account
2. Open [SHEIN Product Scraper](https://apify.com/lentic_clockss/shein-scraper)
3. Choose a **mode**: `keywordSearch`, `categorySearch`, `productDetail`, or `categories`
4. Set **region** (e.g. `us`, `uk`, `de`, `fr`, `ph`, `au`)
5. Enter a **query**, **categorySlug + catId** (or `bucket` / `categoryUrl`), or **goodsId** / **productUrl**
6. *(Optional)* Set `sort`, `minPrice` / `maxPrice`, `enrichDetails`, `enrichLimit`, `maxResults`
7. 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 SHEIN?

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). Default memory is **1024 MB**.

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

---

### Input examples

#### Keyword search (with sort & price filter)

```json
{
  "mode": "keywordSearch",
  "region": "us",
  "query": "linen dress",
  "sort": "sales",
  "minPrice": 5,
  "maxPrice": 40,
  "maxResults": 40
}
````

#### Category PLP (with PDP enrich)

```json
{
  "mode": "categorySearch",
  "region": "us",
  "categorySlug": "Women-Tops",
  "catId": "2223",
  "maxResults": 30,
  "enrichDetails": true,
  "enrichLimit": 5
}
```

#### Sale / promo bucket

```json
{
  "mode": "categorySearch",
  "region": "us",
  "bucket": "sale",
  "maxResults": 40
}
```

#### Product detail (PDP)

```json
{
  "mode": "productDetail",
  "region": "fr",
  "goodsId": "71254323",
  "includeReviews": true
}
```

#### Category taxonomy

```json
{
  "mode": "categories",
  "region": "us",
  "maxResults": 200
}
```

***

### Coverage matrix

| Dimension | Coverage |
| --- | --- |
| Regions | `us`, `uk`, `de`, `fr`, `ph`, `au`, `mx`, … — 40+ `{region}.shein.com` codes |
| Modes | `keywordSearch` · `categorySearch` · `productDetail` · `categories` |
| Categories | Deep L1/L2 verticals + Sale / New In / Just-for-You (`bucket` / `categoryUrl`) |
| Sort | `recommend` · `sales` · `price_asc` · `price_desc` · `newest` |
| Filters | `minPrice`/`maxPrice` · `color` · `size` · `refine` · `keywords[]` · `forceSuggest` |
| Enrich | PDP `gbRawData.modules` → SKU / colors / images / USD / soft reviews |
| Waived | Checkout · Affiliate login · full review pagination API |
| Identity | `goodsId` (numeric) · URL `-p-{goodsId}.html` |

***

### Output example

```json
{
  "type": "product",
  "mode": "keywordSearch",
  "region": "us",
  "goodsId": "414286470",
  "id": "414286470",
  "title": "French Satin Lace Patchwork Hem Elegant Sexy Bandeau Top",
  "url": "https://us.shein.com/...-p-414286470.html",
  "salePrice": "12.49",
  "currency": "USD",
  "image": "https://img.ltwebstatic.com/...",
  "usdSalePrice": "12.49",
  "skuList": [
    { "skuCode": "…", "stock": 3, "usdPrice": "12.49" }
  ],
  "images": ["https://img.ltwebstatic.com/…"],
  "scrapedAt": "2026-07-28T12:00:00+00:00"
}
```

***

### Tips for reliable runs

- Prefer **`categoryUrl`** or **`bucket`** when sample `catId`s look stale across regions
- `bucket=sale` resolves to **RecommendSelection** / stable PLPs — raw `/sale/` hubs often redirect to empty channel pages
- `page > 1` can intermittently hit SHEIN `risk/challenge` (`captcha_type=909`); keep `maxPages` modest and use `pageRetry`
- Start with small `maxResults`, then scale; enable `enrichDetails` only for the rows you need (`enrichLimit`)
- Default Actor memory is **1024 MB** (thin client); raise only if Standby / large payloads require it

***

### Integrations

- **Apify API / Client** — start runs and fetch Dataset items programmatically
- **Schedules** — daily / hourly price and assortment monitors
- **Make / Zapier / n8n** — push rows to Sheets, Slack, webhooks, or warehouses
- **Webhooks** — notify your backend when a run succeeds

***

### Disclaimer

SHEIN Product Scraper is an independent, unofficial tool. Use it in accordance with applicable laws, SHEIN terms, and your organization’s compliance policies. The authors are not responsible for how scraped data is used.

# Actor input Schema

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

keywordSearch / categorySearch / productDetail / categories.

## `region` (type: `string`):

SHEIN host prefix: us, ph, uk, de, fr, mx, br, au, … (maps to https://{region}.shein.com).

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

Optional ISO-2 alias (US→us, GB→uk, PH→ph).

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

Optional currency override (e.g. USD, PHP, EUR).

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

Keyword for keywordSearch (e.g. dress).

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

Alias of query.

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

Optional list of keywords; worker runs each until maxResults.

## `categorySlug` (type: `string`):

URL slug before -c-{id}, e.g. Women-Tops. Prefer with catId or use bucket.

## `catId` (type: `string`):

Numeric cat id (e.g. 2223 for Women-Tops). Sample IDs may drift by region.

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

Full or path category / RecommendSelection / sale / new URL.

## `bucket` (type: `string`):

Shortcut vertical: women, men, kids, shoes, beauty, sale, new, just-for-you, …

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

PDP URL containing -p-{goods\_id}.html.

## `goodsId` (type: `string`):

Numeric SHEIN goods\_id.

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

Listing sort: recommend, sales, price\_asc, price\_desc, newest (mapped to SHEIN query).

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

Local-currency min price filter for listings.

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

Local-currency max price filter for listings.

## `color` (type: `string`):

Optional color refine token (site-specific).

## `size` (type: `string`):

Optional size refine token.

## `refine` (type: `string`):

Pass-through refine/attr query fragment when known.

## `forceSuggest` (type: `boolean`):

Force SHEIN suggest/search variant when enabled.

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

Listing start page (page>1 may hit risk/challenge).

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

Max listing pages to fetch.

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

Cap on dataset rows. Free plan capped at 200.

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

For listing modes, fetch PDP gbRawData for enrichLimit items.

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

Max listing rows to enrich with PDP (SKU/images/USD/reviews).

## `includeReviews` (type: `boolean`):

When enriching or on PDP, attach soft review snippets from modules if present.

## `expandColors` (type: `boolean`):

Follow color variants into additional PDP fetches (costly).

## `pageRetry` (type: `integer`):

Retries per listing page on challenge/empty.

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

Optional HTTPS Cloud Run origin (allowlisted). Prefer Actor env WORKER\_BASE\_URL.

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

Unused when WORKER\_PROVIDES\_PROXY=1 (default).

## Actor input object example

```json
{
  "mode": "keywordSearch",
  "region": "us",
  "forceSuggest": false,
  "page": 1,
  "maxPages": 3,
  "maxResults": 40,
  "enrichDetails": false,
  "enrichLimit": 3,
  "includeReviews": true,
  "expandColors": false,
  "pageRetry": 2
}
```

# Actor output Schema

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

Normalized Walmart product / category 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("lentic_clockss/shein-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 = {}

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "SHEIN Product Scraper | Prices SKUs Global",
        "description": "Scrape SHEIN regional storefronts — keyword search, category PLP & PDP across US, UK, EU, Asia & more. Extract goods_id, local+USD prices, SKUs, colors, images, ratings. Export Excel/CSV/JSON for fashion market research & price monitoring.",
        "version": "0.1",
        "x-build-id": "zQeVpfECkNAUWdjiG"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/lentic_clockss~shein-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-lentic_clockss-shein-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~shein-scraper/runs": {
            "post": {
                "operationId": "runs-sync-lentic_clockss-shein-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~shein-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-lentic_clockss-shein-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": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "keywordSearch",
                            "categorySearch",
                            "productDetail",
                            "categories"
                        ],
                        "type": "string",
                        "description": "keywordSearch / categorySearch / productDetail / categories.",
                        "default": "keywordSearch"
                    },
                    "region": {
                        "title": "Region subdomain",
                        "type": "string",
                        "description": "SHEIN host prefix: us, ph, uk, de, fr, mx, br, au, … (maps to https://{region}.shein.com).",
                        "default": "us"
                    },
                    "browseCountry": {
                        "title": "Browse country (alias)",
                        "type": "string",
                        "description": "Optional ISO-2 alias (US→us, GB→uk, PH→ph)."
                    },
                    "currency": {
                        "title": "Currency hint",
                        "type": "string",
                        "description": "Optional currency override (e.g. USD, PHP, EUR)."
                    },
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Keyword for keywordSearch (e.g. dress)."
                    },
                    "keyword": {
                        "title": "Keyword (alias)",
                        "type": "string",
                        "description": "Alias of query."
                    },
                    "keywords": {
                        "title": "Keywords (batch)",
                        "type": "array",
                        "description": "Optional list of keywords; worker runs each until maxResults.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "categorySlug": {
                        "title": "Category slug",
                        "type": "string",
                        "description": "URL slug before -c-{id}, e.g. Women-Tops. Prefer with catId or use bucket."
                    },
                    "catId": {
                        "title": "Category ID",
                        "type": "string",
                        "description": "Numeric cat id (e.g. 2223 for Women-Tops). Sample IDs may drift by region."
                    },
                    "categoryUrl": {
                        "title": "Category URL",
                        "type": "string",
                        "description": "Full or path category / RecommendSelection / sale / new URL."
                    },
                    "bucket": {
                        "title": "Vertical bucket",
                        "type": "string",
                        "description": "Shortcut vertical: women, men, kids, shoes, beauty, sale, new, just-for-you, …"
                    },
                    "productUrl": {
                        "title": "Product URL",
                        "type": "string",
                        "description": "PDP URL containing -p-{goods_id}.html."
                    },
                    "goodsId": {
                        "title": "Goods ID",
                        "type": "string",
                        "description": "Numeric SHEIN goods_id."
                    },
                    "sort": {
                        "title": "Sort",
                        "enum": [
                            "",
                            "recommend",
                            "sales",
                            "price_asc",
                            "price_desc",
                            "newest"
                        ],
                        "type": "string",
                        "description": "Listing sort: recommend, sales, price_asc, price_desc, newest (mapped to SHEIN query)."
                    },
                    "minPrice": {
                        "title": "Min price",
                        "minimum": 0,
                        "type": "number",
                        "description": "Local-currency min price filter for listings."
                    },
                    "maxPrice": {
                        "title": "Max price",
                        "minimum": 0,
                        "type": "number",
                        "description": "Local-currency max price filter for listings."
                    },
                    "color": {
                        "title": "Color filter",
                        "type": "string",
                        "description": "Optional color refine token (site-specific)."
                    },
                    "size": {
                        "title": "Size filter",
                        "type": "string",
                        "description": "Optional size refine token."
                    },
                    "refine": {
                        "title": "Raw refine",
                        "type": "string",
                        "description": "Pass-through refine/attr query fragment when known."
                    },
                    "forceSuggest": {
                        "title": "Force suggest",
                        "type": "boolean",
                        "description": "Force SHEIN suggest/search variant when enabled.",
                        "default": false
                    },
                    "page": {
                        "title": "Start page",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Listing start page (page>1 may hit risk/challenge).",
                        "default": 1
                    },
                    "maxPages": {
                        "title": "Max pages",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Max listing pages to fetch.",
                        "default": 3
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Cap on dataset rows. Free plan capped at 200.",
                        "default": 40
                    },
                    "enrichDetails": {
                        "title": "Enrich with PDP",
                        "type": "boolean",
                        "description": "For listing modes, fetch PDP gbRawData for enrichLimit items.",
                        "default": false
                    },
                    "enrichLimit": {
                        "title": "Enrich limit",
                        "minimum": 0,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Max listing rows to enrich with PDP (SKU/images/USD/reviews).",
                        "default": 3
                    },
                    "includeReviews": {
                        "title": "Include reviews",
                        "type": "boolean",
                        "description": "When enriching or on PDP, attach soft review snippets from modules if present.",
                        "default": true
                    },
                    "expandColors": {
                        "title": "Expand colors",
                        "type": "boolean",
                        "description": "Follow color variants into additional PDP fetches (costly).",
                        "default": false
                    },
                    "pageRetry": {
                        "title": "Page retry",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Retries per listing page on challenge/empty.",
                        "default": 2
                    },
                    "workerBaseUrl": {
                        "title": "Worker base URL override",
                        "type": "string",
                        "description": "Optional HTTPS Cloud Run origin (allowlisted). Prefer Actor env WORKER_BASE_URL."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Unused when WORKER_PROVIDES_PROXY=1 (default)."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
