# Temu Product Scraper | Prices Sold Global (`lentic_clockss/temu-scraper`) Actor

Scrape Temu (www.temu.com) — keyword search, category & channel PLPs, home discover & PDP across US, UK, EU, Asia & more. Extract goodsId, prices, ratings, sold counts, images. Export Excel/CSV/JSON for e-commerce research & price monitoring.

- **URL**: https://apify.com/lentic\_clockss/temu-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

## Temu Product Scraper | Prices Sold Global

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

Use this Actor as a practical **Temu product data API** for marketplace research, price monitoring, sold-count tracking, and competitive analysis on [temu.com](https://www.temu.com/) (`www.temu.com/{region}` for PH, UK, DE, FR, AU, and 40+ path codes; US often uses the bare www root). Choose a mode, set region and filters, and get Dataset rows with `goodsId`, prices, titles, images, ratings, and sold labels.

- Scrape **Temu keyword search** (`search_result.html`), **category PLP** (`-o3-{optId}.html`), **channel pages** (best-sellers, new-in, lightning deals, clearance), **home discover**, and **product PDP**
- Cover **global regions**: US, UK, EU, Asia-Pacific, LATAM and more via `www.temu.com/{region}`
- Extract **goodsId, title, sale/retail price, currency, images, badges, rating, sold label, mallId**
- Optional **PDP enrich** (`enrichDetails` + `enrichLimit`) for gallery images, description, and mall signals
- Filter listings with **sort**, **minPrice / maxPrice**, **refine**, multi-**keywords**, **page / maxPages**
- 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 Temu / Whaleco Inc. It collects publicly reachable product listing and detail surfaces and does **not** log in, checkout, place orders, or access private accounts. Checkout/payment flows and **auto-solving** Temu security verification (`bgn_verification` / Phantom) are out of scope.

---

### What does the Temu Product Scraper do?

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

Under the hood, the Actor:

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

| Data | Home | Keyword search | Channel | Category PLP | Product PDP |
| --- | :---: | :---: | :---: | :---: | :---: |
| goodsId / URL | ✅ | ✅ | ✅ | ✅ | ✅ |
| Title / name | ✅ | ✅ | ✅ | ✅ | ✅ |
| Sale / retail price | ✅ | ✅ | ✅ | ✅ | ✅ |
| Currency / region | ✅ | ✅ | ✅ | ✅ | ✅ |
| image / images gallery | ✅ / enrich | ✅ / enrich | ✅ / enrich | ✅ / enrich | ✅ |
| Badges (Top pick, Local, …) | ✅ | ✅ | ✅ | ✅ | — |
| Rating / sold label | ✅ | ✅ | ✅ | ✅ | — |
| mallId / description | enrich | enrich | enrich | enrich | ✅ |
| categorySlug / optId | — | — | — | ✅ | — |
| channel | — | — | ✅ | — | — |

---

### Why scrape Temu?

Temu is one of the largest global value marketplaces, with regional path codes, deep category trees (`-o3-`), promotional channels, and frequent price changes. Teams scrape Temu for **price monitoring**, **sold-count / ranking signals**, **assortment research**, and **dropshipping / supplier research**:

- Monitor **keyword search** and **category PLPs** across electronics, home, clothing, beauty, and 30+ sitemap verticals
- Track **channel surfaces** — best sellers, 5-star, new in, lightning deals, clearance
- Pull **home discover** feeds for regional assortment snapshots
- Enrich rows with **PDP** title, prices, image galleries, and store (`mallId`) signals
- Feed BI dashboards, pricing tools, Google Sheets, BigQuery, or AI agents with clean rows

Compared with keyword-only Temu scrapers, this Actor covers **home + search + channel + category taxonomy + PDP** across **many regional path codes** in one input surface — with sort, price filters, pagination, and optional PDP enrich.

---

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

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

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": "usb cable",
  "sort": "price_asc",
  "minPrice": 1,
  "maxPrice": 20,
  "maxResults": 40
}
````

#### Category PLP (with PDP enrich)

```json
{
  "mode": "categorySearch",
  "region": "ph",
  "categorySlug": "cables-adapters",
  "optId": "2643",
  "maxResults": 30,
  "enrichDetails": true,
  "enrichLimit": 5
}
```

#### Channel PLP

```json
{
  "mode": "channelSearch",
  "region": "de",
  "channel": "best-sellers",
  "maxResults": 40
}
```

#### Home discover

```json
{
  "mode": "homeDiscover",
  "region": "us",
  "maxResults": 40,
  "maxPages": 2
}
```

#### Product detail (PDP)

```json
{
  "mode": "productDetail",
  "region": "uk",
  "goodsId": "601100585384225"
}
```

#### Regions / channels / taxonomy

```json
{
  "mode": "regions",
  "maxResults": 200
}
```

***

### Coverage matrix

| Dimension | Coverage |
| --- | --- |
| Regions | `us`, `uk`, `de`, `fr`, `ph`, `au`, `mx`, … — 40+ `www.temu.com/{region}` codes (US bare-root entry) |
| Modes | `homeDiscover` · `keywordSearch` · `channelSearch` · `categorySearch` · `productDetail` · `regions` |
| Channels | best-sellers · full-star · new-in · lightning-deals · clearance |
| Categories | Sitemap taxonomy — ~32 verticals / 600+ `-o3-{optId}` leaves |
| Sort / filters | `default` · `sales` · `new` · `price_asc` · `price_desc` · `rating` · `minPrice`/`maxPrice` · `refine` |
| Enrich | PDP `rawData` / og tags → prices / images / mallId / description |
| Waived | Checkout · payment · auto-solving `bgn_verification` / Phantom · full review APIs |
| Identity | `goodsId` (numeric) · URL `-g-{goodsId}.html` |

***

### Output example

```json
{
  "type": "product",
  "mode": "keywordSearch",
  "region": "us",
  "goodsId": "601100585384225",
  "id": "601100585384225",
  "title": "USB Cable Fast Charge",
  "url": "https://www.temu.com/us/...-g-601100585384225.html",
  "salePrice": "3.99",
  "retailPrice": "9.99",
  "currency": "USD",
  "image": "https://img.kwcdn.com/...",
  "badges": ["Top pick"],
  "ratingValue": "4.8",
  "soldLabel": "10k+ sold",
  "scrapedAt": "2026-07-28T12:00:00+00:00"
}
```

***

### Tips for reliable runs

- Prefer **US bare root** (`region=us`) — `/us` often redirects to `bgn_no_access`
- Temu frequently shows **security verification** (`bgn_verification`); the Actor detects it and fails gracefully — it **never auto-solves** puzzles
- Prefer **`categoryUrl`** or known **`optId`** from `mode=regions` / `/v1/categories` when exploring taxonomy
- Start with small `maxResults`, then scale; enable `enrichDetails` only for the rows you need (`enrichLimit`)
- `maxPages` / scroll-feed increases browser time and event volume — keep modest for first runs
- 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

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

# Actor input Schema

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

homeDiscover / keywordSearch / channelSearch / categorySearch / productDetail / regions.

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

Temu path prefix: ph, us, uk, de, fr, au, … US often uses bare www root.

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

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

Alias of query.

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

Optional list of keywords.

## `channel` (type: `string`):

best-sellers / full-star / new-in / lightning-deals / clearance.

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

Temu -o3- slug (e.g. cables-adapters).

## `optId` (type: `string`):

Temu sitemap optId (e.g. 2643 for cables-adapters).

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

Alias of optId.

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

Full or path category URL containing -o3-{optId}.html.

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

Vertical id/bucket for categorySearch or regions filter.

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

PDP URL containing -g-{goodsId}.html.

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

Numeric Temu goodsId.

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

1-based page for search/channel/category.

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

Cap on dataset rows. Free plan capped at 200.

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

Pagination / scroll-feed rounds (home feed + list page=).

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

default|sales|new|price\_asc|price\_desc|rating (best-effort query params).

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

Optional min\_price filter.

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

Optional max\_price filter.

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

Opaque filter string when known.

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

For listing modes, fetch PDP for enrichLimit items (contract fields when available).

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

Max listing rows to enrich with PDP.

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

Retries when verification/empty (new browser session).

## `browserCountryPin` (type: `string`):

Optional TEMU\_BROWSER\_COUNTRY\_PIN override: off|auto|xx. Default worker env is off.

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

Optional HTTPS Cloud Run origin (allowlisted).

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

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

## Actor input object example

```json
{
  "mode": "homeDiscover",
  "region": "ph",
  "page": 1,
  "maxResults": 40,
  "maxPages": 1,
  "enrichDetails": false,
  "enrichLimit": 3,
  "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/temu-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/temu-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/temu-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Temu Product Scraper | Prices Sold Global",
        "description": "Scrape Temu (www.temu.com) — keyword search, category & channel PLPs, home discover & PDP across US, UK, EU, Asia & more. Extract goodsId, prices, ratings, sold counts, images. Export Excel/CSV/JSON for e-commerce research & price monitoring.",
        "version": "0.1",
        "x-build-id": "rMYl0waQc0Z78bjvn"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/lentic_clockss~temu-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-lentic_clockss-temu-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~temu-scraper/runs": {
            "post": {
                "operationId": "runs-sync-lentic_clockss-temu-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~temu-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-lentic_clockss-temu-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": [
                            "homeDiscover",
                            "keywordSearch",
                            "channelSearch",
                            "categorySearch",
                            "productDetail",
                            "regions"
                        ],
                        "type": "string",
                        "description": "homeDiscover / keywordSearch / channelSearch / categorySearch / productDetail / regions.",
                        "default": "homeDiscover"
                    },
                    "region": {
                        "title": "Region path code",
                        "type": "string",
                        "description": "Temu path prefix: ph, us, uk, de, fr, au, … US often uses bare www root.",
                        "default": "ph"
                    },
                    "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."
                    },
                    "keyword": {
                        "title": "Keyword (alias)",
                        "type": "string",
                        "description": "Alias of query."
                    },
                    "keywords": {
                        "title": "Keywords (batch)",
                        "type": "array",
                        "description": "Optional list of keywords.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "channel": {
                        "title": "Channel slug",
                        "enum": [
                            "",
                            "best-sellers",
                            "full-star",
                            "new-in",
                            "lightning-deals",
                            "clearance"
                        ],
                        "type": "string",
                        "description": "best-sellers / full-star / new-in / lightning-deals / clearance."
                    },
                    "categorySlug": {
                        "title": "Category slug",
                        "type": "string",
                        "description": "Temu -o3- slug (e.g. cables-adapters)."
                    },
                    "optId": {
                        "title": "Category optId",
                        "type": "string",
                        "description": "Temu sitemap optId (e.g. 2643 for cables-adapters)."
                    },
                    "catId": {
                        "title": "Category id (alias)",
                        "type": "string",
                        "description": "Alias of optId."
                    },
                    "categoryUrl": {
                        "title": "Category URL",
                        "type": "string",
                        "description": "Full or path category URL containing -o3-{optId}.html."
                    },
                    "bucket": {
                        "title": "Taxonomy bucket",
                        "type": "string",
                        "description": "Vertical id/bucket for categorySearch or regions filter."
                    },
                    "productUrl": {
                        "title": "Product URL",
                        "type": "string",
                        "description": "PDP URL containing -g-{goodsId}.html."
                    },
                    "goodsId": {
                        "title": "Goods ID",
                        "type": "string",
                        "description": "Numeric Temu goodsId."
                    },
                    "page": {
                        "title": "Start page",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "1-based page for search/channel/category.",
                        "default": 1
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Cap on dataset rows. Free plan capped at 200.",
                        "default": 40
                    },
                    "maxPages": {
                        "title": "Max pages",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Pagination / scroll-feed rounds (home feed + list page=).",
                        "default": 1
                    },
                    "sort": {
                        "title": "Sort",
                        "type": "string",
                        "description": "default|sales|new|price_asc|price_desc|rating (best-effort query params)."
                    },
                    "minPrice": {
                        "title": "Min price",
                        "type": "number",
                        "description": "Optional min_price filter."
                    },
                    "maxPrice": {
                        "title": "Max price",
                        "type": "number",
                        "description": "Optional max_price filter."
                    },
                    "refine": {
                        "title": "Refine / filter blob",
                        "type": "string",
                        "description": "Opaque filter string when known."
                    },
                    "enrichDetails": {
                        "title": "Enrich with PDP",
                        "type": "boolean",
                        "description": "For listing modes, fetch PDP for enrichLimit items (contract fields when available).",
                        "default": false
                    },
                    "enrichLimit": {
                        "title": "Enrich limit",
                        "minimum": 0,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Max listing rows to enrich with PDP.",
                        "default": 3
                    },
                    "pageRetry": {
                        "title": "Page retry",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Retries when verification/empty (new browser session).",
                        "default": 2
                    },
                    "browserCountryPin": {
                        "title": "BD browser country pin",
                        "type": "string",
                        "description": "Optional TEMU_BROWSER_COUNTRY_PIN override: off|auto|xx. Default worker env is off."
                    },
                    "workerBaseUrl": {
                        "title": "Worker base URL override",
                        "type": "string",
                        "description": "Optional HTTPS Cloud Run origin (allowlisted)."
                    },
                    "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
