Skip to content

1688 Wholesale Products Scraper

Try for free

Scrape public 1688.com wholesale search results and product details, including tiered prices, supplier factory stats, and shipping. No login required.

🏭 1688 Wholesale Scraper

Pull public wholesale products and supplier data from 1688.com. Search by keyword in English or Chinese, or open products by numeric offer ID, and get tiered CNY prices, minimum order quantities, specs, gallery images, shipping terms, and the supplier's factory profile. No 1688 account or login needed.

✨ Why use 1688 Wholesale Scraper?

  • 💸 Cheap — $0.002 per product ($2 per 1,000), plus a small amount of platform usage.
  • 🔓 No account — it reads public search results and public product pages.
  • 🪙 Real factory pricing — price range, quantity tiers, minimum order, stock, and sales counts in CNY.
  • 🏢 Supplier profile — company name, Super Factory or verified status, factory area, employees, patents, and certifications when 1688 publishes them.
  • 🎚️ Useful filters — sort order, price range in yuan, minimum order, supplier verification, province, and city.
  • 🧩 Optional depth — add every SKU variant, raw description HTML, or package size and badges when you need them.

🎯 Use cases

  • 🛒 Sourcing — compare factory prices and minimum orders for a product you want to import.
  • 📇 Supplier lists — filter by province, price, or Super Factory status.
  • 🔁 Catalog refresh — re-check known products by offer ID.
  • 📉 Price research — track tiered pricing for a keyword over time.
  • 🛍️ Dropshipping and resale — pull images, specs, and shipping terms to build listings.

🚀 How to use

  1. Enter keywords (English or Chinese), or paste numeric offer IDs.
  2. Set maxResults (default 10 per keyword, no upper limit).
  3. Optionally filter by price, minimum order, supplier type, province, or city.
  4. Click Start.
  5. Export to JSON, CSV, Excel, or HTML, or read the dataset through the API.

📥 Input

FieldTypeWhat it does
keywordsarrayProduct keywords in English or Chinese. Each is searched on its own.
offerIdsarrayNumeric offer IDs from product URLs. Keywords and filters are ignored when set.
maxResultsintegerMax products per keyword. Default 10, no maximum.
sortByselectrelevance, bestSelling, priceAsc, priceDesc.
priceMin, priceMaxintegerUnit price bounds in yuan. 0 means no bound.
minOrderQuantityintegerKeep suppliers whose minimum order is at most this.
merchantTypeselectany, superFactory, verifiedMerchant.
province, citystringChinese names, such as 广东 and 深圳市.
includeSkuDetailsbooleanAdd each color and model with price and stock. Makes rows much larger.
includeDescriptionHtmlbooleanAdd the raw description HTML.
includeSupplierIntelligencebooleanAdd package size per variant, the sales headline, compliance notes, and badges.
proxyConfigurationobjectDatacenter proxy in China by default.
{
  "keywords": ["wireless earbuds"],
  "maxResults": 10,
  "sortBy": "relevance"
}

To open products you already know, use the number in the URL (https://detail.1688.com/offer/927875250705.html uses 927875250705):

{
  "offerIds": ["927875250705"]
}

📤 Output

One dataset row per product.

FieldDescription
offerId, title, detailUrlProduct id, title, and link.
priceMin and max unit price and currency (CNY).
quantityPricesQuantity tiers with price per tier.
minOrderQuantity, stock, unitMinimum order, stock, and unit.
soldDisplay, saledCountSales figures shown on the page.
images, videoUrl, descriptionImagesMedia.
specsProduct attributes such as material and process.
shippingDelivery promise, post fee, and protections.
categoryPath, province, cityCategory and location.
supplierCompany, seller type, factory stats, certifications, address, and shop link.
{
  "offerId": "927875250705",
  "title": "跨境适用苹果18promax手机壳磁吸16防摔磨砂iphone17pm保护壳批发",
  "detailUrl": "https://detail.1688.com/offer/927875250705.html",
  "price": { "min": 7.04, "max": 7.5, "currency": "CNY" },
  "quantityPrices": [
    { "quantityRange": "50~499个", "quantityMin": 50, "quantityMax": 499, "price": 7.5 },
    { "quantityRange": "500~2999个", "quantityMin": 500, "quantityMax": 2999, "price": 7.32 },
    { "quantityRange": "≥3000个", "quantityMin": 3000, "quantityMax": null, "price": 7.04 }
  ],
  "minOrderQuantity": 50,
  "soldDisplay": "已售10万+件",
  "province": "广东",
  "city": "佛山",
  "specs": [
    { "name": "材质", "value": "优质TPU" },
    { "name": "工艺", "value": "注塑" }
  ],
  "shipping": { "deliveryDays": 30, "logisticsText": "承诺30天发货", "postFee": 8 },
  "supplier": {
    "companyName": "佛山市南海区三丰手机配件有限公司",
    "sellerType": "super_factory",
    "stats": { "factoryArea": 20380, "employees": 484 }
  }
}

The example is trimmed. Real rows also include images, the full spec list, supplier details, and description images.

💰 Pricing

$0.002 per product saved, which is $2.00 per 1,000 products, plus platform usage for compute and proxy traffic. Offer IDs that are invalid or cannot be opened are not charged and produce no row.

Worked example: a 10-product search costs $0.02 in product fees plus about $0.002 of platform usage. Proxy traffic is light, about 0.04 GB per 1,000 products (about $0.04 on the default China datacenter proxy at $1 per GB; $0.08 if pages are retried over residential at $2 per GB), so 1,000 products cost about $2.00 in fees plus roughly $0.15 of compute and proxy.

❓ FAQ

Is it legal to scrape 1688? The actor reads public search results and product pages without logging in. You are responsible for how you use the data and for following local law and 1688's terms.

Do I need an account or my own proxy? No. A China datacenter proxy is configured by default. Pages 1688 refuses there are retried through a China residential proxy.

Does English search work? Yes. Chinese keywords usually return more listings because 1688 is a domestic marketplace.

Why are some fields empty? Some listings hide factory stats, video, or description text, so those fields are null. An offer that could not be opened this run is listed in the run's OUTPUT record under failedInputs so you can retry that ID.

What if I paste an invalid offer ID? It is skipped without a charge and listed with the reason in the run's OUTPUT record under failedInputs, so a workflow can match every input.

Can I schedule it or use the API? Yes, through schedules in the console or the API.

⚠️ Limits

  • No fixed cap on products per keyword: a search stops when it reaches Max results or 1688 has no more matching products. Offer ID runs have no fixed cap either, but very long pasted lists (several hundred IDs) can exceed the run input size limit; split them into several runs.
  • Unavailable or invalid offers produce no row and are not billed; they are listed in the OUTPUT record (failedInputs).
  • Public data only. It does not log in, place orders, or collect reviews beyond the public rating summary.
  • Customization option trees and some shop follower counts are not in the public page data.
  • The category path can skip the middle level compared with the full 1688 breadcrumb.
  • Review totals use the public on-page summary, not a larger historical aggregate.
  • A 10-product search takes around 40 seconds because pages are opened through a China proxy; 1,000 products took about 27 minutes in testing.
  • China datacenter is the default proxy. Pages refused there are retried through China residential proxies, billed at the residential rate (and the other way round if you choose residential).

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.