# 1688 Scraper 阿里巴巴货源: Products, SKU Prices, Reviews, Categories (`sourabhbgp/1688-scraper`) Actor

Scrape 1688.com wholesale: products, every SKU variant with its own price and live stock, the full MOQ price ladder, buyer reviews and the category tree. Search in Chinese or English (蓝牙耳机 or bluetooth earphone) and get English titles back. Supplier data and SKU variants included at no extra charge.

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

## Pricing

from $3.99 / 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/actors/running/actors-in-store.md#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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 scraper 阿里巴巴 批发货源: products, SKU prices, reviews & categories

Pull China wholesale data from 1688.com without a login, a cookie, or a 1688 account. Four modes
cover keyword search, full product detail with every SKU variant, buyer reviews, and the whole
category tree.

**From $3.99 per 1,000 results. No separate charge for supplier data or SKU variants.**

Search works with Chinese and English keywords: `蓝牙耳机` and `bluetooth earphone` both return
results, and titles come back translated into English.

### What you can pull

| Mode | You give it | You get back |
|---|---|---|
| **Search 搜索** | keywords, in Chinese or English | products with price in USD and CNY, sales volume, supplier, images |
| **Product detail 商品详情** | offer IDs or product URLs | the full record: every SKU variant with its own price and live stock, MOQ price ladder, specifications, dropship channels, shipping |
| **Reviews 评价** | offer IDs or product URLs | buyer reviews with rating, date, buyer location, the SKU they bought |
| **Categories 类目** | nothing | the 1688 category tree in English, parents and children |

### Why this scraper

- 🧬 **Every SKU variant, every time.** Colour, size, price, discount price and live stock for each one. Not behind a flag, not a separate charge.
- 💰 **The full MOQ price ladder**, so you can see the price at 1 unit, at 100 and at 1,000 instead of one headline number.
- 🇬🇧 **English product titles** without a translation step.
- 🚫 **No account, no cookies, no proxy setup.** Search and categories run with no proxy at all.
- 🧾 **Rows removed by your filters are never charged.** Set a price range and you pay only for what survives it.
- 🏭 **Supplier detail included in the row**: company name, shop link, location, repeat buyer rate, factory or trader.

### Top use cases

#### Sourcing and dropshipping

Find a product on 1688 at factory price, then pull the SKU matrix to see which colour and size you
can actually order and how many are in stock. The dropship channel list tells you whether the
supplier already ships to Shopify, Amazon, Lazada, Shopee, TikTok or Taobao.

#### Amazon FBA and private label research

Compare the 1688 landed cost against your marketplace selling price. The MOQ ladder is the number
that decides whether a product is viable at your first order size, not the single price on the card.

#### Supplier vetting before you order

Years trading on 1688, repeat buyer rate, factory or trading company, shop link and location, all in
the same row as the product. Filter search to Super Factory or Certified Merchant suppliers only.

#### Price and competitor monitoring

Schedule a keyword search and watch prices, sales volume and new listings move week to week.

#### Building a product catalogue

Pull the category tree once, then search each category to build a structured catalogue with images,
prices and suppliers.

### Input examples

**Search mode**, keywords in English or Chinese

```json
{
  "mode": "search",
  "keywords": ["led light", "蓝牙耳机"],
  "maxItems": 100,
  "sortType": "va_sales360",
  "merchantType": "superFactory",
  "supplierYears": "5",
  "certifications": ["CE", "RoHS"]
}
```

**Product detail mode**, offer IDs or full product URLs

```json
{
  "mode": "product_detail",
  "offerIds": [
    "617247852601",
    "https://detail.1688.com/offer/947797012988.html"
  ],
  "maxItems": 50,
  "includeSkuDetails": true,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

**Reviews mode**

```json
{
  "mode": "reviews",
  "offerIds": ["617247852601"],
  "maxItems": 100,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

**Category tree mode**

```json
{
  "mode": "category_browse",
  "maxItems": 1000
}
```

### Output examples

Every row carries `scrapedAt`. These are real rows from live runs.

**Search mode**, one row per product

```json
{
  "offerId": "703829920141",
  "url": "https://detail.1688.com/offer/703829920141.html",
  "title": "Yaming Led Light Bulb High-Power Household E27 Screw Base Super Bright 200W 100W Energy-Saving Light Bulb Factory",
  "priceUsd": 0.91,
  "priceUsdText": "$0.91",
  "priceCny": 5.98,
  "sales": "27K+ sold",
  "salesCount": 27000,
  "supplierName": "Wujin Yaoguan Lanhai Lighting Equipment Factory",
  "supplierLoginId": "czlhjnkj",
  "supplierUrl": "https://winport.m.1688.com/page/index.htm?memberId=czlhjnkj",
  "supplierYearsOnPlatform": 16,
  "starLevel": 4.7,
  "images": [
    "https://cbu01.alicdn.com/img/ibank/O1CN01TIUkjr2NgOReg55rW_!!990989992-0-cib.jpg"
  ],
  "sellingPoints": ["3000 hours life time", "Response Rate 96.07%"],
  "isAd": false,
  "sourceKeyword": "led light",
  "scrapedAt": "2026-08-31T07:39:56.447Z"
}
```

**Product detail mode**, one row per product, with the SKU matrix and the MOQ ladder

```json
{
  "offerId": "928596422357",
  "url": "https://detail.1688.com/offer/928596422357.html",
  "title": "Suitable for iPhone 17 Pro Max Fine-Circle Magnetic Phone Case, Matte Version, Apple 16 Silicone Anti-Drop 15 Protective Case",
  "priceCny": 4.5,
  "priceRangeCny": "3.00-4.50",
  "priceTiers": [
    { "minQuantity": 300, "priceCny": 4 },
    { "minQuantity": 9000, "priceCny": 3 }
  ],
  "currency": "CNY",
  "minOrderQuantity": 1,
  "unit": "item",
  "stock": 730407,
  "isOutOfStock": false,
  "soldCount": 113,
  "recentSoldText": "30+",
  "views7Day": 380,
  "favouriteCount": 14,
  "repurchaseRate": "54.87%",
  "supplierName": "深圳市罗湖区洪星电子商行",
  "supplierUrl": "https://shop306x909028029.1688.com",
  "locationCn": "广东省深圳市",
  "supportsMix": true,
  "supportsDropship": true,
  "dropshipChannels": [
    { "name": "Lazada", "typeCode": "lazada" },
    { "name": "Amazon", "typeCode": "amazon" },
    { "name": "Shopify", "typeCode": "shopify" }
  ],
  "deliveryLimitDays": 2,
  "videoUrl": "https://cloud.video.taobao.com/play/u/2212690464168/p/2/e/6/t/1/520376273712.mp4",
  "categoryId": "1046694",
  "totalVariants": 140,
  "variants": [
    {
      "skuId": "6090121414768",
      "specAttributes": "Pink1 > iPhone17",
      "priceCny": 4.5,
      "discountPriceCny": null,
      "stock": 5218,
      "saleCount": 0,
      "isPromotion": false
    }
  ],
  "scrapedAt": "2026-08-31T07:51:37.844Z"
}
```

**Reviews mode**, one row per review

```json
{
  "offerId": "617247852601",
  "reviewId": "40654823880",
  "text": "该用户觉得商品非常赞，给出了五星好评",
  "rating": 5,
  "reviewedAt": "2026-08-27 11:09:50",
  "buyerNick": "大**晗",
  "buyerLocation": "北京市",
  "isRepeatBuyer": true,
  "quantity": 1,
  "unit": "个",
  "skuSpec": "颜色: 【立体款】暗夜黑; 尺码: 均码",
  "images": [],
  "supplierLoginId": "义乌市谷登手套厂",
  "scrapedAt": "2026-08-31T07:51:36.589Z"
}
```

**Category tree mode**, one row per category

```json
{
  "categoryId": "54",
  "name": "Clothing accessories, accessories",
  "parentName": null,
  "categoryPath": "Clothing accessories, accessories",
  "depth": 0,
  "childCount": 36,
  "isLeaf": false,
  "scrapedAt": "2026-08-31T07:25:59.749Z"
}
```

### How much does 1688 Scraper cost?

One result is one row: a product, a product detail record, a review, or a category. The price per
1,000 rows drops with your Apify plan:

| Your Apify plan | Per 1,000 rows | Your monthly credit buys about |
|---|--:|--:|
| Free | $4.99 | 1,000 rows |
| Starter | $4.79 | 6,000 rows |
| Scale | $4.49 | 44,000 rows |
| Business and above | $3.99 | 250,000 rows |

There is also a $0.005 actor start fee per run.

Supplier detail and the full SKU variant matrix are part of the row, not a separate charge. Rows
removed by your price or MOQ filters are never billed, so a narrow filter costs you nothing for the
products it rejects.

### Limitations

- **Reviews and product specifications come back in Chinese.** Product titles are translated to
  English, and SKU variant names usually are. Review text, specification names on some products, and
  category names inside a product record are not.
- **Product detail and reviews need the proxy option turned on.** 1688 does not serve product pages
  to Apify's own address. Search and the category tree do not need it.
- **1688 caps a keyword at roughly 2,000 results.** Use several keywords, or sort differently, to go
  wider.
- **The category tree mode returns up to 1,000 categories per run**, widest levels first, so a single
  run cannot run up a large bill on a tree with more than 9,000 nodes.
- **Reviews arrive 10 per page**, which is 1688's own limit, not ours.
- Some products fail on a first attempt and are retried on a different address. A product that still
  cannot be read is named in the run status and is not charged.
- **The supplier tier, certification and dispatch filters narrow the results at 1688's end, but the
  returned rows do not carry a tier, certificate or dispatch field**, so you cannot re-check those
  filters from the output. Price, MOQ, sales and supplier years are all in the row and are checkable.
- No search by image.

### Frequently asked questions

#### Do I need a 1688 account, cookies, or a login?

No. Everything this scraper returns is public data. You never enter a password or paste a cookie.

#### Will I get blocked, or do I need a proxy?

Turn on the proxy option for product detail and reviews, and the actor handles the rest, including
retrying a product on a different address if 1688 refuses the first one. Search and the category tree
need no proxy at all.

#### Why are some of my variants empty?

They should not be. Every SKU variant is returned with its own price, discount price and live stock,
including on products where 1688 shows a price range instead of a single price. If you see an empty
variant list on a product that clearly has options, please open an issue with the offer ID.

#### Can I search several keywords in one run?

Yes. Put them all in **Keywords** and the run splits its result budget across them. Every row carries
`sourceKeyword` so you can tell which keyword found it.

#### Can I filter by price or minimum order quantity?

Yes. Price range and maximum MOQ apply in both search and product detail. The supplier tier, years
trading, fast dispatch and certification filters apply to search only. Rows that do not match are
never charged, so a narrow price range costs you nothing for the products it rejects.

#### How much does it cost?

From $3.99 per 1,000 rows on Business and above, $4.49 on Scale, $4.79 on Starter and $4.99 on the
free plan, plus a $0.005 start fee per run. You are charged only for rows actually delivered.

#### What is the difference between the prices I see?

Search rows carry `priceUsd` and `priceCny`. Product detail rows are in CNY, and give you the price
range plus the full MOQ ladder, so you can see what the unit price becomes at 100 or 1,000 pieces.

#### What happens if an offer ID does not exist?

The run continues, names the offer it could not read in the status message, and does not charge you
for it.

#### Is it legal to scrape 1688?

This scraper collects only publicly available data. You are responsible for how you use it, and for
complying with 1688's terms and with the law that applies to you. It does not collect personal data
beyond the buyer nickname 1688 itself shows publicly on a review.

#### Can I use it with the Apify API, schedules, or an MCP server?

Yes. It is a standard Apify actor, so you can run it on a schedule, call it from the API or any
Apify client, integrate it with Make, Zapier, Airbyte and the rest, and use it as an MCP tool.

### Your feedback

Found a bug, or need a field this does not return yet? Open an issue at
https://console.apify.com/actors/UASXsoJywSZvUyGWw/issues and it goes straight to me.

# Actor input Schema

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

Pick one job per run. search finds products by keyword. product\_detail takes offer IDs or product URLs and returns the full record including the SKU variant matrix. reviews returns buyer reviews for an offer. category\_browse returns the full 1688 category tree.

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

Search terms, English or Chinese. Each keyword is searched separately and every row carries the keyword that produced it. Used by search mode only.

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

1688 offer IDs such as 617247852601, or full product URLs such as https://detail.1688.com/offer/617247852601.html. Used by product\_detail and reviews modes.

## `maxItems` (type: `integer`):

Upper bound on rows for this run, counted across all keywords or offers. You are only charged for rows actually delivered. The category tree mode is capped at 1000 categories per run.

## `sortType` (type: `string`):

Order of search results. Recommended is the 1688 default ranking, Orders sorts by units sold in the last 360 days, Price sorts ascending.

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

Restrict search results to a verified supplier tier. Any applies no restriction.

## `supplierYears` (type: `string`):

Keep only suppliers that have traded on 1688 for at least this long. A longer history is one of the few durable trust signals 1688 publishes.

## `fastShippingOnly` (type: `boolean`):

Keep only offers the supplier commits to dispatching within 24 to 48 hours.

## `certifications` (type: `array`):

Keep only products carrying these compliance certificates. Essential for importing into the EU, UK and US. Leave empty to apply no certificate filter.

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

Lowest unit price to accept, in yuan. Rows filtered out by price are never charged.

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

Highest unit price to accept, in yuan. Rows filtered out by price are never charged.

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

Drop offers whose minimum order quantity is above this number. Set it to the largest first order you are willing to place.

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

Return every variant with its own price, discount price, live stock and spec attributes. On by default: the per variant price is usually the number you actually need.

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

Add the raw supplier description markup to each product\_detail row. Large, so it is off by default.

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

Required for the product\_detail and reviews modes: 1688 blocks product pages from Apify's own address, so those modes need a proxy to work at all. The search and category\_browse modes do not need one.

## Actor input object example

```json
{
  "mode": "search",
  "keywords": [
    "led light"
  ],
  "offerIds": [
    "617247852601"
  ],
  "maxItems": 100,
  "sortType": "normal",
  "merchantType": "any",
  "supplierYears": "any",
  "fastShippingOnly": false,
  "certifications": [],
  "includeSkuDetails": true,
  "includeDescriptionHtml": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

Search rows carry the product, its USD and CNY price, sales, supplier and images. Product detail rows carry the full record including every SKU variant with its own price and live stock, the MOQ price ladder, specifications, dropship channels and shipping. Review rows carry buyer feedback. Category rows carry the full 1688 tree in English.

# 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 = {
    "mode": "search",
    "keywords": [
        "led light"
    ],
    "offerIds": [
        "617247852601"
    ],
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("sourabhbgp/1688-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 = {
    "mode": "search",
    "keywords": ["led light"],
    "offerIds": ["617247852601"],
    "maxItems": 100,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("sourabhbgp/1688-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "search",
  "keywords": [
    "led light"
  ],
  "offerIds": [
    "617247852601"
  ],
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call sourabhbgp/1688-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sourabhbgp/1688-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/UASXsoJywSZvUyGWw/builds/ReCkX1N3qjMc3BjSu/openapi.json
