1688 Wholesale Product Scraper
Pricing
from $2.99 / 1,000 wholesale products
1688 Wholesale Product Scraper
Extract public 1688.com wholesale products with tier pricing, MOQ, supplier details, SKU attributes, and images.
Pricing
from $2.99 / 1,000 wholesale products
Rating
0.0
(0)
Developer
w3crawler
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
8 hours ago
Last modified
Categories
Share
1688 Wholesale Product Scraper
This is a conditional public-route extractor, not a currently qualified 1688 inventory source. It extracts rich wholesale product data from 1688.com only when a permitted public page exposes source-backed product records. The Actor supports keyword searches, multiple public sources, bounded pagination, global filters/sorting/deduplication, optional account-enabled Apify Proxy routing, and fail-closed diagnostics.
Current qualification status
The current public search route https://s.1688.com/selloffer/offer_search.htm?keywords=wireless+earbuds returned either a login-gated shell or an anti-automation barrier in direct probes, with no product links. The current direct Cloud smoke stopped at ACCESS_BARRIER_ACCESS_CHALLENGE, while the account-enabled standard proxy stopped at ACCESS_BARRIER_LOGIN_REQUIRED. All current Cloud paths produced zero normal rows, so this Actor is not publishable as current inventory.
To qualify inventory extraction, provide an authorized 1688 Open Platform API integration or a licensed authenticated feed that exposes product identity, canonical URL, and the commercial fields required by the output contract. This Actor does not accept private cookies, sign in, solve CAPTCHA/security challenges, rotate identities to evade controls, or bypass access restrictions.
The dataset is marketplace-focused. Product rows do not contain Actor-debugging wrappers such as recordId, recordType, status, success, ok, dataAvailable, found, fieldCoverage, dataQuality, extractionMethod, fallbackMode, or usedProxy. Operational counts remain in OUTPUT_SUMMARY.
The Actor only requests publicly exposed 1688 pages. It does not sign in, solve CAPTCHA or security challenges, rotate identities to evade controls, or call private APIs. If 1688 presents a login, challenge, denial, or rate limit, the run stops at that boundary and records a bounded diagnostic instead of inventing a product row. A successful run is therefore environment-dependent and cannot be guaranteed from every region or Cloud transport.
Why use 1688 Wholesale Product Scraper?
Use it for public supplier discovery, wholesale price-range comparisons, MOQ research, supplier shortlists, catalog snapshots, and lightweight sourcing workflows. Product rows keep marketplace facts and source URLs together, while OUTPUT_SUMMARY keeps run health, filters, pagination, and access diagnostics separate from the marketplace dataset.
How to run it in Apify Console
- Open the Actor in Apify Console and select the Input tab.
- Enter keywords or paste public 1688 search/detail URLs in
startUrlsusing{ "url": "..." }objects. - Set Max Items, Max Pages, filters, and
includeDiagnostics; leaveincludeImagesandincludeAttributesenabled for a rich smoke test. - Click Save & Run (or Start), then open the run's Dataset tab and the default key-value store records
OUTPUT_SUMMARYandOUTPUT. - If the dataset contains only diagnostics, inspect
errorCodeand the source URL before changing limits. Do not retry by bypassing a login, CAPTCHA, challenge, paywall, or access-control page.
Extracted fields
Depending on public availability, a product row can include:
- identity and provenance:
url,productId,title,name,productUrl,source,sourceDomain,sourceUrl,pageNum,position,scrapedAt - pricing:
price,priceMin,priceMax,currency,priceFormatted,tierPricing - wholesale facts:
moq,moqUnit,salesVolume,transactionCount,reviewCount,rating,availability - supplier:
supplierName,supplierProfileUrl,supplierLocation,supplierYears,supplierResponseRate - media and catalog facts:
images,thumbnail,imageCount,attributes,categories,badges,description,shippingInfo,leadTime
Missing values are omitted rather than guessed. thumbnail is always images[0] when images are present. Product images are scoped to the product record and filtered for common logos, icons, placeholders, and loading assets.
Input
Default keyword search
{"keywords": "wireless earbuds","maxItems": 50,"maxPages": 3,"sortBy": "relevance"}
Filters and sorting
{"keywords": "cotton tote bag","minPrice": 1.5,"maxPrice": 12,"minMoq": 10,"minSalesVolume": 100,"minRating": 4,"minReviewCount": 20,"supplierLocation": "Shenzhen","requiredBadges": ["诚信通"],"sortBy": "sales_desc","maxItems": 25,"maxPages": 5,"deduplicate": true}
Multiple sources, developer controls, and proxy
{"startUrls": [{"url": "https://s.1688.com/selloffer/offer_search.htm?keywords=packaging"},{"url": "https://s.1688.com/selloffer/offer_search.htm?keywords=gift%20bags"},{"url": "https://detail.1688.com/offer/EXAMPLE-1.html"}],"maxItems": 100,"maxPages": 4,"requestDelayMs": 1500,"maxConcurrency": 2,"maxRequestRetries": 3,"requestTimeoutSecs": 45,"includeImages": true,"includeAttributes": true,"proxyConfiguration": {"useApifyProxy": true}}
maxPages: 0 continues until a source returns no new products, with a hard 100-page cap. maxItems is global across all sources. Product/detail URLs are fetched once. A proxy only changes transport routing; it does not authorize access or bypass login, CAPTCHA, or security controls. includeDiagnostics: false suppresses diagnostic rows but the run summary still reports diagnosticsFound and retains the blocked/no-data status.
Supported sortBy values are relevance, price_asc, price_desc, sales_desc, rating_desc, reviews_desc, and supplier_years_desc.
Deterministic local QA
{"keywords": "cotton tote","fixtureFile": "fixtures/sample.html","maxItems": 10,"maxPages": 2,"requestDelayMs": 0,"includeDiagnostics": true}
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Product output example
{"source": "1688.com","sourceDomain": "s.1688.com","sourceUrl": "https://s.1688.com/selloffer/offer_search.htm?keywords=cotton+tote","url": "https://detail.1688.com/offer/EXAMPLE-1.html","productId": "EXAMPLE-1","title": "Cotton Tote Wholesale","productUrl": "https://detail.1688.com/offer/EXAMPLE-1.html","price": 1.9,"priceMin": 1.9,"priceMax": 2.5,"currency": "CNY","priceFormatted": "¥1.9-2.5","tierPricing": [{"minQuantity": 10,"price": 2.5,"currency": "CNY"},{"minQuantity": 100,"price": 1.9,"currency": "CNY"}],"moq": 10,"moqUnit": "pieces","salesVolume": 1250,"transactionCount": 1250,"reviewCount": 120,"rating": 4.8,"supplierName": "Shenzhen Supply","supplierProfileUrl": "https://example-supplier.1688.com/","supplierLocation": "Guangdong Shenzhen","supplierYears": 5,"supplierResponseRate": "96%","images": ["https://cbu01.alicdn.com/img/fixed-tote.jpg","https://cbu01.alicdn.com/img/fixed-tote-2.jpg"],"thumbnail": "https://cbu01.alicdn.com/img/fixed-tote.jpg","imageCount": 2,"attributes": {"Material": "Cotton canvas","Style": "Tote"},"shippingInfo": "Ships within 48 hours","leadTime": "3-7 days","badges": ["诚信通", "实力商家"],"categories": ["Bags", "Canvas bags"],"availability": "InStock","pageNum": 1,"position": 1,"scrapedAt": "2026-09-05T00:00:00.000Z"}
Blocked or unavailable public pages produce a deliberately small diagnostic row:
{"url": "https://s.1688.com/selloffer/offer_search.htm?keywords=wireless+earbuds","error": "A public 1688 access barrier was visible; the Actor stopped without bypassing it.","errorCode": "ACCESS_BARRIER_LOGIN_REQUIRED","scrapedAt": "2026-09-08T07:17:41.304Z"}
Alternate public-route output example
When the same public product is reachable through a permitted direct or proxy-routed request, the product contract remains the same and the source URL still identifies the observed page. Proxy routing does not add a transport/debug field to dataset rows.
{"source": "1688.com","sourceDomain": "detail.1688.com","sourceUrl": "https://s.1688.com/selloffer/offer_search.htm?keywords=example","url": "https://detail.1688.com/offer/EXAMPLE-1.html","productId": "EXAMPLE-1","title": "Example wholesale product","productUrl": "https://detail.1688.com/offer/EXAMPLE-1.html","price": 4.5,"currency": "CNY","images": ["https://cbu01.alicdn.com/img/example-product.jpg"],"thumbnail": "https://cbu01.alicdn.com/img/example-product.jpg","imageCount": 1,"scrapedAt": "2026-09-08T00:00:00.000Z"}
Run summary example
The key-value store contains operational evidence rather than another product row:
{"status": "BLOCKED_FAIL_CLOSED","itemCount": 1,"successfulCount": 0,"diagnosticCount": 1,"diagnosticsFound": 1,"products": 0,"diagnostics": 1,"pagesFetched": 0,"dataAvailable": false,"proxyUsed": false,"fallbackUsed": false,"source": "1688.com","completedAt": "2026-09-08T00:00:00.000Z"}
Local validation
npm ci --omit=devnpm testapify validate-schemaapify run --purge --input-file .actor/input.jsonnpm run validate
The validator checks the strict marketplace schema, canonical URLs, product-scoped image URLs, thumbnail === images[0], and the absence of Actor-debugging fields. fallbackUsed is true only for the local HTML fixture path; it is not a claim that an access boundary was bypassed. Live availability can vary by region, session, and access policy; the correct response to a blocked page is a diagnostic, not fabricated product data. The diagnostic itself is intentionally small: url, error, errorCode, and scrapedAt.
Troubleshooting, API, and responsible use
ACCESS_BARRIER_LOGIN_REQUIRED, ACCESS_BARRIER_ACCESS_DENIED, ACCESS_BARRIER_ACCESS_CHALLENGE, and ACCESS_BARRIER_RATE_LIMIT mean the public route was unavailable to this run. NO_PRODUCTS means the page was reachable but no usable product record was exposed. TIMEOUT, HTTP_*, and UNEXPECTED_CONTENT_TYPE identify bounded request failures. Use the run log, OUTPUT_SUMMARY, and the dataset API link in the API tab when reporting a problem; include the run ID, sanitized input, error code, and source kind in the Actor's Issues tab.
This Actor is not affiliated with Alibaba, 1688.com, or Alibaba Group. It requests only publicly exposed pages and does not intentionally collect private account data. Users are responsible for complying with 1688's terms, robots guidance, rate limits, privacy requirements, applicable law, and any supplier-content restrictions. Do not use a proxy or developer option to evade an access boundary.