1688 Scraper | Products, Reviews, Details, Wholesale Prices
Pricing
from $2.80 / 1,000 results
1688 Scraper | Products, Reviews, Details, Wholesale Prices
Scrape 1688.com, Alibaba's Chinese wholesale marketplace, by keyword (English or Chinese) or offer ID. Get tiered pricing, MOQ, specs, color and size variants, verified supplier details, after-sales guarantees and buyer reviews. Built for dropshipping, Amazon FBA and private-label sourcing.
Pricing
from $2.80 / 1,000 results
Rating
0.0
(0)
Developer
SilentFlow
Maintained by CommunityActor stats
1
Bookmarked
57
Total users
6
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
1688 Wholesale Scraper
Turn 1688.com into a clean wholesale supplier feed. Product specs, tiered wholesale pricing, every available color and size, supplier trust signals and buyer reviews, structured and ready for analysis. In seconds, not hours.
How it works

Type a product keyword in English or Chinese, or paste the offer IDs you already have, and press Start. Every result comes back as one structured record: pricing tiers, variant options, supplier profile, after-sales guarantees and a buyer review summary. Export to JSON, CSV or Excel, or pull it straight into your sourcing pipeline.
Three steps, no setup:
- Search or paste IDs. Enter keywords (wireless earbuds or 蓝牙耳机) or a list of offer IDs.
- Get structured records. Each product returns pricing, variants, supplier and reviews as clean fields, not a wall of Chinese HTML.
- Export or pipe. Download as JSON, CSV, Excel, or read the dataset from the API into your own tools.
✨ Why teams choose this over other 1688 scrapers
Sourcing from 1688 by hand means copy-pasting Chinese product pages, guessing where the price actually breaks, and never knowing if a supplier is a real factory or a reseller. Running scrapers that hand back half the fields and break on the first run? Paying extra to unlock supplier and factory details other tools hide behind a toggle?
- ⭐ Buyer reviews on every product. Star rating, positive rate, and the exact words buyers use (fast shipping, great quality, responsive seller) with sample reviews and the variant each buyer bought. Most 1688 scrapers give you no reviews at all. This one reads buyer sentiment so you can spot a proven product before you contact the supplier.
- 🎨 Every color and size, reliably. The available variant options come back on every product that has them, straight from the product page. You see the full choice set (colors, sizes, models) even for listings other scrapers return half-empty.
- 🏭 Know who you are buying from. Every keyword row says whether the supplier is a manufacturer or a wholesaler, whether 1688 inspected its factory or its business, its 1688 rating out of 5 with five service scores (consultation, product, logistics, disputes, returns), its years on 1688, its badges and the share of its buyers who ordered again, next to the full product page. In a test search for iphone case, all 18 rows carried every one of these signals.
- 🔍 Filter the way a sourcing buyer does. Set a price range in yuan, a maximum MOQ, a supplier type (manufacturer, wholesaler, inspected factory, verified merchant) and a supplier city (Shenzhen, Yiwu, Guangzhou...). 1688 narrows the search on its side and every row is checked again before it is saved, so a product outside your filters never lands in your dataset. In that test, 18 of the first 50 offers were Shenzhen manufacturers at 10 yuan or less with an MOQ of 10 or less, and only those 18 were saved.
- 📈 Sales and sponsored placements, separated. Orders, total units sold, units and sales value of the last 30 days, and a flag on paid placements, so you can rank by real demand and skip the ads.
- 💰 The real price breaks on every product. The tiers that matter (10 units at one price, 1000 at another) come back as structured steps, so you can compare true unit cost across suppliers instead of eyeballing a headline price.
- 🛡️ Trust and demand signals built in. After-sales guarantees (quality guarantee, breakage and late-shipment compensation), buyer protections, monthly sales and 30-day sales value, so you can vet a supplier and gauge real demand in one row.
- 📋 Full product specs. Chip type, material, function, model and the rest, as clean name and value pairs, not buried in a description blob.
- 🖼️ Full image gallery and video. Every product image plus the product video when the supplier posts one, not just a single thumbnail.
- ⚡ Fast by default, deep on demand. Product, pricing, variants, reviews and supplier come from a single fast pass. Turn on the per-variant matrix (each color and size with its own stock and price) only when you need that depth.
- 🌏 Search in English or Chinese. Type wireless earbuds or 蓝牙耳机. Chinese keywords reach the full domestic catalog and return far more suppliers.
- 🎯 Strict result cap. Set Max results and get exactly that. No surprise overage from a scraper that ignores your limit.
🎯 What you can do with 1688 data
| Team | What they build |
|---|---|
| Sourcing | A shortlist of inspected factories in one city for a product, ranked by price break, rating and repeat-buyer rate, with supplier guarantees on each row |
| E-commerce | A landed-cost and margin model from cost, variants and shipping weight before importing a single unit |
| Dropshipping | A catalog of suppliers that sell from one unit (Max MOQ 1), with consignment support and the exact colors and sizes each offers |
| Private label | A factory comparison by years on platform, review sentiment, response rate and verification status |
| Market research | A view of wholesale price ranges and best-selling products across a category, tracked over time |
| Procurement | A weekly watch on a set of offer IDs for price, stock and minimum-order changes |
| Agencies | A supplier database refreshed on a schedule and fed to clients as clean CSV or a Google Sheet |
📥 Input parameters
| Field | Type | Description |
|---|---|---|
keywords | array | Products to search for, English or Chinese. Each keyword is searched separately and Max results applies per keyword. |
offerIds | array | Specific product IDs to scrape directly. Can be combined with keywords; offer IDs are scraped as given, without filters. |
maxResults | integer | Maximum products per keyword. Default 100. With filters on, the run reads further into the results until it has this many matching products. |
sortBy | string | relevance, bestSelling, priceAsc or priceDesc. |
minPrice / maxPrice | number | Price range in Chinese yuan (10 and 20). A product is kept when any of its prices (MOQ price, bulk tier or promotion) falls in the range. |
maxMoq | integer | Largest minimum order quantity you accept. 1 keeps suppliers that sell single units. |
supplierType | string | any (default), manufacturer, wholesaler, inspectedFactory (深度验厂) or verifiedMerchant (实商). |
supplierCity | string | One supplier city. English names of the main sourcing hubs work (Shenzhen, Guangzhou, Dongguan, Yiwu, Ningbo, Shantou, Quanzhou...); any other city in Chinese (临沂). |
includeSkuMatrix | boolean | Also return the per-variant matrix (each color and size with its own stock and price). Off by default for the fastest runs. Colors, sizes, pricing, reviews and supplier come regardless. |
Filters apply to keyword search only. 1688 applies the price range, MOQ and city on its side; paid placements it mixes into the results ignore them, so every row is checked again against all your filters before it is saved, and the supplier type is checked on each row.
📊 Output data
Each product is one record. A keyword row from a real run for iphone case (Shenzhen manufacturers, at most 10 yuan, MOQ up to 10), trimmed to two images, four specs, one guarantee and one review:
{"id": "658183485760","url": "https://detail.1688.com/offer/658183485760.html","offerId": "658183485760","title": "华为mate50pro手机壳素皮适用MATE40PRO防摔外壳新款高端30保护套","detailUrl": "https://detail.1688.com/offer/658183485760.html","categoryId": "1042207","specs": [{ "name": "适用机型", "value": "华为" },{ "name": "材质", "value": "仿皮PU素皮" },{ "name": "工艺", "value": "磨砂" },{ "name": "款式", "value": "后盖款" }],"skuProperties": [{ "name": "颜色", "values": ["青色", "橙色", "黑色", "绿色", "紫色"] }],"customization": false,"supportsMixedOrders": true,"dropship": { "enabled": true, "consignTiers": [{ "price": 10, "beginAmount": 2, "endAmount": 0 }] },"services": [{ "name": "晚发必赔", "description": "若商家未按订单约定的时间发货,您可以在订单详情申请赔付" }],"buyerProtections": ["7天包换", "48小时发货", "诚e赊"],"freightInsurance": false,"supplier": {"companyName": "深圳市宝安区环金马电子厂","memberId": "b2b-221172181955265193","userId": "2211721819552","loginId": "环金马科技加工厂","location": "广东深圳市","sellerType": "生产加工","isVerified": true,"certifications": ["实商"],"winportUrl": "https://winport.m.1688.com/page/index.html?memberId=b2b-221172181955265193","repeatRate": "35%","responseRate": "92%"},"businessType": "manufacturer","factoryInspected": false,"businessInspected": true,"supplierRating": 4,"serviceScores": { "consultation": 3, "product": 2.67, "logistics": 3.86, "disputes": 4, "returns": 3.33 },"sellerYears": 6,"supplierBadges": ["实商", "深度验商"],"repurchaseRate": "35%","productRepurchaseRate": "66%","price": { "min": 8, "max": 10, "currency": "CNY" },"promoPrice": null,"unit": "个","quantityPrices": [{ "price": 10, "beginAmount": 2, "endAmount": 499 },{ "price": 9, "beginAmount": 500, "endAmount": 9999 },{ "price": 8, "beginAmount": 10000, "endAmount": 0 }],"minOrderQuantity": 2,"stock": 109420,"soldCount": 895,"orderCount": 668,"unitsSold": 24864,"monthlySales": 8,"gmv30Days": 90,"unitWeight": 0.055,"reviews": {"total": 600,"rating": 5,"goodRate": 100,"items": [{ "content": "物流很快,手机壳质量很好,服务很好", "date": "2023-04-22", "sku": "颜色:青色; 适用型号:Mate50精孔" }]},"province": "广东","city": "深圳市","shipping": { "location": "广东深圳", "deliveryDays": 2, "freeShipping": false },"images": ["https://cbu01.alicdn.com/img/ibank/O1CN0196KGN82KQs13CuV7N_!!2211721819552-0-cib.jpg","https://cbu01.alicdn.com/img/ibank/O1CN01cBz3Qb2KQsBPLs7jk_!!2211721819552-0-cib.jpg"],"videoUrl": "https://cloud.video.taobao.com/play/u/2211721819552/p/2/e/6/t/1/386741737147.mp4","isSponsored": false,"isCrossBorderTrade": false,"sourceKeyword": "iphone case","sourceType": "search","scrapedAt": "2026-11-06T02:21:27Z"}
price is the regular price range from the price tiers. When the listing shows a promotion below it (限时价), the promotional price is in promoPrice. A row scraped from offerIds has sourceType offerId and carries the product page fields; the supplier signals that only the search listing shows (business type, inspections, rating, service scores, years, badges, repurchase rates, orders, units sold, 30-day sales, sponsored flag) are null there, and province and city come from the shipping origin.
When you turn on includeSkuMatrix, products that expose it also carry a skuVariants array, one row per color and size:
{"skuVariants": [{ "skuId": "6130776786823", "specId": "f561c4f7...", "specs": "Black / M", "stock": 7890, "saleCount": 12 },{ "skuId": "6130776786824", "specId": "a63c985e...", "specs": "White / L", "stock": 7883, "saleCount": 4 }]}
🗂️ Data fields
| Category | Fields |
|---|---|
| Identity | id, url, offerId, title, detailUrl, categoryId, sourceType, sourceKeyword, scrapedAt |
| Media | images (full gallery), videoUrl |
| Pricing | price (min, max, currency), promoPrice, unit, quantityPrices (tiered: price, beginAmount, endAmount) |
| Variants | skuProperties (variant options: name plus every value, colors and sizes), skuVariants (per-variant skuId, specId, specs, stock, saleCount, opt-in), minOrderQuantity, stock, unitWeight |
| Sales | soldCount (units sold as the product page shows it), unitsSold (total units sold), orderCount (orders), monthlySales (units sold in the last 30 days), gmv30Days (sales value of the last 30 days in yuan, a floor: 1688 shows ranges such as 1万+) |
| Trade | dropship (enabled, consignment price), customization, supportsMixedOrders (混批), isCrossBorderTrade, shipping (location, postFee, deliveryDays, freeShipping) |
| Trust | services (after-sales guarantees, each with name and a plain-language description), buyerProtections, freightInsurance, isSponsored (paid placement) |
| Supplier signals | businessType (manufacturer, wholesaler, agent, serviceProvider), factoryInspected (深度验厂), businessInspected (深度验商), supplierRating (0 to 5), serviceScores (consultation, product, logistics, disputes, returns, each 0 to 5), sellerYears, supplierBadges, repurchaseRate (the shop's repeat buyers), productRepurchaseRate (this product's), province, city |
| Supplier | companyName, legalCompanyName, memberId, userId, loginId, sellerType, isVerified, repeatRate, responseRate, certifications, serviceScores, winportUrl, location |
| Reviews | total, rating, goodRate, withImagesCount, impressionTags (sentiment keyword plus count), items (per review: rating, content, date, sku, images) |
A keyword row carries 47 top-level fields; in the test run above, 41 of them were filled on most rows. In the full row behind the example, the supplier object carries 13 populated fields and serviceScores 5; reviews has up to 6 top-level fields plus a sample of individual reviews with 5 fields each, and price up to 4. A value 1688 does not show is null, never an empty string. id, offerId, url and detailUrl are stable and permanent; image URLs stay valid for a couple of weeks; the product video URL is a CDN link that can expire sooner. Timestamps are ISO 8601 (scrapedAt).
🚀 Examples
Find wireless earbud suppliers
{ "keywords": ["wireless earbuds"], "maxResults": 100 }
Search the domestic catalog in Chinese
{ "keywords": ["蓝牙耳机", "充电宝"], "maxResults": 200 }
Find the cheapest suppliers first
{ "keywords": ["phone case"], "sortBy": "priceAsc", "maxResults": 50 }
Pull the best-selling products in a category
{ "keywords": ["LED strip lights"], "sortBy": "bestSelling", "maxResults": 100 }
Get per-variant stock and price for apparel
{ "keywords": ["卫衣 女"], "includeSkuMatrix": true, "maxResults": 60 }
Find inspected factories in Shenzhen
{ "keywords": ["蓝牙耳机"], "supplierType": "inspectedFactory", "supplierCity": "Shenzhen", "maxResults": 50 }
Source samples and dropshipping stock from single units
{ "keywords": ["phone case"], "maxMoq": 1, "maxPrice": 5, "sortBy": "bestSelling", "maxResults": 100 }
Shortlist manufacturers in a price band
{ "keywords": ["iphone case"], "supplierType": "manufacturer", "minPrice": 2, "maxPrice": 10, "maxMoq": 10, "maxResults": 100 }
Audit specific products you already source
{ "offerIds": ["1063153988432", "738026063940"] }
🤖 Copy to your AI assistant
Paste this block into Claude, ChatGPT or Cursor to give it full context about this scraper:
You have access to the 1688 Wholesale Scraper on Apify: silentflow/1688-scraperInput schema:- keywords (array of strings): products to search, English or Chinese- offerIds (array of strings): specific product IDs, scraped as given; can be combined with keywords- maxResults (integer, default 100): products per keyword- sortBy (string): relevance | bestSelling | priceAsc | priceDesc- minPrice, maxPrice (number, CNY): keep products with any price in the range (keyword search only)- maxMoq (integer): keep products whose minimum order is at most this (keyword search only)- supplierType (string, default any): any | manufacturer | wholesaler | inspectedFactory | verifiedMerchant- supplierCity (string): one city, English hub name (Shenzhen, Yiwu...) or Chinese (深圳)- includeSkuMatrix (boolean, default false): also return per-variant stock and priceOutput per product (null when 1688 does not show a value):- id, url, offerId, title, detailUrl, categoryId, images[], videoUrl- price { min, max, currency }, promoPrice, unit- quantityPrices[] { price, beginAmount, endAmount } (tiered wholesale pricing)- skuProperties[] { name, values[] } (variant options: colors, sizes)- skuVariants[] { skuId, specId, specs, stock, saleCount } (per-variant, opt-in)- minOrderQuantity, stock, soldCount, unitsSold, orderCount, monthlySales, gmv30Days, unitWeight- services[] { name, description }, buyerProtections[], freightInsurance, supportsMixedOrders, isSponsored- dropship { enabled, consignTiers[] }, customization, isCrossBorderTrade, shipping { location, postFee, deliveryDays, freeShipping }- businessType (manufacturer | wholesaler | agent | serviceProvider), factoryInspected, businessInspected- supplierRating (0-5), serviceScores { consultation, product, logistics, disputes, returns }, sellerYears, supplierBadges[]- repurchaseRate (shop), productRepurchaseRate (this product), province, city- supplier { companyName, memberId, userId, loginId, sellerType, isVerified, repeatRate, responseRate, certifications[], serviceScores, winportUrl, location }- reviews { total, rating, goodRate, withImagesCount, impressionTags[] { name, count }, items[] { rating, content, date, sku, images } }- sourceType (search | offerId), sourceKeyword, scrapedAtNo login, no API key. Proxies included. Use apify-client for Python or JS.
💻 Integrations
Build a supplier shortlist in Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("silentflow/1688-scraper").call(run_input={"keywords": ["wireless earbuds"],"supplierType": "manufacturer","maxMoq": 50,"sortBy": "bestSelling","maxResults": 100,})suppliers = []for item in client.dataset(run["defaultDatasetId"]).iterate_items():if item.get("isSponsored"):continue # keep 1688's organic ranking onlys = item.get("supplier") or {}r = item.get("reviews") or {}suppliers.append({"title": item["title"],"unit_price": item["price"]["min"],"moq": item["minOrderQuantity"],"company": s.get("companyName"),"factory_inspected": item.get("factoryInspected"),"rating": item.get("supplierRating"),"years": item.get("sellerYears"),"repeat_rate": item.get("repurchaseRate"),"good_rate": r.get("goodRate"),})suppliers.sort(key=lambda x: (not x["factory_inspected"], -(x["rating"] or 0), x["unit_price"]))for s in suppliers[:10]:print(s)
Monitor price and stock changes in Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('silentflow/1688-scraper').call({offerIds: ['1063153988432', '738026063940'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const p of items) {console.log(`${p.offerId}: ${p.price.min} CNY, stock ${p.stock}, MOQ ${p.minOrderQuantity}`);}
Export a category to CSV
import csvfrom apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("silentflow/1688-scraper").call(run_input={"keywords": ["phone case"], "maxResults": 200})with open("suppliers.csv", "w", newline="") as f:w = csv.writer(f)w.writerow(["offerId", "title", "minPrice", "moq", "company", "monthlySales"])for it in client.dataset(run["defaultDatasetId"]).iterate_items():s = it.get("supplier") or {}w.writerow([it["offerId"], it["title"], it["price"]["min"], it["minOrderQuantity"], s.get("companyName"), it.get("monthlySales")])
📈 Performance
| Metric | Value |
|---|---|
| Speed | Fast by default: product, pricing, variant options, reviews and supplier from a single pass |
| Depth on demand | Turn on includeSkuMatrix for per-variant stock and price when you need it |
| Always included | Tiered pricing, specs, variant options, gallery, shipping, supplier and review summary on every product |
| Search depth | Up to 2,000 products per keyword |
| Filters | Price range, maximum MOQ, supplier type and supplier city, checked on every row before it is saved |
| Languages | English and Chinese keywords |
| Freshness | Live, fetched on demand at run time, no caching |
💾 Data export
Every run writes to a dataset you can export as JSON, CSV, Excel, HTML or RSS from the Apify console, or pull programmatically:
https://api.apify.com/v2/datasets/{DATASET_ID}/items?format=csv&token=YOUR_TOKEN
💡 Tips for best results
- Use Chinese keywords for the widest selection. 1688 is a domestic Chinese marketplace, so 蓝牙耳机 returns far more suppliers than its English equivalent.
- Sort by
bestSellingto surface proven products with real order volume before you contact a supplier. - Read
quantityPricesto find the order quantity where the unit price drops. The break point is often lower than the listing headline suggests. - Use
reviews.goodRateand the review samples to filter for products buyers actually like, thenmonthlySalesto confirm real demand. - Leave
includeSkuMatrixoff for fast category scans, and turn it on only for the shortlist where you need each color and size with its own stock and price. - Find factories, not resellers: set
supplierTypetoinspectedFactory, then sort your sheet bysupplierRatingandsellerYears. - Use
supplierCityto go straight to a sourcing cluster: Shenzhen for electronics, Yiwu for small commodities, Guangzhou for apparel and beauty, Dongguan for hardware, Shantou for toys. - Set
maxMoqto1for samples and dropshipping, and drop rows whereisSponsoredis true to see 1688's organic ranking.
❓ FAQ
What does the scraper return? A structured record per product: title, images, video, tiered pricing, variant options, minimum order quantity, stock, supplier profile, after-sales guarantees, buyer protections, demand signals and a buyer review summary.
What is 1688? 1688.com is Alibaba's domestic Chinese B2B wholesale marketplace, the factory-direct source that sits upstream of Alibaba.com and AliExpress. It is where most cross-border sellers buy at wholesale prices.
Can I search in English? Yes. English and Chinese keywords both work. Chinese keywords reach the full domestic catalog and return more results.
Do I need a 1688 account? No. The scraper reads publicly available product data. No login, no API key.
How do I scrape a specific product?
Put its offer ID (the number in the product URL) in the offerIds field. You can combine offer IDs and keywords in one run; offer IDs are scraped as given, without the filters.
Can I keep only manufacturers, or only inspected factories?
Yes. supplierType keeps one kind of supplier: manufacturer or wholesaler (the business model the supplier declares to 1688), inspectedFactory (1688 inspected the factory on site, 深度验厂) or verifiedMerchant (1688's 实商 badge). Every keyword row also carries businessType, factoryInspected and businessInspected, so you can filter further in your sheet.
Are sponsored listings included?
Yes, as 1688 shows them, and each row says so in isSponsored. 1688 mixes paid placements into its results and they ignore the price, MOQ and city filters, so they are checked against your filters like every other row before they are saved.
Are rows outside my filters saved? No. A product whose price, MOQ, supplier type or city falls outside your filters is left out before it is saved, including when its full product page turns out to differ from the search listing. The run log says how many were left out.
Does it return review text? Yes. Each review summary carries the total count, star rating, positive rate and top sentiment keywords, plus a sample of individual reviews with their text, star level, purchase date and the variant the buyer bought.
Do I get every color and size?
The variant options (available colors, sizes and models) come on every product that lists them. For the deeper matrix with per-variant stock and price, turn on includeSkuMatrix; it is added when the product page exposes it.
How do the sort and filter options combine?
sortBy and the filters apply to each keyword search, and maxResults caps each keyword separately. For example, keywords: ["phone case"] with sortBy: "bestSelling", maxMoq: 1 and maxResults: 50 returns the 50 best-selling phone case offers you can order one at a time. With strict filters a keyword can run out of matching products before maxResults; the run then moves on and says so in the log.
What is the difference between soldCount and unitsSold?
soldCount is the sales figure the product page shows; unitsSold is the total units sold that the search listing reports, often higher for older offers. orderCount counts orders, and monthlySales the units sold in the last 30 days.
How many products can I get per keyword? Up to 2,000 per keyword, capped by your Max results setting.
Is the price in dollars?
Prices are in Chinese yuan (CNY), the currency 1688 lists in. The price object includes the currency so you can convert as needed.
Are the image and video links permanent?
offerId and detailUrl are stable. Image URLs stay valid for a couple of weeks. The product video is a CDN link that can expire sooner, so download it if you need to keep it.
⚖️ Legal
This Actor extracts publicly available data from 1688.com. It does not bypass any login, paywall or CAPTCHA. Users are responsible for complying with 1688's terms of service and applicable data protection laws (GDPR, CCPA, and PIPL where relevant). When the output contains personal data, such as supplier contact names or reviewer nicknames, users must handle it accordingly. The data returned is informational; verify accuracy for regulated use cases.
🔗 Related scrapers
Building a China sourcing pipeline? See the full set of marketplace and supplier scrapers on our profile: silentflow on Apify.
📬 Support
Need something this scraper does not do yet? We ship features fast.
- Feature requests go straight to our backlog
- Enterprise needs? We do custom integrations and high-volume plans
- Pricing questions? Check the Monetization tab on the actor page
Response time: usually under 24 hours.
Check out our other scrapers: silentflow on Apify