# 1688.com Product Scraper - Wholesale Prices, MOQ & Suppliers (`seemuapps/alibaba-1688-product-scraper`) Actor

Scrape 1688.com wholesale listings by keyword, product URL or supplier: price tiers, MOQ, SKU variants, stock, sales, repurchase rate and supplier details.

- **URL**: https://apify.com/seemuapps/alibaba-1688-product-scraper.md
- **Developed by:** [Seemu Scraping](https://apify.com/seemuapps) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 search results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 1688.com Product Scraper - Wholesale Prices, MOQ & Suppliers

Extract wholesale product data from **1688.com** (阿里巴巴 1688, Alibaba's China wholesale marketplace): factory prices, quantity price tiers, minimum order quantity (MOQ), SKU variants with stock, sales volume, repurchase rate and full supplier details. Search by keyword, scrape product pages by URL, or list a supplier's whole catalogue. No 1688 account or login required.

Built for dropshippers, sourcing agents, Amazon / Shopify / TikTok Shop sellers and anyone comparing China suppliers.

### What you get

**Search results and supplier listings** (fast, 60 products per page):

- Offer ID, product URL, title, main image and image gallery
- Price, price tiers by quantity (e.g. 50-999 pcs ¥27, 1000-1999 pcs ¥25, 2000+ pcs ¥24), MOQ and unit
- Sales volume (e.g. "已售10万+件" → 100000) and repurchase rate
- Supplier name, login ID, member ID, shop URL, province / city, **years on 1688**
- Supplier service scores (overall, consultation, logistics, disputes, returns, goods)
- Verified-factory / verified-business / super-factory badges, service tags, and whether the listing is an ad

**Product details** (product mode, or turn on **Include full product details**):

- Every quantity price tier with min and max quantity
- SKU variants (colour, size, model…) with price, original price, stock and variant image
- All product images and the product video URL
- Product attributes / specifications (brand, material, model number…)
- Category, total stock, ships-from location and delivery promise (e.g. 48-hour dispatch)
- Rating, positive review rate and review count
- Supplier company name, member ID, shop URL, years on 1688, star rating, main category, followers, quality pass rate, fulfilment rate, repeat-buyer rate, service score, factory and TrustPass (诚信通) flags

Prices are in Chinese yuan (CNY). Export to JSON, CSV, Excel or Google Sheets from the Apify console.

### Use cases

- **Product sourcing** — find the cheapest factory for a product and compare MOQs and price breaks
- **Dropshipping research** — check wholesale cost, stock and variants before listing on Shopify, Amazon or TikTok Shop
- **Supplier vetting** — compare years on 1688, service scores, repurchase rates and factory badges
- **Competitor and price monitoring** — track a supplier's catalogue and prices over time with scheduled runs
- **Market research** — measure sales volume and price ranges for a product category in China

### How to use

1. Choose a **Mode**:
   - **Search by keyword** — enter one or more keywords. Chinese keywords (手机壳, 保温杯, 蓝牙耳机) give the best results; common English product names (phone case) also work.
   - **Product details** — paste 1688 product links (`https://detail.1688.com/offer/123456789.html`) or bare offer IDs.
   - **Supplier's product list** — paste a supplier member ID (`b2b-...`, shown as `supplier.memberId` in search results), a `m.1688.com/winport/b2b-...` link, or any product URL from that supplier. Optionally add a keyword to search inside the supplier's catalogue.
2. Optionally choose **Sort by** (best match, price low to high, price high to low).
3. Set **Max results per keyword / supplier** (default 100; 0 = no limit). 1688 shows up to about 2,000 results per keyword.
4. Turn on **Include full product details** if you need SKUs, stock, all price tiers and attributes for every search result.
5. Run the actor — results appear in the **Dataset** tab.

#### Fetching more pages

After the run finishes, open the **Key-value store** tab → copy the `NEXT_PAGE_ID` value (for example `3:60`) → paste it into **Page ID** on your next run with the same keyword or supplier. If `NEXT_PAGE_ID` is `null` or missing, you've fetched everything.

1688 personalises and re-ranks search results between visits, so a resumed search may contain a few products you already have. Deduplicate on `offerId`.

### Output example

```json
{
  "recordType": "searchResult",
  "offerId": "866095761513",
  "url": "https://detail.1688.com/offer/866095761513.html",
  "title": "数据线保护套硅胶防折断充电线保护套咬线器防断裂神器",
  "currency": "CNY",
  "price": 2.6,
  "priceMin": 2.5,
  "priceMax": 2.6,
  "priceTiers": [
    { "minQuantity": 3, "maxQuantity": 4999, "price": 2.6 },
    { "minQuantity": 5000, "maxQuantity": 99999, "price": 2.55 },
    { "minQuantity": 100000, "maxQuantity": null, "price": 2.5 }
  ],
  "moq": 3,
  "unit": "件",
  "salesText": "已售10万+件",
  "salesCount": 100000,
  "repurchaseRate": "17%",
  "imageUrl": "https://cbu01.alicdn.com/img/ibank/O1CN01YF0Pgn2Cf3RpPZIOV_!!2207290228500-0-cib.jpg",
  "shipFrom": "广东 东莞市",
  "isAd": false,
  "supplier": {
    "name": "东莞市元拓橡塑制品有限公司",
    "memberId": "b2b-22072902285003c713",
    "shopUrl": "https://apetop.1688.com",
    "location": "广东 东莞市",
    "yearsOn1688": 7,
    "serviceScore": 4,
    "scores": { "overall": 4, "consultation": 4, "logistics": 3.29, "dispute": 5, "return": 3, "goods": 3.33 }
  },
  "searchQuery": "手机壳",
  "position": 3
}
```

Product-detail records (`"recordType": "product"`) use the same fields and additionally fill `skus`, `skuProperties`, `attributes`, `images`, `videoUrl`, `categoryName`, `totalStock`, `deliveryPromise`, `rating`, `goodReviewRate` and `reviewCount`:

```json
{
  "recordType": "product",
  "offerId": "1048403098367",
  "title": "跨境新品适用于苹果18 Duo透明磁吸手机壳iphone18左右折叠保护套",
  "priceMin": 9.99,
  "priceMax": 10.99,
  "priceTiers": [
    { "minQuantity": 50, "maxQuantity": 499, "price": 10.99 },
    { "minQuantity": 500, "maxQuantity": 2999, "price": 10.49 },
    { "minQuantity": 3000, "maxQuantity": null, "price": 9.99 }
  ],
  "moq": 50,
  "unit": "个",
  "skus": [{ "skuId": "6135121708750", "name": "透明+磁吸>苹果18 duo(左右折叠)", "price": 9.99, "stock": 1303 }],
  "categoryName": "iPhone保护套",
  "shipFrom": "广东省佛山市",
  "rating": 5,
  "reviewCount": 7946,
  "supplier": { "name": "佛山市南海区三丰手机配件有限公司", "memberId": "b2b-2850655109d72ea", "isFactory": true, "repeatBuyerRate": "70.16%" }
}
```

### Notes

- Titles, attributes and SKU names are returned in Chinese, exactly as listed on 1688.
- The detailed supplier service scores (consultation, logistics, disputes…) come from search and supplier listings and are merged in when **Include full product details** is on.
- 1688 occasionally withholds a single deep search page from logged-out visitors. The actor retries it and, if it stays unavailable, skips it and continues with the next page (noted in the run log).
- Shop subdomain links (`shopxxxx.1688.com`) cannot be used directly in supplier mode — paste the member ID or one of the supplier's product URLs instead.
- Products that have been removed from 1688 are skipped and reported in the run log.

# Actor input Schema

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

Search returns listing data for every matching product. Product details returns the full product page (all price tiers, SKU variants with stock, attributes, images, supplier). Supplier lists every product sold by one or more suppliers.

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

Search mode: keywords to search on 1688.com, one per line. Chinese keywords (e.g. 手机壳) give the most results; English keywords also work for common product names.

## `productUrls` (type: `array`):

Product mode: 1688 product links (detail.1688.com/offer/123.html or m.1688.com/offer/123.html) or bare offer IDs, one per line.

## `suppliers` (type: `array`):

Supplier mode: supplier member IDs (b2b-...), m.1688.com/winport/b2b-... links, or any product URL sold by that supplier (the supplier is looked up from the product). The memberId field of search results can be pasted here.

## `supplierKeyword` (type: `string`):

Supplier mode only: optional keyword to search inside each supplier's catalogue. Leave empty to list all of the supplier's products.

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

Order of search and supplier results.

## `includeDetails` (type: `boolean`):

Search and supplier modes: also open each product page to add SKU variants with stock, every price tier, attributes, all images, video and review stats. Slower and billed as a product detail instead of a search result.

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

Maximum records per keyword or supplier (product mode: maximum products in total). 0 means no limit. Search results come 60 per page; 1688 shows at most about 2,000 results per keyword.

## `pageId` (type: `string`):

Paste NEXT_PAGE_ID from the previous run's Key-value store (e.g. 3:60) to fetch the next page. Use the same keyword or supplier as that run.

## Actor input object example

```json
{
  "mode": "search",
  "keywords": [
    "手机壳"
  ],
  "productUrls": [
    "https://detail.1688.com/offer/990286085363.html"
  ],
  "sort": "relevance",
  "includeDetails": false,
  "maxItems": 100
}
```

# Actor output Schema

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

One record per product: offerId, url, title, price, priceMin, priceMax, priceTiers, moq, unit, salesText, salesCount, repurchaseRate, images, skus, skuProperties, attributes, shipFrom, rating, supplier (name, memberId, shopUrl, location, yearsOn1688, scores, factory badges) and more.

## `nextPageId` (type: `string`):

NEXT_PAGE_ID record in the default key-value store. Paste into Page ID on the next run to resume; null when the list is exhausted.

# 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": [
        "手机壳"
    ],
    "productUrls": [
        "https://detail.1688.com/offer/990286085363.html"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("seemuapps/alibaba-1688-product-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": ["手机壳"],
    "productUrls": ["https://detail.1688.com/offer/990286085363.html"],
}

# Run the Actor and wait for it to finish
run = client.actor("seemuapps/alibaba-1688-product-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 '{
  "keywords": [
    "手机壳"
  ],
  "productUrls": [
    "https://detail.1688.com/offer/990286085363.html"
  ]
}' |
apify call seemuapps/alibaba-1688-product-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,seemuapps/alibaba-1688-product-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/GyqlBFiiIrsBmttlP/builds/xKDA5okcvwYyGL7ck/openapi.json
