1688 Wholesale Scraper - 阿里巴巴 Prices, MOQ & Suppliers avatar

1688 Wholesale Scraper - 阿里巴巴 Prices, MOQ & Suppliers

Pricing

from $0.34 / 1,000 products

Go to Apify Store
1688 Wholesale Scraper - 阿里巴巴 Prices, MOQ & Suppliers

1688 Wholesale Scraper - 阿里巴巴 Prices, MOQ & Suppliers

1688 scraper for 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

Dami's Studio

Maintained by Community

Actor stats

1

Bookmarked

49

Total users

9

Monthly active users

a day ago

Last modified

Security

Limited permissions

Share

1688 scraper for wholesale offers, searched in Chinese or English, 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. Already have offer ids? It looks those up too, off each offer's own page. 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.

InputSearch terms in Chinese or English, 1688 search URLs, or offer ids and links
OutputOne 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. An offer looked up by id also brings every image, the attribute list, stock and where it ships from
Ceiling1,000 products per run from search, plus up to 100 offer ids
Account neededNone
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. An offer looked up by id is $2.80 per 1,000 on every plan

🌏 中文说明

用中文或英文关键词搜索1688批发商品,每个商品一行:人民币单价、起订量、阶梯价、销量、复购率,以及供应商名称、所在城市、入驻年限、是否工厂和店铺评分。已有商品ID的话也可以直接查。

在searchTerms里填关键词,点Start就行,不需要账号。按商品条数收费,价格见上方表格。本工具不是1688或阿里巴巴的官方产品,与它们没有关联。

🔍 What 1688 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.

Search rows carry the supplier too: storefront link, supplierYears, isFactory from the business type 1688 publishes, and ratingBreakdown in five parts rather than one number.

1688 mixes promoted offers into its results. They are labelled with isAd, not removed. Set a price band and every row you get is inside it; promoted offers 1688 pins above the band are left out and not billed.

Offers you know go into Offer ids or links. Each comes back as its own row, read off the offer's page: price, ladder and MOQ, plus every image, the attribute list 1688 prints (material, colours, the models a case fits), the stock it takes orders for and the city it ships from.

📋 What data you get from each 1688 offer

What you getField
Offer id, title and linkofferId, productId, title, productUrl
Unit price at the smallest order, in yuanprice, currency
The quantity price ladder and its two endspriceTiers, priceMin, priceMax
Minimum order and the unit 1688 counts inminOrderQuantity, unit
Units sold and the share of buyers who came backsalesCount, repeatPurchaseRate
The supplier's composite score and its five partsrating, ratingBreakdown
Who the supplier is and where they aresupplierName, supplierUrl, supplierId, supplierProvince, supplierCity, supplierYears
Factory or traderbusinessType, isFactory
Buyer guarantees on the listingbuyerProtections
Main imageimageUrl
Whether 1688 promoted it, and where it rankedisAd, searchKeyword, page, position
Looked up by id: every image, the attributes and the categoryimages, attributes, categoryId
Looked up by id: stock, shipping origin and dispatch promiseavailableQuantity, shipsFrom, deliveryPromise
Looked up by id: the seller's 1688 login namesellerLoginId

▶️ How to scrape 1688 wholesale prices

  1. Open 1688 Scraper and click Try for free.
  2. Put your terms into Search terms, one per line, in Chinese where you can. For offers you already have, use Offer ids or links.
  3. Set Maximum products. 20 is enough to see what the rows look like.
  4. Open Filters for a unit-price band, and set Sort results by if price order matters more than 1688's own ranking.
  5. Click Start, then download the dataset as JSON, CSV or Excel.

Start it with no terms or offer ids 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.

An offer looked up by id is $2.80 per 1,000, the same on every plan, since each is read off its own page.

One billed row per offer delivered. Sample and diagnostic rows are free, a term that finds nothing costs nothing, an offer found under two terms is billed once, and an offer id that is removed or does not load costs nothing.

📥 What you give it

{
"searchTerms": ["手机壳", "phone case"],
"maxItems": 40,
"sortBy": "priceAsc",
"minPrice": "5",
"maxPrice": "20"
}
{
"offerIds": ["1073750884930", "https://detail.1688.com/offer/638263661627.html"]
}
FieldDefaultWhat it is
searchTermsnoneOne term per line. Chinese matches far more inventory than English.
startUrlsnoneOptional. 1688 search pages pasted from the site. The keyword is read out of the link, and it works alongside the terms.
offerIdsnoneOptional. Offer ids like 1073750884930, or offer links. Each is looked up on its own and billed as an offer detail. Up to 100 a run; any past 100 are named in a free row and not read.
maxItems40Hard cap on search rows across all terms, 1 to 1,000.
sortByrelevancerelevance is 1688's own ordering. Also priceAsc and priceDesc.
minPrice, maxPricenoneOptional, 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.
requestDelayMs1500Under Advanced. Milliseconds between requests, 500 to 60,000.
proxyConfigurationnoneOptional. 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"
}

And an offer looked up by id on 11 October 2026, with the attributes and images cut short:

{
"offerId": "1073750884930",
"title": "适用iPhone18promax手机壳磨砂磁吸苹果16秒变17大视窗防摔保护套",
"price": 5,
"priceMin": 4,
"priceMax": 5,
"currency": "CNY",
"priceTiers": [
{"minQuantity": 1, "maxQuantity": 199, "quantityLabel": "1~199", "price": 5},
{"minQuantity": 200, "maxQuantity": 9999, "quantityLabel": "200~9999", "price": 4.5},
{"minQuantity": 10000, "maxQuantity": null, "quantityLabel": "≥10000", "price": 4}
],
"minOrderQuantity": 1,
"unit": "个",
"salesCount": 2783,
"availableQuantity": 837131,
"attributes": {"材质": "PC", "款式": "全包款", "工艺": "磨砂", "厚度": "1.5MM"},
"images": ["https://cbu01.alicdn.com/img/ibank/O1CN01N6fy2X1KxqfMqi0nY_!!2217660181231-0-cib.jpg"],
"categoryId": 1046694,
"supplierName": "深圳市多米吉科技有限公司",
"supplierId": "b2b-22139972473023a2ba",
"sellerLoginId": "兴鑫辉电子商务有限公司",
"shipsFrom": "广东深圳",
"deliveryPromise": "承诺48小时发货·常发中通快递",
"buyerProtections": ["7天无理由退货", "晚发必赔"],
"recordType": "offerDetail",
"requestedAs": "1073750884930"
}
FieldHow to read it
priceThe unit price at the smallest order 1688 will take, in yuan.
priceTiersThe 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, priceMaxThe ends of the ladder. Both equal price when there is no ladder.
minOrderQuantity, unitThe MOQ and the unit 1688 counts in, like 个 for pieces.
salesCount, repeatPurchaseRateUnits 1688 reports sold, and the share of buyers who came back, as a string like 27%.
rating, ratingBreakdownThe supplier's composite score and its five parts. Both null when 1688 publishes no score.
isFactory, businessTypeWhether the supplier manufactures, from the business type 1688 prints. 生产加工 means they do.
isAdtrue when 1688 placed the offer as a promoted result rather than ranking it.
attributesLooked up by id: the attribute list as 1688 prints it, in Chinese, several values joined by commas.
availableQuantity, shipsFromLooked up by id: the stock the offer takes orders for, null on made-to-order listings, and the dispatch city.

🧾 Reading the output

RowHow to spot itBilled
An offer from searchIt has an offerId and no recordType, _sample or _diagnostic keyyes, as a product
An offer looked up by idrecordType: "offerDetail"yes, as an offer detail
The sample row_sample: true, only when no search term or offer id was givenno
A diagnostic_diagnostic: true, ok: false and an errorCodeno

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. A row looked up by id has no rating, supplier years or ranking fields: those come from search.

CodeWhat it means
NO_RESULTSThat term returned nothing. An English term is the usual reason, so try the Chinese one.
BAD_INPUTA link that is not a 1688 search page, one with no keyword to read out of it, an offer id that is not one, or a price bound that is not a plain number.
SEARCH_FAILEDThat term could not be searched this run. The other terms carry on.
NOT_SERVEDThis product or offer was not served this run. When a term can't be read at all, the Actor stops there and writes this free row. Three offer ids in a row not served stop the lookups. Re-run it later. Runs before 13 October 2026 wrote BLOCKED here.
FEWER_FIELDSSome runs return a term's first 20 or so offers with fewer fields: price, units sold, supplier and years on 1688, with the ladder and minimum order where available, but no supplier rating, rating breakdown, business type or promoted flag. This free row says how many (productsWithFewerFields). Those rows are charged as products. Re-run later for the full set.
NOT_FOUND1688 says that offer is removed or cannot be viewed.
DETAIL_FAILEDThat offer's page came back for a different offer, or without the data this Actor reads.
BUDGET_REACHEDThe maximum cost you set for the run was reached, so the offer ids left were not read.
TOO_MANY_OFFERSMore than 100 offer ids; the ones past 100 were not read.
TIME_LIMITThe run got close to its time limit and stopped on its own. The rows delivered before that are complete and charged. If none had come back, the run ends as failed with this row. Give the run more time, or ask for fewer products or offer ids, to get the rest.

💡 What people use it for

  • Sourcing a product: pull 200 offers, sort by price, then read minOrderQuantity and priceTiers for the real cost at the volume you want.
  • Screening suppliers before contacting any of them, on supplierYears, isFactory, salesCount and the five-part ratingBreakdown.
  • Re-checking a shortlist you keep: the same offer ids every week show who changed price or ran out.

From a search term to a supplier worth messaging, in three runs:

  1. Run this on a Chinese term and keep the offers where isFactory is true and priceTiers reaches your volume.
  2. Paste their offerId into 1688 Reviews Scraper with Which reviews set to written text only, and read what buyers said.
  3. Put the supplierName of the ones that hold up into 1688 Supplier Ratings Scraper for audits and the repeat-buyer rate.

🚧 What it does not do

  • No long description, and no price or stock per colour or size. A lookup by id stops at the ladder, attributes, images and total stock.
  • No reviews. The reviews scraper takes the offerId from here.
  • priceTiers is often empty. Many suppliers publish one flat price at the MOQ. That is their listing, not a gap here.
  • 1,000 search 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 price only, the unit price at the smallest order, and only for search.
  • 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.
  • Nothing is translated, and prices are in yuan only. Titles, attributes, 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 wantUse
1688 offers by search term: unit price, MOQ and the quantity price ladderThis one
Images, attributes and stock for offers you already haveThis one, under Offer ids or links
Buyer reviews on 1688 products you can link1688 Reviews Scraper
A 1688 seller's rating, five sub-scores and audits1688 Supplier Ratings Scraper
Export products, MOQ and suppliers on Alibaba.comAlibaba.com Scraper
Retail products in a Taobao categoryTaobao 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 call it from code or connect it to an AI assistant?

The API tab has code for Python, JavaScript and the CLI. MCP clients like Claude and ChatGPT use https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/1688-wholesale-scraper; coding assistants can load our skill file. All three bill your Apify account at the same price.

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, URL or offer id you used and the run ID; the errorCode on the diagnostic row usually names the problem on its own.