# Taobao & 1688 Product Search | Prices & Agent Links (`automatic/taobao-1688-agent-search`) Actor

Search Taobao and 1688 in English or Chinese. Compare CNY asking prices, images and monthly sales, and open shopping-agent product links. Bilingual titles, price and keyword filters; missing data stays null. Export JSON, CSV or Excel.

- **URL**: https://apify.com/automatic/taobao-1688-agent-search.md
- **Developed by:** [Philip Kirkbride](https://apify.com/automatic) (community)
- **Categories:** E-commerce, Business
- **Features:** Limited permissions
- **Stats:** 1 total users, 0 monthly users, 85.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 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

## Taobao & 1688 Product Search

Turn English or Chinese product searches into a sourcing shortlist. Compare
displayed CNY asking prices across **Taobao and 1688**, review product images
and reported sales, and open shopping-agent links to investigate the products
that interest you.

Use it to explore a product idea, compare price ranges, or build a shortlist
before committing to an order.

### Use cases

- **Product research**: check what a product idea costs on Taobao and 1688 before you design or source it, in both marketplaces in one run.
- **Sourcing shortlists**: turn a keyword into a ranked shortlist with images, prices and sales, ready to review with a shopping agent.
- **Price monitoring**: re-run the same keywords on a schedule and watch asking prices and sales move across marketplaces.
- **Wholesale vs retail**: search 1688 for bulk asking prices and Taobao for single-item prices side by side.

### Quick start

Run it as-is to search both marketplaces for `wireless mouse` and get up to 40 products — empty input `{}` does exactly the same:

```json
{
  "keywords": ["wireless mouse"],
  "platform": "both",
  "maxResults": 20,
  "maxTotalResults": 200,
  "requireKeywordMatch": true
}
```

Or build a smaller 1688 shortlist within a CNY price range:

```json
{
  "keywords": ["无线鼠标"],
  "platform": "1688",
  "minPriceCny": 5,
  "maxPriceCny": 30,
  "maxResults": 10,
  "maxTotalResults": 10
}
```

### What you get

- Product names in Chinese and available English titles.
- Displayed asking prices in CNY and product images.
- Reported monthly-sales figures where available, with approximate figures
  kept distinct from exact counts.
- Shopping-agent product links and direct 1688 offer links where available.
- The marketplace, originating search terms and observation time for each row.

Missing information stays `null`. **Minimum order quantity is not currently
available**, and no minimum order size is inferred from a product price.

### Input

Every field is optional; the examples above show the defaults in use.

| Field | Default | Meaning |
| --- | --- | --- |
| `keywords` | `["wireless mouse"]` | 1–10 English or Chinese search terms. |
| `platform` | `both` | Choose `taobao`, `1688` or `both`. |
| `maxResults` | `20` | Maximum matching products per keyword and marketplace, up to 200. |
| `maxTotalResults` | `200` | Maximum unique products across the run, up to 1,000. |
| `minPriceCny`, `maxPriceCny` | unset | Keep asking prices within your CNY range. Products without a price are excluded when a price range is set. |
| `requireKeywordMatch` | `true` | Limit results to titles matching your search terms. Turn off for broader discovery and review relevance yourself. |

An empty input searches for wireless mice on both marketplaces, with up to 20
matching products from each. Search wording and translation differences can
affect matches; try Chinese terms or adjust your wording when useful. Requested
result counts are upper limits, and a search may return fewer products.

### Output example

**Selected fields only.**

This illustrative excerpt shows customer-facing fields, not a complete export
or a current listing. The shopping and image links are placeholders:

```json
{
  "platform": "taobao",
  "title": "Wireless mouse",
  "titleEn": "Wireless mouse",
  "titleCn": "无线鼠标",
  "priceCny": 19.9,
  "currency": "CNY",
  "monthlySales": null,
  "monthlySalesText": "100+",
  "minimumOrderQuantity": null,
  "marketplaceProductId": null,
  "productUrl": null,
  "agentUrl": "https://example.com/shopping-agent/product",
  "imageUrl": "https://example.com/product-image.jpg",
  "observedAt": "2026-11-06T12:00:00Z"
}
```

Use `monthlySalesText` to retain a displayed estimate when an exact
`monthlySales` count is unavailable. English titles, asking prices and sales
figures come through shopping-agent listings and are not independently
verified with the original seller.

Taobao rows do not currently include native Taobao product IDs or direct
product links; use the returned shopping-agent link. Direct 1688 offer links
are included when available. Links and product information may change.

### Buying considerations

Asking prices are not final checkout prices. International shipping, shopping
fees and taxes are additional, and a displayed price does not establish stock,
a minimum order quantity or a completed sale.

Results are a bounded selection, not a complete marketplace inventory.
A successful search can return no matching products. Treat repeated searches
as separate snapshots and review the products before purchasing.

### FAQ

**Why did I get fewer products than I asked for?** Requested counts are upper limits. The marketplace may return fewer distinct products, the literal keyword filter (on by default) drops unrelated suggestions, and a price range drops products without a published price. Turn off `requireKeywordMatch` for broader discovery and review relevance yourself.

**Should I search in English or Chinese?** Both work. English titles come from the marketplace's own translation and can differ between products; if you get few matches, try the Chinese term as well (for example `\u65e0\u7ebf\u9f20\u6807` for wireless mouse).

**Why is `monthlySales` null but `monthlySalesText` says "100+"?** The marketplace reports many sales figures only as estimates. `monthlySales` stays null rather than guessing a number, and `monthlySalesText` keeps the label exactly as displayed.

**Is minimum order quantity included?** No. The search does not publish it, so `minimumOrderQuantity` stays null; nothing is inferred from the price. Check the minimum with the seller or your shopping agent before ordering.

**Are these final prices?** No. They are displayed asking prices in CNY. Shipping, shopping-agent fees and taxes are extra, and a displayed price does not confirm stock.

**Can I run it on a schedule?** Yes. Schedule the same keywords daily or weekly and treat each run as a fresh snapshot; read the dataset through the Apify API and export it as JSON, CSV or Excel.

### Pricing

**$0.0005 per product row** plus a **$0.005 start event per run**; the Pricing tab has the current rates. A start event is charged **per GB of memory** with a one-GB minimum, so a **default 256 MB run is one start** event.

What a run costs: the default input (`wireless mouse` on both marketplaces, up to 20 products each) returns up to 40 rows, about **$0.025** in total — $0.02 in row charges plus the $0.005 start. These service charges are separate from the product asking prices in your results.

# Actor input Schema

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

English or Chinese search terms. One query is made per term and selected marketplace.

## `platform` (type: `string`):

Choose Taobao, 1688, or both marketplaces.

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

Maximum matching products per keyword and marketplace.

## `maxTotalResults` (type: `integer`):

Maximum unique products across all requested searches.

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

Products with unavailable prices are excluded when a price filter is set.

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

Inclusive maximum displayed CNY asking price; products without prices are excluded.

## `requireKeywordMatch` (type: `boolean`):

Keep only products whose English or Chinese title contains every search word. This removes unrelated suggestions, but can also exclude relevant synonyms or differently translated titles.

## `generateAgentLinks` (type: `boolean`):

Includes the observed OOPBuy product link. Links to other agents are not invented.

## `maxPagesPerQuery` (type: `integer`):

A query is one keyword and marketplace. Fewer products may match within this bound.

## `maxRequests` (type: `integer`):

Maximum source HTTP requests, including retries, across the run.

## `maxRunSeconds` (type: `integer`):

Maximum time spent collecting products, in seconds.

## Actor input object example

```json
{
  "keywords": [
    "wireless mouse"
  ],
  "platform": "both",
  "maxResults": 20,
  "maxTotalResults": 200,
  "requireKeywordMatch": true,
  "generateAgentLinks": true,
  "maxPagesPerQuery": 3,
  "maxRequests": 30,
  "maxRunSeconds": 240
}
```

# Actor output Schema

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

No description

## `summary` (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": [
        "wireless mouse"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("automatic/taobao-1688-agent-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": ["wireless mouse"] }

# Run the Actor and wait for it to finish
run = client.actor("automatic/taobao-1688-agent-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": [
    "wireless mouse"
  ]
}' |
apify call automatic/taobao-1688-agent-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automatic/taobao-1688-agent-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/KlaUliJr10hi4WBZS/builds/TBxcTBoqCXHdvDwQf/openapi.json
