# 1688 批发 Wholesale Scraper - Keyword & Photo Search, MOQ, Prices (`parseforge/1688-scraper`) Actor

Search 1688.com wholesale offers by keyword, or by photo: paste a product image and get similar products from 1688, Alibaba.com and AliExpress with price, MOQ, supplier and link. Export to CSV, Excel, JSON or XML.

- **URL**: https://apify.com/parseforge/1688-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** E-commerce, Automation, Lead generation
- **Features:** Limited permissions
- **Stats:** 23 total users, 5 monthly users, 99.1% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.40 / 1,000 1688 offers

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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

![ParseForge Banner](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner-v4.webp)

## 🏭 1688 Scraper

> 🚀 **Export 1688.com wholesale offers in seconds, by keyword or by photo.** Type a keyword in Chinese or English and get 46 fields per offer back, including the unit price and every quantity price tier, the minimum order, units sold, 30-day GMV, the supplier's six service scores, its repurchase rate, factory inspection status, years verified and city, plus a flag on every sponsored placement. Or paste a product photo and get the visually similar products from **1688, Alibaba.com and AliExpress** in one dataset, with price, MOQ, supplier and link.

1688.com is Alibaba's domestic wholesale marketplace, the place where Chinese factories list what they make before it reaches Amazon, Shopee, TikTok Shop or your own store. Its search results are login-walled for visitors outside China and its product pages sit behind a slider captcha, so most tools either fail or paste a cookie you have to refresh. This Actor reads the same listing data 1688's own mobile front end loads and returns each offer as one flat row: price, dropship price, MOQ, tiered prices, sales and GMV signals, supplier identity, six supplier quality scores, buyer protections, verification tags, location and category. No login, no cookie to paste, no API key.

Every run returns **46 fields per offer**. One search term pages through up to **2,000 offers** in batches of 100, and the verification runs delivered **5 offers in 7 seconds** and **300 offers in 17 seconds** on a single proxy session. A keyword like "wireless earbuds" reports **113 matching offers**, "yoga mat" **505**, and a Chinese keyword like 瑜伽垫 hits the 2,000 ceiling.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Sourcing agents and import businesses | Shortlist factories by MOQ, price tier, inspection status and years verified before you message anyone. |
| Amazon, Shopee and TikTok Shop sellers | Find the 1688 source of a trending product and compare unit price, dropship price and sales velocity across suppliers. |
| Dropshippers | Filter for MOQ 1 and mixed wholesale, read the consign (dropship) price and the supplier's logistics score. |
| Category and pricing analysts | Track wholesale price ladders, quantity tiers and 30-day GMV by keyword, city or category over time. |
| Supplier due-diligence teams | Score suppliers on goods, logistics, consultation, dispute and return ratings, repurchase rate and factory inspection. |

### 📋 What the 1688 Scraper does

It turns any 1688 keyword search, or any product photo, into a clean table. The next few paragraphs describe keyword search; photo search has its own section below. Give it one or more search terms, pick a sort order and, if you want, a price band in yuan, a category ID or a supplier city, and it returns every matching offer with its commercial data, its supplier data and its quality signals in a single row.

> 💡 **Why it matters:** a 1688 search result is not a neutral list. Sponsored offers are mixed into the ranking, and the same product can be listed by a manufacturer, a trading company and a wholesaler at three different MOQs. This Actor returns `sponsored`, `supplierType`, `factoryInspection` and `verifiedYears` on every row, so you can separate paid from organic and factory from middleman before you compare prices. Add the six supplier scores, the `shopRepurchaseRate` and the `gmv30Days` band and you have the context behind the price, not just the price.

It also returns the identifiers that make 1688 data joinable: the `offerId`, the `supplierId`, the `categoryId` and the full `categoryPath`, so you can re-run a keyword restricted to exactly the category you care about and match rows across runs.

### 📸 Search by photo

Paste one or more product photo links into **Image URLs** and the Actor looks the photo up the way the marketplaces' own camera search does, then returns the similar products it finds. Pick any mix of three platforms in **Platforms**:

| Platform | What you get | Price currency | Depth per photo |
|---|---|---|---|
| 🏭 **1688.com** | Wholesale offers with MOQ, sold and order counts, repurchase rate, supplier type, years, city and factory inspection, plus a `similarityScore` | CNY | About 700 matches, 40 per page |
| 🌐 **Alibaba.com** | Export offers with price range, MOQ, supplier, country, Gold Supplier and Trade Assurance tags, review score and extra images | USD | Up to 100 matches, 20 per page |
| 🛍 **AliExpress** | Retail listings with sale price, original price, discount, sold count and rating | USD | About 600 matches, 60 per page |

Every platform returns the **same 32 fields**, so the three can sit in one table and be sorted by `price` or `matchRank`. `matchRank` is the position in that platform's own similarity ranking (1 is the closest match). **Max Matches per Photo** (`maxItemsPerImage`, default **20**) sets how many of the closest matches you get for each photo on each platform, so one photo on 1688 returns 20 rows and one photo on all three platforms returns up to 60. Raise it, up to 1,000, when you want the long tail. **Max Items** still caps the whole run and is shared across all photos and platforms: with 3 platforms and 30 items you get about 10 from each, and a platform that has fewer matches hands its unused share to the next one.

> ⚠️ **Which platforms are reliable.** All three were tested end to end on 2026-09-28 from a home IP, an Apify datacenter IP and an Apify residential IP. 1688 and Alibaba.com answer with JSON. AliExpress answers with a server-rendered results page that the Actor parses, so it is the one most exposed to a layout change on their side. Alibaba.com only accepts photos that are already on Alibaba's image servers, so the Actor first hosts your photo through the 1688 upload and reuses that copy. A platform that fails after several fresh proxy sessions is reported in an error row and does not lose the rows the other platforms returned; if every platform fails the run ends as **Failed** with the reason, rather than as a green run with an empty dataset.

Photo tips:

- 🖼 Use a clear photo of one product on a plain background. Screenshots with several products give mixed matches.
- 📏 JPEG, PNG and WebP work, up to 25 MB. Photos over about 900 KB are scaled to 1,200 px before upload, because the marketplaces refuse large uploads.
- 🔗 The link must be public. A link that needs a login, or that returns a web page instead of an image, produces an error row that names the link.
- 🎯 Photo search returns whole products, not prices for one exact item. Compare `price` and `minOrderQuantity` across suppliers, then open `url`.

A minimal photo input:

```json
{
  "imageUrls": ["https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=800"],
  "platforms": ["1688", "alibaba", "aliexpress"],
  "maxItemsPerImage": 20
}
```

💵 **What a photo costs.** Each product row is one result event on the Pricing tab ($0.0035 on the Free plan, down to $0.0024 on Gold, lower still on Platinum and Diamond). At the default of 20 matches that is **about $0.07 per photo per platform** on the Free plan and about $0.05 on Gold. Three platforms at 20 each is about $0.21 per photo on the Free plan.

Old inputs are unchanged: an input without Image URLs is a keyword search exactly as before. **Mode** defaults to Auto, which switches to photo search only when Image URLs are filled in; set it to Keyword search to force keywords when both are present.

### 🎬 Full Demo (🚧 Coming soon)

### 📊 Output

One row per offer. The same field names come back for every search term, so runs join cleanly.

| Field | What it holds |
|---|---|
| 🖼 `imageUrl` | Main offer image |
| 🏷 `title` | Offer title, as the supplier wrote it (usually Chinese) |
| 🔗 `url` | Offer page on detail.1688.com |
| 🆔 `offerId` | 1688 offer ID, the number in the URL |
| 💰 `price` | Displayed unit price in CNY |
| 📦 `consignPrice` | Dropship (代发) price in CNY |
| 💱 `currency` | Always CNY |
| 📏 `unit` | Selling unit, for example 条, 件, 套 |
| 🔢 `minOrderQuantity` | Minimum order quantity |
| 🪜 `quantityPrices` | Price tiers as quantity range and price, for example 1~99 at 24.00 |
| 🛒 `saleQuantity` | Units sold |
| 🧾 `bookedCount` | Number of orders |
| 📅 `monthlySales` | Units sold in the last month |
| 📈 `gmv30Days` | 30-day sales value band as 1688 shows it, for example 4000+ |
| 💬 `inquiryUsers` | Buyers who enquired |
| 🔁 `offerRepurchaseRate` / `shopRepurchaseRate` | Repeat-purchase rate for the offer and for the shop |
| ⭐ `goodsScore` / `logisticsScore` / `consultationScore` / `disputeScore` / `returnScore` | 1688's five supplier service ratings out of 5 |
| 🏅 `compositeScore` | 1688's overall supplier rating out of 5 |
| 🗣 `feedbackHighlight` | The buyer-feedback highlight 1688 shows on the listing |
| 🏭 `supplierName` | Company name |
| 🆔 `supplierId` | 1688 member ID |
| 🔗 `supplierUrl` | Supplier storefront |
| 🏷 `supplierType` | Manufacturer, Wholesaler, Agent or Business Service, with the Chinese original |
| ✅ `verifiedSupplier` | Yes when the supplier holds 1688's paid verification (诚信通) |
| 🎖 `verifiedYears` | Years the supplier has been verified |
| 🔍 `factoryInspection` / `businessInspection` | Yes when 1688 has inspected the factory or the business on site |
| 🏷 `identityTags` / `serviceTags` | 1688's identity and service badges, for example 实商, 深度验厂 |
| 🛡 `buyerProtections` | Buyer guarantees on the offer, for example 7天包换, 48小时发货 |
| 🗺 `province` / `city` | Supplier location |
| 📂 `categoryId` / `categoryPath` | Leaf category ID and the full category ID path |
| 📣 `sponsored` | Yes when the offer was a paid placement |
| 🧩 `mixWholesale` | Yes when the supplier allows mixed-SKU wholesale orders |
| 🚚 `freightInsurance` | Yes when freight insurance is included |
| 📋 `attributes` | Name and value pairs 1688 highlights for the offer, for example 材质 and 芯片类型 |
| 🔎 `searchTerm` | The keyword that produced the row |
| 🕒 `scrapedAt` | ISO timestamp |
| ❌ `error` | Null on data rows, a message on error rows |

Values 1688 can genuinely withhold, such as `offerRepurchaseRate` on a new listing or `feedbackHighlight` on an offer with no reviews, read `Not Disclosed`. `quantityPrices` is an empty list when the supplier publishes a single price. There are no permanently empty columns.

Three real rows from the verification run:

```json
{
  "imageUrl": "https://cbu01.alicdn.com/img/ibank/O1CN01BFPHeH1zyffZPo2la_!!2219489796783-0-cib.jpg",
  "title": "Clip-On Earbuds Bluetooth 5.4 Wireless Headphones Open Ear",
  "url": "https://detail.1688.com/offer/1069147610993.html",
  "offerId": "1069147610993",
  "price": 24,
  "consignPrice": 24,
  "currency": "CNY",
  "unit": "条",
  "minOrderQuantity": 1,
  "quantityPrices": [
    { "quantity": "1~99", "price": "24.00" },
    { "quantity": "100~499", "price": "23.80" },
    { "quantity": "≥500", "price": "23.50" }
  ],
  "saleQuantity": 5,
  "bookedCount": 1,
  "monthlySales": 5,
  "gmv30Days": "100+",
  "inquiryUsers": 35,
  "offerRepurchaseRate": "Not Disclosed",
  "shopRepurchaseRate": "14%",
  "goodsScore": 3.33,
  "logisticsScore": 3,
  "consultationScore": 3.5,
  "disputeScore": 4,
  "returnScore": 4,
  "compositeScore": 4,
  "feedbackHighlight": "Not Disclosed",
  "supplierName": "东莞市华嘉世纪电子科技有限公司",
  "supplierId": "b2b-221948979678332924",
  "supplierUrl": "https://m.1688.com/winport/b2b-221948979678332924.html",
  "supplierType": "Manufacturer (生产加工)",
  "verifiedSupplier": "Yes",
  "verifiedYears": 2,
  "factoryInspection": "Yes",
  "businessInspection": "No",
  "identityTags": ["实商"],
  "serviceTags": ["实商", "深度验厂"],
  "buyerProtections": ["材质保障", "7天包换", "48小时发货"],
  "province": "广东",
  "city": "东莞市",
  "categoryId": "1048186",
  "categoryPath": "1048186 50911 7",
  "sponsored": "No",
  "mixWholesale": "Yes",
  "freightInsurance": "Yes",
  "attributes": [
    { "name": "功能", "value": "防水" },
    { "name": "防水性能", "value": "生活防水" },
    { "name": "材质", "value": "PC+ABS" }
  ],
  "searchTerm": "wireless earbuds",
  "scrapedAt": "2026-09-02T20:51:50.073Z",
  "error": null
}
```

```json
{
  "imageUrl": "https://cbu01.alicdn.com/img/ibank/O1CN016qAIh92Jjp5gmRRyb_!!938829458-0-cib.jpg",
  "title": "跨境新爆款无线耳机头戴蓝牙式游戏耳机大电量品牌耳麦工厂家批发",
  "url": "https://detail.1688.com/offer/735151471986.html",
  "offerId": "735151471986",
  "price": 27,
  "consignPrice": 27,
  "currency": "CNY",
  "unit": "条",
  "minOrderQuantity": 1,
  "quantityPrices": [],
  "saleQuantity": 70092,
  "bookedCount": 4593,
  "monthlySales": 52,
  "gmv30Days": "1000+",
  "inquiryUsers": 66,
  "offerRepurchaseRate": "22%",
  "shopRepurchaseRate": "27%",
  "goodsScore": 3.67,
  "logisticsScore": 3.29,
  "consultationScore": 3.5,
  "disputeScore": 5,
  "returnScore": 3.67,
  "compositeScore": 4,
  "feedbackHighlight": "7人评价\"音质清晰\"",
  "supplierName": "汕头市烁音科技有限公司",
  "supplierId": "soyto",
  "supplierUrl": "https://m.1688.com/winport/soyto.html",
  "supplierType": "Manufacturer (生产加工)",
  "verifiedSupplier": "Yes",
  "verifiedYears": 18,
  "factoryInspection": "Yes",
  "businessInspection": "No",
  "identityTags": ["实商"],
  "serviceTags": ["实商", "深度验厂"],
  "buyerProtections": ["7天包换", "48小时发货", "诚e赊"],
  "province": "广东",
  "city": "汕头市",
  "categoryId": "1048186",
  "categoryPath": "1048186 50911 7",
  "sponsored": "Yes",
  "mixWholesale": "Yes",
  "freightInsurance": "No",
  "attributes": [
    { "name": "芯片类型", "value": "杰理" },
    { "name": "功能", "value": "超长续航" },
    { "name": "使用方式", "value": "头戴式" }
  ],
  "searchTerm": "wireless earbuds",
  "scrapedAt": "2026-09-02T20:51:50.072Z",
  "error": null
}
```

```json
{
  "imageUrl": "https://cbu01.alicdn.com/img/ibank/O1CN01cyehDM1GYQ4pHhViC_!!2218244100634-0-cib.jpg",
  "title": "X15蓝牙耳机跨境热销爆款现货CE RoHS认证数显超长续航半入耳蓝牙",
  "url": "https://detail.1688.com/offer/815687167862.html",
  "offerId": "815687167862",
  "price": 10,
  "consignPrice": 10,
  "currency": "CNY",
  "unit": "件",
  "minOrderQuantity": 10,
  "quantityPrices": [{ "quantity": "≥10", "price": "7.20" }],
  "saleQuantity": 23692,
  "bookedCount": 23,
  "monthlySales": 10,
  "gmv30Days": "90+",
  "inquiryUsers": 7,
  "offerRepurchaseRate": "Not Disclosed",
  "shopRepurchaseRate": "28%",
  "goodsScore": 5,
  "logisticsScore": 4.14,
  "consultationScore": 4,
  "disputeScore": 5,
  "returnScore": 4.33,
  "compositeScore": 4.5,
  "feedbackHighlight": "Not Disclosed",
  "supplierName": "深圳市骏鸿泰科技有限公司",
  "supplierId": "b2b-2218244100634232ce",
  "supplierUrl": "https://m.1688.com/winport/b2b-2218244100634232ce.html",
  "supplierType": "Not Disclosed",
  "verifiedSupplier": "Yes",
  "verifiedYears": 3,
  "factoryInspection": "No",
  "businessInspection": "No",
  "identityTags": ["诚信通3年"],
  "serviceTags": ["诚信通3年"],
  "buyerProtections": ["48小时发货", "诚e赊"],
  "province": "广东",
  "city": "深圳市",
  "categoryId": "1048186",
  "categoryPath": "1048186 50911 7",
  "sponsored": "Yes",
  "mixWholesale": "Yes",
  "freightInsurance": "No",
  "attributes": [
    { "name": "芯片类型", "value": "中科蓝讯" },
    { "name": "功能", "value": "呼吸灯" },
    { "name": "防水性能", "value": "生活防水" }
  ],
  "searchTerm": "wireless earbuds",
  "scrapedAt": "2026-09-02T20:51:50.073Z",
  "error": null
}
```

#### 📸 Photo search rows

A photo search returns 32 fields per row, the same on every platform. Fields a platform does not publish read `Not Disclosed`.

| Field | What it holds |
|---|---|
| 🖼 `imageUrl` / 🏷 `title` / 🔗 `url` / 🆔 `offerId` | The matched product: image, title, product page and platform ID |
| 🌐 `platform` | `1688`, `alibaba` or `aliexpress` |
| 🔢 `matchRank` | Position in that platform's similarity ranking for this photo, 1 is closest |
| 🎯 `similarityScore` | 0 to 1 visual similarity, 1688 rows only |
| 💰 `price` / `priceMax` | Unit price, and the top of the range when the listing shows one (Alibaba) |
| 🏷 `originalPrice` / `discountPercent` | List price and discount before the sale (AliExpress, and Alibaba promotions) |
| 💱 `currency` | CNY for 1688, USD for Alibaba.com and AliExpress |
| 📦 `minOrderQuantity` / `unit` | MOQ and its unit (1 on AliExpress) |
| 🛒 `soldCount` / `bookedCount` | Units sold and orders where the platform shows them |
| ⭐ `rating` / `reviewCount` | Supplier or product rating and review count where shown |
| 🔁 `repurchaseRate` | Repeat-purchase rate, 1688 only |
| 🏭 `supplierName` / `supplierId` / `supplierUrl` | The supplier and its storefront |
| 🏷 `supplierType` / `supplierYears` / `supplierCountry` | Manufacturer or wholesaler, years on the platform, country code |
| 🗺 `province` / `city` / 🔍 `factoryInspection` | Supplier location and on-site inspection flag, 1688 only |
| 🏷 `tags` / 🖼 `images` | Badges such as Gold Supplier or Trade Assurance, and extra product images (Alibaba) |
| 📣 `sponsored` | Yes when the listing is a paid placement |
| 📸 `queryImageUrl` | The photo link that produced the row |

Three real rows from a photo search of a pair of headphones, one per platform (the Alibaba `images` list is shortened to two entries here):

```json
[
  {
    "imageUrl": "https://cbu01.alicdn.com/img/ibank/O1CN01glgCbO2JiRYDMVfNM_!!992199455-0-cib.jpg",
    "title": "跨境新款无线头戴式 ENC智能降噪耳机 可拆卸电池头戴耳机",
    "url": "https://detail.1688.com/offer/1001305563575.html",
    "offerId": "1001305563575",
    "platform": "1688",
    "matchRank": 1,
    "similarityScore": 0.5223,
    "price": 159,
    "priceMax": "Not Disclosed",
    "originalPrice": "Not Disclosed",
    "discountPercent": "Not Disclosed",
    "currency": "CNY",
    "minOrderQuantity": 2000,
    "unit": "件",
    "soldCount": 0,
    "bookedCount": 0,
    "rating": 4,
    "reviewCount": "Not Disclosed",
    "repurchaseRate": "35%",
    "supplierName": "东莞市天翼通讯电子有限公司",
    "supplierId": "b2b-22159062662374a27d",
    "supplierUrl": "http://shop78a92427g1438.1688.com",
    "supplierType": "Manufacturer (生产加工)",
    "supplierYears": 13,
    "supplierCountry": "CN",
    "province": "广东",
    "city": "东莞市",
    "factoryInspection": "Yes",
    "tags": [
      "回头率35%"
    ],
    "images": [],
    "sponsored": "No",
    "queryImageUrl": "https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=800"
  },
  {
    "imageUrl": "https://s.alicdn.com/@sc04/kf/H70f4cc10276042b3857668032b20d8d8i.jpg_300x300.jpg",
    "title": "VCOM Cordless Headset with Mic Handsfree Stereo Headband Headphone for Mobile Phone Computer Gaming",
    "url": "https://www.alibaba.com/product-detail/VCOM-Cordless-Headset-with-Mic-Handsfree_1601884947409.html",
    "offerId": "1601884947409",
    "platform": "alibaba",
    "matchRank": 1,
    "similarityScore": "Not Disclosed",
    "price": 6.66,
    "priceMax": 8.58,
    "originalPrice": "Not Disclosed",
    "discountPercent": "Not Disclosed",
    "currency": "USD",
    "minOrderQuantity": 1000,
    "unit": "pieces",
    "soldCount": "Not Disclosed",
    "bookedCount": "Not Disclosed",
    "rating": 4.7,
    "reviewCount": 9,
    "repurchaseRate": "Not Disclosed",
    "supplierName": "Vcom Communication Technology Co., Ltd.",
    "supplierId": "200008061",
    "supplierUrl": "https://vcom.en.alibaba.com/",
    "supplierType": "Not Disclosed",
    "supplierYears": 19,
    "supplierCountry": "CN",
    "province": "Not Disclosed",
    "city": "Not Disclosed",
    "factoryInspection": "Not Disclosed",
    "tags": [
      "Gold Supplier"
    ],
    "images": [
      "https://s.alicdn.com/@sc04/kf/H70f4cc10276042b3857668032b20d8d8i.jpg_300x300.jpg",
      "https://s.alicdn.com/@sc04/kf/H28015fed6e7e4b659c54c7dd1152abe1P.jpg_300x300.jpg"
    ],
    "sponsored": "No",
    "queryImageUrl": "https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=800"
  },
  {
    "imageUrl": "https://ae-pic-a1.aliexpress-media.com/kf/Sd6681d471f9a47718f3c9e3273c44d2eE.jpg",
    "title": "Bluetooth Headphones Over Ear Wireless Headset HiFi Music Gaming Comfortable Mic for iPhone Android PC Travel Sports Gift Unisex",
    "url": "https://www.aliexpress.com/item/1005012763062423.html",
    "offerId": "1005012763062423",
    "platform": "aliexpress",
    "matchRank": 1,
    "similarityScore": "Not Disclosed",
    "price": 8.95,
    "priceMax": "Not Disclosed",
    "originalPrice": 14.95,
    "discountPercent": 40,
    "currency": "USD",
    "minOrderQuantity": 1,
    "unit": "Not Disclosed",
    "soldCount": 64,
    "bookedCount": "Not Disclosed",
    "rating": 4.3,
    "reviewCount": "Not Disclosed",
    "repurchaseRate": "Not Disclosed",
    "supplierName": "Not Disclosed",
    "supplierId": "Not Disclosed",
    "supplierUrl": "Not Disclosed",
    "supplierType": "Not Disclosed",
    "supplierYears": "Not Disclosed",
    "supplierCountry": "Not Disclosed",
    "province": "Not Disclosed",
    "city": "Not Disclosed",
    "factoryInspection": "Not Disclosed",
    "tags": [
      "New shoppers save $6"
    ],
    "images": [],
    "sponsored": "No",
    "queryImageUrl": "https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=800"
  }
]
```

### ✨ Why choose this Actor

- ⭐ **Six supplier quality scores on every row.** Goods, logistics, consultation, dispute, return and the composite rating, straight from 1688's supplier profile, so you can rank factories before you contact them.
- 🔁 **Repurchase rates and 30-day GMV.** `shopRepurchaseRate`, `offerRepurchaseRate` and the `gmv30Days` band tell you whether buyers come back and how much the listing actually moves, not just how many units it claims.
- 🪜 **Every quantity price tier.** `quantityPrices` returns the full ladder, for example 1~99 at 24.00, 100~499 at 23.80, ≥500 at 23.50, alongside the `consignPrice` for dropshipping.
- 🏭 **Factory or middleman, made explicit.** `supplierType` (Manufacturer, Wholesaler, Agent), `factoryInspection`, `businessInspection`, `verifiedYears` and the 实商 and 深度验厂 badges separate real factories from resellers.
- 📣 **Sponsored placements flagged.** Paid offers stay in the results, marked `sponsored: Yes`, so organic rank and paid rank never mix.
- 🔎 **Chinese or English keywords.** Search the way you think; 1688 matches English terms too. Add a price band in yuan, a category ID or a supplier city to narrow the pool.
- ⚡ **100 offers per request.** The Actor reads 1688's own JSON, not rendered pages: 300 offers landed in 17 seconds on one proxy session.
- 📸 **Search by photo on three marketplaces in one run.** 1688, Alibaba.com and AliExpress from the same photo, one dataset, one billing event per product.
- 🔐 **No login, no cookie.** 1688 walls its desktop search behind a login for overseas visitors. This Actor uses the public mobile surface, so there is nothing to paste and nothing that expires.
- 🧾 **No always-empty columns.** Fields 1688 never populates were dropped during research rather than shipped as blank headers. Where a value can genuinely be withheld you get `Not Disclosed`, never a silent `null`.
- 🧯 **Honest failure.** A term with no results or a search 1688 refuses after retries produces an error row naming the term and the reason, rather than a silently short dataset.

### 📈 How it compares to alternatives

| | This Actor | Typical 1688 actors |
|---|---|---|
| Supplier quality scores | ✅ Six ratings on every row | ⚠️ Usually the composite only, or none |
| Repurchase rate and 30-day GMV | ✅ Both | ❌ Rarely |
| Quantity price tiers | ✅ Full ladder plus dropship price | ⚠️ Often the headline price only |
| Factory inspection and verified years | ✅ Both, plus supplier type | ⚠️ Sometimes a verified flag only |
| Sponsored placement flag | ✅ On every row | ❌ Rarely |
| Price band, category and city filters | ✅ 1688's own parameters | ⚠️ Often keyword only |
| Offers per request | ✅ 100 | ⚠️ Usually 20 per rendered page |
| Login or cookie required | ✅ No | ⚠️ Often a pasted cookie |
| Start fee per run | ✅ None | ⚠️ Common |
| Photo search | ✅ 1688, Alibaba.com and AliExpress in one run, several photos at once | ⚠️ One platform or one photo per run |

**What this Actor does not do, stated plainly.** 1688 serves at most 2,000 offers per search query; to go deeper, split a broad keyword into narrower ones or add a category ID, a city or a price band. Product detail pages, and with them the SKU variant matrix, the long description and the image gallery, sit behind 1688's slider captcha for every automated client and are not part of this surface. Sponsored offers can ignore the price band; organic offers always respect it. Titles, tags and attribute names come back in Chinese, exactly as suppliers wrote them.

### 🚀 How to use

1. **Create a free Apify account.** [Sign up here](https://console.apify.com/sign-up?fpr=vmoqkp) and you start with $5 of free credit, no card required.
2. **Open the Actor** and go to the Input tab.
3. **Type your keywords** into Search Terms, one per line, in Chinese or English. To search by photo instead, paste the photo links into Image URLs and tick the platforms you want.
4. **Pick a sort order, a price band, a category ID or a city** if you want them. Run a keyword once, read `categoryId` on the rows, and run again with the category you want.
5. **Set Max Items.** Start small while you check the shape of the data.
6. **Leave the proxy on residential.** 1688 rate-limits each IP after a few dozen calls, and the Actor rotates sessions for you.
7. **Click Start** and watch the log.
8. **Download the results** as CSV, Excel, JSON or XML from the Dataset tab, or pull them from the API.

A minimal input looks like this:

```json
{
  "searchTerms": ["wireless earbuds", "瑜伽垫"],
  "maxItems": 200,
  "sortBy": "price_asc",
  "minPrice": 5,
  "maxPrice": 50
}
```

### 💼 Business use cases

#### 🏭 Supplier shortlisting

Run your product keyword and sort the rows by `compositeScore`, `shopRepurchaseRate` and `verifiedYears`. Keep the suppliers with `factoryInspection: Yes` and `supplierType` Manufacturer, drop the ones with a `disputeScore` under 4, and you have a shortlist worth messaging.

#### 💰 Landed-cost modelling

`price`, `consignPrice`, `minOrderQuantity` and the full `quantityPrices` ladder give you the unit cost at every order size, so you can model margin at 100 units and at 5,000 before you commit to a supplier.

#### 📈 Trend and demand tracking

Run the same keywords daily and keep the history. `saleQuantity`, `monthlySales`, `gmv30Days` and `inquiryUsers` show which listings are gaining momentum, and `sponsored` tells you which suppliers are paying to be seen.

#### 🌏 Regional sourcing

Set the City filter to 义乌市 for small commodities, 深圳市 for electronics or 东莞市 for hardware, or read `province` and `city` on every row to map where a category is actually made.

### 🔌 Automating 1688 Scraper

Schedule a run and let the output flow where you work. Make and Zapier can move new rows into a spreadsheet, a database or a Slack channel the moment a run finishes. Airbyte can load the dataset into a warehouse for price history. A webhook can push results into GitHub or your own service, and Google Drive keeps a dated CSV of every run for auditing.

### 🌟 Beyond business use cases

- 🎓 **Research.** Study wholesale price ladders, supplier concentration by city and sponsored density across Chinese manufacturing categories with clean, repeatable data.
- 🏠 **Personal.** Find the factory behind a product you like and see what it costs at MOQ 1 with the dropship price.
- 🤝 **Non-profit.** Source supplies for a project directly from verified manufacturers, ranked by inspection status and service scores.
- 🧪 **Experimentation.** Offer IDs, images, attributes and price tiers make an easy foundation for product-matching models, arbitrage finders and sourcing assistants.

### 🤖 Ask an AI assistant about this scraper

> I am using the ParseForge 1688 Scraper on Apify. It returns one row per 1688.com wholesale offer with 46 fields, including price, consignPrice, minOrderQuantity, the quantityPrices tier ladder, saleQuantity, monthlySales, gmv30Days, inquiryUsers, offerRepurchaseRate, shopRepurchaseRate, six supplier scores (goods, logistics, consultation, dispute, return, composite), supplierName, supplierType, verifiedYears, factoryInspection, province, city, categoryId and a sponsored flag. It accepts Chinese or English search terms with sort, price band, category ID and city filters. Help me design a weekly pipeline that finds new factory-direct suppliers for my top 10 products and flags any whose dispute score or repurchase rate drops.

### ❓ Frequently Asked Questions

#### 🔑 Do I need a 1688 account, a cookie or an API key?

No. The Actor reads the public listing data 1688's own mobile front end loads. There is no login, no key and no cookie to paste.

#### 🈶 Can I search in English?

Yes. 1688 matches English keywords, though a Chinese keyword usually returns more offers: "yoga mat" reports 505 offers and 瑜伽垫 hits the 2,000 ceiling. Titles and tags come back in Chinese either way.

#### 📦 How many offers can I get from one search term?

Up to 2,000, which is the most 1688 serves for any query. For deeper coverage, split a broad keyword into narrower ones or add a category ID, a city or a price band.

#### ⚡ How fast is it?

The Actor reads 100 offers per request. 5 offers completed in 7 seconds and 300 offers in 17 seconds in the verification runs.

#### 🪜 Does it return the quantity price tiers?

Yes, in `quantityPrices`, whenever the supplier publishes them, for example 1~99 at 24.00, 100~499 at 23.80 and ≥500 at 23.50. A single-price listing returns an empty list.

#### ⭐ What are the six supplier scores?

1688 rates each supplier out of 5 on goods quality, logistics, consultation, dispute handling and returns, and publishes a composite rating. All six come back on every row.

#### 🏭 How do I tell a factory from a trading company?

`supplierType` reads Manufacturer, Wholesaler, Agent or Business Service with the Chinese original in brackets. `factoryInspection: Yes` means 1688 inspected the factory on site, and the 深度验厂 tag in `serviceTags` says the same.

#### 📣 Are sponsored offers included?

Yes, because they are real offers with real prices. Each is marked `sponsored: Yes` so you can filter them out or study them separately. Sponsored offers can ignore the price band; organic offers always respect it.

#### 📸 Which platforms does photo search work on, and how reliable is it?

1688.com, Alibaba.com and AliExpress all returned real matches in the 2026-09-28 tests, from home, datacenter and residential IPs. 1688 and Alibaba.com are JSON services; AliExpress is a parsed results page, so it is the most likely to need a fix if AliExpress redesigns it. If one platform fails, the others still deliver and the dataset ends with an error row that says which one failed and why.

#### 🖼 What kind of photo works best?

One clear product on a plain background, JPEG, PNG or WebP. Large photos are scaled down automatically. A link that returns a web page, needs a login or is broken produces an error row naming the link.

#### 💵 How is photo search billed?

The same as keyword search: one result event per delivered product row, at the price shown on the Pricing tab ($0.0035 per row on the Free plan, $0.0024 on Gold). Error rows are free. A run that finds nothing on any platform fails and delivers no rows. **Max Matches per Photo** (default 20) keeps a photo at about $0.07 per platform on the Free plan; **Max Items** caps the whole run across every photo and platform.

#### 🔢 How many matches can I get for one photo?

20 per platform by default, the closest matches first. Raise **Max Matches per Photo** for more: about 700 on 1688, up to 100 on Alibaba.com and about 600 on AliExpress, limited by what each marketplace serves for a photo search.

#### 🔎 Does photo search return the same 46 fields as keyword search?

No. Photo rows have 32 fields shared by all three platforms (price, MOQ, supplier, ranking, link). For the 46 keyword fields, such as the six supplier scores and the price ladder, take a photo match's title to a keyword search.

#### 🔎 How do I get the Category ID?

Run a keyword once and read `categoryId` on the rows. Put the one you want into the Category ID input and run again to restrict the search to it.

#### 🛡 Do I need a proxy?

Yes, residential, and it is the default. 1688 asks for a captcha after a few dozen calls from one IP, and datacenter IPs last about five calls. The Actor rotates proxy sessions automatically whenever that happens.

#### 🧾 Does it return product details, SKUs or the description?

No. 1688's product pages sit behind a slider captcha for automated clients. This Actor returns everything the search listing carries, including price tiers, attributes and the supplier profile, and links each row to its product page.

#### 💱 What currency are the prices in?

Chinese yuan (CNY), exactly as 1688 shows them. The price band inputs are in yuan too.

#### 🚫 A row has an error. What happened?

For a keyword search: the term returned no offers, or 1688 refused the search after several session rotations. The row names the term and the reason, and the rest of the dataset stays intact.

#### 💾 What export formats are available?

CSV, Excel, JSON, XML, plus the Apify API and webhooks.

### 🔌 Integrate with any app

The dataset is available over the Apify API the moment a run finishes, so anything that speaks HTTP can consume it. Ready-made integrations cover Make, Zapier, Airbyte, Slack, Google Drive, GitHub, Google Sheets and Amazon S3, and webhooks can push each finished run straight into your own service.

### 🔗 Recommended Actors

- 🌏 [AliExpress Scraper](https://apify.com/parseforge/aliexpress-scraper) - keyword search on AliExpress with ratings, order counts and store details. Use it after a photo match to pull more of the same store or category.
- 🏗 [Made-in-China Product Scraper](https://apify.com/parseforge/made-in-china-scraper) - the export-facing B2B marketplace, for cross-checking suppliers.
- 🛒 [Walmart Scraper](https://apify.com/parseforge/walmart-scraper) - US retail prices, sellers and UPCs to compare against your landed cost.
- 🔨 [eBay Scraper](https://apify.com/parseforge/ebay-scraper) - listings, prices, seller info and sold data for the same products.
- 🛋 [IKEA Scraper](https://apify.com/parseforge/ikea-scraper) - furniture catalogue with prices and variants across 63 markets.

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge).

**🆘 Need Help?** [Open our contact form](https://tally.so/r/BzdKgA)

> **⚠️ Disclaimer:** this is an independent tool and is not affiliated with, endorsed by or connected to Alibaba Group or 1688.com. It collects only publicly available data.

# Actor input Schema

## `searchTerms` (type: `array`):

Keywords to search on 1688.com, one per line, in Chinese or English (手机壳, wireless earbuds). Each term is searched separately and paged until Max Items is reached. 1688 serves at most 2,000 offers per query, so split broad keywords or add a category, city or price band to go deeper. Ignored when Image URLs are given.

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

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `mode` (type: `string`):

Auto uses photo search when Image URLs are filled in and keyword search otherwise. Pick a mode to force it.

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

Public links to the product photos to search by, one per line. JPEG, PNG or WebP, up to 25 MB (larger photos are scaled down before upload). Each photo is searched on every platform you pick below. Max Matches per Photo caps each search and Max Items caps the whole run.

## `platforms` (type: `array`):

Where to look for similar products. 1688 gives CNY wholesale prices with MOQ; Alibaba.com gives USD export prices; AliExpress gives USD retail prices. Default: 1688 only.

## `maxItemsPerImage` (type: `integer`):

Most similar products to return for each photo on each platform, closest matches first. Default 20, which costs about $0.07 per photo per platform (20 results at $0.0035; less on higher plans). Raise it for deeper lists: 1688 serves about 700 matches, Alibaba.com 100 and AliExpress about 600. Max Items still caps the run total. Keyword search ignores this.

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

Result order, as 1688's own sort menu.

## `minPrice` (type: `integer`):

Only return offers priced at or above this amount, in Chinese yuan.

## `maxPrice` (type: `integer`):

Only return offers priced at or below this amount, in Chinese yuan.

## `categoryId` (type: `string`):

1688 leaf category ID to restrict the search to, for example 1033246 (earphones). Every row returns its own categoryId, so run a keyword once, pick the category you want and run again with it.

## `city` (type: `string`):

Only return suppliers located in this city, written as 1688 writes it, for example 深圳市 (Shenzhen), 广州市 (Guangzhou), 义乌市 (Yiwu), 东莞市 (Dongguan).

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

Apify residential proxies are recommended. Datacenter IPs get about 5 calls before 1688 asks for a captcha.

## Actor input object example

```json
{
  "searchTerms": [
    "wireless earbuds"
  ],
  "maxItems": 10,
  "mode": "auto",
  "platforms": [
    "1688"
  ],
  "maxItemsPerImage": 20,
  "sortBy": "pop",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

Key fields: image, title, price, MOQ, sales, 30-day GMV, supplier, scores, location and sponsored flag

## `fullData` (type: `string`):

Complete dataset with every field

# 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 = {
    "searchTerms": [
        "wireless earbuds"
    ],
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/1688-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 = {
    "searchTerms": ["wireless earbuds"],
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/1688-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 '{
  "searchTerms": [
    "wireless earbuds"
  ],
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call parseforge/1688-scraper --silent --output-dataset

```

## MCP server setup

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