# 1688 Product Search: Wholesale Prices & Suppliers (`factorylens_data/1688-product-search`) Actor

Search 1688.com in English (or any language) and get wholesale products with English titles, prices in USD/EUR, sales, repurchase rate and a supplier trust score. Optional price tiers, MOQ and stock. No 1688 account needed.

- **URL**: https://apify.com/factorylens_data/1688-product-search.md
- **Developed by:** [FactoryLens Data](https://apify.com/factorylens_data) (community)
- **Categories:** E-commerce, AI, Lead generation
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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 Product Search: wholesale prices & suppliers, in English

Search **1688.com, China's factory wholesale marketplace, in English or any language** and get clean product data: **English titles**, prices converted to **USD / EUR / GBP**, units sold, repeat-buyer rate and a **supplier trust score (0-100)** with the reasons behind it. Optionally read the full supplier pages for **price tiers (MOQ ladder), stock, ship-from city, dropshipping and free-sample flags**.

No 1688 account, no Chinese, no VPN.

### Why this one

| | Typical 1688 scrapers | **This Actor** |
|---|---|---|
| Keywords | Chinese only, or machine translation | Any language → the AI writes the query a **1688 buyer would type** |
| Titles | Chinese | **English** + original Chinese |
| Prices | CNY | **USD / EUR / GBP** at the daily ECB rate |
| "Can I trust this supplier?" | Raw badges | **Supplier trust score** with reasons (years on 1688, repeat buyers, service score, manufacturer, factory badges, sales) |
| Filters | — | Max price, min sales, **manufacturers only**, min trust score |

### Input example

```json
{
  "keywords": ["magnetic car phone mount", "silicone kitchen utensil set"],
  "maxResultsPerKeyword": 120,
  "sortBy": "sales",
  "currency": "EUR",
  "manufacturersOnly": true,
  "minSupplierScore": 60,
  "enrichTopResults": 5
}
```

### Output example

```json
{
  "keyword": "magnetic car phone mount",
  "query1688": "磁吸车载手机支架",
  "position": 1,
  "titleEn": "Magnetic car phone holder, vacuum suction, foldable",
  "priceCny": 6.8,
  "priceEur": 0.88,
  "soldApprox": 12000,
  "repurchaseRate": "31%",
  "supplierScore": 78,
  "supplierScoreReasons": ["9 years on 1688", "31% repeat buyers", "manufacturer", "12000+ sold"],
  "supplierName": "深圳市…科技有限公司",
  "supplierType": "生产加工",
  "url": "https://detail.1688.com/offer/....html"
}
```

### Pricing

Pay per event: **per product returned**, plus optionally **per supplier page** read in full. No subscription. See the Pricing tab.

### The FactoryLens toolkit

- 🔎 **[1688 Image & Link Search](https://apify.com/factorylens_data/1688-image-link-search)**: paste an Amazon or Shopify link, a photo or a whole store and get the AI-verified factory, landed cost and margin.
- 📈 **[1688 Supplier & Price Monitor](https://apify.com/factorylens_data/1688-supplier-price-monitor)**: Telegram or webhook alerts when a supplier changes price, MOQ or stock, or a cheaper factory appears.

### FAQ

**Why do some prices look very low?** 1688 search shows the cheapest variant (sometimes an accessory or spare part). Use `enrichTopResults` to read the real price tiers.

**Do I need a 1688 account?** No. The Actor reads publicly visible listings and collects no personal data.

**How is the trust score computed?** From public signals only: years on 1688, repeat-buyer rate, 1688 service score, manufacturer vs trader, super-factory and inspection badges, and sales. It's a guide, not a guarantee: always order samples first.

# Actor input Schema

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

What you are sourcing, in any language (e.g. 'magnetic phone mount', 'cover iPhone trasparente', '手机壳'). Non-Chinese keywords are turned into the query a 1688 buyer would type.

## `maxResultsPerKeyword` (type: `integer`):

Up to 600 (10 result pages).

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

Order of the returned products.

## `currency` (type: `string`):

Prices are converted from CNY at the daily ECB rate.

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

Skip products above this 1688 price.

## `minSold` (type: `integer`):

Skip products with fewer sales.

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

Skip traders and wholesalers.

## `minSupplierScore` (type: `integer`):

Our score from years on 1688, repeat-buyer rate, service score, factory badges and sales.

## `translateTitles` (type: `boolean`):

Adds an English title next to the Chinese one.

## `enrichTopResults` (type: `integer`):

Adds price tiers (MOQ ladder), stock, ship-from, dropshipping and free-sample flags. Billed per supplier page.

## Actor input object example

```json
{
  "keywords": [
    "magnetic car phone mount"
  ],
  "maxResultsPerKeyword": 60,
  "sortBy": "relevance",
  "currency": "USD",
  "manufacturersOnly": false,
  "translateTitles": true,
  "enrichTopResults": 0
}
```

# Actor output Schema

## `products` (type: `string`):

One row per 1688 product: English title, price, sales, supplier trust score.

# 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": [
        "magnetic car phone mount"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("factorylens_data/1688-product-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": ["magnetic car phone mount"] }

# Run the Actor and wait for it to finish
run = client.actor("factorylens_data/1688-product-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": [
    "magnetic car phone mount"
  ]
}' |
apify call factorylens_data/1688-product-search --silent --output-dataset

```

## MCP server setup

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