# 1688 & Taobao Reverse Image Search | Find Products by Photo (`apivault_labs/1688-image-search`) Actor

Search 1688 and Taobao by product photo. Compare prices, minimum orders, sellers and multi-photo matches; filter and export product listings.

- **URL**: https://apify.com/apivault\_labs/1688-image-search.md
- **Developed by:** [Apivault Labs](https://apify.com/apivault_labs) (community)
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.25 / 1,000 successful photo searches

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 & Taobao Reverse Image Search | Find Products by Photo

![Find matching products on 1688 and Taobao from a photo](https://api.apify.com/v2/key-value-stores/cg1iyeR2eNnoMUIeW/records/1688-taobao-image-search-banner.png?signature=1q5fDKUa2TtrA4tcFfkWU)

Find product listings on **1688**, **Taobao**, or both from a photo. Compare listed prices, spot lower minimum orders, and save a shortlist with links, images, shop details, and reported sales where available. You can search with up to three photos of the same item to see which candidates recur.

### Get started in three steps

1. Paste a direct public link to a product photo, or use **Upload product photos** to add a JPG, PNG, WebP, or GIF file. If the upload dialog asks where to save the file, choose a storage and continue; there is no second storage field to fill in.
2. Choose **1688**, **Taobao**, or **Both** under **Where to search**. Keep the default result limit for a quick first look.
3. Click **Start**. Open the **Product shortlist** for listings and **Price and search summary** for counts and price ranges.

Add a second or third view only when you want to compare repeated candidates. All photos should show the **same product**. If you only have a product page link, open the image itself and use its direct image address instead.

If you switch from an uploaded photo to a direct link, remove the old upload from the form before starting a new search.

Apify asks you to approve full Actor permissions before your first run. Full permissions grant access to your Apify account data; this Actor uses that access to read photos you upload through the form. Review the access prompt before running it.

### What you can do

| Feature | How it helps |
| --- | --- |
| Search one or both marketplaces | Compare wholesale offers on 1688 with Taobao listings from the same photo. |
| Sort and filter listed prices | See cheaper candidates first or set a CNY price range. |
| Check minimum order | Keep 1688 offers with a reported minimum order at or below your limit. |
| Compare multiple photos | Prioritize candidates that recur across different views of one item. |
| Explore deeper results | Request up to 5,000 candidates per photo and marketplace when available. |
| Export results | Download JSON, CSV, or Excel, or use the Apify API and integrations. |

### What is in each result?

Results include the marketplace, product title, product link, image link, and listed price in CNY when available. Depending on the marketplace and listing, you may also get a shop name, minimum order quantity, reported sales, shop rating, repeat-purchase information, and an original listed price. On 1688, returned cards can also include the seller's location, trade score, medal level, and reported repeat-purchase percentage. Unavailable details remain empty.

Each result shows its best search position and the number of your photos on which the same offer or visible card appeared. The shortlist also includes short reasons and a comparison with the median listed price among returned candidates from the same marketplace. The summary shows the lowest, median, and highest returned prices, overall and by marketplace.

These figures describe the **returned listings**, not the whole market. A repeated card helps narrow your search; it does not prove an exact product match. Always verify the live listing, seller, price, and order terms before purchasing. Prices exclude shipping, taxes, and other fees.

### Useful settings

- **Results to request:** Start with 10. Increase the limit for deeper research. A request for 5,000 does not guarantee 5,000 distinct products; deep searches take longer and use more resources. Taobao may return fewer results than requested.
- **Sort products:** Keep the search order, show the lowest listed prices first, or show the highest first. Listings without a price appear last.
- **Found in at least this many photos:** With two or three views of the same product, set this to 2 or 3 to keep recurring candidates.
- **Minimum and maximum listed price:** Keep products within your CNY budget. Listings without a price are excluded when a price filter is set.
- **Largest acceptable minimum order:** Applies to 1688 listings. Listings without a reported minimum order are excluded when this filter is set; Taobao listings remain available in a combined search.

If a photo search fails while another succeeds, the summary marks the run as partial and lists the affected marketplace and photo. Some Taobao product links may redirect. Some public photo links also fail when the image host rejects the request; uploading the photo is the best alternative. Taobao may return few or no cards repeated across several photos. Avoid submitting confidential photos or images containing personal information.

### Example API input

```json
{
  "imageUrl": "https://images.unsplash.com/photo-1525966222134-fcfa99b8ae77?w=800",
  "marketplace": "both",
  "sortBy": "price_asc",
  "maxPriceCny": 100,
  "maxResults": 10
}
```

For API use, you can also provide up to three encoded images through `imagesBase64`, or add direct links through `additionalImageUrls`. Each image can be up to 5 MB. The result rows are in the run's dataset; counts, errors, and price ranges are in its `OUTPUT` record.

### Pricing

One successful photo search on one marketplace is one search event. Searching both marketplaces with one photo counts as two searches. A search that fails is not counted as a successful search event. Deep searches can also incur more platform usage; check the Actor's **Pricing** tab before running a large job.

# Actor input Schema

## `marketplace` (type: `string`):

Choose 1688, Taobao, or both. Searching both uses more time and resources.

## `imageUrl` (type: `string`):

Paste a direct public HTTPS link to a JPG, PNG, WebP, or GIF image, not a product page. You can combine a link with uploads; all provided photos are searched. Add 1–3 photos total.

## `additionalImageUrls` (type: `array`):

Optional front, side, or detail views. Use no more than three photos total. A second view can help find recurring listings.

## `uploadedImages` (type: `array`):

Add JPG, PNG, WebP, or GIF files, up to 5 MB each. If Apify asks where to save them, choose a storage in the upload dialog; no second selection is needed.

## `imageStoreId` (type: `string`):

Kept for existing saved tasks; new uploads do not need this field.

## `imagesBase64` (type: `array`):

Optional encoded JPG, PNG, WebP, or GIF images, up to 5 MB each after decoding. Avoid including private or sensitive photos in run input.

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

Request 1–5,000 candidates. The actual number of distinct listings can be lower, especially for deep searches. Larger searches take longer and use more resources.

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

Keep photo-match relevance order, or sort by listed price. Listings without a price appear last.

## `minMatchingPhotos` (type: `integer`):

For multi-photo searches, keep only offers or visible cards found in at least this many of your photos. Must not exceed the number of photos provided.

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

Optional lower bound for the listed product price. Listings without a price are excluded when a price filter is set.

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

Optional upper bound for the listed product price. This is the listed price, not an all-in landed cost.

## `maxMinimumOrderQuantity` (type: `integer`):

Optional: keep 1688 listings only when their reported minimum order is at or below this quantity. 1688 listings without a reported minimum order are excluded. Taobao listings remain available because this field is not provided for them.

## Actor input object example

```json
{
  "marketplace": "1688",
  "maxResults": 10,
  "sortBy": "relevance",
  "minMatchingPhotos": 1
}
```

# Actor output Schema

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

Listings from the selected marketplaces with prices and match evidence.

## `summary` (type: `string`):

Result counts, price ranges and any unavailable marketplace.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("apivault_labs/1688-image-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("apivault_labs/1688-image-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 '{}' |
apify call apivault_labs/1688-image-search --silent --output-dataset

```

## MCP server setup

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