# 1688 Scraper - Alibaba Wholesale Prices, MOQ & Suppliers (`scrapewise/alibaba-1688-scraper`) Actor

Scrape 1688.com (Alibaba China wholesale) without login: products by keyword in English or Chinese, price, quantity price tiers, MOQ, sold count, supplier company, scores and province. Optional full product page: variants, attributes, images, video, delivery days.

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

## Pricing

from $0.85 / 1,000 product delivereds

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?

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 Scraper: Alibaba China wholesale products, price tiers, MOQ, suppliers and search by image

Scrape [1688.com](https://www.1688.com/) (阿里巴巴1688), Alibaba's wholesale marketplace for China, **without an
account, cookies or a browser**: products found by keyword in **English or Chinese**, price in yuan, quantity price
tiers, minimum order quantity (MOQ), units sold, repurchase rate, images, supplier company, business type
(manufacturer or wholesaler), verified years, factory inspection, service scores, province and city. Turn on the
full product page to add variants with photos, every attribute, the image gallery, video, stock, want-to-buy
count, ships-from, delivery days and buyer protections.

**Search by image:** paste a product photo from Amazon, AliExpress, Shopee, Temu or any site (or upload one, or
give a 1688 product) and get the 1688 suppliers selling the same or a similar item, most similar first.

Built for sourcing and dropshipping research, price comparison between 1688 and Amazon, AliExpress or Shopee,
supplier shortlists, product trend tracking and datasets for pricing tools and LLMs.

### At a glance

- **Price per 1,000 products, Free plan:** US$ 1.00 (search) / US$ 2.00 (with full product page)
- **Fee per run start:** None
- **Search by keyword, English or Chinese:** Yes
- **Search by image (photo link, upload, similar to a 1688 product):** Yes, US$ 0.004 per image, 60 products included
- **Price and province filters, sort by price or sales:** Yes
- **Product links or ids:** Yes
- **Full product page (variants, attributes, gallery, video, stock):** Yes, optional
- **Sponsored listings flagged (`isAd`) and optional skip:** Yes
- **Error rows (bad link, product taken down, no results):** Free, with an `errorCode`

### One real row

From a test run on 2026-09-28 with the full product page on (lists shortened):

```json
{
  "type": "product",
  "offerId": "735353578254",
  "url": "https://detail.1688.com/offer/735353578254.html",
  "title": "适用iphone18PRO大视窗磁吸手机壳15磨砂漏标苹果11秒变17保护套",
  "price": 9.0,
  "priceType": "quantity_tiers",
  "priceMin": 7.5,
  "priceMax": 9.0,
  "currency": "CNY",
  "unit": "个",
  "priceTiers": [
    {"minQuantity": 2, "maxQuantity": 499, "price": 9.0},
    {"minQuantity": 500, "maxQuantity": 4999, "price": 8.5},
    {"minQuantity": 5000, "maxQuantity": null, "price": 7.5}
  ],
  "minOrderQuantity": 2,
  "soldText": "1万+",
  "soldCount": 17662,
  "wantToBuy": 914,
  "stockAvailable": 2696036,
  "variants": [
    {"name": "樱桃红【纳米磨砂防指纹手汗】", "imageUrl": "https://cbu01.alicdn.com/img/ibank/O1CN01mLerzF1OFCHJw6Hvh_!!3872131675-0-cib.jpg"}
  ],
  "attributes": [
    {"name": "材质", "value": "PC"},
    {"name": "功能", "value": "其它,磁吸,防摔,抗指纹"}
  ],
  "videoUrl": "https://cloud.video.taobao.com/play/u/3872131675/p/2/e/6/t/1/533538773043.mp4",
  "shipsFrom": "广东深圳",
  "deliveryDays": 2,
  "supplier": {
    "companyName": "深圳市亿佳合兴科技有限公司",
    "memberId": "b2b-38721316754ec7c",
    "isFactory": false
  },
  "detailsLoaded": true,
  "errorCode": null
}
```

A search row (full product page off) also brings `repurchaseRatePercent`, `province`, `city`, `serviceTags`,
`isAd`, `position`, `page`, and the supplier's `businessType` (生产加工 = manufacturer, 经销批发 = wholesaler),
`trustPassYears`, `factoryInspected`, `superFactory`, `shopUrl` and `scores` (overall, goods, consultation,
logistics, disputes, returns, 0 to 5).

### Input

```json
{
  "keywords": ["phone case", "瑜伽垫"],
  "maxItems": 200,
  "sortBy": "sales",
  "minPrice": 5,
  "maxPrice": 30,
  "province": "Guangdong",
  "excludeAds": true,
  "includeDetails": false
}
```

- `keywords`: one per line. English is translated by 1688; Chinese gives the most precise match.
- `maxItems`: products in the whole run (0 = no limit). `maxItemsPerKeyword` caps each keyword.
- `sortBy`: `relevance`, `price_low`, `price_high` or `sales`.
- `minPrice` / `maxPrice`: in Chinese yuan. `province`: English (Guangdong, Zhejiang...) or Chinese (广东, 浙江...).
- `excludeAds`: skip sponsored placements.
- `offerUrls`: product links or numeric offer ids; each returns the full product page.
- `includeDetails`: open every product found by the search for the full page.

Search by image:

```json
{
  "imageUrls": ["https://m.media-amazon.com/images/I/61SUj2aKoEL._AC_SL1500_.jpg"],
  "similarToOffers": ["735353578254"],
  "maxResultsPerImage": 20,
  "maxPrice": 60
}
```

- `imageUrls`: public JPG, PNG or WebP links, one per line. `imageFile`: upload a photo instead.
- `similarToOffers`: 1688 product links or ids; the Actor uses each product's main photo to find other suppliers.
- `maxResultsPerImage`: products per image (empty = 20, 0 = all 1688 shows, about 700). Price, province and
  sponsored filters also apply. Each image row adds `searchImage`, `imageId`, `matchRank` and `similarityScore`.

An empty input runs the example search "phone case" with 20 products.

### Price

- **US$ 1.00 per 1,000 products** (US$ 0.001 each), no fee per run.

- **US$ 1.00 per 1,000 full product pages** on top, only for products that came back with the full page
  (`includeDetails` on, or product links and ids). A product whose page could not be loaded is delivered with the
  search data and this second event is not charged.

- Store discounts on the product event: US$ 0.95 per 1,000 on Bronze, US$ 0.90 on Silver, US$ 0.85 on Gold and
  above. The full product page event is US$ 1.00 per 1,000 on every plan.

- Never charged: error rows, duplicates, sponsored listings you excluded and products outside your price filter.

- **Search by image: US$ 0.004 per image** that returns at least one product, with up to 60 products included.
  From the 61st product of the same image on, each product costs US$ 0.001. Images that could not be read or
  returned nothing are free.

Examples: 1,000 products from a keyword search = US$ 1.00. 1,000 products with the full page = US$ 2.00.
100 photos with 20 similar products each (2,000 products) = US$ 0.40.

You can set a maximum cost per run in Apify: the Actor stops when the limit is reached and keeps what it saved.

### Errors you may see

Every error is a row with `errorCode` and is never charged:

| errorCode | Meaning |
|---|---|
| `INVALID_INPUT` | A field has a wrong value (the message says which). |
| `INVALID_URL` | Not a 1688 product link or offer id, or an image link that does not start with http(s)://. |
| `IMAGE_UNREADABLE` | The image link did not return a JPG, PNG or WebP picture (or it is over 15 MB). |
| `NOT_FOUND` | The product does not exist or was taken down. |
| `NO_RESULTS` | 1688 has no products for this keyword and filters. |
| `BLOCKED` | 1688 refused every attempt for this search or product; run again. |
| `NOT_REACHED` | The run timeout arrived before this item. |

### Good to know

- 1688 shows at most about 2,000 products per search. For more, use several related keywords.
- Prices are in Chinese yuan (CNY) as 1688 shows them, before shipping and import costs. `price` is the price on
  the search card or product page; `priceTiers` are the quantity tiers; for products priced per variant
  (`priceType: per_variant`) there are no tiers and `priceMin` / `priceMax` give the range across variants.
- Titles, attributes and variant names stay in Chinese, as the suppliers wrote them.
- The Actor uses Apify's datacenter proxy and, when 1688 refuses it, a residential IP in China for that request.
  You pay only the per-product price above.
- No personal data: suppliers come as companies (company name, an opaque `memberId`, shop link, scores). Account
  names, chat links, phone numbers and emails are never collected.

### FAQ

**Do I need a 1688 or Alibaba account?** No. Everything comes from public pages, without login.

**Can I search in English?** Yes. 1688 translates English keywords; Chinese keywords are more precise.

**How do I get the variants and attributes?** Turn on "Include full product page", or paste product links.

**Can I find the 1688 supplier of a product I saw on Amazon or AliExpress?** Yes: paste the product photo link in
"Image links". 1688 returns visually similar listings, most similar first; check `similarityScore` and the photo.

**Is this Alibaba.com?** No. 1688.com is Alibaba's marketplace for the Chinese domestic wholesale market, with
factory prices in yuan. Alibaba.com is the international site.

**Something broke or a field is missing?** Open an issue on the Actor page. Issues are answered within a day.

### Changelog

- **0.1 (28 Sep 2026):** first version. Search by image (photo link, upload, or similar to a 1688 product). Keyword search in English or Chinese with price, province and sponsored
  filters and sorting; quantity price tiers, MOQ, sold count, repurchase rate and supplier data from the search;
  optional full product page with variants, attributes, gallery, video, stock and delivery; product links and ids.

# Actor input Schema

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

What to search on 1688, one per line. English works (1688 translates it, for example 'phone case', 'yoga mat', 'led strip'); Chinese gives the most precise results (手机壳, 瑜伽垫, 灯带). Each keyword returns up to about 2,000 products, the most 1688 shows for one search.

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

Stop after this many products in the whole run, across all keywords, images and links. Empty or 0 = no total limit (each keyword then stops at 60 unless you set 'Max products per keyword', and each image at 'Max products per image'). You pay per product delivered.

## `maxItemsPerKeyword` (type: `integer`):

Cap for each keyword, so one keyword does not use the whole 'Max products'. Empty = no cap per keyword when 'Max products' is set, or 60 when it is not. 0 = no cap (up to about 2,000).

## `imageUrls` (type: `array`):

Find 1688 suppliers from a product photo, one link per line: any public JPG, PNG or WebP (Amazon, AliExpress, Shopee, Temu, your own site, 1688). Each image returns similar 1688 products, most similar first, with the same fields as a keyword search plus 'similarityScore'.

## `imageFile` (type: `string`):

Upload a product photo from your computer instead of a link.

## `similarToOffers` (type: `array`):

1688 product links or offer ids: the Actor takes each product's main photo and finds other suppliers selling the same or similar item. Good for finding a cheaper factory for a product you already know.

## `maxResultsPerImage` (type: `integer`):

Products returned for each image. Empty = 20. Each image search is charged once and includes up to 60 products; from the 61st on, products are charged one by one. 0 = all 1688 shows (about 700).

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

Order 1688 applies to the search. 'relevance' is 1688's default order.

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

Only products priced at or above this, in Chinese yuan. Sent to 1688 and checked again on every product; products outside the range are not charged.

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

Only products priced at or below this, in Chinese yuan.

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

Only suppliers from one Chinese province, in English or Chinese: Guangdong (广东), Zhejiang (浙江), Jiangsu, Fujian, Shandong, Hebei, Shanghai... Empty = all of China.

## `excludeAds` (type: `boolean`):

1688 mixes paid placements into the results (isAd: true). On: they are skipped and not charged.

## `offerUrls` (type: `array`):

One per line: 1688 product links (https://detail.1688.com/offer/927875250705.html, the mobile m.1688.com/offer/... link) or just the numeric offer id. Each one returns the full product page. Also accepts 'startUrls' and 'offerIds'.

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

Opens each product found by the search and adds variants with photos, all attributes (material, models, style...), full image gallery, video, price tiers, stock, want-to-buy count, ships-from, delivery days and buyer protections. Charged as one extra 'full product page' event per product that came back with it. Links and ids always open the full page.

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

Apify datacenter proxy is the default: a new IP is used whenever 1688 refuses one. If the datacenter keeps being refused, the Actor switches to a residential IP in China for that request, at no extra cost to you.

## Actor input object example

```json
{
  "keywords": [
    "phone case"
  ],
  "maxItems": 20,
  "sortBy": "relevance",
  "excludeAds": false,
  "includeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

## `resultsCsv` (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": [
        "phone case"
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapewise/alibaba-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 = {
    "keywords": ["phone case"],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapewise/alibaba-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 '{
  "keywords": [
    "phone case"
  ],
  "maxItems": 20
}' |
apify call scrapewise/alibaba-1688-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapewise/alibaba-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/yHe7GnwvfbSjFsGfW/builds/8mwbro7WYb1oxcTfl/openapi.json
