1688 Products Scraper: Wholesale, MOQ & 1688 Image Search avatar

1688 Products Scraper: Wholesale, MOQ & 1688 Image Search

Pricing

from $1.45 / 1,000 products

Go to Apify Store
1688 Products Scraper: Wholesale, MOQ & 1688 Image Search

1688 Products Scraper: Wholesale, MOQ & 1688 Image Search

Scrape 1688.com products by keyword (English or Chinese), search URL, offer id, shop or image: price tiers by quantity, MOQ, sold count, images, the supplier's name, years, location and scores; every SKU, specs and shipping on a switch. No login. Export to CSV, JSON or Excel. Misses free.

Pricing

from $1.45 / 1,000 products

Rating

0.0

(0)

Developer

Hyperbach

Hyperbach

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

10 hours ago

Last modified

Features

Limited permissions

Share

1688.com products, logged out: keywords in English or Chinese, 1688 search URLs with their filters, product URLs or offer ids, a shop's member id, or an image in; one row per product out — the offer id and URL, the title (and an English title from 1688's own translator), the price tiers by quantity in CNY, the minimum order and its unit, the sold count, orders and repurchase rate, images, the ad flag, and the supplier's name, years on 1688, province and city, six service scores and factory flags — and with the product page on, every SKU with its stock (and its price when the offer is priced by SKU), the specs, the category, the listing date, shipping, services, promotions, the review summary, certificates, dropship figures, the shop card and, for a verified factory, its profile (staff, factory area, monthly output) with its street address and coordinates. One free row per input says what it gave: COMPLETE, CAPPED, TRUNCATED or PARTIAL. No login, no cookies, no API key, no browser, proxies handled for you.

From $2.00 per 1,000 rows (product) on the Free plan, $1.70 on Starter; every row and add-on is priced under Pricing below. A run start is $0.0054. The default input returns about 51 rows for about $0.1054. Every input gets one free row with its verdict; a search 1688 lists nothing for on two exits (no_results), a product 1688 answers its 404 page for on two exits (not_found) and a refusal the run could not pass (failed) are named there and never charged.

A 1688 product page on a phone: wireless earbuds with three wholesale price tiers. Beside it, the row this Actor returns for the product, with price_tiers as numbers per order quantity, the minimum order, the sold count, the supplier, its years on 1688 and the shipping origin.

Tested head-to-head on 2026-11-06

The job: the first 50 relevance-sorted products of one 1688 keyword (wireless earbuds, the input schema's example). Every Actor ran on it the same day from the same harness; a rival's cost is what a buyer account paid, this Actor's is its list price on the Free plan. Fields counts the filled fields of a typical row. Our row on this job is the search card (the product page is the includeDetails switch); zen-studio's row is its product with its page's fields. Re-measured monthly.

ActorRowsFirst rowRun timeCostFieldsFailures
this Actor5110 s19 s$0.1140none
zen-studio/1688-wholesale-scraper50122 s126 s$0.2451none
devcake/1688-com-products-scraper507.0 s7.2 s$0.1049none

Why this 1688 scraper

  • Every input 1688 has. Keywords in English (wireless earbuds, searched as you type them, never machine-translated) or Chinese (蓝牙耳机); search URLs from your browser with their sort, price, province, city and supplier filters (GBK- or UTF-8-encoded); product URLs or bare offer ids; a shop by its member id (b2b-…, the supplier_member_id of any row); and an image, uploaded to 1688's own image search. Each search gets its own cap (maxResults), the run's cap sits on top (maxItems).
  • The card's fields on every row, fast. A search page of 60 products carries the price tiers by quantity (on 34 of 60 cards of an ordinary search; the minimum order is the first tier's quantity), the sold count, orders and repurchase rate, the supplier's years on 1688 (60 of 60), province and city, six service scores and the factory and inspection flags. On the Apify worker one run of build 0.1.6 gave 200 such rows of four searches, the first after 5.2 s and the last at 10.0 s (JamgLP86IaQudG74z, 2026-11-06).
  • The product page when you want it. includeDetails reads each product's own page and its calls: every SKU with its stock and image, and its price when the offer is priced by SKU (every combination, logged out; an offer priced by quantity has its tiers and no SKU price), the full price tiers, the specs (16–26 attributes a page), the category, the listing date, the shipping origin, dispatch promise, fee, weight and package sizes, services, promotions and mixed-batch terms, the review summary, the certificates, the dropship figures, the shop card (followers, main category, repeat rate, service score, fulfilment rate), and for a supplier that is a verified factory its factory card: the street address and coordinates, staff and production staff, factory area, monthly output and annual trade, processing modes and main products (one call a supplier; any other seller says not_factory). Pages are read on ten connections at once: one run of build 0.1.6 gave 200 rows of four searches with their pages on the Apify worker, the first after 11.3 s and the last at 73.7 s (QLJ0U2pwu5ccmn9Oc, 2026-11-06); offer ids always get their page.
  • Filters that hold. 1688's own sorts (relevance, best selling, price up or down), price range, Super Factory or Verified Merchant, manufacturers only, province and city; plus filters applied on each row before it is counted or charged: the maximum minimum order (1688's own MOQ filter works the other way, at least N), ads, title words, one product per supplier, and the price range checked again on the row — a search URL's own price range and one-product-per-supplier key too (1688's own filters let some through).
  • Honest runs. 1688's slider is read from the answer and the connection is changed at once, never waited on; a search is no_results only when two connections agree, a product not_found only when two do. Every input gets a row that says what happened; a product is charged once a run even when several inputs list it, the product page only when it was read.

Who it's for

  • Sourcing agents and importers — Search a product in Chinese or English, keep suppliers whose minimum order fits your first order, compare the price tiers by quantity and the suppliers' years and scores, then read the chosen products' pages for every SKU and the shipping terms.
  • Dropshippers and marketplace sellers — Find 1688's source of a product by its image or its keyword, read the dropship figures and the sold count, and track the price tiers of the suppliers you buy from.
  • Market and price researchers — Read a category's products sorted by sales or price, with province and city, to see where a product is made and what it costs at each quantity.

Quick start

Basic — newest postings

{
"maxItems": 10
}

Switching from zen-studio/1688-wholesale-scraper?

Your input works as it is. Each name in the left column is read as this Actor's own field and the run log says so (read <theirs> as <ours>); a name marked not read is ignored with a note. A value in the other Actor's shape, an object list or its own date form, is read too.

zen-studio/1688-wholesale-scraperthis Actorwhat to know
keywordskeywordsThe same: each keyword is one search, English or Chinese, sent as typed.
offerIdsofferIdsThe same: offer ids or product URLs, each one row with its product page.
maxResultsmaxResultsThe same: the most rows a search gives (0 = to the end of 1688's list).
sortBysortByThe same four values: relevance, bestSelling, priceAsc, priceDesc.
includeSkuDetailsincludeDetailsReads each product's page: every SKU with its stock and image (its price when priced by SKU), and the rest of the page.
includeDescriptionHtmlincludeDescriptionThe description's text, image URLs and raw HTML.
includeSupplierIntelligenceincludeDetailsThe dropship figures, certificates, package sizes and the shop card come with the product page.
excludeKeywordsexcludeKeywordsThe same: a title with any of these words is left out, free.
priceMinpriceMinThe same, in yuan.
priceMaxpriceMaxThe same, in yuan.
minOrderQuantitymaxMinOrderMinimum order at most N, judged on each row's own minimum order.
merchantTypemerchantTypeThe same values: any, superFactory, verifiedMerchant (1688's own supplier filter).
provinceprovinceThe same: Chinese name, as 1688 writes it (广东).
citycityThe same: Chinese name (深圳).
proxyCountryModenot readNot read: 1688's list is the same from CN, US and DE connections (53–58 of 60 products shared), so the Actor picks its own connections.
feedbackfeedbackThe same: a free-text note to the maintainers. The run does not read it; a person does.

What differs:

  • The leader's row is a product with its page; here the page is the includeDetails switch (offer ids always get it), so a search without it is the card's fields at the card's price.
  • maxResults is per search here too; maxItems caps the whole run.
  • minOrderQuantity (minimum order at most N) is read as maxMinOrder and applied on each row's own minimum order: 1688's own MOQ filter keeps minimum orders of at least N.
  • No proxy country input: 1688's list is the same from CN, US and DE connections (measured 2026-11-05), so the connection's country is not yours to pick.
  • Prices are CNY as 1688 shows them: 1688 serves no USD price and no rate to a logged-out reader.

Output

One row per product, and one free summary row per input:

fieldmeaning
record_typeproduct on a product row (charged); target on an input's free summary row.
statusok, or why an input gave no row: no_results (1688 lists nothing, two connections agreed), not_found (1688's 404 page for the product on two connections, or an image URL that answers 404), invalid_input (a value that names nothing, with the reason in note), failed (1688 refused every connection), not_read (the run stopped before it).
inputThe value you gave that this row answers.
input_kindWhat the input was read as: keyword, search_url, offer, shop, image or invalid.
positionThe product's place in 1688's list for its input (1 = first); 1 for an offer id.
pageThe search page the product was on.
id1688's offer id.
urlThe product's page on 1688.
titleThe title as 1688 shows it (Chinese, or the seller's own English).
title_enThe title in English from 1688's own translator (translateTitles).
priceThe price 1688 shows on the card (the lowest tier's price), CNY.
price_minThe lowest price of the tiers or the SKUs, CNY.
price_maxThe highest price of the tiers or the SKUs, CNY.
currencyCNY: 1688's own currency.
price_type1688's own price type: on the card NORMAL (the list price), UMP (a promotion price 1688 shows to every reader), TTTM, HandPrice (1688's 到手价, the price after a discount the card names); on the page rangePrice or skuPrice.
price_basisquantity when the price falls with the quantity (price_tiers), sku when each SKU has its own price (skus), null when the card shows one price.
price_tiersThe price tiers by quantity: min_quantity, max_quantity (null on the last), price in CNY. [] when the card shows none or the price is per SKU.
moqThe minimum order quantity: the first tier's quantity on a card (an image match's own 起批 figure), the page's own minimum order with the page.
unitThe unit of the quantities (件, 条, 个, 套 …).
sold_textThe sold count as 1688 writes it (已售3900+件, 全网4.7万+件).
sold_countThe sold count as a number: the shown figure's lower bound on a card (4.7万+ = 47000), the page's own count with the page.
ordersThe card's order count (bookedCount).
repurchase_rateThe product's repurchase rate, 0–1.
image_urlThe main image.
imagesThe images: the card's main image, or the page's gallery with the page.
is_adtrue for a promoted product (an ad) in the search list.
same_design_url1688's link to products of the same design.
tagsThe card's service and promotion tags (先采后付, 退货包运费, 回头率38% …). A first-order cut is a tag (首单减3元: 3 yuan off a buyer's first order with the supplier); it is not taken off price.
supplier_nameThe supplier's company name.
supplier_member_idThe supplier's member id (b2b-…): give it as input to read the shop's own products.
supplier_login_idThe supplier's login name on 1688.
supplier_urlThe supplier's shop on 1688.
supplier_yearsThe supplier's years on 1688 (tpYear).
supplier_provinceThe supplier's province (广东); with an offer id, the shipping origin's province.
supplier_cityThe supplier's city (深圳市); with an offer id, the shipping origin's city.
business_type1688's business type of the supplier (生产加工 = production and processing …).
supplier_scoresThe supplier's six service scores on the card: composite, consultation, logistics, dispute, return, goods (0–5).
super_factorytrue for a Super Factory (超级工厂): the search card's own badge, and every row of a Super Factory search (1688's own list).
factory_inspectedtrue when the factory is inspected (验厂).
business_inspectedtrue when the business is inspected.
trustpasstrue for a TrustPass member (诚信通).
verified_merchanttrue for a Verified Merchant (实力商家), read from the product page, and on every row of a Verified Merchant search (1688's own list); null otherwise.
details_statusok when the product page was read (charged details), failed when 1688 did not serve it (the card's row, no details charge), not_found when the page is 1688's 404, not_asked without the product page.
category_idThe leaf category id.
category_nameThe leaf category's name (蓝牙耳机).
second_category_idThe second-level category id.
top_category_idThe top category id.
listed_atWhen the product was created on 1688 (UTC).
stockThe quantity the supplier can sell now.
skusEvery SKU: sku_id, name, props (each axis by its name: 颜色 = 黑色), price (null when the price is by quantity), stock, sold, image_url.
sku_countHow many SKUs the page lists.
specsThe product's attributes: name and value.
video_urlThe product's video.
ships_fromThe shipping origin (广东省深圳市).
dispatchThe dispatch promise and carrier as 1688 writes it (承诺48小时发货·常发韵达快递).
dispatch_daysThe dispatch promise in days.
shipping_feeThe page's shipping fee for the default address, CNY.
unit_weight_kgThe weight of one unit, kg.
package_sizesThe package of each SKU: length_cm, width_cm, height_cm, volume_cm3, weight_g.
servicesThe page's guarantees (7天无理由退货, 晚发必赔 …).
promotionsThe page's promotions and coupons: type, label, detail.
mixed_batchMixed-batch terms when the shop allows them: min_quantity and min_amount (CNY) across its products.
review_scoreThe review score (0–5) the product page shows. 1688 shows the same review summary on a supplier's listings of one product model, so the four review fields can describe the model, not this listing alone.
good_rateThe share of good reviews the product page shows, 0–1 (the page's review summary: see review_score).
review_countThe number of reviews the product page shows (the page's review summary: see review_score).
review_tagsThe reviews' impression tags with their counts (卖家很给力: 5). No review text and no buyer name is read.
compliance_warning1688's compliance warning on the page, when it shows one.
certificatesThe product's certificates: name, type, images.
dropshipThe dropship figures 1688 shows on the page: figures (by 1688's key: distributors, 30-day and 7-day dropship orders, pickup rates, the publish date), their labels, the dropship prices, the protections.
shop_nameThe shop's name on its shop card.
shop_followersThe shop's followers as 1688 writes them (2.8k粉丝).
shop_main_categoryThe shop's main category.
shop_scoresThe shop's figures: repeat_rate and fulfillment_rate (0–1), service_score (0–5), and any other figure under 1688's own name.
descriptionThe seller's description as text (includeDescription); many descriptions are images only.
description_imagesThe description's image URLs (includeDescription).
description_htmlThe description's raw HTML (includeDescription).
verdictOn an input's row: COMPLETE (1688's list ended), CAPPED (maxResults or maxItems), TRUNCATED (1688's 2,000-product display limit, or 1688 stopped serving mid-list: note says which) or PARTIAL (the run stopped: note says why).
rows_deliveredOn an input's row: the product rows it delivered.
noteWhy an input's row has the status or the verdict it has.
scraped_atWhen this row was read (UTC).
factory_statusWith the page: ok (the supplier is a verified factory: its factory card read), not_factory (1688 has no factory card for this seller: a trader or an unverified factory) or failed.
supplier_addressThe factory's street address from its factory card (verified factories only).
supplier_latitudeThe factory's latitude from its factory card.
supplier_longitudeThe factory's longitude from its factory card.
factory_profileThe factory card as 1688 shows it: name, founded, staff and production_staff (bands such as 101~200人) with the inspected counts, factory_area_m2 and factory_area_inspected_m2, monthly_output, annual_trade, material_days, processing, vat_invoice, min_order, min_order_oem, main_products, main_devices, medal_level, super_factory, inspected.

Example record:

{
"record_type": "product",
"status": "ok",
"input": "853958648180",
"input_kind": "offer",
"position": 1,
"page": null,
"id": "853958648180",
"url": "https://detail.1688.com/offer/853958648180.html",
"title": "S510895B蓝牙耳机降噪大立体声运动风低功耗LED数显无线真入耳式",
"title_en": null,
"price": 7.6,
"price_min": 7.6,
"price_max": 8.5,
"currency": "CNY",
"price_type": "rangePrice",
"price_basis": "quantity",
"price_tiers": [
{
"min_quantity": 10,
"max_quantity": 999,
"price": 8.5
},
{
"min_quantity": 1000,
"max_quantity": 9999,
"price": 8.0
},
{
"min_quantity": 10000,
"max_quantity": null,
"price": 7.6
}
],
"moq": 10,
"unit": "条",
"sold_text": "全网销量400+",
"sold_count": 445,
"orders": null,
"repurchase_rate": null,
"image_url": "https://cbu01.alicdn.com/img/ibank/O1CN01BSdHHD1D4FIHj3u1e_!!2216552300162-0-cib.jpg",
"images": [
"https://cbu01.alicdn.com/img/ibank/O1CN01BSdHHD1D4FIHj3u1e_!!2216552300162-0-cib.jpg",
"https://cbu01.alicdn.com/img/ibank/O1CN01oAeqHz1D4FIHZRbQu_!!2216552300162-0-cib.jpg",
"https://cbu01.alicdn.com/img/ibank/O1CN01nRg83C1D4FIHrfTgL_!!2216552300162-0-cib.jpg",
"https://cbu01.alicdn.com/img/ibank/O1CN01X2DHcb1D4FICumkow_!!2216552300162-0-cib.jpg",
"https://cbu01.alicdn.com/img/ibank/O1CN01h0OVjq1D4FIHM6tL2_!!2216552300162-0-cib.jpg",
"https://cbu01.alicdn.com/img/ibank/O1CN01wlyM0a1D4FIHoG8r7_!!2216552300162-0-cib.jpg",
"https://cbu01.alicdn.com/img/ibank/O1CN01h0OVjq1D4FIHM6tL2_!!2216552300162-0-cib.jpg",
"https://cbu01.alicdn.com/img/ibank/O1CN01MnPonw1D4FIHebmYE_!!2216552300162-0-cib.jpg"
],
"is_ad": null,
"same_design_url": null,
"tags": [],
"supplier_name": "深圳市钧乐电子有限公司",
"supplier_member_id": "b2b-2216552300162d5a29",
"supplier_login_id": "junledianzi",
"supplier_url": "https://junledianzi.1688.com",
"supplier_years": 4,
"supplier_province": "广东",
"supplier_city": "深圳市",
"business_type": null,
"supplier_scores": null,
"super_factory": null,
"factory_inspected": null,
"business_inspected": null,
"trustpass": true,
"verified_merchant": false,
"details_status": "ok",
"category_id": "1048186",
"category_name": "蓝牙耳机",
"second_category_id": "50911",
"top_category_id": "7",
"listed_at": "2024-11-15T04:00:05Z",
"stock": 30000,
"skus": [
{
"sku_id": "5820864482379",
"name": "黑色",
"props": {
"颜色": "黑色"
},
"price": null,
"stock": 10000,
"sold": 0,
"image_url": "https://cbu01.alicdn.com/img/ibank/O1CN01wlyM0a1D4FIHoG8r7_!!2216552300162-0-cib.jpg"
},
{
"sku_id": "5820864482381",
"name": "肤色",
"props": {
"颜色": "肤色"
},
"price": null,
"stock": 10000,
"sold": 0,
"image_url": "https://cbu01.alicdn.com/img/ibank/O1CN01MnPonw1D4FIHebmYE_!!2216552300162-0-cib.jpg"
},
{
"sku_id": "5820864482380",
"name": "白色",
"props": {
"颜色": "白色"
},
"price": null,
"stock": 10000,
"sold": 0,
"image_url": "https://cbu01.alicdn.com/img/ibank/O1CN01h0OVjq1D4FIHM6tL2_!!2216552300162-0-cib.jpg"
}
],
"sku_count": 3,
"specs": [
{
"name": "芯片类型",
"value": "中科蓝讯"
},
{
"name": "功能",
"value": "其他"
},
{
"name": "续航时间",
"value": "4-8小时"
},
{
"name": "品牌",
"value": "中性"
},
{
"name": "防水性能",
"value": "生活防水"
},
{
"name": "材质",
"value": "PC+ABS"
},
{
"name": "使用方式",
"value": "入耳式"
},
{
"name": "传输范围",
"value": "10米"
},
{
"name": "蓝牙协议",
"value": "5.3"
},
{
"name": "是否单双耳",
"value": "双边立体声"
},
{
"name": "颜色",
"value": "黑色, 白色, 肤色"
},
{
"name": "有可授权的自有品牌",
"value": "否"
},
{
"name": "支持订制",
"value": "不支持"
},
{
"name": "模具类型",
"value": "公模"
},
{
"name": "上市年份/季节",
"value": "2024"
},
{
"name": "风格",
"value": "运动风"
}
],
"video_url": "https://cloud.video.taobao.com/play/u/2216552300162/p/2/e/6/t/1/428997986204.mp4",
"ships_from": "广东省深圳市",
"dispatch": "承诺48小时发货·常发韵达快递",
"dispatch_days": 2,
"shipping_fee": 4.0,
"unit_weight_kg": 0.065,
"package_sizes": [
{
"sku": "黑色",
"length_cm": 12.0,
"width_cm": 8.0,
"height_cm": 3.3,
"volume_cm3": 316.8,
"weight_g": 65
},
{
"sku": "白色",
"length_cm": 12.0,
"width_cm": 8.0,
"height_cm": 3.3,
"volume_cm3": 316.8,
"weight_g": 65
},
{
"sku": "肤色",
"length_cm": 12.0,
"width_cm": 8.0,
"height_cm": 3.3,
"volume_cm3": 316.8,
"weight_g": 65
}
],
"services": [
"严选品质不符包赔",
"严选晚发必赔"
],
"promotions": [
{
"type": "MIX_WHOLESALE",
"label": "100件混批",
"detail": "本店部分商品满1000元或100件可混批采购"
}
],
"mixed_batch": {
"min_quantity": 100,
"min_amount": 1000.0
},
"review_score": 4.7,
"good_rate": 0.901,
"review_count": 24,
"review_tags": [
{
"tag": "卖家很给力",
"count": 5
},
{
"tag": "价格很便宜",
"count": 3
},
{
"tag": "合作最愉快",
"count": 1
},
{
"tag": "性价比超高",
"count": 1
},
{
"tag": "音质不错",
"count": 1
}
],
"compliance_warning": null,
"certificates": [],
"dropship": {
"figures": {
"dfPoint": "158",
"orderCnt30d": "100以内",
"orderCnt7d": "100以内",
"offerDelivery48hRate": "100.00%",
"offerDelivery24hRate": "100.00%",
"distributorCnt": "400+",
"ptRate": "100.00%",
"returnRate": "100.00%",
"offerPublishDate": "2024年11月"
},
"labels": {
"dfPoint": "商家代发热度",
"orderCnt30d": "近30天代发数量",
"orderCnt7d": "近7天代发数量",
"offerDelivery48hRate": "48h揽收率",
"offerDelivery24hRate": "24h揽收率",
"distributorCnt": "铺货分销商数",
"ptRate": "代发品质达标率",
"returnRate": "代发买家留货率",
"offerPublishDate": "商品发布时间"
},
"prices": [
{
"label": "≥10件",
"price": 8.5
}
],
"protections": [
"官方仓退货",
"晚揽必赔"
]
},
"shop_name": "深圳市钧乐电子有限公司",
"shop_followers": "2.8k粉丝",
"shop_main_category": "手机配件",
"shop_scores": {
"service_score": 3.5,
"repeat_rate": 0.65,
"fulfillment_rate": 0.99,
"店铺好评率": 0.901
},
"description": null,
"description_images": [
"https://cbu01.alicdn.com/img/ibank/O1CN011DxRaA1D4FIHsoRQz_!!2216552300162-0-cib.jpg",
"https://cbu01.alicdn.com/img/ibank/O1CN01eFJALe1D4FIIAxTuh_!!2216552300162-0-cib.jpg",
"https://cbu01.alicdn.com/img/ibank/O1CN01KeUk5s1D4FAngB0mq_!!2216552300162-0-cib.jpg",
"https://cbu01.alicdn.com/img/ibank/O1CN01HZUIGX1D4FAkwW1g5_!!2216552300162-0-cib.jpg"
],
"description_html": "<div style=\"width: 790.0px;\">\r \r <img src=\"https://cbu01.alicdn.com/img/ibank/O1CN011DxRaA1D4FIHsoRQz_!!2216552300162-0-cib.jpg\" style=\"display: block;width: 100.0%;height: auto;\" usemap=\"#_sdmap_0\"/>\r \r \r \r \r <img src=\"https://cbu01.alicdn.com/img/ibank/O1CN01eFJALe1D4FIIAxTuh_!!2216552300162-0-cib.jpg\" style=\"display: block;width: 100.0%;height: auto;\" usemap=\"#_sdmap_1\"/>\r \r \r \r \r <img src=\"https://cbu01.alicdn.com/img/ibank/O1CN01KeUk5s1D4FAngB0mq_!!2216552300162-0-cib.jpg\" style=\"display: block;width: 100.0%;height: auto;\" usemap=\"#_sdmap_2\"/>\r \r \r \r \r <img src=\"https://cbu01.alicdn.com/img/ibank/O1CN01HZUIGX1D4FAkwW1g5_!!2216552300162-0-cib.jpg\" style=\"display: block;width: 100.0%;height: auto;\" usemap=\"#_sdmap_3\"/>\r \r \r </div>",
"verdict": null,
"rows_delivered": null,
"note": null,
"scraped_at": "2026-11-05T18:41:07Z",
"factory_status": null,
"supplier_address": null,
"supplier_latitude": null,
"supplier_longitude": null,
"factory_profile": null
}

Pricing

Pay for the products a run delivers, plus one run start; no platform usage is billed to you. The price falls with your Apify plan.

eventunitFreeStarterScaleBusiness
Product (product)per 1,000$2.00$1.70$1.45$1.45
Product page (details)per 1,000$3.00$2.55$2.10$1.50
Run start (start)per run$0.0054$0.0054$0.0054$0.0054

A product row of a keyword, a search link, a shop or an image is $2.00 per 1,000 on the Free plan ($0.002 a row) and $1.70 on Starter. A row that carries its product page (includeDetails, and every offer id or product URL) adds the product page, $3.00 per 1,000 on the Free plan: $5.00 per 1,000 for the row with its page ($4.25 on Starter). A page 1688 does not serve is not charged: the row keeps the card's fields and pays the product row only. A product is charged once a run however many searches list it. Each run that delivers a product also pays the run start, $0.0054 once; a run that delivers none pays nothing at all. So the 50 products of one keyword cost $0.1054 on the Free plan and $0.0904 on Starter; 1,000 products $2.0054 and $1.7054; 100 products with their pages $0.5054 and $0.4304; 10 offer ids $0.0554 and $0.0479; every search of a run shares one start. Free: every input's own summary row, a search 1688 lists nothing for, an id 1688 does not have, a value that names nothing, a product your filters leave out, a product already delivered in the run, and an input left unread at maxItems, your charge limit or the time limit. A run that stops early (a timeout, an abort) is charged for the products it delivered.

Before the first request the log names the prices at your plan and the most the run can cost: maxResults for each search, shop or image (100 when you leave it out), maxItems over the whole run (the rows with their page counted first), 40 pages of 60 products for a search with maxResults 0, and never more than your charge limit. A search read to its end gives about 2,000 products: 1688 shows at most about 2,000 a search, and the 5 walks to 1688's own end of builds 0.1.6 to 0.1.8 gave 1,971 to 2,050 rows (1,975 for one keyword in 212 seconds on 2026-11-06). Set maxResults, maxItems or a charge limit for a lower maximum. Enterprise plans have their own rates — the Actor's Pricing tab shows the price for your plan.

Usage patterns

  • Search by keyword — Put wireless earbuds or 蓝牙耳机 in Keywords and set Max results per search. Each row is one product with its price tiers, minimum order, sales and supplier; the search's own row says COMPLETE (the list ended), CAPPED (your cap) or TRUNCATED (1688's 2,000-product display limit).
  • Read products by id or URL — Put offer ids (853958648180) or product URLs in Offer IDs or product URLs. Each is one row with its product page: every SKU with price and stock, the specs, shipping, the shop card. An id 1688 does not have gets a free not_found row.
  • Paste a 1688 search, a shop or an image — Paste a search page's URL (its keyword and filters are kept), a shop's member id (b2b-…, or a link with memberId=) to read the shop's own products, or an image URL in Image URLs to find similar products on 1688 (page by page, 60 a page, to Max results per search).

Input configuration

fieldtypedefaultwhat it does
keywordsarray[]Search words, one search a line, in English (wireless earbuds) or Chinese (蓝牙耳机), sent to 1688 as you type them (never machine-translated). Each keyword is its own search, capped by Max results per search.
startUrlsarray[]1688 links, one a line: a search page (https://s.1688.com/selloffer/offer_search.htm?keywords=…, its sort, price, province, city and supplier filters kept), a product page (https://detail.1688.com/offer/853958648180.html), or a shop link that carries its member id (…memberId=b2b-…, m.1688.com/winport/b2b-….html, or the bare b2b-… id). A shop's own address (name.1688.com) cannot be read logged out: its row says so and names the forms that work.
offerIdsarray[]Products to read directly, one a line: the offer id (the digits of detail.1688.com/offer/853958648180.html) or the product URL. Each is one row with its product page (every SKU, the specs, shipping, the shop card).
imageUrlsarray[]Images to find on 1688, one URL a line (a JPEG, PNG, WebP, GIF or BMP of at most 4 MB). The image is uploaded to 1688's own image search, and its similar products are read page by page (60 a page) to Max results per search.
maxResultsinteger100Stop each keyword, search URL, shop or image after this many product rows (0 = to the end of 1688's list; 1688 shows at most 2,000 products a search). A product a filter leaves out, or one an earlier input of the run already delivered, is not counted.
maxItemsinteger0The most product rows of the whole run, all inputs together; 0 = no cap beyond your charge limit.
includeDetailsbooleanfalseRead every product's own page as well: every SKU with its price and stock, the full price tiers, the specs, the category, the listing date, shipping (origin, dispatch promise, fee, weight, package sizes), services, promotions, the review summary, certificates, dropship figures and the shop card (followers, main category, shop scores). Slower (the page is read on several connections at once) and charged as a product page per row. Offer IDs and product URLs always get it.
includeDescriptionbooleanfalseAdd the seller's long description: its text, its image URLs and its raw HTML. Reads the product page too (as Read each product's page).
translateTitlesbooleanfalseAdd title_en: each title in English from 1688's own translator (the one its pages use), next to the Chinese title.
sortByrelevance / bestSelling / priceAsc / priceDesc"relevance"1688's own sort of the search list.
priceMinnumberOnly products whose price is at least this many yuan (0 = no minimum). Sent to 1688's own price filter and checked on each row.
priceMaxnumberOnly products whose price is at most this many yuan (0 = no maximum). Sent to 1688's own price filter and checked on each row.
maxMinOrderintegerOnly products whose minimum order quantity is at most this (0 = any), judged on each row's own minimum order. 1688's own MOQ filter works the other way (at least N), so this filter is applied here. Without the product page, a card that shows no minimum order is left out (free); with it, the page's minimum order decides.
merchantTypeany / superFactory / verifiedMerchant"any"1688's own supplier filter: Super Factory (超级工厂) or Verified Merchant (实力商家).
manufacturersOnlybooleanfalseOnly suppliers 1688 lists as production and processing (生产加工).
provincestringOnly suppliers in this province, in Chinese as 1688 writes it: 广东 (Guangdong), 浙江 (Zhejiang), 江苏 (Jiangsu).
citystringOnly suppliers in this city, in Chinese, with its province: 深圳 (Shenzhen) with 广东, 义乌 (Yiwu) with 浙江.
onePerSupplierbooleanfalseKeep one product of each supplier in a search (1688 merges most; the rest are left out here, free).
excludeAdsbooleanfalseLeave out the promoted (ad) products of the search list (free, not counted).
excludeKeywordsarray[]Leave out a product whose title holds any of these words (any case; Chinese or English); free, not counted.
feedbackstringA note to the people who maintain this Actor: what you needed and did not get. For example a missing field, a wrong or empty result, or the Actor you switch from or to, and why. The run does not read it: the rows and the charges stay the same. A person reads every note.

Errors

A run does not fail because of your input. When an input cannot be used — a date that is not a date, an id in the wrong form, two settings that contradict each other — the run ends Succeeded, charges nothing, and says what to change:

  • the status message starts with INPUT REJECTED;
  • the dataset holds one row, {"error": true, "code": "…", "message": "…"}, and no results;
  • the key-value store record ERROR holds the same object.

From code, check error on the first row before reading results.

A value that names nothing (an empty line, a link of another site, a shop's own address that 1688 serves only after a login) is not an error: it gets one free row with status invalid_input that says why, and the run goes on with the others. A run that ends Failed is a fault on our side, never your input; it charges nothing, and we are alerted.

FAQ

Are the prices in USD?

No: prices are in Chinese yuan (CNY) as 1688 shows them. 1688 serves no USD price and no exchange rate to a logged-out reader (measured 2026-11-05), so the Actor does not invent one.

Is the price a first-order or new-buyer price?

No: price is the price 1688 shows a logged-out reader on the card, the same for every buyer, and price_type says which (NORMAL the list price, UMP a promotion, HandPrice 1688's price after a discount the card names). A first-order cut is a tag (首单减3元, 3 yuan off your first order with that supplier), never taken off price: on the 500 cards of 5 ordinary searches read on 2026-11-06 it was on 5, a HandPrice on 4, a UMP on 79.

Why does a search stop near 2,000 products?

1688 shows at most about 2,000 products for one search (its own count stops at 2000). The search's row then says TRUNCATED. Narrow the search (a province, a price range, a supplier type) to reach more of the list.

Why did my maximum minimum order leave out products?

1688's own minimum-order filter keeps products whose minimum order is at least the number, so the Actor applies yours on each row's own minimum order instead. A search card that shows no minimum order is left out (free) unless the product page is read; with includeDetails the page's minimum order decides.

Can I give a shop's address like name.1688.com?

Not that form: 1688 serves a shop's own pages only after a login. Give the shop's member id (b2b-…, the supplier_member_id column of any row from it) or a link that carries memberId=; the shop's own products then come as a search.

Is a product charged twice when two of my searches list it?

No. A product is delivered and charged once a run; the second search skips it (free) and its row says how many it read.

Integration

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('hyperbach/1688-products-scraper').call({"maxItems": 10});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('hyperbach/1688-products-scraper').call(run_input={'maxItems': 10})
items = client.dataset(run['defaultDatasetId']).list_items().items

CLI

$apify call hyperbach/1688-products-scraper --input '{"maxItems": 10}'

REST

curl -X POST "https://api.apify.com/v2/acts/hyperbach~1688-products-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H 'Content-Type: application/json' -d '{"maxItems": 10}'

AI agents and MCP

Apify's MCP server offers this Actor as a tool to Claude, Cursor, VS Code and any other MCP client. Connect https://mcp.apify.com?tools=hyperbach/1688-products-scraper and ask, for example: "Get 100 products from 1688.com for wireless earbuds with their price tiers by quantity, minimum order and the supplier's years on 1688". The agent fills the input from the table above and reads the rows from the run's dataset. A field under the name another Actor gives it is read as this Actor's own: searchTerms, searchQueries, queries, query as keywords; urls, url, links, searchUrls as startUrls; productIds, productUrls, offerUrls, ids as offerIds; images, imageUrl, image as imageUrls (and more). An agent or a person can add feedback to any run and say what was needed and not delivered: a missing field, a wrong or empty result, the Actor switched from or to, and why. The run returns the same rows at the same price, and a person reads every note.

n8n, Make and Zapier

The Apify node in n8n, the Apify app in Make and the Apify integration in Zapier run this Actor on a schedule or from a trigger and read its dataset. A webhook on the run's end (Integrations on the Actor page) sends the rows on to your own endpoint. Nothing to install on our side.

Support

Disagree with a charge? Write to apify@hyperbach.com with the run ID. We will ask Apify to compensate you, and the charge comes back to your Apify account as platform credit.

Did it do the job? A short review on the Store, at any rating, helps the next buyer choose.

See also

  • Amazon Product Details Scraper — Amazon products by ASIN, URL or UPC / EAN / ISBN on 21 Amazon stores: the buy-box price, every best-seller rank, the rating and the review summary.
  • AliExpress Product Details Scraper — AliExpress products by URL or item id: every SKU with its own price and stock, in the country and currency you choose.
  • Shopify Store Scraper — every product of a Shopify store, with its variants, prices and images.
  • Alibaba Products Scraper — the products of an Alibaba.com search: price range, minimum order and the supplier with its country and verification.
  • Walmart Products Scraper — Walmart products by search, category or URL: the price with the was-price, the seller and the rating.
  • Coles Scraper — Coles Australia products and specials, with the price, the was-price and the unit price.

This page is generated from the Actor's schemas and a live sample — it cannot describe a field the Actor does not have.

⌂ 换网址