1688 Wholesale Scraper - Prices, MOQ & Suppliers
Pricing
from $0.34 / 1,000 products
1688 Wholesale Scraper - Prices, MOQ & Suppliers
Scrape 1688.com wholesale offers by search term, in Chinese or English. Each row has the unit price in yuan, MOQ, the quantity price ladder, units sold, and the supplier's name, city, years on 1688, factory flag and rating. No account needed. $0.35 per 1,000 products.
Pricing
from $0.34 / 1,000 products
Rating
5.0
(1)
Developer
Dami's Studio
Maintained by CommunityActor stats
1
Bookmarked
42
Total users
13
Monthly active users
5 days ago
Last modified
Categories
Share
Search 1688.com wholesale offers in Chinese or English and get one row per offer: the unit price in yuan, the minimum order, the quantity price ladder, units sold, the repeat-purchase rate, and the supplier behind it with their city, years on 1688, factory flag and five-part rating. No account, no cookies.
Two things to know before you run it. Search in Chinese if you can: 手机壳 matches millions of
offers where "phone case" matches a few thousand, and both go through unchanged. And the ladder is
not on every offer. Plenty of suppliers list one flat price at their minimum order, and then
priceTiers comes back as an empty array.
| Input | Search terms in Chinese or English, or 1688 search URLs |
| Output | One row per offer: unit price, MOQ, the quantity price ladder, units sold, repeat-purchase rate, supplier name, city, years on 1688, factory flag and rating |
| Ceiling | 1,000 products per run |
| Account needed | None |
| Price | $0.35 per 1,000 products on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 14,000 |
🔍 What 1688 Wholesale Scraper does
Give it search terms, or paste 1688 search pages and the keyword is read out of each link. Both work in the same run, and an offer found under two terms is returned once and billed once.
The price ladder is what most people come for. Where a supplier prices by volume, priceTiers
carries each band as {minQuantity, maxQuantity, quantityLabel, price}. In the row below that means
1.10 yuan a case up to 4,999, then 1.05, then 1.00 from 10,000, without opening the listing.
Everything about the supplier rides on the offer row: their storefront link, supplierYears on
1688, isFactory worked out from the business type 1688 publishes, and ratingBreakdown split into
goods, logistics, consultation, dispute and after-sales rather than one number.
1688 mixes promoted offers into its results. They are labelled, not removed: isAd is true on
them, so you can drop or keep them as you like. Set a price band and every row you get is inside it.
1688 pins some promoted offers to the top of the first page whatever their price; those are left out
and not billed.
📋 What data you get from each 1688 offer
| What you get | Field |
|---|---|
| Offer id, title and link | offerId, productId, title, productUrl |
| Unit price at the smallest order, in yuan | price, currency |
| The quantity price ladder and its two ends | priceTiers, priceMin, priceMax |
| Minimum order and the unit 1688 counts in | minOrderQuantity, unit |
| Units sold and the share of buyers who came back | salesCount, repeatPurchaseRate |
| The supplier's composite score and its five parts | rating, ratingBreakdown |
| Who the supplier is and where they are | supplierName, supplierUrl, supplierId, supplierProvince, supplierCity, supplierYears |
| Factory or trader | businessType, isFactory |
| Buyer guarantees on the listing | buyerProtections |
| Main image | imageUrl |
| Whether 1688 promoted it, and where it ranked | isAd, searchKeyword, page, position |
▶️ How to scrape 1688 wholesale prices
- Open 1688 Wholesale Scraper and click Try for free.
- Put your terms into Search terms, one per line, in Chinese where you can.
- Set Maximum products. 20 is enough to see what the rows look like.
- Open Filters for a unit-price band, and set Sort results by if price order matters more than 1688's own ranking.
- Click Start, then download the dataset as JSON, CSV or Excel.
Start it with no terms and you get one labelled sample row, free. It carries a few fields real rows do not, so build on a real row rather than the sample.
💰 How much does it cost to scrape 1688 wholesale prices?
$0.35 per 1,000 products on the Free plan. Paid plans pay a little less: $0.345 on Starter, $0.34 on Scale and $0.335 on Business. On the free plan, the $5 Apify gives you each month covers about 14,000 products.
One billed row per offer delivered. The sample row and diagnostic rows are not billed, a term that finds nothing costs nothing, and the same offer found under two terms is billed once.
📥 What you give it
{"searchTerms": ["手机壳", "phone case"],"maxItems": 40,"sortBy": "priceAsc","minPrice": "5","maxPrice": "20"}
| Field | Default | What it is |
|---|---|---|
searchTerms | none | One term per line. Chinese matches far more inventory than English. |
startUrls | none | Optional. 1688 search pages pasted from the site. The keyword is read out of the link, and it works alongside the terms. |
maxItems | 40 | Hard cap on rows across all terms, 1 to 1,000. |
sortBy | relevance | relevance is 1688's own ordering. Also priceAsc and priceDesc. |
minPrice, maxPrice | none | Optional, under Filters. Unit price bounds in yuan, as plain numbers like 5, 20 or 12.5. Anything else, ¥5 or 5元 included, stops the run before it searches, and so does a minimum above the maximum. Offers whose price falls outside the band are left out and not billed. |
requestDelayMs | 1500 | Under Advanced. Milliseconds between requests, 500 to 60,000. |
proxyConfiguration | none | Optional. Leave it alone unless you want the run to go out through a network of your own. |
📤 What you get back
A real row from a run on 20 September 2026, searching 手机壳:
{"offerId": "984127698668","productId": "984127698668","title": "适用三星S26手机壳透明S26U四角气囊防摔edge全包plus保护套ultra","productUrl": "https://detail.1688.com/offer/984127698668.html","price": 1.1,"priceMin": 1,"priceMax": 1.1,"currency": "CNY","priceTiers": [{"minQuantity": 1, "maxQuantity": 4999, "quantityLabel": "1~4999", "price": 1.1},{"minQuantity": 5000, "maxQuantity": 9999, "quantityLabel": "5000~9999", "price": 1.05},{"minQuantity": 10000, "maxQuantity": null, "quantityLabel": "≥10000", "price": 1}],"minOrderQuantity": 1,"unit": "个","salesCount": 24924,"repeatPurchaseRate": "27%","rating": 5,"ratingBreakdown": {"goods": 4.67, "logistics": 3.86, "consultation": 4, "dispute": 4, "afterSales": 4},"supplierName": "深圳市福田区睿龙贸易商行","supplierUrl": "https://m.1688.com/winport/b2b-221407452382884917.html?__existtitle__=1","supplierProvince": "广东","supplierCity": "深圳市","supplierYears": 5,"supplierId": "b2b-221407452382884917","businessType": "生产加工","isFactory": true,"buyerProtections": ["48小时发货", "诚e赊"],"imageUrl": "https://cbu01.alicdn.com/img/ibank/O1CN01q4KrZ41e9HEfLP2Ej_!!2214074523828-0-cib.jpg","isAd": false,"searchKeyword": "手机壳","page": 1,"position": 10,"scrapedAt": "2026-09-20T07:01:31.878Z"}
| Field | How to read it |
|---|---|
price | The unit price at the smallest order 1688 will take, in yuan. |
priceTiers | The volume ladder, each band with its quantity range and price. The top band has maxQuantity: null. An empty array when the supplier prices flat. |
priceMin, priceMax | The ends of the ladder. Both equal price when there is no ladder. |
minOrderQuantity, unit | The MOQ and the unit 1688 counts in, like 个 for pieces. |
salesCount, repeatPurchaseRate | Units 1688 reports sold, and the share of buyers who came back, as a string like 27%. |
rating, ratingBreakdown | The supplier's composite score and its five parts. Both null when 1688 publishes no score. |
isFactory, businessType | Whether the supplier manufactures, from the business type 1688 prints. 生产加工 means they do. |
buyerProtections | The guarantees on the listing, in Chinese, exactly as printed. |
isAd | true when 1688 placed the offer as a promoted result rather than ranking it. |
🧾 Reading the output
| Row | How to spot it | Billed |
|---|---|---|
| An offer | It has an offerId and no _sample or _diagnostic key | yes |
| The sample row | _sample: true, only when no usable search term was given | no |
| A diagnostic | _diagnostic: true, ok: false and an errorCode | no |
Offer rows carry no charged flag; the sample and diagnostic rows carry charged: false. The
sample row has an offerId too, so to keep only offers, drop every row with _sample or
_diagnostic.
| Code | What it means |
|---|---|
NO_RESULTS | That term returned nothing. An English term is the usual reason, so try the Chinese one. |
BAD_INPUT | A link that is not a 1688 search page, one with no keyword to read out of it, or a price bound that is not a plain number. |
SEARCH_FAILED | That term could not be searched this run. The other terms carry on. |
NOT_SERVED | This product was not served this run. Re-run it later. Until 12 October 2026 this code was called BLOCKED. |
💡 What people use it for
- Sourcing a product: pull 200 offers, sort by
price, then readminOrderQuantityandpriceTiersfor the real cost at the volume you want. - Screening suppliers before contacting any of them, on
supplierYears,isFactory,salesCountand the five-partratingBreakdown. - Building a landed-cost model from the whole ladder rather than one headline figure.
- Mapping where a category is made, by grouping on
supplierProvinceandsupplierCity.
From a search term to a supplier worth messaging, in three runs:
- Run this on a Chinese term and keep the offers where
isFactoryistrueandpriceTiersreaches your volume. - Paste their
offerIdinto 1688 Reviews Scraper with Which reviews set to written text only, and read what buyers actually said. - Put the
supplierNameof the ones that hold up into 1688 Supplier Ratings Scraper for audits and the repeat-buyer rate.
🚧 What it does not do
- No product-page detail. No description, no full image gallery, no specs, no stock. The offer link is on every row if you need to open one.
- No reviews. The reviews scraper takes the
offerIdfrom here. priceTiersis often empty. Many suppliers publish one flat price at the MOQ. That is their listing, not a gap here.- 1,000 rows per run, and 1688 stops paginating a term well before its full inventory. Split a broad term into narrower ones.
- The band is on
priceonly, the unit price at the smallest order. An offer whose ladder dips into your band at volume but starts above it is left out. - No best-selling sort. 1688 offers one, but it returns a sales count of zero on every row, so it was left out rather than shipped broken.
- Promoted offers stay in the results, labelled with
isAd, unless a price band leaves them out. - Nothing is translated, and prices are in yuan only. Titles, business type, guarantees and units stay in Chinese.
- A big run can come back short. When 1688 slows the reads down, the run writes an uncharged diagnostic row rather than pass a gap off as complete. Only delivered offers are billed.
- It is not an official 1688 tool. Dami's Studio is independent and is not affiliated with or endorsed by 1688 or Alibaba, or by any other company named on this page.
🧭 Which 1688 scraper do you need?
| If you want | Use |
|---|---|
| 1688 offers by search term: unit price, MOQ and the quantity price ladder | This one |
| Buyer reviews on 1688 products you can link | 1688 Reviews Scraper |
| A 1688 seller's rating, five sub-scores and audits | 1688 Supplier Ratings Scraper |
| Export products, MOQ and suppliers on Alibaba.com | Alibaba.com Scraper |
| Retail products in a Taobao category | Taobao Category Products Scraper |
❓ Questions people ask
Do I need a 1688 account to scrape wholesale prices?
No. Nothing to register and no cookies to paste.
Do I have to search in Chinese?
No, but you will get far more. English terms work and return a much smaller slice of 1688's inventory.
Why is priceTiers empty on some rows?
Because that supplier publishes one price at their minimum order. priceMin and priceMax equal
price when that happens.
Can I get more than 1,000 offers?
Not in one run. Run again with narrower terms to reach different offers.
Can I watch a term for new suppliers and price moves?
Yes. offerId is stable, so comparing two runs of the same term shows who is new and whose price
moved.
Can I call it from code or connect it to an AI assistant?
Yes. The API tab has ready-made
code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect
https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/1688-wholesale-scraper. Either way the
run happens on your Apify account at the same price.
Is scraping 1688 legal?
These are public wholesale listings with no account behind them. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Send the search term or URL you used and the run ID; the
errorCode on the diagnostic row usually names the problem on its own.