1688 Scraper — Wholesale Offers, Prices & Suppliers
Pricing
from $2.30 / 1,000 results
1688 Scraper — Wholesale Offers, Prices & Suppliers
1688.com scraper (阿里巴巴1688): export wholesale offers with price tiers, MOQ, units sold, supplier company, province and city, 诚信通 years and service scores. Search by keyword, paste 1688 search URLs, list a supplier's whole catalogue or read offer pages with SKUs and attributes. No login.
Pricing
from $2.30 / 1,000 results
Rating
0.0
(0)
Developer
Logiover
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
4
Monthly active users
5 days ago
Last modified
Categories
Share
1688 Scraper — Wholesale Offers, Prices & Suppliers (1688数据采集)
Search 1688.com (阿里巴巴1688) the way a Chinese buyer does and get every offer as a clean row: price tiers by quantity, minimum order (起批量), units sold, the supplier company, its province and city, 诚信通 years, repeat-buyer rate and service scores — plus whole supplier catalogues and full offer pages with SKUs, stock and attributes. No login, no cookies, no Chinese phone number.
1688 Scraper is a 1688.com data extractor (1688数据采集 / 1688商品爬虫 / 1688批发价格采集 / 阿里巴巴1688供应商采集) that turns any 1688 search into a spreadsheet. Type what you want to source — 手机壳 phone cases, 保温杯 vacuum flasks, 连衣裙 dresses, 数据线 charging cables, 收纳盒 storage boxes, 蓝牙耳机 Bluetooth earbuds, or an English keyword or model number — and the Actor returns each wholesale offer with its offer ID and link, title, price at the minimum order quantity, the full quantity price ladder (价格区间), the selling unit (件, 个, 套, 米 …), units sold (已售) and all-channel sales (全网销量), 1688's order counter, the offer's repurchase rate, pictures, category path, and the supplier behind it: registered company name, 1688 login and member ID, shop link, province and city, years of 诚信通 TrustPass membership, business model (生产加工 manufacturer or 经销批发 wholesaler), 回头率 repeat-buyer rate, six service scores, factory-inspection flags and badges such as 超级工厂 and 源头旗舰. It works as a 1688 API alternative with no appkey, no 1688 open-platform approval and no account on your side, and you can export 1688 products to CSV, Excel or JSON, or send them straight into a sourcing sheet, a margin calculator, a supplier CRM or an AI sourcing agent.
For China sourcing and wholesale price research the Actor reads the same JSON that 1688's own search page loads (60 offers per call), through Chinese residential addresses, with 1688's own sort orders (relevance 综合, price low→high and high→low, 30-day sales) and filters (price range, supplier province and city). 1688 serves at most ~2,040 offers for any one search; when you ask for more, each search is split into price bands that are read as searches of their own, and every offer is de-duplicated by its offer ID — measured: 12,000 unique offers from three keywords in 222 seconds, 0 duplicates. Switch on offer pages to add attributes (品牌, 材质, 型号, 货号 …), every SKU with its own price and stock, total stock, exact units sold, ship-from city, courier, the 48-hour dispatch promise, buyer protections, product video and the 实力商家 / 诚信通 flags. Paste 1688 search links copied from your browser (GBK-encoded links included), list a supplier's entire catalogue from its shop link or member ID, or refresh a list of offer IDs you already track.
All numbers on this page were measured on the Apify platform on 24–25 October 2026 (see Scale and speed).
Disclaimer: This Actor is an independent tool. It is not affiliated with, endorsed by, or sponsored by Alibaba Group or 1688.com (阿里巴巴1688). "1688", "1688.com", "Alibaba" and 阿里巴巴 are trademarks of their respective owners. The Actor reads publicly visible offer information only.
Table of contents
- At a glance
- What you get: the 1688 data fields
- Who uses this 1688 scraper
- Cookbook: 16 ready-to-run inputs
- Keyword cheat-sheet (中文关键词)
- Walkthrough: from keyword to factory shortlist in 15 minutes
- Tutorial: scrape 1688 in the Apify Console
- Tutorial: scrape 1688 with the API
- Input reference
- Output data dictionary (with measured fill rates)
- Offer pages: what "Read every offer page" adds
- Real output sample
- How the access works
- Scale and speed (measured October 2026)
- Prices, MOQ and sales on 1688: how to read them
- What you pay
- Integrations
- Performance tips
- Troubleshooting: every status message explained
- Honest limits
- Comparison: 1688 open platform, manual copying and this Actor
- FAQ
- Glossary of 1688 terms
- Is it legal to scrape 1688?
- Changelog
- Support
At a glance
| What you type | Keywords (Chinese works best: 手机壳, 保温杯, 连衣裙; English and model numbers work too) × sort × price range × supplier province/city — or 1688 search links, supplier shop links / member IDs, offer links / IDs |
| What you get | One row per offer: offerId, url, title, category path, price (CNY), priceTiers, minOrderQuantity, unit, salesText, soldCount, soldCountAllChannels, bookedCount, pictures, supplier company, login, member ID, shop, province, city, 诚信通 years, business model, repeat-buyer rate, six service scores, badges, service and promotion tags, ad flag, search position |
| Offer pages (optional) | Attributes, every SKU (spec, price, stock), total stock, exact units sold, price range, ship-from, courier, dispatch promise, buyer protections, video, weight, 实力商家 / 诚信通 flags, supplier reviews, created / updated dates |
| Scale | ~2,040 offers per search (1688's own window); bigger asks are split into price bands automatically. Measured: 12,000 unique offers from 3 keywords in one 222-second run, 0 duplicates |
| Speed | First rows in 6–15 s; 50 offers in ~9 s; 1,000 offers in 45–61 s; offer pages ~1.5 per second |
| Quality | Every column mapped from 1688's own data; 12 offers hand-checked against their offer pages: 112 of 125 values identical, the other 13 explained (details) |
| Formats | JSON, CSV, Excel, XML, HTML table, RSS; API, webhooks, Make, Zapier, n8n, Google Sheets |
| Price | Pay per offer: $3.50 per 1,000 on the Free plan, down to $2.30 per 1,000 on higher tiers — proxies and offer pages included |
| Needs | Nothing: no 1688 account, no appkey, no proxy setup (Chinese residential addresses are used automatically) |
What you get: the 1688 data fields
Every offer is one flat row; a value 1688 does not show is null — never an empty string, never a guessed 0. The data dictionary lists every column with its measured fill rate; in short:
- Offer —
offerId(stable, unique per row), canonicalurl, Chinesetitle, category path (categoryId›secondCategoryId›topCategoryId). - Price and MOQ —
price(CNY at the minimum order),priceTiers(价格区间, e.g. 3–4,999 units ¥2.60 · 5,000–99,999 ¥2.55 · 100,000+ ¥2.50),minOrderQuantity(起批量),unit(件, 个, 套, 米 …). - Sales —
salesTextas printed (已售10万+件),soldCount(this offer; exact with offer pages),soldCountAllChannels(全网销量),bookedCount(1688's order counter),repurchaseRate. - Supplier —
supplierCompanyName(东莞市元拓橡塑制品有限公司),supplierLoginId,supplierMemberId(b2b-…),supplierShopUrl,supplierProvince/supplierCity(广东 / 东莞市),supplierTrustPassYears(诚信通),supplierBusinessModel(生产加工 / 经销批发),supplierRepeatBuyerRate(回头率), six service scores,supplierBadge(超级工厂 / 源头旗舰),factoryInspected(深度验厂),businessInspected(深度验商). - Flags —
offerBadges(跨境, 严选, 新品 …),serviceTags(退货包运费, 先采后付, 48小时发货 …),promotionTags(满20减3券 …),isAd/adTypefor promoted slots (kept and flagged — they are real offers). - Context —
searchQuery,searchKeyword,searchPage,position,scrapedAt. - Offer pages (optional, or for offers given by link) —
attributes(品牌, 材质, 型号 …),skuswith spec, price and stock,skuProps,stock,priceType,priceMin/priceMax, ship-from, courier and dispatch promise, buyer protections, weight, video, 实力商家 / 诚信通 flags, supplier reviews, created / updated dates.
Who uses this 1688 scraper
1. Sourcing agents (采购代理) — "a factory shortlist per request"
A client wants 20,000 silicone cable protectors. Search 数据线保护套 by sales, keep supplierBusinessModel = 生产加工 and factoryInspected = true, compare priceTiers at 20,000 units and send five factories with links, MOQ and repeat-buyer rates.
2. Amazon, Shopee, TikTok Shop and Temu sellers — "landed cost before you list"
Pull 500 offers for the product you plan to launch, read the tier for your first order (priceTiers), add freight (unitWeightKg) and fees, and see the real margin band.
3. Dropshippers and 一件代发 sellers — "MOQ 1, ships in 48 hours"
Search your niche with a price ceiling, switch on offer pages and keep rows with minOrderQuantity = 1, shipWithinHours = 48 and serviceTags containing 退货包运费. The SKU list gives you the variants to list.
4. Private-label brand builders — "who actually makes it?"
Filter the province where the industry sits (保温杯 → 浙江 金华, 数据线 → 广东 东莞, 连衣裙 → 广东 广州), keep long-tenure manufacturers, and pull each candidate's whole catalogue by supplierMemberId — the best sign of what a factory really makes.
5. Procurement and cost engineering — "is this quote fair?"
Benchmark a supplier's quote against hundreds of comparable 1688 offers: median price at MOQ, the spread of the 1,000-unit tier, and how many suppliers offer the item at all.
6. Market and category researchers — "size the category"
Read tens of thousands of offers per category with price bands and chart price distribution, manufacturers vs wholesalers, regional clusters and sales concentration.
7. B2B lead generation — "supplier lists with company names"
Every row carries company name, login, member ID and shop link; de-duplicate by supplierMemberId for a supplier list per category and province, ranked by tenure and service scores.
8. Competitor and supplier monitoring — "what did that factory add this week?"
Schedule a weekly run on a supplier's member ID: new offerIds are new listings, changed priceTiers are price moves, updatedAt shows edits.
9. Cross-border catalogue and 代购 platforms — "import a catalogue with variants"
Offer pages give titles, attributes, SKUs with their own prices and stock, the main gallery and the video — the raw material for a catalogue import, translation and repricing.
10. Trend scouts and product designers — "what is new and selling"
Sort by sales (30-day turnover), watch the 新品, 人气新品, 超级新品 and 上新 badges and createdAt on offer pages to spot new designs that already sell.
11. Logistics forwarders — "quote the shipment"
shipFrom, shipFromCity, unitWeightKg and the courier in shippingNote describe where goods leave from and how heavy they are, offer by offer.
12. Quality and compliance teams — "verified suppliers only"
Keep factoryInspected / businessInspected suppliers, 实力商家 (supplierIsPowerMerchant), high supplierDisputeScore, and buyer protections such as 晚发必赔 before any sample order.
13. Investors and industry analysts — "map an industrial cluster"
Count suppliers and offers per city for a product family, compare price levels between clusters, and track how many new suppliers (supplierTrustPassYears = 1) enter a category.
14. AI sourcing assistants and RAG builders — "grounded 1688 answers"
Give an agent fresh 1688 rows (through the API or MCP) so it can answer "who makes 304 stainless flasks under ¥15 with MOQ under 100?" from real offers instead of guesses.
Cookbook: 16 ready-to-run inputs
Paste any of these into the JSON tab of the input form (or send it to the API). Fields you leave out use their defaults.
1. One keyword, quick sample (the classic)
{ "keywords": ["手机壳"], "maxItems": 50 }
2. Several keywords in one run, shared fairly
{ "keywords": ["保温杯", "收纳盒", "数据线", "蓝牙耳机"], "maxItems": 2000 }
Each keyword first gets an equal share (500 here); a keyword that runs out leaves its share to the others.
3. Cheapest first inside a price corridor
{ "keywords": ["保温杯"], "sort": "price_asc", "minPrice": 8, "maxPrice": 25, "maxItems": 1000 }
4. Best sellers first (30-day turnover)
{ "keywords": ["蓝牙耳机"], "sort": "sales", "maxItems": 500 }
5. Only suppliers in one province and city
{ "keywords": ["保温杯"], "province": "浙江", "city": "金华", "maxItems": 1000 }
6. 10,000+ offers from a single keyword
{ "keywords": ["连衣裙"], "maxItems": 15000 }
1688 serves ~2,040 offers per search; the Actor splits 连衣裙 into price bands (¥0–0.5 … ¥3,000+) and de-duplicates by offer ID. Leave Go past 1688's ~2,000-offer window on (the default).
7. Paste a search link from your browser
{ "searchUrls": ["https://s.1688.com/selloffer/offer_search.htm?keywords=%CA%D6%BB%FA%BF%C7&sortType=price&descendOrder=false"], "maxItems": 500 }
GBK-encoded links (the %CA%D6… form 1688 itself produces) are decoded correctly; the link's sort and filters are kept.
8. A supplier's whole catalogue from its shop link
{ "suppliers": ["https://apetop.1688.com"], "maxItems": 1000 }
9. Several suppliers by member ID, cheapest first
{ "suppliers": ["b2b-22072902285003c713", "b2b-2850655109d72ea"], "sort": "price_asc", "maxItems": 3000 }
10. Offer pages by link or ID
{ "offerUrls": ["https://detail.1688.com/offer/866095761513.html", "674035283676"] }
11. Search plus full offer pages (attributes, SKUs, stock)
{ "keywords": ["数据线保护套"], "includeDetails": true, "maxItems": 200 }
12. Dropshipping shortlist
{ "keywords": ["宠物饮水机"], "maxPrice": 60, "includeDetails": true, "maxItems": 300 }
Then keep minOrderQuantity = 1, shipWithinHours <= 48 and 退货包运费 in serviceTags.
13. English keyword or model number
{ "keywords": ["TWS earbuds", "P47"], "maxItems": 300 }
14. Manufacturer lead list for one category
{ "keywords": ["硅胶制品"], "province": "广东", "maxItems": 3000 }
In the dataset open the Suppliers view and de-duplicate by supplierMemberId.
15. Price check of offers you already track (weekly)
{ "offerUrls": ["866095761513", "1048480917692", "674035283676"] }
Schedule it weekly; compare priceTiers, priceMin, stock and soldCount between runs.
16. Hard spending cap for an exploratory pull
{ "keywords": ["收纳盒"], "maxItems": 100000 }
Run it with Maximum cost per run set (for example $5): the Actor saves what the cap covers and stops cleanly, saying so.
Keyword cheat-sheet (中文关键词)
1688 is a Chinese-language marketplace; Chinese keywords return the most and the most relevant offers. Useful starting points:
| You want | Type on 1688 |
|---|---|
| Phone cases / screen protectors | 手机壳 / 钢化膜 |
| Charging cables / chargers / power banks | 数据线 / 充电器 / 充电宝 |
| Bluetooth earbuds / headphones | 蓝牙耳机 / 头戴式耳机 |
| Vacuum flasks / tumblers | 保温杯 / 吸管杯 |
| Storage boxes / organisers | 收纳盒 / 收纳箱 / 整理盒 |
| Dresses / T-shirts / hoodies | 连衣裙 / T恤 / 卫衣 |
| Sneakers / slippers | 运动鞋 / 拖鞋 |
| Pet supplies / pet feeders | 宠物用品 / 宠物喂食器 |
| Toys / plush toys | 儿童玩具 / 毛绒玩具 |
| Kitchenware / silicone kitchen tools | 厨房用品 / 硅胶厨具 |
| LED lights / strip lights | LED灯 / 灯带 |
| Car accessories | 汽车用品 / 车载支架 |
| Packaging boxes / bags | 包装盒 / 包装袋 |
| Yoga wear / sportswear | 瑜伽服 / 运动服 |
| Wigs / hair accessories | 假发 / 发饰 |
| Stainless steel / 304 | 不锈钢 / 304不锈钢 |
| Custom / OEM | 定制 / 来图定制 / OEM |
| Cross-border goods | 跨境 / 亚马逊 |
Add modifiers the way Chinese buyers do: 厂家直销 (factory direct), 批发 (wholesale), 现货 (in stock), 一件代发 (dropshipping), 跨境专供 (made for export).
Walkthrough: from keyword to factory shortlist in 15 minutes
- Search wide. Run
{"keywords": ["304保温杯"], "sort": "sales", "maxItems": 1000}. - Read the market. In the Prices & MOQ view note where most prices sit and the 500- and 1,000-unit tiers.
- Keep makers. Filter
supplierBusinessModel = 生产加工,supplierTrustPassYears >= 3,supplierRepeatBuyerRate >= 40. - Check the cluster. Group by
supplierCity(for flasks, 金华 dominates) and prefer suppliers inside it. - Go deep on five. Paste their
supplierMemberIds into Supplier shops: 200 flask variants means a flask factory, 30 unrelated categories a trader. - Verify. Run their best offers through Offer URLs to read stock, SKUs, ship-from, dispatch promise and the 实力商家 / 诚信通 flags.
- Contact. Each row has the shop link and login; message suppliers on 1688 with your quantity tier.
Tutorial: scrape 1688 in the Apify Console
- Open the Actor and click Try for free / Start.
- Search keywords — type one keyword per line (Chinese works best).
- Optional: 1688 search URLs, Supplier shops or Offer URLs or IDs.
- Max offers — how many offers in total (0 = no limit).
- Optional: Sort, Min / Max price (CNY), Supplier province and city.
- Optional: Read every offer page (details) for attributes, SKUs and stock.
- Leave Proxy as it is — Chinese residential addresses are used automatically for 1688.
- Click Start. Rows appear in the Output tab within seconds; switch between the Offers, Prices & MOQ, Suppliers and Offer page details views.
- Export as CSV, Excel, JSON, XML or HTML, or connect Google Sheets.
Tutorial: scrape 1688 with the API
Start a run and wait for it (replace <TOKEN>):
curl -X POST "https://api.apify.com/v2/acts/logiover~1688-scraper/run-sync-get-dataset-items?token=<TOKEN>&format=json" \-H "Content-Type: application/json" \-d '{"keywords": ["保温杯"], "maxItems": 200}'
Or start it asynchronously and read the dataset later:
# 1. Start the runcurl -X POST "https://api.apify.com/v2/acts/logiover~1688-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" -d '{"keywords": ["手机壳"], "maxItems": 1000}'# 2. Read the rows as CSV (replace <DATASET_ID> with defaultDatasetId from the answer)curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?format=csv&token=<TOKEN>" -o 1688.csv
Node.js (npm install apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('logiover/1688-scraper').call({ keywords: ['数据线'], maxItems: 500, sort: 'sales' });const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.length, items[0].title, items[0].priceTiers);
Python (pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("<TOKEN>")run = client.actor("logiover/1688-scraper").call(run_input={"keywords": ["收纳盒"], "maxItems": 500})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["offerId"], row["price"], row["minOrderQuantity"], row["supplierCompanyName"])
Input reference
| Field | Type | Default | What it does |
|---|---|---|---|
keywords | array of strings | — (prefill ["手机壳"]) | Each keyword is one 1688 search. Chinese works best; English and model numbers work. |
searchUrls | array of strings | — | 1688 search result links (s.1688.com/selloffer/offer_search.htm?…). GBK and UTF-8 links are decoded; the link's own sort and filters are kept; the form's sort / filters fill in only what the link does not set. |
suppliers | array of strings | — | Supplier shop links (https://<shop>.1688.com) or member IDs (b2b-…). Lists the supplier's whole catalogue; sort and price filters apply. |
offerUrls | array of strings | — | Offer links (detail.1688.com/offer/<id>.html, m.1688.com/offer/<id>.html) or bare offer IDs. Each is read from its offer page. |
maxItems | integer | 1000 (prefill 50) | Total offers to save across everything (0 = no limit). Several searches share it fairly. |
sort | relevance · price_asc · price_desc · sales | relevance | 1688's own order: 综合 relevance, price low→high, price high→low, 30-day sales turnover. |
minPrice / maxPrice | number (CNY) | — | Price range, applied by 1688's own filter (a few offers can show a list price just outside it). |
province | string | — | Supplier province in Chinese: 广东, 浙江, 福建, 江苏, 山东 … ("省" is optional). |
city | string | — | Supplier city in Chinese: 东莞, 义乌, 金华, 广州 … (use with the province). |
includeDetails | boolean | false | Reads every offer page and adds the offer page fields. |
splitLargeSearches | boolean | true | When Max offers asks for more than 1688's ~2,040-offer window, splits each search into price bands. |
maxConcurrency | integer 1–16 | 6 | Search pages read at the same time, each through its own Chinese residential address. |
proxyConfiguration | proxy object | Apify Proxy | Searches always use Apify's Chinese residential proxy. This setting is tried first for offer pages; your own proxy URLs, if given, are used for everything. |
Through the API you can also pass maxItemsPerSearch (integer) to cap each search separately.
Output data dictionary (with measured fill rates)
Fill rate = share of rows where the field is not empty. Search columns: measured on the 12,000-offer run of 24 October 2026 (连衣裙, 收纳盒, 蓝牙耳机, all price bands). Offer page columns: measured on a 1,000-offer run with offer pages on 25 October 2026 (收纳盒, 保温杯, 数据线). A field below 100 % is empty because 1688 does not show it for that offer — never because the Actor guessed.
| Field | Type | Meaning | Fill (12,000 search rows) | Fill (1,000 with offer pages) | Example |
|---|---|---|---|---|---|
offerId | string | 1688 offer ID; unique per row, stable. | 100 % | 100 % | 866095761513 |
url | string | Canonical offer page URL. | 100 % | 100 % | https://detail.1688.com/offer/866095761513.html |
title | string | Offer title in Chinese, as written by the supplier. | 100 % | 100 % | 数据线保护套硅胶防折断充电线保护套咬线器防断裂神器 |
categoryId | string | Leaf category ID (search category path or offer page). | 96 % | 100 % | 1033997 |
secondCategoryId | string | Second-level category ID. | 72 % | 100 % | 50911 |
topCategoryId | string | Top-level category ID. | 96 % | 100 % | 7 |
price | number | CNY per unit at the minimum order quantity. | 100 % | 100 % | 2.6 |
currency | string | CNY when a price is present. | 100 % | 100 % | CNY |
priceTiers | array | Quantity tiers 价格区间 [{minQuantity, maxQuantity, price}]; max null = and above. | 50 % | 36 % | [{3,4999,2.6},{5000,99999,2.55},{100000,null,2.5}] |
minOrderQuantity | number | Minimum order 起批量 (MOQ), in unit. | 50 % | 100 % | 3 |
unit | string | Selling unit (件, 个, 套, 米, 千克 …). | 49 % | 100 % | 件 |
salesText | string | Sales line as printed (已售 own / 全网 all channels). | 58 % | 98 % | 已售10万+件 |
soldCount | number | Units sold through this offer (已售): page-exact with offer pages, else the list's lower bound. | 38 % | 100 % | 186454 |
soldCountIsLowerBound | boolean | true = rounded list figure (10万+), false = exact. | 38 % | 100 % | false |
soldCountAllChannels | number | Units sold across all channels (全网销量), lower bound. | 20 % | 48 % | 92000 |
bookedCount | number | 1688's order counter from search (成交笔数). | 100 % | 100 % | 2415 |
repurchaseRate | number | Repurchase rate of the offer, %. | 43 % | 88 % | 17 |
imageUrl | string | Main picture, full size. | 100 % | 100 % | https://cbu01.alicdn.com/img/ibank/O1CN01….jpg |
imageUrls | array | Pictures (main gallery with offer pages). | 100 % | 100 % | […] |
supplierCompanyName | string | Registered company name. | 100 % | 100 % | 东莞市元拓橡塑制品有限公司 |
supplierLoginId | string | Supplier's 1688 login (旺旺). | 100 % | 100 % | yuantuo1230 |
supplierMemberId | string | Member ID (b2b-…), usable under Supplier shops. | 100 % | 100 % | b2b-22072902285003c713 |
supplierShopUrl | string | Supplier shop (旺铺) URL. | 100 % | 100 % | https://apetop.1688.com |
supplierProvince | string | Supplier province (empty for some promoted slots). | 80 % | 92 % | 广东 |
supplierCity | string | Supplier city. | 80 % | 92 % | 东莞市 |
supplierTrustPassYears | number | Years of 诚信通 (TrustPass) membership. | 100 % | 100 % | 7 |
supplierBusinessModel | string | 经营模式: 生产加工 manufacturer, 经销批发 wholesaler … | 70 % | 79 % | 生产加工 |
supplierRepeatBuyerRate | number | 回头率 over 3 months, % (two decimals with offer pages). | 100 % | 100 % | 78.44 |
supplierBadge | string | 超级工厂 or 源头旗舰 badge. | 15 % | 25 % | 超级工厂 |
supplierServiceScore | number | Composite service score (0–5). | 96 % | 99 % | 4.0 |
supplierConsultationScore | number | Consultation score (0–5). | 96 % | 99 % | 4.0 |
supplierLogisticsScore | number | Logistics score (0–5). | 96 % | 99 % | 3.29 |
supplierDisputeScore | number | Dispute score (0–5, higher = fewer). | 96 % | 99 % | 5.0 |
supplierReturnScore | number | Returns score (0–5). | 96 % | 99 % | 3.67 |
supplierGoodsScore | number | Goods quality score (0–5). | 96 % | 99 % | 3.33 |
factoryInspected | boolean | Passed 深度验厂 factory inspection. | 100 % | 100 % | false |
businessInspected | boolean | Passed 深度验商 business inspection. | 100 % | 100 % | false |
offerBadges | array | 跨境, 严选, 新品, 人气新品, 超级新品, 上新. | 39 % | 54 % | ["跨境"] |
serviceTags | array | 退货包运费, 先采后付, 48小时发货, 假一赔四 … | 100 % | 100 % | ["退货包运费","先采后付"] |
promotionTags | array | Coupons and free-shipping thresholds (满20减3券 …). | 13 % | 9 % | ["满20减3券"] |
isAd | boolean | Promoted slot (P4P / BID / CPT) — still a real offer. | 100 % | 100 % | false |
adType | string | P4P, BID or CPT when isAd. | 12 % | 9 % | P4P |
searchQuery | string | Search that found the row (with sort, filters, price band). | 100 % | 100 % | "手机壳" |
searchKeyword | string | Keyword of that search. | 100 % | 100 % | 手机壳 |
searchPage | number | Result page (60 per page). | 100 % | 100 % | 1 |
position | number | Position in that search (1 = first). | 100 % | 100 % | 1 |
scrapedAt | string | Read time (ISO 8601, UTC). | 100 % | 100 % | 2026-10-25T09:00:00.000Z |
detailsFetched | boolean | true when the offer page was read. | — | 100 % | true |
status | string | Offer status (PUBLISHED = live). | — | 100 % | PUBLISHED |
categoryName | string | Leaf category name (Chinese). | — | 100 % | 其他手机配件 |
attributes | object | 商品参数 name → value (品牌, 材质, 型号, 货号 …). | — | 100 % | {"品牌":"yuantuo","类型":"硅胶套"} |
priceType | string | tiered (quantity ladder) or perSku. | — | 100 % | tiered |
priceMin | number | Lowest tier / SKU price, CNY. | — | 100 % | 2.5 |
priceMax | number | Highest tier / SKU price, CNY. | — | 100 % | 2.6 |
stock | number | Units available (可售数量). | — | 100 % | 1757459 |
skuCount | number | Number of SKUs. | — | 100 % | 27 |
skuProps | array | Variant dimensions and values. | — | 100 % | [{"name":"颜色","values":[…]}] |
skus | array | [{skuId, spec, price, stock}]; spec joins dimensions with >. | — | 100 % | [{"skuId":"5690530004814","spec":"双C通用款-灰色","price":null,"stock":77613}] |
supplierReviewCount | number | Supplier's buyer reviews (same on all its offers). | — | 99 % | 165 |
supplierGoodReviewRate | number | Positive share of those reviews, %. | — | 99 % | 99.8 |
supplierRating | number | Supplier goods rating from reviews (0–5). | — | 99 % | 5 |
supplierReviewHighlights | array | Top review impressions [{tag, count}]. | — | 98 % | [{"tag":"质量很好","count":9}] |
videoUrl | string | Product video (MP4). | — | 76 % | https://cloud.video.taobao.com/play/u/…/503356972740.mp4 |
videoCoverUrl | string | Video cover picture. | — | 76 % | https://img.alicdn.com/imgextra/…jpg |
shipFrom | string | Ship-from 发货地 as printed. | — | 99 % | 广东省东莞市 |
shipFromProvince | string | Ship-from province. | — | 99 % | 广东 |
shipFromCity | string | Ship-from city. | — | 99 % | 东莞市 |
shippingNote | string | Dispatch promise and usual courier. | — | 97 % | 承诺48小时发货·常发圆通快递 |
shipWithinHours | number | Dispatch promise in hours. | — | 100 % | 48 |
buyerProtections | array | 晚发必赔, 7天无理由退货 … | — | 100 % | ["晚发必赔"] |
unitWeightKg | number | Weight per unit, kg (when all SKUs share one). | — | 33 % | 0.02 |
supplierUserId | string | Supplier's numeric user ID. | — | 100 % | 2207290228500 |
supplierIsTrustPass | boolean | 诚信通 member. | — | 100 % | true |
supplierIsPowerMerchant | boolean | 实力商家 (power merchant). | — | 100 % | true |
supplierType | string | Card type on the offer page (factory …). | — | 100 % | factory |
supplierServiceRating | number | Service rating on the offer page (0–5). | — | 100 % | 4.0 |
createdAt | string | Offer created (ISO 8601). | — | 100 % | 2024-12-21T08:45:53.000Z |
updatedAt | string | Offer last modified (ISO 8601). | — | 100 % | 2026-10-24T13:39:27.000Z |
descriptionUrl | string | Long description (HTML with pictures). | — | 100 % | https://itemcdn.tmall.com/1688offer/icoss… |
Offer pages: what "Read every offer page" adds
The search list already carries price, MOQ (for quantity-priced offers), sales, supplier and location. The offer page adds the 商品参数 attributes, every SKU with its own price and stock (skus, skuProps, stock), the pricing type (tiered ladder or perSku with priceMin / priceMax), the exact units sold, ship-from city, courier and dispatch promise, buyer protections, weight, video, the 诚信通 / 实力商家 flags, the exact 回头率 and the supplier's review block (1688 shows the same reviews on every offer of a supplier — verified on 15 offers of one factory — so they are exported as supplierReview…).
Offer pages cost time, not money: the price per row is the same. Measured: 1,000 offers with offer pages in 621 s (about 1.6 per second, 1,000 of 1,000 pages read; 10 % came through datacenter addresses, 90 % through Chinese residential ones). If an offer page cannot be read, the search row is still saved with detailsFetched: false and the status message counts it.
Real output sample
A row from a platform run with offer pages on 25 October 2026 (values exactly as saved; long arrays shortened with "…"):
{"offerId": "975911930579","url": "https://detail.1688.com/offer/975911930579.html","title": "高颜值铃兰花咖啡杯316不锈钢保温杯便携手提咖啡杯双饮学生水杯","categoryId": "1043766","secondCategoryId": "1046721","topCategoryId": "201547801","price": 9.9,"currency": "CNY","priceTiers": [{"minQuantity": 1, "maxQuantity": 999, "price": 9.9}, {"minQuantity": 1000, "maxQuantity": 9999, "price": 9.6}, {"minQuantity": 10000, "maxQuantity": null, "price": 9}],"minOrderQuantity": 1,"unit": "个","salesText": "全网1.9万+件","soldCount": 1908,"soldCountIsLowerBound": false,"soldCountAllChannels": 19000,"bookedCount": 274,"repurchaseRate": 6,"imageUrl": "https://cbu01.alicdn.com/img/ibank/O1CN01x7F8kj1JF8McIgh81_!!2216984010998-0-cib.jpg","imageUrls": ["https://cbu01.alicdn.com/img/ibank/O1CN01x7F8kj1JF8McIgh81_!!2216984010998-0-cib.jpg", "https://cbu01.alicdn.com/img/ibank/O1CN01wRxC8o1JF8MbwJQBw_!!2216984010998-0-cib.jpg", "…"],"supplierCompanyName": "永康市舒响工贸有限公司","supplierLoginId": "永康市源誉工贸有限公司","supplierMemberId": "b2b-22169840109984d305","supplierShopUrl": "https://shop94i26wb925785.1688.com","supplierProvince": "浙江","supplierCity": "金华市","supplierTrustPassYears": 3,"supplierBusinessModel": "生产加工","supplierRepeatBuyerRate": 50.69,"supplierBadge": "源头旗舰","supplierServiceScore": 4,"supplierConsultationScore": 3,"supplierLogisticsScore": 3.43,"supplierDisputeScore": 4,"supplierReturnScore": 4,"supplierGoodsScore": 3.33,"factoryInspected": true,"businessInspected": false,"offerBadges": ["跨境"],"serviceTags": ["退货包运费", "先采后付", "深度验厂"],"promotionTags": [],"isAd": false,"adType": null,"searchQuery": "\"保温杯\"","searchKeyword": "保温杯","searchPage": 3,"position": 132,"scrapedAt": "2026-10-24T22:30:36.952Z","detailsFetched": true,"status": "PUBLISHED","categoryName": "保温杯","attributes": {"内胆材质": "304不锈钢", "品牌": "舒响", "功能": "加厚,常规,家用,便携,真空,保温,可定制,防摔", "保温性能": "6-12小时", "外壳材质": "201不锈钢", "货号": "-", "样式": "带提绳,大容量,直身杯", "材质": "316不锈钢", "风格": "现代简约", "是否进口": "否", "…": "(25 more attributes)"},"priceType": "tiered","priceMin": 9,"priceMax": 9.9,"stock": 2998374,"skuCount": 4,"skuProps": [{"name": "颜色", "values": ["鹤顶红", "卡其白", "磨砂黑", "哭哭马"]}, {"name": "容量", "values": ["500ml"]}],"skus": [{"skuId": "6096657744000", "spec": "鹤顶红>500ml", "price": null, "stock": 999438}, {"skuId": "6104759017326", "spec": "哭哭马>500ml", "price": null, "stock": 0}, {"skuId": "5931051717002", "spec": "磨砂黑>500ml", "price": null, "stock": 999851}, {"skuId": "5931051717001", "spec": "卡其白>500ml", "price": null, "stock": 999085}],"supplierReviewCount": 1106,"supplierGoodReviewRate": 94,"supplierRating": 4.8,"supplierReviewHighlights": [{"tag": "价格实惠", "count": 123}, {"tag": "质量不错", "count": 101}, {"tag": "商家客服态度很好", "count": 98}, {"tag": "购买推荐", "count": 66}, "…"],"videoUrl": "https://cloud.video.taobao.com/play/u/2216984010998/p/2/e/6/t/1/551161551281.mp4","videoCoverUrl": "https://img.alicdn.com/imgextra/i2/6000000003386/O1CN01H8daWd1asqCLPFrhP_!!6000000003386-0-tbvideo.jpg","shipFrom": "浙江省金华市","shipFromProvince": "浙江","shipFromCity": "金华市","shippingNote": "承诺48小时发货·常发申通快递","shipWithinHours": 48,"buyerProtections": ["7天无理由退货", "晚发必赔"],"unitWeightKg": 0.385,"supplierUserId": "2216984010998","supplierIsTrustPass": true,"supplierIsPowerMerchant": true,"supplierType": "factory","supplierServiceRating": 4,"createdAt": "2025-09-13T09:12:39.000Z","updatedAt": "2026-10-24T18:59:08.000Z","descriptionUrl": "https://itemcdn.tmall.com/1688offer/icoss14310487545258412b75cb153b"}
CSV / Excel columns follow the order of the data dictionary; arrays and objects are flattened into numbered columns (priceTiers/0/price, attributes/品牌 …).
Hand check (25 October 2026). Twelve offers from the 12,000-offer run (four per keyword, including promoted ones) were compared field by field with their own offer pages: title, company, login, member ID, category, MOQ, unit, price, tiers, sales line, repeat-buyer rate and units sold. 112 of 125 comparisons were identical. The 13 others are 1688's own differences, not mapping errors: the search list truncates 回头率 to whole percent (46 vs 46.80 %); the search index can trail the live page (已售200+ in the list, 307 sold on the page); the list prints the generic unit 件 where the page says 米 or 个; 1688's page price model starts the first tier at 1 while the MOQ is 2 (the Actor uses the MOQ, as the list does); and three list lines showed 全网 (all-channel) sales — which is why those go to soldCountAllChannels, not soldCount.
How the access works
1688's search page is a JavaScript application that loads its offers from 1688's mtop gateway. The Actor makes the same call directly — it obtains a session token and signs each request the way the page does — and reads 60 offers per answer: no HTML parsing, no browser, no login. Measured on the platform in October 2026:
- Only Chinese residential addresses get answers. Datacenter proxies, residential addresses in the US, Hong Kong and elsewhere, and the platform's own address all receive 1688's slider wall on the first call, so searches always go through Apify's residential proxy in China — nothing to configure.
- Each address is used briefly. An address answers a few pages and then meets the wall; the Actor drops it at the first refusal and continues on a fresh one, rotating browser profiles measured to pass and pacing new sessions so the wall does not rise for everyone. A random soft "please log in" interruption is simply asked again.
- Offer pages are read through a datacenter address first and a Chinese residential address when 1688 refuses.
- Restarts are safe. If the platform moves a run to another server, the Actor reads which offers its dataset already holds and which search pages were finished, and continues without writing or charging anything twice.
Scale and speed (measured October 2026)
| Run (Apify platform) | Rows | Time | Notes |
|---|---|---|---|
| Prefill: 手机壳, 50 offers | 50 | 8.8 s end-to-end | first rows after 6.9 s |
| 保温杯, 1,000 offers, relevance | 1,000 | 60.6 s | 28 search pages, 0 duplicates |
| 保温杯, 1,000 offers, price low→high | 1,000 | 44.7 s | 26 search pages |
| 连衣裙 + 收纳盒 + 蓝牙耳机, 12,000 offers | 12,000 unique | 222 s | 221 search pages, 39 price bands per keyword, 0 duplicates, first rows 6.2 s |
| 蓝牙耳机, 80 offers with offer pages | 80 | 63 s | 80 of 80 offer pages read |
| 收纳盒 + 保温杯 + 数据线, 1,000 offers with offer pages | 1,000 | 621 s | 21 search pages, 1,000 of 1,000 offer pages read, 0 duplicates, first rows 14.6 s |
How much can you get? 1688 serves the first ~2,040 offers (34 pages of 60) of any search; found stops at 2,000. With Go past 1688's ~2,000-offer window on, a search is split into 39 price bands from ¥0 to ¥3,000+, so one broad keyword yields tens of thousands of offers (the three keywords above gave 4,293, 4,320 and 3,387 offers within their fair shares of 12,000). A keyword list multiplies that: there is no fixed upper limit beyond the time and budget you give the run.
Duplicates: about one listing in five on any 1688 page is a promoted slot that appears again on other pages; the Actor keeps the first copy and skips the rest (1,169 repeats skipped in the 12,000 run), so every row is a distinct offer.
Prices, MOQ and sales on 1688: how to read them
priceis the unit price at the minimum order quantity — the number 1688 prints in red in the list. Quantity discounts are inpriceTiers.priceTiersreproduces 1688's 价格区间:{"minQuantity": 3, "maxQuantity": 4999, "price": 2.6}means 3–4,999 units at ¥2.60 each. The search list shows tiers for offers priced by quantity (about half of all offers). Offers priced per SKU (each colour or size its own price) have no tiers; their range is inpriceMin/priceMaxand each SKU's price inskus(offer pages).minOrderQuantityis 起批量 — the smallest order the supplier accepts, inunit. For per-SKU-priced offers the list does not print it; the offer page always does.- Currency is always CNY (¥). Prices are wholesale unit prices before shipping.
salesTextis 1688's sales line, verbatim.已售means sold through this offer (1688 labels the page figure 一年内, within the last year, for most offers);全网means sold across all the supplier's channels. The list rounds (10万+= at least 100,000) and uses the generic unit 件; offer pages give the exact count.bookedCountis 1688's order counter for the offer as its search returns it (成交笔数). 1688 does not print it on the offer page, so use it as a relative popularity signal.supplierRepeatBuyerRateis 回头率 — the share of the supplier's buyers who ordered again within 3 months. Whole percent in the list, two decimals on offer pages.
What you pay
Pay per offer (one dataset row = one offer). Store tier discounts apply automatically — higher tiers pay less, down to a floor:
| Tier | FREE | BRONZE | SILVER | GOLD | PLATINUM | DIAMOND |
|---|---|---|---|---|---|---|
| Per 1,000 offers | $3.50 | $3.10 | $2.70 | $2.30 | $2.30 | $2.30 |
Proxies (Chinese residential addresses), offer pages and retries are included: the price is per saved offer, not per request.
| Pull | Rows | Free plan ($3.50/1k) | Gold and above ($2.30/1k) |
|---|---|---|---|
| Sample | 1,000 | $3.50 | $2.30 |
| Category sweep | 10,000 | $35.00 | $23.00 |
| Large catalogue | 100,000 | $350.00 | $230.00 |
Offer pages do not change the price per row — they only take longer.
Maximum cost per run
Every pay-per-result run carries a maximum cost per run — the one you set in the run options, or the platform's default. The Actor converts it into a number of offers at the current price before it starts, trims every batch so it never writes more than the cap covers, and stops cleanly when it is reached, with the status message "Saved N offers — this run's maximum cost ($X) covers N results at the current price" and stoppedBy: "MAX_COST" in the SUMMARY record. It never spends more than the cap. To get more rows, raise the cap and run again; to sample cheaply, lower it.
Integrations
- Google Sheets — the Export to Google Sheets integration, or
IMPORTDATA()on the dataset's CSV link. - Make, Zapier, n8n — the Apify modules Run an Actor (with any JSON from the Cookbook) and Get dataset items; map
offerId,price,priceTiers,supplierCompanyNameinto your scenario. - Airtable — sync dataset items into a base keyed by
offerId; a second table keyed bysupplierMemberIdmakes a supplier CRM. - Webhooks — on Run succeeded, post the run to your endpoint and fetch
/datasets/<id>/items. - Schedules — run a supplier's member ID or an offer list daily or weekly to track new listings and price moves.
- AI agents and MCP — callable from Apify's MCP server and agent frameworks.
- Warehouses — load the JSON/CSV into BigQuery, Snowflake, Postgres or DuckDB; upsert on
offerId(stable across runs), join suppliers onsupplierMemberId.
Performance tips
- Start with
maxItems: 200on a new category to see its shape before a big pull. - Several keywords in one run beat many small runs: sessions and pacing are shared.
- Use the price range and province / city filters instead of filtering afterwards — they shrink the result set 1688 sends, and the bill.
- For deep pulls of one keyword, keep Go past 1688's ~2,000-offer window on and set
maxItemsto what you need; price bands are read only as far as needed. - Offer pages add about one second per offer; pull broadly without them, then re-run the winners through Offer URLs or IDs with details.
maxConcurrency6 is the measured sweet spot; higher values reach 1688's slider wall sooner and gain little.- Promoted slots repeat across pages; plan for ~45–55 new offers per 60-offer page.
Troubleshooting: every status message explained
| Status message (or SUMMARY note) | What it means | What to do |
|---|---|---|
Saved N/M offers · X search pages · Y offer pages · Z s | Progress. | — |
Done: N offers saved from X search page(s) — reached Max offers (M). | Finished at your limit. | Raise Max offers for more. |
Done: N offers saved from X search page(s). | Every search was read to its end (1688's window, or fewer results). | Add keywords or keep price bands on for more. |
Done: N offers with offer-page details saved … | The same, with offer pages. | — |
Partly done: … — stopped at the run timeout — raise the timeout for more | The run's time limit came first; everything collected is saved. | Raise the run timeout (default 3,600 s). |
Partly done: … — 1688 kept showing its slider wall for 4 minutes | 1688 refused every Chinese address for 4 minutes; collected rows are saved. | Run again a little later; lower Parallel requests. |
Partly done: … — N search page(s) could not be read | Some pages failed after retries; the rest is saved. | Usually transient; re-run the same input. |
Partly done: … — N search(es) not reached | Time or budget ran out before some searches started. | Fewer keywords per run, or more time. |
… — N offer page(s) unreadable (rows kept without details) | Those rows have detailsFetched: false. | Re-run their IDs through Offer URLs or IDs. |
… — reached the maximum cost per run ($X) / Saved N offers — this run's maximum cost ($X) covers N results … | The spending cap you (or the platform) set was reached; nothing beyond it was charged. | Raise Maximum cost per run. |
1688 answered every request but nothing matched … Try broader keywords (Chinese works best) or wider filters. | Genuine empty result (run succeeds). | Check the keyword, filters and province spelling. |
No offers saved: N search page(s) could not be read (…). This is an access failure, not an empty result. | Run fails: pages could not be read. | Try again; if it repeats, contact us. |
No offers saved: 1688 showed its slider wall / login wall to every address tried … | Run fails (BLOCKED): 1688 refused every address. | Try again in a few minutes. |
No offers saved: 1688 could not be reached (…). | Run fails: network-level failure. | Try again. |
No offers saved: none of the N offer page(s) could be read (…). | Offer-only run where no page could be read. | Check the IDs; try again. |
Nothing to scrape: add at least one keyword, 1688 search URL, supplier shop or offer URL / id. | Run fails (INVALID_INPUT): the input was empty or only had links that are not 1688 offers, searches or shops. | Fix the input. |
SUMMARY note Skipped "…": not a 1688 offer, search or shop URL. | A pasted line was not recognised. | Use offer, search or shop links, offer IDs or b2b- member IDs. |
SUMMARY note Supplier …: shop page not readable (…) | The shop link could not be resolved to a member ID. | Paste the supplier's member ID (supplierMemberId from any of its offers). |
SUMMARY note "…": 1688 answered "…" | 1688 rejected that search (for example a prohibited word). | Change the keyword. |
SUMMARY note Resumed after a platform restart: N offer(s) already saved … | The platform moved the run; nothing was written or charged twice. | Nothing. |
Every run also writes a SUMMARY record to its key-value store: outcome (COMPLETED, PARTIAL, EMPTY_RESULT, BLOCKED, FETCH_FAILED, INVALID_INPUT), rows, pages read and failed, duplicates skipped, per-search counts and price bands, and network counters.
Honest limits
- ~2,040 offers per search. That is 1688's window, not the Actor's; price bands go past it, but within a single band 1688 still serves ~2,040.
- Repeats between pages. Promoted slots (and some regular offers) appear on more than one page of the same search; the Actor keeps the first copy, so a 60-offer page yields ~45–55 new offers (measured 22 % repeats with relevance order, 17 % with price order on 1,000-offer pulls).
- Price filters are 1688's. 1688 decides which offers fall in a price range; a few rows can show a list price just outside it (measured: 1 of 6 rows in a ¥50–60 sample showed ¥65).
- MOQ and tiers in the list exist only for quantity-priced offers (about half); offer pages fill the rest.
- List figures can lag the offer page (sales, 回头率): in the hand check two list sales lines were one step below the live page (已售200+ vs 307 sold). Offer pages are read live.
- Supplier location in the list is empty for some promoted slots (about one row in five in our runs); offer pages give the ship-from city.
- No contact phone numbers or e-mail addresses — search results and offer pages do not carry them, and this Actor does not log in. You get the shop link and the supplier's login to reach them on 1688.
- No buyer reviews per offer — 1688's offer page shows the supplier's review block; it is exported as such (
supplierReview…). - Chinese text stays Chinese. Titles, attributes and units are 1688's own words; 1688 publishes no English translation for them.
- Logged-in prices (会员价, 分销价 for members) are not shown to anonymous visitors and are not in the data.
Comparison: 1688 open platform, manual copying and this Actor
| 1688 open platform API (开放平台) | Copying by hand | This Actor | |
|---|---|---|---|
| Access | Business registration, appkey, approval per API | A browser and patience | An Apify account |
| Search across all suppliers | Limited to approved partner APIs | Yes, one page at a time | Yes, 60 offers per call, tens of thousands per run |
| Price tiers, MOQ, sales | Depends on the API granted | Visible | Every row |
| Supplier company, location, tenure, scores | Partly | Visible, scattered | Every row |
| SKUs, stock, attributes | Per-offer APIs | Visible per page | With offer pages on |
| Output | JSON for developers | Spreadsheet you type | JSON, CSV, Excel, API, integrations |
| Typical time for 1,000 offers | After an application is approved | Hours of copying | About a minute (measured 45–61 s) |
FAQ
What is a 1688 scraper?
A tool that reads offers from 1688.com — Alibaba's Chinese wholesale marketplace — and saves them as structured data (price, MOQ, supplier, location …) instead of web pages.
How do I scrape 1688 without an API key?
Run this Actor with a keyword. It reads 1688's public search and offer data; you need no 1688 account, appkey or open-platform approval.
Is this a 1688 API alternative?
Yes for search, supplier catalogues and offer pages: it returns the same data 1688's own pages show, as JSON or CSV, without applying for the official API.
Can I search 1688 in English?
Yes, English keywords and model numbers work, but 1688 is Chinese-language: Chinese keywords return far more and better-matched offers. See the Keyword cheat-sheet.
How many products can I get from 1688?
About 2,040 per search; with price bands (on by default) tens of thousands per keyword, and more with keyword lists. Measured: 12,000 unique offers from 3 keywords in 222 seconds.
Why does 1688 show "2000" results?
1688 caps the reported count at 2,000 and serves 34 pages of 60. The Actor's price bands go past that.
Does it get the MOQ (起批量)?
Yes — for quantity-priced offers from the list, and for every offer from the offer page (minOrderQuantity).
Does it get the price tiers (价格区间)?
Yes, priceTiers with quantity ranges and prices, exactly as 1688 lists them.
Does it get the supplier's company name?
Yes, the registered company name (supplierCompanyName), plus login, member ID, shop link, province, city and 诚信通 years.
Can I get supplier phone numbers?
No. Search results and offer pages do not carry phone numbers or e-mail addresses, and this Actor does not log in. You get the shop link and login to contact the supplier on 1688.
Can I scrape a whole 1688 shop?
Yes — paste the shop link (https://<shop>.1688.com) or the member ID (b2b-…) under Supplier shops.
Can I paste a 1688 search URL?
Yes, under 1688 search URLs — including GBK-encoded links like keywords=%CA%D6%BB%FA. The link's sort and filters are kept.
Does it handle GBK encoding?
Yes. Legacy 1688 links are GBK; the Actor decodes them to proper Chinese, and all output is UTF-8.
Does it include sponsored (P4P) listings?
Yes, they are real offers; isAd and adType flag them so you can drop them.
Will I get duplicates?
No. Every offer is de-duplicated by offerId within the run (0 duplicates in 12,000).
What is the difference between soldCount and bookedCount?
soldCount is units sold through the offer (已售); bookedCount is 1688's order counter from search. soldCountAllChannels is 全网销量 across all channels.
Why is soldCount a round number?
In the list 1688 prints rounded lower bounds (10万+). Turn on offer pages for exact counts (soldCountIsLowerBound: false).
Does it get product images and videos?
Yes: imageUrl, imageUrls (full size), and with offer pages the main gallery, videoUrl and videoCoverUrl.
Does it get product attributes and SKUs?
With Read every offer page on: attributes, skuProps and skus with price and stock.
Can I export 1688 data to Excel or CSV?
Yes — Excel, CSV, JSON, XML and HTML from the Output tab or the API.
How fast is it?
50 offers in ~9 s, 1,000 in ~1 minute, 12,000 in under 4 minutes; offer pages ~1.5 per second.
How much does it cost?
$3.50 per 1,000 offers on the Free plan, down to $2.30 on higher tiers. Proxies included.
Do I need proxies?
No setup needed. 1688 answers only Chinese residential addresses, and the Actor uses Apify's automatically.
Why did my run return fewer offers than Max offers?
The searches ran out (fewer matching offers, or price bands off), the run hit its time limit, or the maximum cost per run was reached — the status message says which.
Is the data current?
Search data comes from 1688's live search index, which can trail the offer pages slightly; offer pages are read live at run time.
Can I monitor 1688 prices over time?
Yes — schedule a run on your offer IDs or a supplier's member ID and compare priceTiers, stock and soldCount between runs.
Can AI agents use this 1688 scraper?
Yes, through the Apify API or MCP server; rows are flat JSON that agents read easily.
1688数据怎么导出到Excel?(How do I export 1688 data to Excel?)
在 Actor 中输入关键词(例如 手机壳),运行后在 Output 中选择 Excel 或 CSV 导出即可;无需登录1688。
1688商品可以按省份或城市筛选吗?
可以,在 Supplier province / city 中填写 广东、浙江、东莞、义乌 等中文名称。
I need a field or a filter that is missing. Can you add it?
Probably — write to us through the Issues tab with an example offer.
Glossary of 1688 terms
| Term | Meaning |
|---|---|
| 1688 / 阿里巴巴1688 | Alibaba's domestic Chinese B2B wholesale marketplace (1688.com). |
| 起批量 / 起订量 | Minimum order quantity (MOQ) → minOrderQuantity. |
| 价格区间 | Quantity price tiers → priceTiers. |
| 已售 | Units sold through this offer → soldCount. |
| 全网销量 | Units sold across all channels → soldCountAllChannels. |
| 成交笔数 | Number of orders → bookedCount. |
| 回头率 | Repeat-buyer rate over 3 months → supplierRepeatBuyerRate. |
| 诚信通 (TrustPass) | 1688's paid verified-seller membership; years → supplierTrustPassYears. |
| 实力商家 | "Power merchant", a higher 1688 seller tier → supplierIsPowerMerchant. |
| 超级工厂 / 源头旗舰 | Factory badges shown in search → supplierBadge. |
| 深度验厂 / 深度验商 | On-site factory / business inspection by 1688 → factoryInspected / businessInspected. |
| 生产加工 / 经销批发 | Manufacturer / wholesaler (经营模式, business model) → supplierBusinessModel. |
| 一件代发 | Dropshipping (one-piece fulfilment). |
| 先采后付 | Buy now, pay later for business buyers. |
| 退货包运费 | Return shipping covered. |
| 48小时发货 / 晚发必赔 | Dispatch within 48 hours / compensation if dispatched late. |
| 旺铺 / 店铺 | Supplier shop → supplierShopUrl. |
| 旺旺 / loginId | Supplier login (also the chat handle) → supplierLoginId. |
| P4P / 直通车 | Pay-for-performance promoted listing → isAd, adType. |
| 跨境 | Cross-border (export-oriented) goods. |
| 发货地 | Ship-from location → shipFrom. |
Is it legal to scrape 1688?
The Actor reads publicly visible offer pages and search results — the same information any visitor to 1688.com sees without logging in — and it does not bypass logins or read anything behind an account. Whether and how you may use the data depends on your purpose and jurisdiction. Supplier records contain company names and seller logins; where they identify individuals (for example sole proprietors), you are responsible for handling them lawfully under China's Personal Information Protection Law (PIPL), the EU GDPR or other laws that apply to you, and for respecting 1688's terms. Do not use the data for spam or harassment. If in doubt, ask a lawyer.
Changelog
- 1.0 (October 2026) — First release: keyword search with 1688's sort and filters, 1688 search links (GBK and UTF-8), supplier catalogues by shop link or member ID, offers by link or ID, optional offer pages (attributes, SKUs, stock, shipping, trust flags, supplier reviews), automatic price bands past 1688's ~2,040-offer window, fair sharing of Max offers between searches, restart-safe runs, clean stop at the maximum cost per run.
Support
Questions, a field you need, or an offer that looks wrong? Open an issue on the Actor's Issues tab with the run link — we reply within 24 hours.