# 1688 Products Wholesale Scraper - Full Supplier Details (`parsebird/1688-wholesale-scraper`) Actor

Scrape 1688 wholesale products, supplier details, tiered prices, MOQ, SKUs, shipping, certifications, dropship signals, and images. Export JSON, CSV, Excel.

- **URL**: https://apify.com/parsebird/1688-wholesale-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:** E-commerce, Lead generation, Automation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.01 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

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

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/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 Products Wholesale Scraper - Full Supplier Details

1688 Products Wholesale Scraper - Full Supplier Details extracts public wholesale product data from [1688.com](https://www.1688.com/) by keyword or offer ID, including supplier details, tiered prices, MOQ, product media, shipping signals, and optional SKU details.

<table><tr>
<td style="border-left:4px solid #F97316;padding:12px 16px;font-weight:600">
Search Chinese or English wholesale keywords, enrich specific 1688 offer IDs, and export structured product and supplier records for sourcing, market research, and procurement workflows.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```text
Use Apify Actor parsebird/1688-wholesale-scraper to scrape public 1688.com wholesale products. Example with ApifyClient: client.actor("parsebird/1688-wholesale-scraper").call(run_input={"keywords":["手机壳"],"maxResults":10,"sortBy":"bestSelling","proxyConfiguration":{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}}), then read client.dataset(run["defaultDatasetId"]).iterate_items(). Key inputs: keywords array, offerIds array, maxResults integer default 50, priceMin/priceMax integer CNY filters, province/city Chinese supplier filters, minOrderQuantity integer, merchantType enum any/superFactory/verifiedMerchant, sortBy enum relevance/bestSelling/priceAsc/priceDesc, includeSkuDetails boolean, includeDescriptionHtml boolean, includeSupplierIntelligence boolean, proxyCountryMode rotate/CN/HK, proxyConfiguration residential proxy object. Output fields include offerId, title, detailUrl, price, quantityPrices, images, videoUrl, province, city, sales counts, MOQ, tags, category, supplier, specs, skuDetails, certificates, dropship, shipping, promotions, services, coupons, productFlags, description images/text/HTML when requested, sourceKeyword, scrapedAt. API docs: https://docs.apify.com/api/client/python/ and https://docs.apify.com/api/client/js/. Token: https://console.apify.com/account/integrations.
````

### What is 1688 Products Wholesale Scraper?

**1688 Products Wholesale Scraper - Full Supplier Details** is a 1688 scraper for collecting public wholesale product and supplier data from [1688.com](https://www.1688.com/). Use it to search wholesale products by keyword, scrape specific product offer IDs, and export structured records for sourcing, price tracking, supplier research, or ecommerce analysis.

The actor runs on [Apify](https://apify.com/), so you can use scheduling, API access, webhooks, integrations, and dataset exports without maintaining scraping infrastructure yourself.

### What can this 1688 wholesale scraper do?

- Search 1688 products by Chinese or English keyword.
- Scrape specific 1688 offers by `offerIds` when you already know the product IDs.
- Apply price, province, city, MOQ, merchant type, and sorting filters.
- Extract product titles, prices, quantity price tiers, product images, SKU images, videos, category data, and public sales signals where available.
- Extract supplier fields such as company name, member ID, shop URL, factory flags, business inspection signals, ratings, and public factory stats where available.
- Optionally include full SKU variant matrices and raw description HTML.
- Send results to [Apify integrations](https://apify.com/integrations), [Apify API](https://docs.apify.com/api/v2), webhooks, databases, spreadsheets, or BI tools.
- Download results in JSON, CSV, Excel, HTML, XML, or RSS from the Apify dataset.

### What data can you extract from 1688.com?

| Field | Description |
|-------|-------------|
| `offerId` | 1688 product offer ID |
| `title` | Product title from the 1688 offer page |
| `detailUrl` | Direct 1688 product URL |
| `price` | Minimum and maximum unit price in CNY when exposed |
| `quantityPrices` | Tiered wholesale price breaks and quantity ranges |
| `images`, `videoUrl`, `skuImages` | Product media URLs from public page data |
| `province`, `city` | Supplier location when available |
| `orderCount`, `saledCount`, `recentSoldCount` | Public sales and demand signals when exposed |
| `minOrderQuantity` | Minimum order quantity |
| `mixWholesale` | Mixed-wholesale minimum amount and variety rules |
| `supplier` | Supplier identity, shop URL, inspection flags, ratings, factory stats, certifications, and public badges |
| `specs` | Product attribute table, such as material, brand, function, model, or category-specific specs |
| `skuDetails` | Optional SKU properties and variant matrix when `includeSkuDetails` is enabled |
| `certificates` | Public certificates, licenses, inspections, or patent labels when exposed |
| `dropship` | Optional distribution and dropship intelligence when `includeSupplierIntelligence` is enabled and the source exposes it |
| `shipping` | Public shipping, delivery, carrier, fee, weight, and buyer protection fields when available |
| `promotions`, `services`, `coupons` | Public promotion, service, and coupon metadata |
| `descriptionImages`, `descriptionText` | Product description images and extracted plain text |
| `descriptionHtml` | Raw product description HTML only when `includeDescriptionHtml` is enabled |
| `sourceKeyword` | Search keyword that produced the result in keyword mode |
| `scrapedAt` | UTC timestamp for the scrape |

### How to scrape 1688 wholesale products

1. Open [1688 Products Wholesale Scraper - Full Supplier Details](https://apify.com/parsebird/1688-wholesale-scraper) on Apify.
2. Enter one or more `keywords`, such as `手机壳`, `蓝牙耳机`, or `wireless earbuds`.
3. Or add `offerIds` to scrape specific 1688 products directly.
4. Set `maxResults`; it applies per keyword and is ignored in offer ID mode.
5. Add optional filters such as `priceMax`, `province`, `city`, `minOrderQuantity`, and `merchantType`.
6. Keep residential proxy enabled for reliable access to 1688.
7. Run the actor, open the dataset, and export results as JSON, CSV, Excel, or connect them through the Apify API.

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `keywords` | array | No | Prefilled `["手机壳"]` | Search terms, Chinese or English. Each keyword is searched separately. Ignored if `offerIds` is set |
| `offerIds` | array | No | `[]` | Specific offer IDs to scrape directly. Skips search |
| `maxResults` | integer | No | `50` | Max products per keyword, from 1 to 10,000. Ignored in `offerIds` mode |
| `priceMin` | integer | No | - | Minimum unit price in CNY |
| `priceMax` | integer | No | - | Maximum unit price in CNY |
| `province` | string | No | - | Supplier province in Chinese, for example `广东` or `浙江` |
| `city` | string | No | - | Supplier city in Chinese, for example `深圳市` or `义乌市` |
| `minOrderQuantity` | integer | No | - | Filter by supplier MOQ threshold |
| `merchantType` | string | No | `any` | `any`, `superFactory`, or `verifiedMerchant` |
| `sortBy` | string | No | `relevance` | `relevance`, `bestSelling`, `priceAsc`, or `priceDesc` |
| `includeSkuDetails` | boolean | No | `false` | Include full SKU variant matrix when available |
| `includeDescriptionHtml` | boolean | No | `false` | Include raw description HTML; description images and text are extracted when available |
| `includeSupplierIntelligence` | boolean | No | `false` | Include optional dropship and distribution intelligence when available |
| `proxyCountryMode` | string | No | `rotate` | `rotate`, `CN`, or `HK` |
| `proxyConfiguration` | object | No | Apify residential proxy | Proxy settings; residential proxy is recommended for 1688 |

### Input / Output

Basic single keyword:

```json
{
  "keywords": ["wireless earbuds"],
  "maxResults": 50
}
```

Multiple keywords in one run:

```json
{
  "keywords": ["wireless earbuds", "phone case", "蓝牙耳机"],
  "maxResults": 100
}
```

Each keyword is searched separately. `maxResults` applies per keyword, so this can return up to 300 products total. Every keyword result includes `sourceKeyword`.

Best-selling products under 50 CNY:

```json
{
  "keywords": ["手机壳"],
  "maxResults": 100,
  "priceMax": 50,
  "sortBy": "bestSelling"
}
```

Specific products by offer ID:

```json
{
  "offerIds": ["735353578254", "672929783458", "927875250705"]
}
```

Verified factories in Shenzhen with low MOQ:

```json
{
  "keywords": ["silicone case"],
  "province": "广东",
  "city": "深圳市",
  "minOrderQuantity": 50,
  "merchantType": "superFactory",
  "maxResults": 200
}
```

Example output:

```json
{
  "offerId": "927875250705",
  "title": "跨境苹果17pm手机壳磁吸16pro肤感防摔iphone15promax磨砂保护套",
  "detailUrl": "https://detail.1688.com/offer/927875250705.html",
  "price": {
    "min": 7.58,
    "max": 9.0,
    "currency": "CNY",
    "priceType": "UMP",
    "promoLabel": "限时价"
  },
  "quantityPrices": [
    {
      "quantityRange": "2~99个",
      "quantityMin": 2,
      "quantityMax": 99,
      "price": 9.0
    }
  ],
  "images": ["https://cbu01.alicdn.com/img/ibank/O1CN01HTCT63.jpg"],
  "province": "广东",
  "city": "深圳市",
  "minOrderQuantity": 2,
  "supplier": {
    "memberId": "b2b-2850655109d72ea",
    "companyName": "佛山市南海区三丰手机配件有限公司",
    "shopUrl": "https://winport.m.1688.com/page/index.html?memberId=b2b-2850655109d72ea",
    "isSuperFactory": true
  },
  "specs": [
    {
      "name": "材质",
      "value": "硅胶"
    }
  ],
  "descriptionImages": ["https://cbu01.alicdn.com/img/ibank/desc-1.jpg"],
  "descriptionText": "产品详情：本款手机壳采用液态硅胶材质...",
  "sourceKeyword": "手机壳",
  "scrapedAt": "2026-07-20T00:00:00+00:00"
}
```

Some fields depend on what public 1688 pages expose for a given offer. The actor returns `null`, empty arrays, or empty objects instead of invented values when a field is unavailable.

### Python API example

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("parsebird/1688-wholesale-scraper").call(run_input={
    "keywords": ["手机壳"],
    "maxResults": 10,
    "sortBy": "bestSelling",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["offerId"], item["title"])
```

See the official [Apify Python client documentation](https://docs.apify.com/api/client/python/) for authentication and dataset options.

### JavaScript API example

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('parsebird/1688-wholesale-scraper').call({
  offerIds: ['735353578254', '672929783458', '927875250705'],
  includeSkuDetails: true,
  proxyConfiguration: {
    useApifyProxy: true,
    apifyProxyGroups: ['RESIDENTIAL'],
  },
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

See the official [Apify JavaScript client documentation](https://docs.apify.com/api/client/js/) for more examples.

### How much does it cost to scrape 1688 products?

**What is the price per 1688 product?**

| Event | Free | Bronze | Silver | Gold |
|-------|------|--------|--------|------|
| `result` | $0.00001 (**$0.01 / 1,000**) | $0.00001 (**$0.01 / 1,000**) | $0.00001 (**$0.01 / 1,000**) | $0.00001 (**$0.01 / 1,000**) |
| `product` | $0.00799 (**$7.99 / 1,000**) | $0.00779 (**$7.79 / 1,000**) | $0.00749 (**$7.49 / 1,000**) | $0.00699 (**$6.99 / 1,000**) |

Each `result` event means one dataset item was saved. Each `product` event means one 1688 product was successfully enriched. Apify free trial credits may cover test runs where applicable.

### Use cases

- Source 1688 suppliers for ecommerce, dropshipping, Amazon, Shopify, TikTok Shop, or offline wholesale buying.
- Compare tiered wholesale prices, MOQ, category, shipping, and supplier location across product niches.
- Monitor supplier pages and product details with [Apify schedules](https://docs.apify.com/platform/schedules).
- Build procurement dashboards or sourcing databases through [Apify integrations](https://apify.com/integrations).
- Export 1688 product data to JSON, CSV, Excel, Google Sheets, databases, or BI tools.

### How it works

1. The actor validates keyword, offer ID, filter, enrichment, and proxy inputs.
2. In keyword mode, it searches 1688 and extracts public offer IDs from result pages.
3. In offer ID mode, it builds direct product URLs and skips search.
4. It fetches each public product page and parses embedded structured data and page metadata.
5. It normalizes source-backed fields into a stable dataset object and leaves unavailable values empty.
6. It pushes each product to the default Apify dataset and applies PPE charging only on the Apify platform.

### Is it legal to scrape 1688.com?

**Is scraping 1688 products legal?**

Scraping publicly available web data is generally allowed in many jurisdictions, but you should review 1688.com's terms, avoid collecting private or sensitive information, and make sure your use case complies with applicable laws. For background, read Apify's guide: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/).

### Other 1688 scrapers / Related Actors

| Actor | Best for |
|-------|----------|
| [1688 Products Wholesale Scraper - Full Supplier Details](https://apify.com/parsebird/1688-wholesale-scraper) | 1688 products, prices, supplier details, SKU data, shipping, and sourcing research |
| [Shopify Store Leads Scraper](https://apify.com/parsebird/shopify-store-leads-scraper) | Finding Shopify stores and ecommerce leads |
| [eBay Sold Listings Scraper](https://apify.com/parsebird/ebay-sold-listings-scraper) | Marketplace price research and sold listing data |
| [YouTube Search Scraper](https://apify.com/parsebird/youtube-search-scraper) | Search result data for product research content workflows |
| [Website Contact Finder](https://apify.com/parsebird/website-contact-finder) | Finding public contact details for supplier or lead lists |

### FAQ

**Can I use this as a 1688 scraper API?**

Yes. Start runs and fetch datasets through the [Apify API](https://docs.apify.com/api/v2), Python client, JavaScript client, webhooks, or integrations.

**Can I scrape 1688 by English keywords?**

Yes. The `keywords` field accepts Chinese or English search terms. Chinese terms often match 1688 listings more directly because the marketplace is Chinese-language.

**Can I scrape specific 1688 products?**

Yes. Add product offer IDs to `offerIds`. The actor skips search and enriches those product pages directly.

**Why are some fields empty?**

1688 pages vary by product, seller, category, region, and availability. The actor only returns source-backed values and leaves unavailable fields as `null`, empty arrays, or empty objects.

**Does this actor require a proxy?**

Residential proxy is recommended for reliable 1688 access. The input schema defaults to Apify residential proxy settings.

**Can I schedule recurring 1688 monitoring?**

Yes. Use [Apify schedules](https://docs.apify.com/platform/schedules) to run this 1688 scraper daily, weekly, or at any interval.

**Where can I report issues or request fields?**

Open the Issues tab on the actor page and include your input example, run ID, and the 1688 product URL or offer ID.

# Actor input Schema

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

Add 1688 search terms in Chinese or English. Each keyword is searched separately. Ignored when Offer IDs are provided.

## `offerIds` (type: `array`):

Add specific 1688 offer IDs, such as 735353578254. When set, the actor skips keyword search.

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

Maximum products per keyword. Ignored when Offer IDs are provided.

## `priceMin` (type: `integer`):

Minimum unit price in CNY.

## `priceMax` (type: `integer`):

Maximum unit price in CNY.

## `province` (type: `string`):

Supplier province in Chinese, for example 广东 or 浙江.

## `city` (type: `string`):

Supplier city in Chinese, for example 深圳市 or 义乌市.

## `minOrderQuantity` (type: `integer`):

Filter by supplier minimum order quantity threshold.

## `merchantType` (type: `string`):

Select all merchants, super factories, or verified merchants.

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

Sort keyword search results by relevance, sales, or price.

## `includeSkuDetails` (type: `boolean`):

Include the full SKU variant matrix when 1688 exposes it.

## `includeDescriptionHtml` (type: `boolean`):

Include raw product description HTML. Description images and text are always extracted when available.

## `includeSupplierIntelligence` (type: `boolean`):

Add distribution and dropship intelligence when 1688 exposes it. This optional enrichment is off by default.

## `proxyCountryMode` (type: `string`):

Rotate residential proxies or request China/Hong Kong proxy groups when available.

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

Use Apify residential proxy settings. Residential proxies are required for reliable 1688 access.

## Actor input object example

```json
{
  "keywords": [
    "手机壳"
  ],
  "offerIds": [],
  "maxResults": 10,
  "merchantType": "any",
  "sortBy": "relevance",
  "includeSkuDetails": false,
  "includeDescriptionHtml": false,
  "includeSupplierIntelligence": false,
  "proxyCountryMode": "rotate",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "手机壳"
    ],
    "offerIds": [],
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/1688-wholesale-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 = {
    "keywords": ["手机壳"],
    "offerIds": [],
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/1688-wholesale-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 '{
  "keywords": [
    "手机壳"
  ],
  "offerIds": [],
  "maxResults": 10
}' |
apify call parsebird/1688-wholesale-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "1688 Products Wholesale Scraper - Full Supplier Details",
        "description": "Scrape 1688 wholesale products, supplier details, tiered prices, MOQ, SKUs, shipping, certifications, dropship signals, and images. Export JSON, CSV, Excel.",
        "version": "1.0",
        "x-build-id": "Y2pHTa7uD1EGgGktJ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parsebird~1688-wholesale-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parsebird-1688-wholesale-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/parsebird~1688-wholesale-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parsebird-1688-wholesale-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/parsebird~1688-wholesale-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parsebird-1688-wholesale-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": {
                    "keywords": {
                        "title": "Keywords",
                        "type": "array",
                        "description": "Add 1688 search terms in Chinese or English. Each keyword is searched separately. Ignored when Offer IDs are provided.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "offerIds": {
                        "title": "Offer IDs",
                        "type": "array",
                        "description": "Add specific 1688 offer IDs, such as 735353578254. When set, the actor skips keyword search.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum products per keyword. Ignored when Offer IDs are provided.",
                        "default": 50
                    },
                    "priceMin": {
                        "title": "Min Price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum unit price in CNY."
                    },
                    "priceMax": {
                        "title": "Max Price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum unit price in CNY."
                    },
                    "province": {
                        "title": "Province",
                        "type": "string",
                        "description": "Supplier province in Chinese, for example 广东 or 浙江."
                    },
                    "city": {
                        "title": "City",
                        "type": "string",
                        "description": "Supplier city in Chinese, for example 深圳市 or 义乌市."
                    },
                    "minOrderQuantity": {
                        "title": "Min Order Quantity",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Filter by supplier minimum order quantity threshold."
                    },
                    "merchantType": {
                        "title": "Merchant Type",
                        "enum": [
                            "any",
                            "superFactory",
                            "verifiedMerchant"
                        ],
                        "type": "string",
                        "description": "Select all merchants, super factories, or verified merchants.",
                        "default": "any"
                    },
                    "sortBy": {
                        "title": "Sort By",
                        "enum": [
                            "relevance",
                            "bestSelling",
                            "priceAsc",
                            "priceDesc"
                        ],
                        "type": "string",
                        "description": "Sort keyword search results by relevance, sales, or price.",
                        "default": "relevance"
                    },
                    "includeSkuDetails": {
                        "title": "Include SKU Details",
                        "type": "boolean",
                        "description": "Include the full SKU variant matrix when 1688 exposes it.",
                        "default": false
                    },
                    "includeDescriptionHtml": {
                        "title": "Include Description HTML",
                        "type": "boolean",
                        "description": "Include raw product description HTML. Description images and text are always extracted when available.",
                        "default": false
                    },
                    "includeSupplierIntelligence": {
                        "title": "Include Supplier Intelligence",
                        "type": "boolean",
                        "description": "Add distribution and dropship intelligence when 1688 exposes it. This optional enrichment is off by default.",
                        "default": false
                    },
                    "proxyCountryMode": {
                        "title": "Proxy Country Mode",
                        "enum": [
                            "rotate",
                            "CN",
                            "HK"
                        ],
                        "type": "string",
                        "description": "Rotate residential proxies or request China/Hong Kong proxy groups when available.",
                        "default": "rotate"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Use Apify residential proxy settings. Residential proxies are required for reliable 1688 access.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
