# 1688 Product Listings Scraper (`khadinakbar/1688-product-listings-scraper`) Actor

Search 1688.com B2B wholesale listings by keyword or URL: title, CNY price range, MOQ, supplier, location, 诚信通 TrustPass years, 实力商家/工厂 flags, 回头率 repurchase rate, sold count. Filters for price, MOQ, years, repurchase, factory. PPE, MCP-ready.

- **URL**: https://apify.com/khadinakbar/1688-product-listings-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** E-commerce, MCP servers, 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 1688 product scrapeds

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

## 1688 Product Listings Scraper

**What it does.** Search **1688.com** — Alibaba's China-domestic wholesale marketplace — by keyword (Chinese or English) or paste a search / category URL, and export every product listing card across pages: title, **CNY price range**, **MOQ (起批量)**, supplier company, location, **诚信通 (TrustPass) years**, **实力商家 (powerful-merchant)** and **工厂 (factory)** flags, **回头率 (repurchase rate)**, sold count, image, and offer URL. Lean, search-only, MCP-ready.

**When to use it.** Sourcing wholesale suppliers upstream of Alibaba.com (1688 prices are usually lower because it's the China-domestic tier), building B2B price datasets, comparing factory vs trading-company offers, populating supplier directories, and feeding sourcing-agent / AI workflows. Use a keyword for the fastest setup; paste `startUrls` when you already have filtered 1688 queries. This Actor scrapes **search/category result pages**, not single `detail.1688.com/offer/<id>.html` product pages.

### Output (one record per product)

| Field | Description |
|---|---|
| `productId` | 1688 numeric offer ID |
| `title` | Product title (Chinese as listed) |
| `productUrl` | `https://detail.1688.com/offer/<id>.html` |
| `imageUrl` | Main product image |
| `priceMin` / `priceMax` | Unit price range in CNY (¥) |
| `currency` | `CNY` |
| `minOrderQuantity` | MOQ / 起批量 |
| `moqUnit` | Order unit (件 / 个 / 双 / …) |
| `supplierName` | Supplier company name |
| `supplierId` / `supplierUrl` | Member ID / shop URL (when present) |
| `supplierLocation` | Province + city (e.g. `广东 深圳市`) |
| `supplierYears` | Years on 诚信通 (TrustPass) |
| `isTrustPass` | 诚信通 member (1688's verified-supplier tier) |
| `isPowerfulMerchant` | 实力商家 badge |
| `isFactory` | Factory / 工厂 / 超级工厂 |
| `repurchaseRatePercent` | 回头率 — share of buyers who order again |
| `soldCount` | Recorded sales / 成交 (万 units expanded) |
| `rating` | Shop score (0–5, when present) |
| `position` | Result rank within the run |
| `searchQuery` | Originating keyword |
| `scrapedAt` | ISO-8601 timestamp |

### Pricing

**Pay-per-event.** `$0.003` per product returned + a negligible `$0.00005` actor-start fee. Products dropped by your filters are **not** charged. A 100-product run costs about **$0.30**. Pay-Per-Usage (compute + proxy passthrough) is also available for very large jobs.

### Input

| Field | Type | Notes |
|---|---|---|
| `searchQuery` | string | Keyword, e.g. `无线耳机` or `data cable` |
| `startUrls` | string[] | 1688 search/category URLs (plain strings) |
| `maxResults` | int | Cap + cost ceiling (default 100) |
| `sortBy` | enum | `relevance` (综合) · `monthlySales` · `priceAsc` · `priceDesc` · `newest` |
| `minPrice` / `maxPrice` | int | CNY unit-price bracket |
| `minMoq` / `maxMoq` | int | MOQ bracket |
| `minSupplierYears` | int | Minimum 诚信通 TrustPass years |
| `minRepurchaseRate` | int | Minimum 回头率 (%) |
| `minSold` | int | Minimum sold count |
| `trustPassOnly` | bool | Keep only 诚信通 suppliers |
| `powerfulMerchantOnly` | bool | Keep only 实力商家 |
| `factoryOnly` | bool | Keep only factories (工厂) |
| `proxyConfiguration` | object | Defaults to Apify Proxy; residential CN recommended |

#### Example input

```json
{
  "searchQuery": "无线耳机",
  "maxResults": 20,
  "sortBy": "monthlySales",
  "factoryOnly": true,
  "minRepurchaseRate": 20
}
````

#### Use via API (JavaScript)

```js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('khadinakbar/1688-product-listings-scraper').call({
  searchQuery: 'data cable',
  maxResults: 50,
  trustPassOnly: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Use via API (Python)

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("khadinakbar/1688-product-listings-scraper").call(run_input={
    "searchQuery": "无线耳机",
    "maxResults": 50,
    "factoryOnly": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

### MCP / AI agents

Exposed as `apify--1688-product-listings-scraper` in the Apify MCP server. One keyword in → structured wholesale listings out, ideal for sourcing copilots. Pair it with the `alibaba-listings-scraper` and `aliexpress-product-search-scraper` actors to compare domestic-China (1688), export (Alibaba), and retail (AliExpress) pricing for the same product.

### Reliability & anti-blocking

1688 is protected by Alibaba's **Baxia** anti-bot (the same family as Alibaba.com and AliExpress). The Actor uses a resilient proxy chain (residential preferred, China exit IPs ideal), Crawlee session pools with browser fingerprints, embedded-JSON-first parsing with a DOM fallback, and **honest-fail**: if every request is blocked it returns a single diagnostic record with a clear status message and **charges nothing**, rather than silently reporting an empty success. Residential proxies are strongly recommended — datacenter IPs are usually blocked, and overseas IPs may be redirected to `global.1688.com`.

### FAQ

**Does it scrape a single product page?** No — it scrapes search/category result pages. Single `detail.1688.com/offer/<id>.html` URLs are rejected.

**What currency are prices in?** CNY (Chinese yuan ¥) — 1688 is a domestic-China marketplace.

**Why are some fields null?** Search cards don't always expose every field (e.g. `supplierUrl`, `rating`); those appear on the supplier's shop page. Price, MOQ, supplier name, location, and trust flags are reliably present when 1688 serves the full page.

**Do filtered products cost money?** No. Only products that pass your filters and land in the dataset are billed.

### Legal

Use this Actor only for data you are legally permitted to access and process. You are responsible for complying with 1688.com / Alibaba's Terms of Service, applicable laws (including data-protection and IP law), and any robots restrictions in your jurisdiction. This Actor collects only publicly visible listing data and stores no credentials.

# Actor input Schema

## `searchQuery` (type: `string`):

Free-text keyword to search 1688.com products. Chinese keywords match best (e.g. '无线耳机', '数据线'), but English also works (e.g. 'wireless earbuds'). The Actor opens the 1688 search-results page and collects every product card across pages. Leave empty if you instead provide startUrls. NOT a single offer URL — this Actor searches and returns many products, it does not scrape one detail.1688.com/offer page.

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

Optional list of 1688 search or category URLs to scrape directly (e.g. https://s.1688.com/selloffer/offer\_search.htm?keywords=led+strip). Use instead of, or together with, searchQuery. Single product-detail pages (detail.1688.com/offer/<id>.html) and non-1688 URLs are ignored — this Actor only scrapes search/category result pages. Paste plain URL strings.

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

Maximum number of product records to return. The Actor auto-paginates until this cap is reached, then stops, so it doubles as your cost ceiling (each product is one billable event). Defaults to 100. Set higher for bulk sourcing research.

## `sortBy` (type: `string`):

Order in which 1688 returns the search results. 'relevance' is 1688's default 综合 ranking; 'monthlySales' surfaces best-selling offers; 'priceAsc'/'priceDesc' sort by price; 'newest' shows recently listed items. Applies to keyword searches; for startUrls the URL's own sort is respected. 1688 sort params shift occasionally — an unknown value silently falls back to relevance.

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

Only return products whose unit price (minimum of the price range) is at or above this value in CNY (Chinese yuan ¥). Applied as a 1688 URL filter and as a safety re-check on the parsed price. Leave empty for no minimum.

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

Only return products whose unit price (maximum of the price range) is at or below this value in CNY (¥). Applied as a 1688 URL filter and as a safety re-check on the parsed price. Leave empty for no maximum.

## `minMoq` (type: `integer`):

Server-side MOQ floor passed to the 1688 search URL. Combine with maxMoq to bracket a target 起批量 (minimum-order) window. Leave empty for no MOQ lower bound.

## `maxMoq` (type: `integer`):

Drop products whose minimum order quantity (起批量) is above this value (e.g. 2 keeps only products you can order in twos). Useful for small-volume / sample sourcing. Applied client-side after extraction; products with unknown MOQ are dropped when this bound is set. Leave empty for no upper bound.

## `minSupplierYears` (type: `integer`):

Drop products from suppliers with fewer than this many years on 1688's 诚信通 (TrustPass) program (e.g. 3 keeps suppliers with 3+ years). Useful to skip brand-new sellers. Products with unknown years are dropped when this bound is set. Filtered products are not billed. Leave empty to keep all.

## `minRepurchaseRate` (type: `integer`):

Drop products whose supplier 回头率 (repurchase rate — the share of buyers who order again) is below this percentage, or unknown. A high 回头率 is 1688's strongest buyer-satisfaction signal. Example: 20 keeps suppliers with a 20%+ repurchase rate. Filtered products are not billed. Leave empty to keep all.

## `minSold` (type: `integer`):

Drop products with fewer than this many recorded sales/transactions (成交), or with unknown sold count. Useful to surface proven, high-volume listings. Filtered products are not billed. Leave empty to keep all.

## `trustPassOnly` (type: `boolean`):

When enabled, keep only products from 诚信通 (TrustPass) members — 1688's paid, identity-verified supplier tier (the practical equivalent of Alibaba's Verified Supplier). Filtered products are not billed. Default false.

## `powerfulMerchantOnly` (type: `boolean`):

When enabled, keep only products from 实力商家 (powerful / strong merchants) — 1688's badge for high-capability, well-rated suppliers. Filtered products are not billed. Default false.

## `factoryOnly` (type: `boolean`):

When enabled, keep only products from factories / manufacturers (工厂 / 超级工厂), skipping pure trading companies — useful for sourcing direct from the maker. Filtered products are not billed. Default false.

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

Proxy settings. Residential proxies — ideally China exit IPs — are strongly recommended: 1688's Baxia anti-bot blocks most datacenter IPs and may redirect overseas IPs to global.1688.com. The Actor automatically prefers Apify residential when your account has it and gracefully falls back to Apify datacenter when it does not — so the default works on any plan. Override only for a specific proxy requirement.

## Actor input object example

```json
{
  "searchQuery": "data cable",
  "startUrls": [],
  "maxResults": 10,
  "sortBy": "relevance",
  "trustPassOnly": false,
  "powerfulMerchantOnly": false,
  "factoryOnly": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

All product listing records found across the search/category pages. Download as JSON, CSV, Excel, HTML, or RSS.

# 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 = {
    "searchQuery": "无线耳机",
    "startUrls": [],
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/1688-product-listings-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 = {
    "searchQuery": "无线耳机",
    "startUrls": [],
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/1688-product-listings-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 '{
  "searchQuery": "无线耳机",
  "startUrls": [],
  "maxResults": 10
}' |
apify call khadinakbar/1688-product-listings-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "1688 Product Listings Scraper",
        "description": "Search 1688.com B2B wholesale listings by keyword or URL: title, CNY price range, MOQ, supplier, location, 诚信通 TrustPass years, 实力商家/工厂 flags, 回头率 repurchase rate, sold count. Filters for price, MOQ, years, repurchase, factory. PPE, MCP-ready.",
        "version": "1.0",
        "x-build-id": "OA4KJ2sgqSrACdhO0"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~1688-product-listings-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-1688-product-listings-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/khadinakbar~1688-product-listings-scraper/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-1688-product-listings-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/khadinakbar~1688-product-listings-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-1688-product-listings-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": {
                    "searchQuery": {
                        "title": "Search keyword",
                        "type": "string",
                        "description": "Free-text keyword to search 1688.com products. Chinese keywords match best (e.g. '无线耳机', '数据线'), but English also works (e.g. 'wireless earbuds'). The Actor opens the 1688 search-results page and collects every product card across pages. Leave empty if you instead provide startUrls. NOT a single offer URL — this Actor searches and returns many products, it does not scrape one detail.1688.com/offer page."
                    },
                    "startUrls": {
                        "title": "Start URLs (search/category pages)",
                        "type": "array",
                        "description": "Optional list of 1688 search or category URLs to scrape directly (e.g. https://s.1688.com/selloffer/offer_search.htm?keywords=led+strip). Use instead of, or together with, searchQuery. Single product-detail pages (detail.1688.com/offer/<id>.html) and non-1688 URLs are ignored — this Actor only scrapes search/category result pages. Paste plain URL strings.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Max products",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of product records to return. The Actor auto-paginates until this cap is reached, then stops, so it doubles as your cost ceiling (each product is one billable event). Defaults to 100. Set higher for bulk sourcing research.",
                        "default": 100
                    },
                    "sortBy": {
                        "title": "Sort results by",
                        "enum": [
                            "relevance",
                            "monthlySales",
                            "priceAsc",
                            "priceDesc",
                            "newest"
                        ],
                        "type": "string",
                        "description": "Order in which 1688 returns the search results. 'relevance' is 1688's default 综合 ranking; 'monthlySales' surfaces best-selling offers; 'priceAsc'/'priceDesc' sort by price; 'newest' shows recently listed items. Applies to keyword searches; for startUrls the URL's own sort is respected. 1688 sort params shift occasionally — an unknown value silently falls back to relevance.",
                        "default": "relevance"
                    },
                    "minPrice": {
                        "title": "Minimum unit price (CNY)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only return products whose unit price (minimum of the price range) is at or above this value in CNY (Chinese yuan ¥). Applied as a 1688 URL filter and as a safety re-check on the parsed price. Leave empty for no minimum."
                    },
                    "maxPrice": {
                        "title": "Maximum unit price (CNY)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only return products whose unit price (maximum of the price range) is at or below this value in CNY (¥). Applied as a 1688 URL filter and as a safety re-check on the parsed price. Leave empty for no maximum."
                    },
                    "minMoq": {
                        "title": "Minimum MOQ to allow (lower bound)",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Server-side MOQ floor passed to the 1688 search URL. Combine with maxMoq to bracket a target 起批量 (minimum-order) window. Leave empty for no MOQ lower bound."
                    },
                    "maxMoq": {
                        "title": "Maximum MOQ to allow (upper bound)",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Drop products whose minimum order quantity (起批量) is above this value (e.g. 2 keeps only products you can order in twos). Useful for small-volume / sample sourcing. Applied client-side after extraction; products with unknown MOQ are dropped when this bound is set. Leave empty for no upper bound."
                    },
                    "minSupplierYears": {
                        "title": "Minimum 诚信通 (TrustPass) years",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Drop products from suppliers with fewer than this many years on 1688's 诚信通 (TrustPass) program (e.g. 3 keeps suppliers with 3+ years). Useful to skip brand-new sellers. Products with unknown years are dropped when this bound is set. Filtered products are not billed. Leave empty to keep all."
                    },
                    "minRepurchaseRate": {
                        "title": "Minimum repurchase rate 回头率 (%)",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Drop products whose supplier 回头率 (repurchase rate — the share of buyers who order again) is below this percentage, or unknown. A high 回头率 is 1688's strongest buyer-satisfaction signal. Example: 20 keeps suppliers with a 20%+ repurchase rate. Filtered products are not billed. Leave empty to keep all."
                    },
                    "minSold": {
                        "title": "Minimum sold count",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Drop products with fewer than this many recorded sales/transactions (成交), or with unknown sold count. Useful to surface proven, high-volume listings. Filtered products are not billed. Leave empty to keep all."
                    },
                    "trustPassOnly": {
                        "title": "诚信通 TrustPass suppliers only",
                        "type": "boolean",
                        "description": "When enabled, keep only products from 诚信通 (TrustPass) members — 1688's paid, identity-verified supplier tier (the practical equivalent of Alibaba's Verified Supplier). Filtered products are not billed. Default false.",
                        "default": false
                    },
                    "powerfulMerchantOnly": {
                        "title": "实力商家 powerful-merchant only",
                        "type": "boolean",
                        "description": "When enabled, keep only products from 实力商家 (powerful / strong merchants) — 1688's badge for high-capability, well-rated suppliers. Filtered products are not billed. Default false.",
                        "default": false
                    },
                    "factoryOnly": {
                        "title": "工厂 factory / manufacturer only",
                        "type": "boolean",
                        "description": "When enabled, keep only products from factories / manufacturers (工厂 / 超级工厂), skipping pure trading companies — useful for sourcing direct from the maker. Filtered products are not billed. Default false.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings. Residential proxies — ideally China exit IPs — are strongly recommended: 1688's Baxia anti-bot blocks most datacenter IPs and may redirect overseas IPs to global.1688.com. The Actor automatically prefers Apify residential when your account has it and gracefully falls back to Apify datacenter when it does not — so the default works on any plan. Override only for a specific proxy requirement.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
