# 1688 Supplier Leads Scraper (`schnellscrapers/1688-supplier-leads`) Actor

Find 1688 supplier leads from English or Chinese keywords. Export deduplicated supplier IDs, names, shop URLs, locations, factory signals, platform tenure, transaction counts, MOQ-priced offers, and search positions. Filter price, MOQ, province, and factory status before writing; no login required.

- **URL**: https://apify.com/schnellscrapers/1688-supplier-leads.md
- **Developed by:** [Nate Schnell](https://apify.com/schnellscrapers) (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 $0.45 / 1,000 supplier leads

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?

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

### What does 1688 Supplier Leads Scraper do?

1688 Supplier Leads Scraper turns 1688 product-search results into a sourcing shortlist: one dataset row per distinct supplier, with company identity, shop link, location, factory signals, platform tenure, transaction context, and representative wholesale offers. It is built for sourcing teams, importers, dropshippers, and ecommerce operators comparing suppliers across focused product keywords.

### What data can you extract from 1688?

- Supplier identity — `supplierId`, `supplierName`, `supplierUrl`, `location`, `businessRole`
- Factory and marketplace signals — `factoryStatus`, `platformLevel`, `yearsOnPlatform`, `isFactoryInspected`, `isBusinessInspected`, `isSuperFactory`
- Sourcing evidence — `searchMatches`, `sourceKeywords`, `transactionCount`, representative offer titles, URLs, CNY prices, and MOQs

Repeated product cards from the same supplier are deduplicated. The `searchMatches` field keeps the keyword and one-based source position that surfaced each supplier, which makes the shortlist traceable when several searches overlap.

### How to use 1688 Supplier Leads Scraper

1. Open the actor and enter one or more focused keywords in English or Chinese. Chinese product terms usually return the richest 1688 results.
2. Set `maxSuppliersPerKeyword` and `maxPagesPerKeyword` to bound the shortlist. Use `province`, price limits, or `maxOrderQuantity` when you need a tighter sourcing slice.
3. Choose `bestSelling`, price sorting, or newest-first when ranking matters; leave `relevance` selected for the default order.
4. Click **Run** and open the **Supplier leads** dataset view.
5. Download JSON, CSV, or Excel, or read the dataset through the Apify API and connect it to a scheduled sourcing workflow.

### How much does it cost?

The launch price is **$0.45 per 1,000 supplier leads** at the free tier, plus a **$0.004 `apify-actor-start` event** that covers fixed source-fetch work even when filters produce zero rows. A supplier lead is billable only when its validated row is written to the dataset; rejected cards and duplicate suppliers are not emitted. Keep `maxPagesPerKeyword` at 1 for a low-cost shortlist refresh.

### Input

The required input is `keywords`, a list of product, factory, or manufacturer terms. Optional controls include the supplier cap, page cap, representative-offer cap, CNY price range, maximum MOQ, province, source sort order, manufacturer-only filtering, proxy configuration, and dry-run validation. Residential Apify Proxy is enabled by default because direct cloud requests may be challenged by 1688; disable it only when your own access path is reliable.

```json
{
  "keywords": ["手机壳", "wireless earbuds factory"],
  "maxSuppliersPerKeyword": 10,
  "maxPagesPerKeyword": 1,
  "maxOffersPerSupplier": 2,
  "maxOrderQuantity": 50,
  "province": "广东",
  "sortBy": "bestSelling",
  "manufacturersOnly": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  },
  "dryRun": false
}
```

### Output

Each item is one deduplicated supplier. `representativeOffers` contains the product cards that surfaced the supplier, and `searchMatches` preserves the source keyword and rank.

```json
{
  "searchMatches": [{"keyword": "手机壳", "position": 1}],
  "supplierId": "b2b-2850655109d72ea",
  "supplierName": "佛山市南海区三丰手机配件有限公司",
  "supplierUrl": "http://shop1460393846166.1688.com/",
  "location": "广东, 佛山市",
  "businessRole": "生产加工",
  "factoryStatus": "super_factory",
  "platformLevel": null,
  "yearsOnPlatform": 11,
  "isFactoryInspected": true,
  "isBusinessInspected": false,
  "isSuperFactory": true,
  "transactionCount": 2536,
  "representativeOffers": [{"offerId": "931027992821", "title": "透明磁吸手机壳", "url": "https://detail.1688.com/offer/931027992821.html", "priceCny": 4.2, "minimumOrderQuantity": 30, "transactionCount": 2536}],
  "sourceKeywords": ["手机壳"],
  "sourceUrl": "https://s.1688.com/selloffer/offer_search.htm?keywords=%E6%89%8B%E6%9C%BA%E5%A3%B3&beginPage=1",
  "scrapedAt": "2026-08-26T23:49:11.326Z"
}
```

### Integrations

Use the [Apify API](https://docs.apify.com/api/v2) or a webhook to send supplier leads to Make, n8n, Zapier, a spreadsheet, or a CRM. Scheduled runs can refresh a supplier shortlist without storing 1688 login cookies.

### Related actors

- [Amazon Best Sellers Scraper](https://apify.com/schnellscrapers/amazon-best-sellers-scraper) — compare ranked product demand snapshots for marketplace research.
- [Shopify New Products Monitor](https://apify.com/schnellscrapers/shopify-new-products-monitor) — track new catalog items after sourcing a supplier.
- [YouTube Video Scraper](https://apify.com/schnellscrapers/youtube-video-monitor) — collect product and supplier discovery signals from video channels.

### FAQ

#### How does 1688 Supplier Leads Scraper work?

It reads the JSON search feed used by 1688's public product-search page, normalizes each offer card, then groups cards by the source supplier member ID before writing one validated row per supplier.

#### Can I use 1688 Supplier Leads Scraper as an API?

Yes. Start a run with the Apify API, then read the default dataset items endpoint from the run response or the actor's Integrations tab.

#### Can I use 1688 Supplier Leads Scraper in Python or Node.js?

Yes. Install `apify-client`, call the actor with a JSON input, and iterate over the returned dataset items.

#### What does this actor access?

The actor reads 1688 search-result data through an actor-managed residential proxy by default and keeps direct 1688 supplier and offer links in each row. It does not open product detail pages and does not require a buyer login, API key, or pasted cookies.

#### Is it legal to scrape 1688?

Rules differ by country, use case, and the data being collected. Review the laws, contracts, and policies that apply to your workflow, and use the actor only for data you are allowed to access and process.

#### Why are Chinese keywords recommended?

1688 is a China-domestic wholesale marketplace, so Chinese product terms generally produce denser and more relevant search results. English keywords are accepted when that is the term used by your sourcing workflow.

#### Does one row represent one product?

No. One row represents one deduplicated supplier. The representative offers array shows the products that caused that supplier to appear in the selected searches.

### Your feedback

If a source field changes or you need another supplier filter, open an issue from the actor page with the input and a small example. Feature requests that improve sourcing exports are welcome.

# Actor input Schema

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

Search 1688 with one or more focused product, factory, or manufacturer terms. Chinese terms such as `手机壳` usually return the richest results; English terms are accepted.

## `maxSuppliersPerKeyword` (type: `integer`):

Stop after this many unique supplier leads for each keyword. Use a small value for a shortlist and up to 500 for a larger export.

## `maxPagesPerKeyword` (type: `integer`):

Follow 1688 search pagination up to this many pages. Each page adds one signed JSON request; one page is the default.

## `maxOffersPerSupplier` (type: `integer`):

Keep up to this many representative product offers on each supplier row. Use 1 for compact lead exports or 3 for comparison context.

## `minPriceCny` (type: `number`):

Send only search results with a displayed unit price at or above this CNY amount. Leave empty to disable the lower price filter.

## `maxPriceCny` (type: `number`):

Send only search results with a displayed unit price at or below this CNY amount. Leave empty to disable the upper price filter.

## `maxOrderQuantity` (type: `integer`):

Keep suppliers with at least one representative offer whose minimum order quantity is at or below this number. Leave empty to keep every MOQ.

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

Restrict the source search to a Chinese province such as `广东`, `浙江`, or `江苏`. Leave empty to search all provinces.

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

Choose how 1688 ranks the source cards before supplier deduplication. Best selling is useful for proven sourcing demand; relevance is the default.

## `manufacturersOnly` (type: `boolean`):

Keep only rows with a source-visible factory status or factory inspection signal. Leave off to include all supplier types returned by search.

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

1688 may challenge direct cloud traffic. Residential Apify Proxy is enabled by default for reliable supplier search; disable it only when your own network path is already reliable, because proxy transfer affects run cost.

## `dryRun` (type: `boolean`):

Match and validate supplier leads without writing dataset items. Logs report selected versus written rows.

## Actor input object example

```json
{
  "keywords": [
    "手机壳"
  ],
  "maxSuppliersPerKeyword": 20,
  "maxPagesPerKeyword": 1,
  "maxOffersPerSupplier": 3,
  "province": "广东",
  "sortBy": "relevance",
  "manufacturersOnly": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "dryRun": false
}
```

# Actor output Schema

## `records` (type: `string`):

Supplier rows with company identity, location, factory signals, platform tenure, transaction count, and representative offers.

# 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": [
        "手机壳"
    ],
    "province": "广东"
};

// Run the Actor and wait for it to finish
const run = await client.actor("schnellscrapers/1688-supplier-leads").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": ["手机壳"],
    "province": "广东",
}

# Run the Actor and wait for it to finish
run = client.actor("schnellscrapers/1688-supplier-leads").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": [
    "手机壳"
  ],
  "province": "广东"
}' |
apify call schnellscrapers/1688-supplier-leads --silent --output-dataset

```

## MCP server setup

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

```

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/0UjYTSUbRaElYo3Zs/builds/iDhWIe4uJ0LKHZubw/openapi.json
