1688 Wholesale Scraper: Prices, MOQ, Suppliers and SKUs
Pricing
from $3.59 / 1,000 products
1688 Wholesale Scraper: Prices, MOQ, Suppliers and SKUs
Scrape 1688.com by keyword or offer id: price tiers, MOQ, supplier name, province and city, years as Trust Pass member, factory inspection, sales counts, images and SKU variants with stock. Chinese or English keywords. No login.
Pricing
from $3.59 / 1,000 products
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Part of The Mine Works E-commerce and marketplaces family: Ozon.ru Scraper, ⭐ Amazon Reviews Scraper, Amazon Product Scraper, Etsy Listings Scraper, AliExpress Scraper, Kleinanzeigen.de Scraper.
Updated 23 Oct 2026: first release. Keyword search in Chinese or English, offer ids and product links, quantity price tiers, MOQ, supplier years and inspection flags, sales counts, all images and the SKU variant matrix with stock, one flat row per offer. Bookmark this Actor on its Store page so it is one click away next time.
Why choose this actor?
- The numbers a sourcing buyer compares, in columns. Every row has the lowest and highest unit price in CNY, the full quantity price ladder (2 to 499 pieces at one price, 500 to 4,999 at another), the minimum order and the selling unit. Sort a whole keyword by price or MOQ in a spreadsheet without cleaning text.
- The supplier next to the product. Company name, province and city, years as a Trust Pass member, factory and business inspection flags, verified merchant and super factory marks, buyer protections, shop link, repeat purchase rate and six service scores. Search-only rows already carry most of it.
- SKU variants with stock. With product pages on, each row lists every colour and size combination with its own id, stock and sales count, plus the option pictures. A phone case with 270 variants comes back as one row with 270 entries.
- Pay per product, nothing for errors. Offers that no longer exist, links that are not 1688 links, the summary row and duplicates found by two searches are never charged. No 1688 account, cookies or API key.
Try it in one minute
Paste this into the input (JSON view) and press Start. It returns the first 20 offers for 手机壳 (phone case) with their product pages opened:
{"searchQueries": ["手机壳"],"maxItems": 20}
Put several keywords on separate lines to run several searches at once. Chinese keywords return more and better matches than English ones. A product that two of your searches find is delivered once.
Apify's free plan includes $5 of credit every month, which covers about 1,100 products at this actor's price.
Copy to your AI assistant
themineworks/1688-wholesale-scraper on Apify. Searches 1688.com (Alibaba's China wholesale marketplace) by keyword, offer id or product link and returns one flat row per offer with price tiers in CNY, MOQ, supplier, years, inspection flags, sales counts, images and SKU variants, with no login. Call ApifyClient("TOKEN").actor("themineworks/1688-wholesale-scraper").call(run_input={"searchQueries": ["手机壳"], "maxItems": 100}), then client.dataset(run["defaultDatasetId"]).list_items().items. Give searchQueries (keywords, Chinese or English), offerIds (list of 1688 offer ids) or startUrls (detail.1688.com or m.1688.com product links, s.1688.com or m.1688.com search links) or any mix; up to 100 searches per run. Optional: maxItems (default 50, 1 to 2000, per keyword), sortBy (relevance, bestSelling, priceAsc, priceDesc), includeDetails (default true; opens each offer page for skus, sku_properties, images, video_url, shop_url, attributes, dropship_channels), proxyCountry (CN default, or HK). Product rows have no _type field and carry offer_id, title, offer_url, image_url, images, video_url, brand, category_id, category_name, price_cny, price_max_cny, price_tiers (min_quantity, max_quantity, price_cny), moq, unit, stock, weight_kg, mixed_wholesale, supplier_name, supplier_login_id, supplier_member_id, supplier_user_id, supplier_province, supplier_city, supplier_location, supplier_type, supplier_years, is_trust_pass_member, is_verified_merchant, is_super_factory, is_industry_seller, seller_identity, is_factory_inspected, is_business_inspected, supplier_labels, buyer_protections, shop_url, shop_offers_url, sales_count, orders_booked, sales_30d, sales_amount_30d_cny, sales_label, orders_30d_label, repurchase_rate, shop_repurchase_rate, shop_repurchase_rate_3m, score_overall, score_goods, score_logistics, score_dispute, score_consultation, score_return, rating_good_rate, rating_goods_grade, review_count, supplier_service_score, free_shipping, attributes, sku_properties, skus, sku_count, dropship_supported, dropship_channels, delivery_location, delivery_promise, service_labels, listed_at, updated_at, is_advertisement, keyword, sort_by, page, position, details_scraped, details_error, scraped_at. Each run also writes one row with _type "summary", one with _type "info" when products were delivered, and a row with _type "error" for each input that could not be read; none of these is charged. Full spec: GET https://api.apify.com/v2/acts/themineworks~1688-wholesale-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
Key features
- Keyword, offer id or link. Type keywords the way you would on 1688, give offer ids, or paste product links and search links from your browser. A search link is reduced to its keyword. A product link is read like an offer id.
- Quantity price tiers.
price_tierslists every quantity break with its minimum, maximum (empty means "and above") and unit price.price_cnyis the lowest price,price_max_cnythe price at the smallest quantity. - Supplier profile fields. Business type (manufacturer or wholesaler), province, city, years as a Trust Pass member, factory inspection, verified merchant, super factory, buyer protections and the shop link.
- Demand signals. Total units sold, 30 day units and sales amount, orders booked, repeat purchase rate of the product and of the shop, review count and positive review share.
- SKU matrix and media.
skushas one entry per option combination with id, stock, sales and a promotion flag;sku_propertieshas the option names and values with their pictures;imagesandvideo_urlcome from the product page. - Dropship and resale data.
dropship_supportedanddropship_channelslist the channels the supplier authorises, such as Taobao, Amazon, Shopify and Shopee. - Stops cleanly. Two pages in a row with no new offers end a search; six blocked requests in a row end the run; the run stops before its time limit and keeps every row it read. The summary row says why.
How to use it
Basic: one keyword, many suppliers
{"searchQueries": ["手机壳"],"maxItems": 200}
Ten pages of results, one row per offer. Sort by price_cny to see the cheapest offers, or by moq to find suppliers that take small orders.
Best sellers first
{"searchQueries": ["蓝牙耳机"],"sortBy": "bestSelling","maxItems": 100}
sales_count and sales_30d show how much each offer really moves; repurchase_rate shows how many buyers came back.
Specific offers by id or link
{"offerIds": ["735353578254", "672929783458"],"startUrls": ["https://detail.1688.com/offer/927875250705.html"]}
Each id or link gives one row with the full product page data: tiers, SKU matrix, all images, shop link.
Price monitoring on a fixed list
Keep your list of offer ids in offerIds and run it on a schedule. Compare price_tiers and stock between runs to see price changes and stock-outs.
Fast search-only export
{"searchQueries": ["连衣裙"],"maxItems": 500,"includeDetails": false}
Rows come from the search results only: tiers, MOQ, supplier, location, years, flags, sales and scores, with the main picture. No SKU matrix. It is faster and uses far less proxy traffic. Same price per product.
Input parameters
| Parameter | Type | Default | What it does |
|---|---|---|---|
searchQueries | array of strings | empty | Keywords, one search each, Chinese or English, for example 手机壳. |
offerIds | array of strings | empty | 1688 offer ids. Each gives one row from the product page. |
startUrls | array of strings | empty | Product links (read like offer ids) and search links (reduced to their keyword). |
maxItems | integer | 50 | Most offers per keyword, 1 to 2,000. 1688 lists at most 2,000 per keyword. |
sortBy | string | relevance | relevance, bestSelling, priceAsc or priceDesc. |
includeDetails | boolean | true | Opens each offer page for the SKU matrix, all images, video, attributes, shop link and ratings. |
proxyCountry | string | CN | CN (China, most reliable) or HK (Hong Kong, works for some runs). |
Give searchQueries, offerIds, startUrls or any mix. Up to 100 searches and 2,000 offer ids per run.
What data do you get?
One row per offer. Product rows have no _type field; the summary, info and error rows do, so a filter on _type separates them. Fields marked "details" need includeDetails on (or an offer id input); fields marked "search" come from the search results and are empty for offer ids.
| Field | What it is |
|---|---|
offer_id, offer_url, title | The offer id, the link to detail.1688.com and the listing title (Chinese) |
image_url, images, video_url | Main picture, all pictures and the video (details) |
brand, category_id, category_name | Brand, 1688 category id, category name (details) |
price_cny, price_max_cny, price_tiers | Lowest and highest unit price in CNY, and the quantity ladder |
moq, unit, stock, weight_kg, mixed_wholesale | Minimum order, selling unit, units in stock, unit weight, mixed batch allowed |
supplier_name, supplier_login_id, supplier_member_id, supplier_user_id | The supplier company and its 1688 ids |
supplier_province, supplier_city, supplier_location | Where the supplier is (search) and where it ships from (details) |
supplier_type, supplier_years, is_trust_pass_member | Business type, years as a Trust Pass member, paid member flag (search) |
is_verified_merchant, is_super_factory, is_industry_seller, seller_identity | Seller marks from the product page (details) |
is_factory_inspected, is_business_inspected, supplier_labels | Inspection flags and the badges 1688 shows (search) |
buyer_protections, free_shipping | Services such as 48小时发货, 7天包换 |
shop_url, shop_offers_url | The supplier shop and its product list |
sales_count, orders_booked, sales_30d, sales_amount_30d_cny | Units sold in total, orders, units and CNY in the last 30 days (search) |
sales_label, orders_30d_label | The same as the product page shows it, e.g. 1.8万+ (details) |
repurchase_rate, shop_repurchase_rate, shop_repurchase_rate_3m | Repeat purchase rates |
score_overall, score_goods, score_logistics, score_dispute, score_consultation, score_return | Supplier scores out of 5 (search) |
rating_good_rate, rating_goods_grade, review_count, supplier_service_score | Review share, rating, review count, shop service score (details) |
attributes | Product attributes, name to value |
sku_properties, skus, sku_count | Option names and values with pictures, the variant matrix with stock, and how many variants (details) |
dropship_supported, dropship_channels | Dropship flag and the authorised channels (details) |
delivery_location, delivery_promise, service_labels | Shipping origin, delivery promise and service guarantees (details) |
listed_at, updated_at | When the offer was listed and last changed (details) |
is_advertisement | True for a paid placement in the search (search) |
keyword, sort_by, page, position | Which search found it and where |
details_scraped, details_error, scraped_at | Whether the product page was read, why not, and when |
Output examples
A product row from a keyword search with product pages on (lists shortened to two entries):
{"offer_id": "1002703361674","title": "适用飞利浦E536手机壳E539保护套M6全包透明硅胶清水壳防刮软简约","offer_url": "https://detail.1688.com/offer/1002703361674.html","image_url": "https://cbu01.alicdn.com/img/ibank/O1CN0100sm0X2K0JMM7eCiV_!!2646459494-0-cib.jpg","price_cny": 1.9,"price_max_cny": 2.1,"price_tiers": [{"min_quantity": 2,"max_quantity": 49,"price_cny": 2.1},{"min_quantity": 50,"max_quantity": 99,"price_cny": 2},{"min_quantity": 100,"max_quantity": null,"price_cny": 1.9}],"moq": 2,"unit": "个","supplier_name": "福州市哲优电子科技有限公司","supplier_login_id": "哲优电子科技","supplier_member_id": "b2b-2646459494ea1f0","supplier_user_id": "2646459494","supplier_province": "广东","supplier_city": "深圳市","supplier_type": "生产加工","supplier_years": 12,"is_trust_pass_member": true,"is_factory_inspected": false,"is_business_inspected": false,"supplier_labels": ["诚信通12年"],"buyer_protections": ["48小时发货","诚e赊"],"shop_url": "https://zheyoudianzikeji.1688.com","sales_count": 2098,"orders_booked": 176,"sales_30d": 312,"sales_amount_30d_cny": 600,"repurchase_rate": "77%","shop_repurchase_rate": "43%","score_overall": 4,"score_goods": 5,"score_logistics": 3.57,"score_dispute": 5,"score_consultation": 1,"score_return": 3.67,"free_shipping": false,"mixed_wholesale": true,"category_id": "1042207","attributes": {"材质": "硅胶","工艺": "注塑","款式": "保护壳","品牌": "SMAMS","功能": "防摔","适用机型": "飞利浦"},"is_advertisement": false,"keyword": "手机壳","sort_by": "relevance","page": 1,"position": 3,"details_scraped": true,"scraped_at": "2026-10-23T19:22:05.670Z","images": ["https://cbu01.alicdn.com/img/ibank/O1CN0100sm0X2K0JMM7eCiV_!!2646459494-0-cib.jpg","https://cbu01.alicdn.com/img/ibank/O1CN01HUpe7U2K0JMGDHldo_!!2646459494-0-cib.jpg","..."],"video_url": "https://cloud.video.taobao.com/play/u/2646459494/p/2/e/6/t/1/488430805555.mp4","category_name": "手机保护套","stock": 17900,"weight_kg": 0,"supplier_location": "广东省深圳市","shop_offers_url": "https://zheyoudianzikeji.1688.com/page/offerlist.html","is_verified_merchant": false,"is_super_factory": false,"is_industry_seller": false,"seller_identity": "default","sales_label": "2000+","orders_30d_label": "600+","rating_good_rate": 99.7,"rating_goods_grade": 5,"review_count": 9866,"supplier_service_score": "4.0分","shop_repurchase_rate_3m": "62.92%","sku_properties": [{"name": "颜色","values": [{"name": "TPU软壳【透明】","image_url": null}]},{"name": "适用型号","values": [{"name": "飞利浦E536","image_url": null},{"name": "飞利浦E539","image_url": null}]}],"skus": [{"sku_id": "6157003146310","spec_id": "d61e1139819977fc2c918dc6e8e2d629","options": "TPU软壳【透明】>飞利浦E536","price_cny": null,"stock": 4620,"sales_count": 0,"is_promotion": false},{"sku_id": "6157003146311","spec_id": "82a03fae9a24a10a4fcdd0c55f7da898","options": "TPU软壳【透明】>飞利浦E539","price_cny": null,"stock": 6632,"sales_count": 0,"is_promotion": false}],"sku_count": 3,"dropship_supported": true,"dropship_channels": ["Lazada","Amazon","Shopify","Shopee"],"delivery_location": "广东省深圳市","delivery_promise": "常发申通快递","listed_at": "2025-12-12T08:22:45.000Z","updated_at": "2026-10-23T05:48:15.000Z"}
An offer id that is gone from 1688 gets an error row and no charge:
{ "_type": "error", "error_type": "not_found", "identifier": "999999999999", "reason": "This offer is no longer listed on 1688 (taken down or removed)." }
The summary row closes every run; it is never charged:
{ "_type": "summary", "searches_requested": 1, "searches_read": 1, "pages_read": 1, "products_found": 20, "details_requested": 20, "details_ok": 20, "products_delivered": 20, "charged_for": 20, "http_requests": 23, "http_blocked": 1, "run_seconds": 25 }
Pricing
Pay per event: you pay for the products you receive, plus a flat $0.003 per run, whatever memory you choose. Opening product pages costs nothing extra.
| Event | When it is charged | Free plan | Bronze (Starter) | Silver (Scale) | Gold (Business) |
|---|---|---|---|---|---|
product-scraped | Once per offer row stored in your dataset | $4.49 per 1,000 | $4.31 per 1,000 | $4.04 per 1,000 | $3.59 per 1,000 |
run-start | Once per run, after the first request returned offers | $0.003 | $0.003 | $0.003 | $0.003 |
The price of one product is the price per 1,000 divided by 1,000.
Never charged:
- inputs that are not an offer id, a 1688 link or a keyword (each gets an error row);
- an offer id that no longer exists on 1688;
- an offer that a second search of the same run finds again;
- offers past your
maxItems; - the summary, info and error rows;
- a run with no valid input, or one where 1688 returned nothing: the start fee is charged only once offers came back;
- anything past your "Max cost per run". The actor checks the budget before each batch of rows and stops while the total is still below your limit, so the run ends SUCCEEDED with a partial result and a status message saying so.
Run it on a schedule
- Open the actor in Apify Console, set your input and click Save as a new task.
- In the task, open Schedules, click Add schedule and pick how often (every day, every Monday at 08:00 and so on).
- Compare runs on
offer_id,price_cnyandstockto see new listings, price changes and stock-outs in your category. - Optional: add an integration (Google Sheets, Slack, a webhook) so each run lands where your team works.
FAQ
What does this actor read?
Two public 1688.com services that 1688's own mobile pages use: the search list behind m.1688.com/offer_search and each offer's public page at detail.1688.com, as anyone sees them without logging in. It does not log in, send inquiries or read contact details hidden behind a sign in.
How many products can I get?
Up to 2,000 per keyword (1688 lists at most 2,000 per search), 100 keywords per run, and 2,000 offer ids per run. A results page holds 20 offers and 1688 serves pages 1 to 100 of a keyword (page 101 is empty).
Why are some search fields empty for offer ids?
The search results carry fields the product page does not, such as total sales, 30 day sales, the six service scores and the supplier's years as a Trust Pass member. Offer id rows come from the product page, which carries the SKU matrix, all images, stock and ratings instead. Run a keyword search with includeDetails on to get both sets.
What is the difference between includeDetails on and off?
Off, each row comes from the search results: tiers, MOQ, supplier, location, years, flags, sales, scores and the main picture. On, the product page adds the SKU matrix with stock, all images, video, attributes, shop link, ratings and dropship channels. On is slower and uses more proxy traffic; the price per product is the same.
Can I search in English?
Yes, but 1688 is a Chinese marketplace and Chinese keywords return more and better matches. Titles, attributes and supplier names come back in Chinese. Prices are in CNY.
Why does a run sometimes stop with a blocked message?
1688 checks every request and sends a verification page to some IPs. The actor uses a China residential proxy and tries up to 8 different IPs for each page; it never solves a verification page. If 1688 refuses six requests in a row, the run stops early instead of paying for pages that return nothing, keeps the rows it has, and the summary row says so. Running again a little later usually works.
How long does a run take?
In our tests: 25 seconds for the "Try it" input (20 products, product pages on), 114 seconds for 120 products from 3 keywords with product pages on, and 14 seconds for 120 products from 2 keywords with product pages off. Search pages are read first and product pages afterwards, five at a time. The default time limit is 3,600 seconds; the actor stops before it and keeps every row.
Do I need an account, cookies or a proxy?
No account and no cookies. The actor uses Apify's China residential proxy, which is billed to your Apify usage; turning includeDetails off keeps proxy traffic to a minimum.
Which actor should I use for other marketplaces?
Alibaba.com B2B Search for Alibaba.com suppliers, Made-in-China Scraper for Made-in-China.com, Taobao Products Scraper for Taobao and Tmall retail prices of the same goods, and AliExpress Scraper for AliExpress.
Which formats can I download?
JSON, CSV, Excel, XML, RSS and HTML from the run's Storage tab or through the API. In CSV and Excel, attributes, price_tiers and skus are flattened into columns such as attributes/材质 and price_tiers/0/price_cny.
Can I use it from Claude, ChatGPT or Cursor (MCP)?
Yes, through Apify's MCP server. Connector URL: https://mcp.apify.com/?tools=themineworks/1688-wholesale-scraper
- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: turn on developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code:
claude mcp add -t http 1688-wholesale-scraper "https://mcp.apify.com/?tools=themineworks/1688-wholesale-scraper"
Is it legal to scrape 1688.com?
The actor reads only public listings that anyone can see without logging in, mostly business information that suppliers publish to be found. You are responsible for how you use the data, including 1688's terms and data protection law such as GDPR and CCPA. This is general information, not legal advice.
Integrations
- Google Sheets: send each run's products to a sheet with Apify's Google Sheets integration; one row per offer fits a sheet as is.
- Make, Zapier and n8n: start a run and read its dataset with the Apify apps and nodes, for example "price changes on our 50 offer ids every Monday to Slack".
- Webhooks: have Apify call your URL when a run succeeds, then fetch the dataset.
- API and SDKs: run it from Python or JavaScript with the Apify client, or with a plain HTTP call (see "Copy to your AI assistant" above).
- MCP clients: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.
More from The Mine Works
E-commerce and marketplaces
- Ozon.ru Scraper
- ⭐ Amazon Reviews Scraper
- Amazon Product Scraper
- Etsy Listings Scraper
- AliExpress Scraper
- Kleinanzeigen.de Scraper
- Carsales.com.au Scraper
- eBay Product Listings Scraper
- Shopify Store Scraper
- 🛒 TikTok Shop Scraper
- Walmart Product & Price Scraper
- Vinted Scraper
Social media and video
Leads and business directories
Marketing, SEO and reviews
Real estate
Science, health and government data
Jobs and hiring
Company and business data
Food and local services
Developer and AI tools
More tools
Support
Found a keyword that returns fewer offers than the site, or a field that comes back empty? Open an issue in the Issues tab with the input and the run ID, and we will look at it. For a field you need or a new source, email dmineworks@gmail.com.
Search 1688.com by keyword or offer id and get every product back as one row, with price tiers, MOQ, supplier years and inspection, sales counts, images and SKU variants, no login.

