# 1688 Search Scraper - $0.90 / 1000 Offers (`scrapeunblocker/1688-search-scraper`) Actor

Search 1688.com, China's B2B wholesale marketplace, in bulk: offer title, URL, images, yuan price and quantity price ladder, units sold, repurchase rate, service tags and the supplier (shop, years, location, factory inspection, trade scores). Sort and price filters. $0.90 per 1000 offers.

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

## Pricing

from $0.90 / 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.

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 Search Scraper

Search **1688.com**, China's largest B2B wholesale marketplace (Alibaba's domestic site), and get every offer as clean JSON: title, URL, images, **yuan price with the quantity price ladder**, units sold, **repurchase rate**, service and promotion tags, the sponsored flag and the **supplier** (company, shop URL, years on 1688, province and city, factory and business inspection, Super Factory, trade-service scores). Many queries per run, sorting and price / province filters. Text comes in Chinese as 1688 publishes it. No 1688 account, no proxies to configure.

### Features

- **Any search** - Chinese keywords match the most offers (`手机壳`, `连衣裙`, `蓝牙耳机`), English works too.
- **Up to 2040 offers per query** - all 34 result pages of 60 offers, paged automatically.
- **Wholesale pricing** - the price per quantity range (`priceTiers` with min / max quantity).
- **Demand signals** - units sold and the supplier's repurchase rate.
- **Supplier vetting** - years on 1688, location, factory / business inspection, Super Factory, trade scores (consultation, logistics, disputes, returns, goods).
- **Sort and filter** - best match, most sold, price up / down; yuan price range; supplier province.

Need the full offer page (SKU matrix with per-SKU stock and price, attributes, MOQ, shipping, rating summary)? Use our **1688 Product Scraper** with the offer URLs from this actor.

### Use cases

- **Product sourcing** - find suppliers and wholesale prices for a product idea.
- **Price research** - compare quantity price ladders across hundreds of suppliers.
- **Dropshipping and Amazon FBA** - spot best sellers and their factory prices.
- **Supplier shortlisting** - filter by province and inspection status, rank by trade scores.

### Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `queries` | array | `手机壳` | 1688 searches, one per line. |
| `maxResults` | integer | `60` | Offers per query (1-2040). |
| `sort` | string | `relevance` | `relevance`, `sales`, `price_asc` or `price_desc`. |
| `minPrice` / `maxPrice` | string | - | Price range in yuan, e.g. `5` / `30`. |
| `province` | string | - | Supplier province in Chinese, e.g. `广东`, `浙江`. |
| `proxyCountry` | string | - | Optional exit-IP country (ISO-2). |
| `concurrency` | integer | `3` | Queries searched at the same time (1-5). |

#### Example input

```json
{
  "queries": ["连衣裙", "蓝牙耳机"],
  "maxResults": 120,
  "sort": "sales",
  "minPrice": "20",
  "maxPrice": "80",
  "province": "广东"
}
```

### Output

One dataset item per offer:

```json
{
  "query": "手机壳",
  "position": 3,
  "offerId": "1042303890832",
  "title": "适用iPhone17promax渐变磁吸手机壳磨砂苹果16高级感15防摔保护套",
  "url": "https://detail.1688.com/offer/1042303890832.html",
  "image": "https://cbu01.alicdn.com/img/ibank/O1CN01yp9iTc1gezw62LhMZ_!!2212690464168-0-cib.jpg",
  "images": [
    "https://cbu01.alicdn.com/img/ibank/O1CN01yp9iTc1gezw62LhMZ_!!2212690464168-0-cib.jpg"
  ],
  "price": 14.5,
  "currency": "CNY",
  "priceTiers": [
    {
      "quantityText": "1~199个",
      "minQuantity": 1,
      "maxQuantity": 199,
      "price": 14.5
    },
    {
      "quantityText": "200~7999个",
      "minQuantity": 200,
      "maxQuantity": 7999,
      "price": 14.0
    },
    {
      "quantityText": "≥8000个",
      "minQuantity": 8000,
      "maxQuantity": null,
      "price": 13.0
    }
  ],
  "soldText": "已售100+件",
  "sold": 100,
  "repurchaseRatePercent": 55.0,
  "serviceTags": [
    "深度验商"
  ],
  "promotionTags": [],
  "tags": [
    "退货包运费",
    "先采后付",
    "回头率55%"
  ],
  "brand": null,
  "sponsored": false,
  "supplier": {
    "name": "深圳市罗湖区洪星电子商行",
    "loginId": "深圳洪星生产",
    "memberId": "b2b-22126904641686ef2e",
    "shopUrl": "https://shop306x909028029.1688.com",
    "yearsOnPlatform": 5,
    "province": "广东",
    "city": "深圳市",
    "factoryInspected": false,
    "businessInspected": true,
    "superFactory": false,
    "tradeScores": {
      "composite": 4.0,
      "consultation": 1.5,
      "logistics": 4.0,
      "disputes": 4.0,
      "returns": 4.0,
      "goods": 3.0
    }
  }
}
```

The key-value store also holds:

- `QUERIES` - per query: total results 1688 reports, filters, pages fetched, offers collected and whether more pages exist.
- `ERRORS` - queries that returned no offers (no match, a word 1688 does not search, blocked) with the reason. These are **not billed**.

### Pricing

**$0.90 per 1000 offers.** You pay only for offers delivered; queries without results are not charged.

### Notes

- Prices are 1688's yuan (CNY) wholesale prices; `price` is the first tier of `priceTiers`.
- `sold` is the lower bound of 1688's sold label (`已售100+件` -> 100).
- Sponsored offers are part of 1688's results and are flagged with `sponsored: true`.

# Actor input Schema

## `queries` (type: `array`):

What to search on 1688.com, in Chinese or English, e.g. 手机壳 (phone case), 连衣裙 (dress), bluetooth earphones. Chinese keywords match the most offers. One search per line.

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

Upper limit of offers per query (1-2040). 1688 lists 60 offers per results page and up to 34 pages per search.

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

Order of the results.

## `minPrice` (type: `string`):

Only offers priced at or above this many yuan, e.g. 5 or 12.5.

## `maxPrice` (type: `string`):

Only offers priced at or below this many yuan.

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

Only suppliers in this Chinese province, by its Chinese name, e.g. 广东 (Guangdong), 浙江 (Zhejiang), 江苏 (Jiangsu).

## `proxyCountry` (type: `string`):

Optional exit-IP country (ISO-2, e.g. SG, DE). Leave empty to let the service pick.

## `concurrency` (type: `integer`):

How many queries to search at the same time (1-5).

## Actor input object example

```json
{
  "queries": [
    "手机壳"
  ],
  "maxResults": 60,
  "sort": "relevance",
  "minPrice": "",
  "maxPrice": "",
  "province": "",
  "proxyCountry": "",
  "concurrency": 3
}
```

# Actor output Schema

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

One item per offer with the query and its position

## `queries` (type: `string`):

Per query: total results 1688 reports, filters, pages fetched, offers collected and whether more pages exist

## `errors` (type: `string`):

Queries that returned no offers (no match, restricted word, blocked), with the reason (not billed)

# 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 = {
    "queries": [
        "手机壳"
    ]
};

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

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapeunblocker/1688-search-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/Chp5K4tUc0fs1dYlE/builds/9obIHNkjnEbK1qPhg/openapi.json
