# 1688 Image Search Scraper - Find Suppliers by Photo, No Login (`topapi/1688-image-search-scraper`) Actor

Search 1688.com by photo: paste image URLs from Amazon, Shopify, AliExpress or TikTok Shop and get every matching wholesale offer with price, MOQ, units sold, repeat-buyer rate, supplier, years and badges. Optional SKUs, stock, specs, weight. $0.20 per 1,000 matches.

- **URL**: https://apify.com/topapi/1688-image-search-scraper.md
- **Developed by:** [Top Api](https://apify.com/topapi) (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.20 / 1,000 image matches

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

### What does 1688 Image Search Scraper do?

**1688 Image Search Scraper** finds who sells a product on 1688.com, China's wholesale market, from a photo. Paste image links from Amazon, Shopify, AliExpress, TikTok Shop or 1688 (or upload a photo), and every offer 1688's own image search matches comes back as a row: rank, similarity score, price in CNY and USD, MOQ, units sold, repeat-buyer rate and the supplier with years on 1688, location, business type and badges.

Also known as: 1688 reverse image search, 1688 search by image, 拍立淘 / 以图搜货, find a China supplier by photo.

<a href="https://console.apify.com/actors/N9ob0BLYIRuzoxK0i"><img src="https://api.apify.com/v2/key-value-stores/qNQ9zP0xaj2yxGeMY/records/1688-image-search-scraper-matches.png" alt="1688 Image Search Scraper: one photo in, the 1688 offers that 1688's image search matches out" style="width:70%"></a>

- 🖼️ **Any photo:** image URLs from any site, base64 photos for API and ERP callers, a file upload, a 1688 image-search link, or 1688 offer links to find look-alikes of.
- 🔍 **1688's own image search:** the same matches a buyer sees on 1688.com, in 1688's order, 60 per page, about 700 per photo.
- 🏭 **Supplier on every row:** company, years on 1688, province and city, manufacturer or wholesaler, inspection badges, service score.
- 📋 **Offer-page details (optional):** price tiers, SKUs with price and stock, specs, weight and size, shipping, rating, dropship stats, landed cost.
- 🌐 **English titles and attributes, USD prices**, free.
- 🔁 **Monitor mode:** only the matches you have not seen yet, for scheduled runs.
- 🔓 **No login, no cookies, no Chinese phone number.**

### What data can you get from 1688 image search?

| | | |
|---|---|---|
| 🖼️ Query photo `queryImage` | 🥇 Rank `rank` | 🎯 Similarity `similarityScore` |
| 🆔 Offer id `offerId` | 🏷️ Title + English `title`, `titleEn` | 🔗 Offer link `detailUrl` |
| 💴 Price `price` (CNY) | 💵 Price `priceUsd` | 📦 MOQ `minOrderQuantity` + `unit` |
| 📈 Units sold `soldCount` | 🧾 Orders `bookedCount` | 🔁 Repeat buyers `offerRepurchaseRate` |
| 🧩 Attributes `attributes` (+ English) | 🏅 Ranking badges `rankingBadges` | 🎁 Promotions `promotions` |
| 🏭 Supplier `supplier.companyName` | 📅 Years on 1688 `supplier.yearsOnPlatform` | 📍 Province / city |
| 🏗️ Manufacturer or wholesaler `supplier.bizTypeEn` | ✅ Inspection badges | ⭐ Service score `supplier.compositeScore` |
| 📊 Price tiers `quantityPrices` (details) | 🧮 SKUs with stock `skuDetails` (details) | ⚖️ Weight and size (details) |
| 🚚 Shipping and dispatch time (details) | 🛒 Dropship stats `dropship` (details) | 🌍 Landed cost `estLandedCostUsd` (details) |

### How to scrape 1688 by image with 1688 Image Search Scraper

1. [Create a free Apify account](https://console.apify.com/sign-up): $5 of monthly credit, no card needed.
2. Open [1688 Image Search Scraper](https://apify.com/TopApi/1688-image-search-scraper) and click **Try for free**.
3. Paste one or more photo links into **Image URLs** (or upload a photo).
4. Pick how many matches you want per photo, and any filters.
5. Click **Start**. Two photos with 20 matches each finish in about 7 seconds.
6. Download the matches as JSON, CSV, Excel or HTML, or read them through the API.

### ⬇️ Input

| Parameter | Type | Description |
|---|---|---|
| **What to search** | | Use any mix; each photo is its own search. At least one is needed (an empty input searches a sample photo). |
| `imageUrls` | array | Photo links from anywhere (JPG, PNG, WebP, GIF), or 1688 image-search links. |
| `imageFile` | string | A photo uploaded from your computer. |
| `imagesBase64` | array | Photos as base64 strings or data URIs. |
| `similarToOffers` | array | 1688 offer links or ids: the offer's main photo is searched. |
| **Filters (applied by 1688)** | | |
| `sortBy` | string | `relevance` (default, 1688's best match), `bestSelling`, `priceAsc`, `priceDesc`. |
| `priceMin`, `priceMax` | number | Price range in CNY. |
| `provinces` | array | Supplier provinces in English or Chinese, e.g. `Guangdong`, `浙江`. |
| `verifiedFactoryOnly` | boolean | Only suppliers 1688 certified as real factories (真实工厂认证). |
| `dropshippingOnly` | boolean | Only offers that ship one piece to your customer (一件代发). |
| `freeShippingOnly` | boolean | Only offers with free shipping inside China (包邮). |
| **Refine results (checked before any charge)** | | |
| `supplierType` | string | `any` (default), `manufacturer`, `wholesaler`. |
| `inspectedFactoryOnly` | boolean | Only suppliers with an on-site factory inspection. |
| `minSupplierYears` | integer | Minimum years on 1688. |
| `maxMoq` | integer | Highest minimum order you accept. |
| `minSimilarity` | number | Lowest similarity score you accept, e.g. `0.3`. |
| `excludeAds` | boolean | Leave out sponsored offers. |
| `onePerSupplier` | boolean | Only the best-ranked offer of each supplier, per photo. |
| **Extra data** | | |
| `includeDetails` | boolean | Read each match's offer page (charged per page read). Default `false`. |
| `includeSkuDetails` | boolean | SKU matrix in details. Default `true`. |
| `includeDescription`, `includeDescriptionHtml` | boolean | The seller's long description (text + images, or raw HTML). |
| `translateTitles` | boolean | English titles, attributes and specs. Default `true`. |
| `targetMarket` | string | `US`, `EU`, `UK`, `AU`, `global` for a landed cost estimate; `none` by default. |
| `usdPerCny`, `shippingUsdPerKg` | number | Your exchange rate and freight rate (defaults: today's published rate; 9-11 USD/kg). |
| **Monitoring** | | |
| `monitorMode` | boolean | Deliver only matches not delivered for the same photo before. |
| `monitorStoreName` | string | The named store that remembers them. |
| **Output** | | |
| `maxResultsPerImage` | integer | Matches per photo, 1-720. Default `60`. |
| `maxImages` | integer | Search at most this many photos. |
| `maxItems` | integer | Hard ceiling on rows for the whole run. |
| `compact` | boolean | Core fields only, for spreadsheets and AI pipelines. |
| **Advanced** | | `proxyConfiguration`, `detailProxyConfiguration`, `maxConcurrency` (offer pages in parallel, default 10). |

#### Input JSON

```json
{
    "imageUrls": [
        "https://cbu01.alicdn.com/img/ibank/O1CN01Xpr968aWheJ3thOC_!!2212762542575-0-cib.jpg",
        "https://m.media-amazon.com/images/I/61Cev2aFG5L._AC_SX695_.jpg"
    ],
    "maxResultsPerImage": 60,
    "supplierType": "manufacturer",
    "excludeAds": true
}
```

#### Use a clean product photo

1688 matches the main object in the photo and reports the region it matched in `matchedRegion`. A product on a plain background matches best; a lifestyle photo with several objects matches whatever 1688 picks as the main one. Crop the photo to the product when you can.

#### Photos from any site work

Photos on Alibaba's own CDN (alicdn.com, aliexpress-media.com) are passed to 1688 by address. Any other photo is downloaded, turned into a 360-pixel JPEG the way 1688's own upload button does it, and uploaded to 1688's image search. JPG, PNG, WebP and GIF all work; RUN_SUMMARY shows how each photo was searched (`via`: address, upload, offerImage).

#### Ask for 60 per photo, not 700, unless you need depth

1688 ranks by visual similarity mixed with sales and sponsored placement, and the closest matches come first. Deep requests work (1688 pages one sort order 12 pages deep; the actor then walks the other sort orders for more distinct offers), but most sourcing work uses the first 20-60.

### ⬆️ Output

<a href="https://console.apify.com/actors/N9ob0BLYIRuzoxK0i"><img src="https://api.apify.com/v2/key-value-stores/qNQ9zP0xaj2yxGeMY/records/1688-image-search-scraper-output.png" alt="1688 Image Search Scraper output table with offer-page details" style="width:70%"></a>

One row per offer matched to a photo. A real row from run `tUUZSl9EwOQZw5oza` (supplier trimmed):

```json
{
    "queryImage": "https://cbu01.alicdn.com/img/ibank/O1CN01gQo0hx2LY27U4AagC_!!3937219703-0-C2M.jpg",
    "rank": 2,
    "similarityScore": 0.0862,
    "totalMatches": 698,
    "offerId": "1084972240372",
    "title": "金标杜比音质骨传导蓝牙耳机耳夹式降噪耳机2025新款蓝牙无线耳机",
    "titleEn": "Gold label Dolby sound quality bone conduction Bluetooth headset ear clip noise reduction headset 2025 new Bluetooth wireless headset",
    "detailUrl": "https://detail.1688.com/offer/1084972240372.html",
    "price": 28.8,
    "priceUsd": 4.3107,
    "minOrderQuantity": 1,
    "unit": "件",
    "soldCount": 19,
    "bookedCount": 16,
    "offerRepurchaseRate": 51,
    "attributes": [{ "name": "芯片类型", "value": "中科蓝讯" }, { "name": "材质", "value": "PC+ABS" }],
    "supplier": { "companyName": "深圳市龙华区新之叶电子商行", "yearsOnPlatform": 11, "bizTypeEn": "manufacturer", "province": "广东", "city": "深圳市", "businessInspection": true, "compositeScore": 4 }
}
```

With `includeDetails`, the same row also carries `quantityPrices`, `stock`, `totalSold`, `skuDetails` (every SKU's attributes, price, stock, image), `images`, `videoUrl`, `specs` + `specsEn`, `unitWeightKg`, `packageDimensions`, `shipping`, `services`, `rating`, `dropship`, `dropshipScore`, `estLandedCostUsd` and more supplier fields (`followers`, `fulfillmentRate`, `serviceScore`, `buyerRepeatRate3m`, `contactPageUrl`).

#### Fields

Fill rates from real runs: 300 matches for 5 photos (`tUUZSl9EwOQZw5oza`) and 100 matches with offer-page details (`UQHbRzz1wIkbO49Ka`).

| Field | Meaning | Filled |
|---|---|---|
| `rank`, `similarityScore`, `totalMatches` | 1688's order, its visual score, its match count | 100% |
| `offerId`, `title`, `titleEn`, `detailUrl`, `image` | the offer | 100% |
| `price`, `priceUsd`, `minOrderQuantity`, `unit` | price and MOQ from the match card | 100% |
| `soldCount`, `bookedCount`, `offerRepurchaseRate` | units sold, orders, repeat-buyer rate | 100% |
| `attributes` (+ `attributesEn`) | key attributes 1688 shows on the card | 78% |
| `promotions` / `rankingBadges` / `priceAdvantage` | when 1688 shows them | 50% / 8% / 14% |
| `supplier.companyName`, `yearsOnPlatform`, `compositeScore` | supplier basics | 100% |
| `supplier.bizType` (manufacturer / wholesaler) | as the card prints it | 75% |
| `supplier.province`, `city` | supplier location | 84% (99% with details) |
| `quantityPrices` | price tiers (details; offers priced per SKU have none) | 28% |
| `skuDetails`, `stock`, `specs`, `images`, `shipping` | offer page (details) | 97% |
| `rating` | review summary (details) | 88% |
| `dropship`, `dropshipScore`, `estLandedCostUsd` | dropship stats, score, landed cost (details) | 97% |
| `videoUrl` / `unitWeightKg` | when the seller adds them (details) | 67% / 38% |

### How can I use 1688 image search data?

- 🛍️ **Dropshippers and Amazon sellers:** find the 1688 source of a winning product and its factory price.
- 🕵️ **Sourcing agents:** turn a client's photo into a shortlist of factories (`onePerSupplier`, `supplierType: manufacturer`).
- 💰 **Margin checks:** compare `priceUsd` or `estLandedCostUsd` with your selling price.
- 🏷️ **Brand protection:** find where copies of your product are sold wholesale, and watch for new ones with monitor mode.
- 📊 **Market research:** units sold and repeat-buyer rates of look-alike designs.
- 🤖 **AI agents:** give an agent a photo and get structured supplier rows back through MCP.

### How much does it cost to scrape 1688 by image?

Pay per result. No start fee, nothing per photo, and matches removed by your filters are never charged.

| Event | Price | Per 1,000 |
|---|---|---|
| Image match (`match`) | $0.0002 | $0.20 |
| Offer-page details (`product-details`), only with details on | $0.0027 | $2.70 |

| Run | Matches | Cost |
|---|---|---|
| 1 photo, 20 matches | 20 | $0.004 |
| 5 photos, 60 matches each | 300 | $0.06 |
| 10 photos, 100 matches each | 1,000 | $0.20 |
| 2 photos, 50 matches each, with offer-page details | 100 | $0.29 |

Offer pages 1688 does not serve (its slider check) are delivered without details and not charged as details. The free Apify plan's $5 monthly credit covers about 25,000 matches.

### Integrations, API, scheduling & MCP

- **Schedules:** run the same photos daily or weekly in the Apify Console and turn on `monitorMode` so each run delivers only new matches.
- **Webhooks:** call your endpoint when a run finishes.
- **No-code:** Make, Zapier, n8n, Google Sheets, Airtable and Slack via [Apify integrations](https://docs.apify.com/integrations).
- **API:** start runs and read datasets with `apify-client` for [Node.js](https://apify.com/TopApi/1688-image-search-scraper/api/javascript) or [Python](https://apify.com/TopApi/1688-image-search-scraper/api/python); send photos as base64 when you hold the bytes.
- **MCP / AI agents:** connect Claude, Cursor or any MCP client through the [MCP tab](https://apify.com/TopApi/1688-image-search-scraper/api/mcp); `compact` keeps rows small.

### More scrapers for product sourcing

<table>
<tr>
<td>🏭 <a href="https://apify.com/TopApi/alibaba-1688-scraper">1688.com Wholesale Scraper</a> — 1688 offers by keyword or offer id</td>
<td>🛒 <a href="https://apify.com/TopApi/taobao-scraper">Taobao & Tmall Product Scraper</a> — Chinese retail prices</td>
<td>🎵 <a href="https://apify.com/TopApi/tiktok-scraper">TikTok Scraper</a> — products trending on TikTok</td>
</tr>
<tr>
<td>📢 <a href="https://apify.com/TopApi/tiktok-ads-library-scraper">TikTok Ads Library Scraper</a> — products other sellers advertise</td>
<td>™️ <a href="https://apify.com/TopApi/uspto-trademark-scraper">USPTO Trademark Scraper</a> — check a brand before you import</td>
<td>🧭 <a href="https://apify.com/TopApi">All TopApi actors</a></td>
</tr>
</table>

### Limits & empty runs

- **Matches per photo:** 1688 reports about 700 (`totalMatches`). Its pages overlap, so one sort order gives 480-720 distinct offers (measured on 4 photos); the actor removes repeats and walks further sort orders when you ask for more.
- **Speed:** 300 matches for 5 photos in 25 s; 1,024 matches for 2 photos in 48 s. Offer-page details take longer: 100 rows in about 4 minutes.
- **Offer pages:** a few per 100 are answered with 1688's slider check (3 of 105 measured); those rows come without details and the details are not charged.
- **Photos 1688 refuses** (`forbiddenImage`) or links that do not open return no rows and are listed in RUN_SUMMARY, not charged.
- **Not included:** factory profiles (staff, factory area, equipment) and individual review texts; they are not on the offer page. `superFactory` is printed on image-search cards but none of 3,185 distinct offers measured carried it.
- An empty run says why in its status message: no photo, every match filtered out, or a photo 1688 could not search.

### FAQ

#### How many results can 1688 Image Search Scraper return per photo?

Up to about 700, the number 1688 itself reports. Set `maxResultsPerImage` (default 60). Each row carries its `rank` in 1688's order and the photo's `totalMatches`.

#### Which photos can I use with 1688 Image Search Scraper?

Any public photo link (Amazon, Shopify, AliExpress, TikTok Shop, eBay, your own site), a file upload, base64 photos, or a 1688 offer link to find look-alikes of. JPG, PNG, WebP and GIF are accepted.

#### Does 1688 Image Search Scraper translate to English?

Yes, free: `titleEn`, `attributesEn` and, with details, `specsEn`. Prices come in CNY and USD (`priceUsd`, at today's published rate unless you set `usdPerCny`).

#### How much does 1688 Image Search Scraper cost?

$0.20 per 1,000 matches, plus $2.70 per 1,000 offer pages when details are on. No start fee and nothing per photo.

#### Can I monitor new suppliers with 1688 Image Search Scraper?

Yes. Turn on `monitorMode`, keep the same `monitorStoreName`, and schedule the run: each run delivers only the matches not delivered before for that photo.

#### Can I use 1688 Image Search Scraper with the Apify API?

Yes. Start runs and fetch datasets with `apify-client` for [Node.js](https://apify.com/TopApi/1688-image-search-scraper/api/javascript) or [Python](https://apify.com/TopApi/1688-image-search-scraper/api/python), or call the REST API. Pass photos as `imagesBase64` when you hold the bytes.

#### Can I use 1688 Image Search Scraper through an MCP server?

Yes. Open the [MCP tab](https://apify.com/TopApi/1688-image-search-scraper/api/mcp), connect your MCP client and ask for 1688 suppliers of a photo in plain language.

#### Do I need a 1688 account, cookies or a Chinese phone number?

No. 1688 Image Search Scraper uses 1688's public image search and offer pages, as a signed-out visitor sees them.

#### Why did 1688 Image Search Scraper return fewer matches than I asked for?

Your filters removed some (RUN_SUMMARY lists how many and why), 1688's pages repeat offers (repeats are removed), or the photo link did not open. Removed and failed matches are never charged.

#### Your feedback

We keep improving 1688 Image Search Scraper. Found a bug or missing a field? Open an issue on the [Issues tab](https://apify.com/TopApi/1688-image-search-scraper/issues/open).

# Actor input Schema

## `imageUrls` (type: `array`):

Product photo links from anywhere: Amazon, Shopify, AliExpress, TikTok Shop, 1688 (JPG, PNG, WebP, GIF). A 1688 image-search link (s.1688.com/youyuan/...imageId=...) works too.

## `imageFile` (type: `string`):

A photo from your computer (JPG, PNG, WebP). It is searched like an image URL.

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

Photos as base64 strings or data URIs, e.g. \["data:image/jpeg;base64,/9j/4AAQ..."]. For API and ERP callers that hold the bytes.

## `similarToOffers` (type: `array`):

1688 offer links or ids, e.g. "https://detail.1688.com/offer/944759232751.html" or "944759232751". The offer's main photo is read from its page and searched.

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

The order 1688 returns matches in. Best match mixes visual similarity, sales and sponsored placement, as on 1688.com.

## `priceMin` (type: `number`):

Only offers priced at or above this many yuan, e.g. 5. Empty = no floor.

## `priceMax` (type: `number`):

Only offers priced at or below this many yuan, e.g. 30. Empty = no ceiling.

## `provinces` (type: `array`):

Only suppliers in these provinces, in English or Chinese, e.g. "Guangdong", "Zhejiang", "浙江". Empty = all of China.

## `verifiedFactoryOnly` (type: `boolean`):

Only suppliers 1688 has certified as real factories (真实工厂认证).

## `dropshippingOnly` (type: `boolean`):

Only offers that ship a single piece to your customer (一件代发).

## `freeShippingOnly` (type: `boolean`):

Only offers with free domestic shipping in China (包邮).

## `supplierType` (type: `string`):

Keep only suppliers of this business type. A match whose card names no type is left out when a type is chosen.

## `inspectedFactoryOnly` (type: `boolean`):

Keep only suppliers with an on-site factory inspection (深度验厂).

## `minSupplierYears` (type: `integer`):

Keep only suppliers trading on 1688 for at least this many years, e.g. 3.

## `maxMoq` (type: `integer`):

Keep only offers whose minimum order is at most this many units, e.g. 50.

## `minSimilarity` (type: `number`):

Keep only matches whose 1688 similarity score is at least this, e.g. 0.3. Scores are relative per photo (0.02-0.48 measured); the closest matches score highest.

## `excludeAds` (type: `boolean`):

Drop paid placements (isAd = true). They are often less similar.

## `onePerSupplier` (type: `boolean`):

For each photo, keep only the best-ranked offer of each supplier: a shortlist of distinct factories.

## `includeDetails` (type: `boolean`):

Open each match's offer page: price tiers, MOQ, SKUs with price and stock, specs, images, video, weight and size, shipping, rating, dropship stats, supplier stats. Charged only when the page is read.

## `includeSkuDetails` (type: `boolean`):

With details on: every SKU's attributes, price, stock and image. Off = a shorter row.

## `includeDescription` (type: `boolean`):

With details on: the seller's long description as text plus its images (turns details on).

## `includeDescriptionHtml` (type: `boolean`):

Also keep the description's raw HTML (turns details and description on).

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

Add titleEn, attributesEn and (with details) specsEn: machine translations of 1688's Chinese text. Free.

## `targetMarket` (type: `string`):

With details on: estLandedCostUsd = unit price in USD + the offer's own weight x air freight per kg for this market.

## `usdPerCny` (type: `number`):

Exchange rate for priceUsd, e.g. 0.14. Empty = today's published rate.

## `shippingUsdPerKg` (type: `number`):

Your freight rate for the landed cost, e.g. 8.5. Empty = 9 (US), 10 (EU, UK, AU) or 11 (rest of world).

## `monitorMode` (type: `boolean`):

Deliver only offers not delivered for the same photo by earlier runs with the same store name. The window is the top N matches (Max matches per photo).

## `monitorStoreName` (type: `string`):

Named key-value store that remembers what was delivered. Use one name per watch list.

## `maxResultsPerImage` (type: `integer`):

Matches per photo in 1688's order, 60 per page. 1688 finds up to ~700 per photo (about 630 distinct offers after de-duplication).

## `maxImages` (type: `integer`):

Search at most this many photos; extra photos are listed in RUN_SUMMARY, never searched or charged. Empty = all.

## `maxItems` (type: `integer`):

Hard ceiling on rows (and on the bill) for the whole run. Empty = no ceiling.

## `compact` (type: `boolean`):

Core fields only (match, price, MOQ, sales, supplier basics), trimmed for spreadsheets and AI/MCP pipelines. Details fields stay when details are on.

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

Searches go out on the platform's own connection first, then on this proxy if 1688 shows its slider check, then residential. Set your own proxy to use only that one.

## `detailProxyConfiguration` (type: `object`):

Offer pages (details) are read on a fresh residential China session each. Change only to use your own residential proxy.

## `maxConcurrency` (type: `integer`):

How many offer pages are read at once with details on. More is faster but draws more timeouts from the residential proxy.

## Actor input object example

```json
{
  "imageUrls": [
    "https://cbu01.alicdn.com/img/ibank/O1CN01Xpr968aWheJ3thOC_!!2212762542575-0-cib.jpg",
    "https://cbu01.alicdn.com/img/ibank/15418323391_1847764777.jpg"
  ],
  "sortBy": "relevance",
  "verifiedFactoryOnly": false,
  "dropshippingOnly": false,
  "freeShippingOnly": false,
  "supplierType": "any",
  "inspectedFactoryOnly": false,
  "excludeAds": false,
  "onePerSupplier": false,
  "includeDetails": false,
  "includeSkuDetails": true,
  "includeDescription": false,
  "includeDescriptionHtml": false,
  "translateTitles": true,
  "targetMarket": "none",
  "monitorMode": false,
  "monitorStoreName": "1688-image-search-monitor",
  "maxResultsPerImage": 20,
  "compact": false,
  "maxConcurrency": 10
}
```

# Actor output Schema

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

One item per 1688 offer matched to a photo: rank, similarity, price, MOQ, sales, supplier; with details the price tiers, SKUs, specs, shipping, rating and dropship stats.

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

Per photo: how it was searched (address, upload, offer photo), 1688's match count, pages read, delivered, filtered and duplicate matches; offer pages not readable (not charged); calls per egress rung.

# 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 = {
    "imageUrls": [
        "https://cbu01.alicdn.com/img/ibank/O1CN01Xpr968aWheJ3thOC_!!2212762542575-0-cib.jpg",
        "https://cbu01.alicdn.com/img/ibank/15418323391_1847764777.jpg"
    ],
    "maxResultsPerImage": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("topapi/1688-image-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 = {
    "imageUrls": [
        "https://cbu01.alicdn.com/img/ibank/O1CN01Xpr968aWheJ3thOC_!!2212762542575-0-cib.jpg",
        "https://cbu01.alicdn.com/img/ibank/15418323391_1847764777.jpg",
    ],
    "maxResultsPerImage": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("topapi/1688-image-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 '{
  "imageUrls": [
    "https://cbu01.alicdn.com/img/ibank/O1CN01Xpr968aWheJ3thOC_!!2212762542575-0-cib.jpg",
    "https://cbu01.alicdn.com/img/ibank/15418323391_1847764777.jpg"
  ],
  "maxResultsPerImage": 20
}' |
apify call topapi/1688-image-search-scraper --silent --output-dataset

```

## MCP server setup

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