# 1688 Products Search: Wholesale Prices, Sales & Suppliers (`tenfoldfleet/1688-products-search`) Actor

Search 1688.com products by keyword in Chinese or English and get wholesale prices, quantity price tiers, sales counts and supplier trust data: factory inspection, repeat-buyer rate, service scores, province and city. $2 per 1,000 products; empty searches are free.

- **URL**: https://apify.com/tenfoldfleet/1688-products-search.md
- **Developed by:** [Tenfold Fleet](https://apify.com/tenfoldfleet) (community)
- **Categories:** E-commerce, Agents, MCP servers
- **Features:** Limited permissions
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 products

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

### What does 1688 Products Search do?

**1688 Products Search** runs a keyword search on **1688.com**, the Chinese domestic B2B wholesale marketplace run by Alibaba Group, and returns one clean row per unique offer. Type a keyword in Chinese (`手机壳`) or English (`yoga mat`) and get the **wholesale price in CNY, quantity price tiers, minimum order quantity, units sold** and the **supplier behind the offer**: company name, province and city, years on 1688, factory inspection, repeat-buyer rate and trade service scores.

Use it as a **1688 product search API** with no login, cookies or Chinese phone number. It calls the same public search data the 1688 website loads, over plain HTTP (no browser), and costs **$2 per 1,000 products**. Keywords with no results and blocked pages are free.

Not affiliated with 1688.com or Alibaba Group. You are responsible for using the data in line with the site's terms and the laws that apply to you.

**Which Actor do I need?** This one covers **1688.com** (factory prices for buyers inside China, quoted in yuan). For the international, English-language **Alibaba.com** marketplace (USD prices, export MOQs, Gold Suppliers), use our [Alibaba Products Scraper](https://apify.com/tenfoldfleet/alibaba-products-scraper). To find products by photo instead of by keyword, use our [Alibaba Image Search](https://apify.com/tenfoldfleet/alibaba-image-search).

### Why use it?

- 🏭 **Factory-direct sourcing**: 1688 prices are often well below Alibaba.com and AliExpress for the same item. See the real tier price at the quantity you plan to order.
- 🔎 **Supplier vetting at a glance**: every row carries the factory inspection flag, years on the platform, repeat-buyer rate and service scores, so you can shortlist suppliers before you contact an agent.
- 📈 **Demand research**: units sold and booked counts show which variants actually move.
- 💹 **Margin models for dropshipping, Amazon FBA and Shopify**: export price tiers and MOQs straight into a spreadsheet.
- 🌍 **No Chinese needed**: search in English, filter by province in English (`Guangdong`, `Zhejiang`), read the numbers.
- 🤖 **AI agents and automations**: call it from the Apify API, the Apify MCP server, Make, Zapier or n8n and get the same JSON shape every time.

### What data can it extract?

| Field | Example |
|---|---|
| `offerId`, `title`, `offerUrl` | `672929783458`, `适用苹果17promax透明手机壳...`, `https://detail.1688.com/offer/672929783458.html` |
| `price` | `1` (CNY, the price 1688 shows on the search card) |
| `priceRanges` | `[{ "quantity": "1~499个", "minQuantity": 1, "price": 1 }, { "quantity": "500~99998个", "minQuantity": 500, "price": 0.9 }]` |
| `minOrderQuantity` | `1` (from the first price tier, when 1688 shows tiers) |
| `salesText`, `soldCount`, `bookedCount` | `已售10万+件`, `100000`, `121223` |
| `companyName`, `supplierLoginId`, `memberId`, `shopUrl` | `广州市艾尚数码科技有限公司`, `广州艾尚数码科技`, `b2b-2206457435068a76ea`, shop link |
| `supplierProvince`, `supplierCity` | `广东`, `广州市` |
| `yearsOnPlatform` | `8` |
| `factoryInspection`, `businessInspection`, `superFactory` | `true`, `false`, `false` |
| `repurchaseRate`, `shopRepeatBuyerRate` | `10%` (this offer), `53%` (the whole shop) |
| `tradeServiceScores` | `{ "overall": 4.5, "consultation": 4.5, "logistics": 3.57, "dispute": 4, "returns": 4, "goods": 3.67 }` |
| `serviceTags` | `["深度验厂", "退货包运费", "先采后付"]` |
| `imageUrl`, `isAd` | main image URL, `true` for paid placements |
| `keyword`, `position`, `page`, `scrapedAt` | search context for each row |

### How to search 1688 products

1. Open the Actor and click **Try for free**.
2. Add one or more **keywords**, in Chinese or English.
3. Set **Max products per keyword** (default 120, which is two result pages).
4. Optionally set a **min/max price in CNY** or a **supplier province**.
5. Click **Start** and download the results.

### How much does it cost?

**$2 per 1,000 products** ($0.002 per product), plus a tiny start fee of $0.00005 per run. You pay only for unique products: an offer that shows up under several of your keywords is returned and charged once. Keywords with no results and pages 1688 refused to serve come back as free rows with an `error` field. Residential proxy is included in the price.

The Apify free plan's monthly credit covers roughly 2,500 products. Set a **Maximum cost per run** in the run options to cap your spend; the Actor stops cleanly when it is reached.

### Input

```json
{
    "keywords": ["手机壳", "yoga mat"],
    "maxProductsPerKeyword": 120,
    "minPrice": 2,
    "maxPrice": 50,
    "province": "Guangdong"
}
```

### Output

```json
{
    "keyword": "手机壳",
    "offerId": "672929783458",
    "title": "适用苹果17promax透明手机壳iphone16tpu防摔15太空全包13保护套",
    "price": 1,
    "priceRanges": [{ "quantity": "1~499个", "minQuantity": 1, "price": 1 }, { "quantity": "500~99998个", "minQuantity": 500, "price": 0.9 }],
    "minOrderQuantity": 1,
    "salesText": "已售10万+件",
    "soldCount": 100000,
    "bookedCount": 121223,
    "supplierLoginId": "广州艾尚数码科技",
    "memberId": "b2b-2206457435068a76ea",
    "companyName": "广州市艾尚数码科技有限公司",
    "shopUrl": "https://shop44f84572i2412.1688.com",
    "supplierProvince": "广东",
    "supplierCity": "广州市",
    "yearsOnPlatform": 8,
    "factoryInspection": true,
    "businessInspection": false,
    "superFactory": false,
    "repurchaseRate": "10%",
    "shopRepeatBuyerRate": "53%",
    "tradeServiceScores": { "overall": 4.5, "consultation": 4.5, "logistics": 3.57, "dispute": 4, "returns": 4, "goods": 3.67 },
    "serviceTags": ["深度验厂", "退货包运费", "先采后付", "回头率53%"],
    "imageUrl": "https://cbu01.alicdn.com/img/ibank/O1CN01UxXIwH1nJC0Vepo8t_!!2206457435068-0-cib.jpg",
    "isAd": false,
    "offerUrl": "https://detail.1688.com/offer/672929783458.html",
    "position": 2,
    "page": 1,
    "scrapedAt": "2026-11-06T09:43:08.127Z"
}
```

Download the dataset as JSON, CSV, Excel, XML or HTML, or read it through the Apify API.

### Tips

- **Chinese keywords return the most relevant offers.** English works, but 1688 is a Chinese site, so a quick translation (`蓝牙耳机` for bluetooth earbuds) usually gives a broader result set.
- **1688 serves a limited number of offers per keyword**, often a few hundred. For more coverage, add related keywords (materials, models, synonyms) rather than raising the limit.
- **Prices are in CNY** and exclude shipping inside China. Use `priceRanges` for the price at your order quantity.
- **Price and province filters run after the search**, so a narrow filter reads more pages to fill your limit. A keyword stops after 3 result pages in a row with no new matching offer.
- `isAd: true` marks paid placements. Keep or drop them as you like; they are real offers.

### FAQ

#### Do I need a 1688 account, cookies or a Chinese phone number?

No. The Actor reads public search results and never logs in.

#### Why did a keyword return fewer products than I asked for?

1688 stops serving results for many keywords after a few hundred offers, and some result pages are refused. Missing pages are skipped and never charged.

#### Can I get the full product page (all SKUs, specs, shipping)?

Not yet. This Actor focuses on search results with supplier data. Each row has the `offerUrl` and `offerId` you can use for detail lookups.

#### Is scraping 1688 legal?

The Actor collects publicly visible business listings. It does not collect private personal data. Check that your use complies with the site's terms and your local laws, including the GDPR if it applies to you.

#### How fast is it?

Usually 1-2 minutes for a few hundred products. Several keywords run in parallel, each through its own residential IP.

# Actor input Schema

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

What to search for on 1688.com. Chinese keywords (手机壳, 瑜伽垫) match the most offers; English keywords (phone case, yoga mat) also work. Each keyword is one separate search.

## `maxProductsPerKeyword` (type: `integer`):

Stop after this many unique offers per keyword (60 per results page). 1688 often serves only a few hundred offers per keyword, so very high values may return fewer. On the Apify free plan, keep it at a few hundred so the run fits your monthly credit.

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

Optional. Keep only offers whose listed price in Chinese yuan is at least this. Filtering happens after the search, so a narrow range reads more pages to fill your limit; a keyword stops after 3 pages in a row with no new match.

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

Optional. Keep only offers whose listed price in Chinese yuan is at most this.

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

Optional. Keep only suppliers from this province, in English or Chinese, for example Guangdong / 广东, Zhejiang / 浙江, Fujian / 福建. An unknown name stops the run with a free error row.

## `maxConcurrency` (type: `integer`):

How many keywords to search at the same time. Each keyword uses its own IP.

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

1688 blocks datacenter IPs, so the Actor uses Apify residential proxy by default. The proxy is included in the price.

## Actor input object example

```json
{
  "keywords": [
    "手机壳",
    "yoga mat"
  ],
  "maxProductsPerKeyword": 120,
  "maxConcurrency": 4,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (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": [
        "手机壳",
        "yoga mat"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tenfoldfleet/1688-products-search").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": [
        "手机壳",
        "yoga mat",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("tenfoldfleet/1688-products-search").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": [
    "手机壳",
    "yoga mat"
  ]
}' |
apify call tenfoldfleet/1688-products-search --silent --output-dataset

```

## MCP server setup

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

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/DeXAyh5ZYSRufNZ3M/builds/VgwjqsmOTPtUJ5ewt/openapi.json
