Alibaba Products Scraper
Pricing
from $2.99 / 1,000 products
Alibaba Products Scraper
Extract public Alibaba wholesale product listings, pricing, MOQ, and supplier signals for sourcing research.
Pricing
from $2.99 / 1,000 products
Rating
0.0
(0)
Developer
w3crawler
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
What does this Actor do?
This Actor collects product observations from public Alibaba.com product search, category, showroom, and product-detail pages. It combines public JSON-LD, Alibaba's embedded offer data, visible product cards, and browser-rendered pages when JavaScript is required.
It is useful for wholesale product discovery, supplier shortlisting, price and MOQ comparison, sourcing research, and building a searchable product dataset. You can process several queries or public source URLs, follow ordered pagination, deduplicate repeated products, filter by public sourcing signals, sort the result, and keep product-scoped media and supplier context.
Scope and access boundary
The Actor reads only public pages. It does not log in, use private supplier portals, call authenticated APIs, solve CAPTCHAs, spoof browser fingerprints, or bypass access controls. If Alibaba returns a challenge, robots restriction, or other access boundary, the Actor fails closed and records a numeric issue count in OUTPUT_SUMMARY with details in logs; it does not add an error or placeholder row to the Dataset.
Generated searches use Alibaba's public country-search view (/countrysearch/CN/<query>.html), which currently exposes public listing payloads without requiring the blocked trade-search shell. Explicit public trade-search URLs remain accepted, but the Actor fails closed if Alibaba challenges them. The parser accepts JSON-LD, Alibaba embedded offer payloads, and visible product-card evidence; fields are omitted when the public page does not expose them.
Run in Console
Console steps
- Open the Alibaba Products Scraper Store page.
- Click Try for free or Start and open the Input tab.
- Paste one of the JSON inputs below, or fill the form fields.
- Click Start and wait for the run to finish.
- Open the Dataset tab for product rows. Open the Key-Value Store records
OUTPUT_SUMMARYandSOURCE_METADATAfor run status, issue counts, and pagination metadata.
Cost
There is no hard-coded price in this repository. Your total cost is determined by the Apify compute, memory, storage, and optional proxy usage shown in your account and run settings. Review the Apify pricing page before a large run. Public-page delays, pagination, browser rendering, and proxy routing can increase runtime or usage.
Input
Basic search
{"queries": ["wireless earbuds", "rechargeable led work light"],"maxPages": 2,"maxProducts": 100,"sortBy": "relevance"}
Multiple public sources
{"sourceUrls": [{"url": "https://www.alibaba.com/countrysearch/CN/wireless-earbuds.html"},{"url": "https://www.alibaba.com/countrysearch/CN/led-work-light.html"}],"maxPages": 3,"deduplicate": true,"maxProducts": 250}
Filters and sorting
{"queries": ["wireless earbuds"],"minPrice": 20,"maxPrice": 800,"minMoq": 10,"maxMoq": 500,"supplierCountries": ["CN", "China"],"minProductRating": 4.5,"minReviewCount": 10,"minSupplierYears": 3,"requiredBadges": ["certified"],"tradeAssurance": true,"verifiedSupplier": true,"sortBy": "rating_desc"}
Supported sortBy values are relevance, price_asc, price_desc, moq_asc, moq_desc, rating_desc, reviews_desc, sold_desc, supplier_years_desc, supplier_name_asc, and title_asc.
Advanced and proxy options
{"queries": ["wireless earbuds"],"renderJavaScript": true,"requestDelayMs": 1000,"maxConcurrency": 2,"maxRequestRetries": 3,"requestTimeoutSecs": 60,"browserWaitMs": 1500,"proxyConfiguration": {"useApifyProxy": true}}
Proxy routing is optional. It changes the network route only; it is not a CAPTCHA, login, or access-control bypass. Use the standard Apify Proxy setting unless you have a documented reason to supply a public custom proxy URL. Respect Alibaba's terms and robots policy.
Local QA inputs
The fixture fields are for deterministic local validation and are rejected in Cloud runs. They never replace a public Alibaba source in a production run.
{"sourceUrls": [{"url": "http://127.0.0.1:8771/products.html"}],"renderJavaScript": false,"requestDelayMs": 0,"maxPages": 2,"maxProducts": 10}
Complete input reference
All supported keys are listed below. Compatibility aliases normalize to the canonical key shown in the description.
| Key | Type and purpose |
|---|---|
queries | Array of up to 25 search strings. Defaults to wireless earbuds. |
searchQuery | Primary query string used as source context. |
sourceUrls | Array of public Alibaba result/detail URLs. |
startUrls, searchUrls, urls | Compatibility aliases for sourceUrls. |
url | Compatibility alias for one source URL. |
startPage | First page number, 1–1000; default 1. |
start_page | Compatibility alias for startPage. |
maxPages | Maximum pages per source, 1–100; default 2. |
max_pages | Compatibility alias for maxPages. |
maxProducts | Maximum product rows after deduplication, filters, and sorting, 1–5000; default 300. |
max_products, maxItems, max_items | Compatibility aliases for maxProducts. |
sortBy | relevance, price_asc, price_desc, moq_asc, moq_desc, rating_desc, reviews_desc, sold_desc, supplier_years_desc, supplier_name_asc, or title_asc. |
textQuery | Case-insensitive text filter over observed title, supplier, location, category, badge, promotion, and description text. |
supplierCountries | Array of country or region text filters. |
countries | Compatibility alias for supplierCountries. |
currency | Three-letter currency filter such as USD, EUR, INR, or CNY. |
minPrice, price_min | Minimum observed price-range threshold and alias. |
maxPrice, price_max | Maximum observed price-range threshold and alias. |
minMoq, moqMin, moq_min | Minimum observed MOQ threshold and aliases. |
maxMoq, moqMax, moq_max | Maximum observed MOQ threshold and aliases. |
minSupplierRating | Minimum observed supplier rating from 0 to 5. |
minProductRating | Minimum observed product rating from 0 to 5. |
minReviewCount | Minimum public review count. |
minSoldCount | Minimum public sold/order count. |
minSupplierYears | Minimum observed supplier years. |
minReorderRatePercent | Minimum observed reorder rate from 0 to 100. |
requiredBadges | Array of badge or selling-point fragments; every requested value must match. |
requiredCertifications | Array of certification fragments; every requested value must match. |
tradeAssurance, trade_assurance | Keep only public Trade Assurance evidence and alias. |
verifiedSupplier, verified_supplier | Keep only public verified-supplier evidence and alias. |
alibabaGuaranteed, alibaba_guaranteed | Keep only public Alibaba Guaranteed evidence and alias. |
certifiedOnly | Keep only publicly certified products. |
deduplicate | Merge repeated product IDs or canonical URLs; default true. |
includeMedia | Include product-scoped public CDN media; default true. |
includeAttributes | Include attributes, variations, and specifications; default true. |
includeSupplierDetails | Include supplier identity, profile, country, ratings, badges, and trust signals; default true. |
renderJavaScript, useBrowser | Use Chromium for dynamic pages, or its compatibility alias; default true. |
requestDelayMs, pageDelayMs | Delay before each public request in milliseconds, 0–15000. |
maxConcurrency, concurrency | Maximum independent sources processed at once, 1–5. |
maxRequestRetries, maxRetries | Maximum retries for transient failures, 0–10. |
requestTimeoutSecs, timeoutSecs | Per-request timeout in seconds, 15–300. |
requestTimeoutMs | Millisecond compatibility alias for the timeout. |
maxResponseBytes, maxBytes | Safety cap for downloaded/rendered HTML, 100000–50000000 bytes. |
browserWaitMs, renderWaitMs | Additional browser wait after DOM content loads, 0–10000 milliseconds. |
proxyConfiguration | Object with useApifyProxy, optional apifyProxyGroups, apifyProxyCountry, or public proxyUrls. Proxying does not bypass access controls. |
userAgent | Optional transparent User-Agent override for public requests. Do not use it to impersonate a browser or evade controls. |
locale | Browser locale such as en-US; default en-US. |
Output dataset
Record families
The Dataset contains source-backed product observations only. Product values are observed facts, not inferred guarantees. Optional values are omitted when Alibaba does not expose them; blocked pages, extraction failures, and successful empty results do not create Dataset rows.
Product fields cover identity and provenance (title, name, productId, productUrl, url, sourceType, sourceUrl, pageUrl, pageNum, position, query), commercial values (price, priceMin, priceMax, currency, priceFormatted, moq, minimumOrderQuantity, minimumOrderUnit), supplier values (supplierName, companyName, supplierProfileUrl, supplierCountry, supplierLocation, supplierYears, yearsAsGoldSupplier, supplierRating, supplierServiceScore), public demand/trust signals, product media, attributes, variations, specifications, delivery text, promotions, selling points, badges, category, description, and scrapedAt.
Images are restricted to product-scoped public Alibaba CDN assets. Country flags, UI icons, logos, and unrelated assets are excluded.
Rich product example
{"title": "Compact Wireless Earbuds","name": "Compact Wireless Earbuds","productId": "1601234567890","productUrl": "https://www.alibaba.com/product-detail/Compact-Wireless-Earbuds_1601234567890.html","url": "https://www.alibaba.com/product-detail/Compact-Wireless-Earbuds_1601234567890.html","sourceType": "alibaba_product_search","sourceUrl": "https://www.alibaba.com/countrysearch/CN/wireless-earbuds.html","pageUrl": "https://www.alibaba.com/countrysearch/CN/wireless-earbuds.html","pageNum": 1,"position": 1,"query": "wireless earbuds","price": 100,"priceMin": 100,"priceMax": 120,"currency": "INR","priceFormatted": "₹100.00-120.00","moq": 10,"minimumOrderQuantity": 10,"minimumOrderUnit": "pieces","supplierName": "Compact Audio Co., Ltd.","companyName": "Compact Audio Co., Ltd.","supplierProfileUrl": "https://compact.en.alibaba.com/company_profile.html","supplierCountry": "CN","supplierYears": 8,"productRating": 4.8,"reviewCount": 20,"soldCount": 5,"reorderRatePercent": 35,"mainImage": "https://s.alicdn.com/@sc04/kf/compact-main.jpg_300x300.jpg","images": ["https://s.alicdn.com/@sc04/kf/compact-main.jpg_300x300.jpg","https://s.alicdn.com/@sc04/kf/compact-side.jpg_300x300.jpg"],"imageCount": 2,"badges": ["Reorder rate 35%", "certified"],"badgeTexts": ["Reorder rate 35%", "certified"],"isCertified": true,"isVerifiedSupplier": true,"isAd": true,"canAddToCart": true,"canChatNow": true,"scrapedAt": "2026-09-08T10:00:00.000Z"}
Fallback product example
When only the product identity and public link are available, the Actor emits a valid smaller product row and omits unavailable commercial, supplier, and media fields.
{"title": "USB-C Earbuds","name": "USB-C Earbuds","productUrl": "https://www.alibaba.com/product-detail/USB-C-Earbuds_1601234567891.html","url": "https://www.alibaba.com/product-detail/USB-C-Earbuds_1601234567891.html","sourceType": "alibaba_product_search","sourceUrl": "https://www.alibaba.com/countrysearch/CN/wireless-earbuds.html","pageUrl": "https://www.alibaba.com/countrysearch/CN/wireless-earbuds.html","pageNum": 1,"position": 2,"query": "wireless earbuds","scrapedAt": "2026-09-08T10:00:00.000Z"}
Operational issue counts
When a source request fails, OUTPUT_SUMMARY keeps the numeric issue count and the run logs contain failure details. Operational issues are never written as Dataset rows or stored as detailed key-value records.
Run summary example
The OUTPUT_SUMMARY and compatibility OUTPUT records contain run metrics, not product rows:
{"status": "SUCCEEDED","runStatus": "SUCCEEDED","dataStatus": "PARTIAL","recordCount": 24,"diagnosticItems": 0,"diagnosticCount": 1,"recordsEmitted": 24,"requests": 6,"retries": 1,"successfulRequests": 5,"failedRequests": 1,"sourcesProcessed": 2,"pagesProcessed": 6,"candidatesFound": 31,"uniqueProducts": 27,"filteredOutCount": 3,"rejectedInputCount": 0,"queries": ["wireless earbuds","led work light"],"maxProducts": 100,"maxPages": 3,"sortBy": "relevance","deduplicate": true,"renderJavaScript": true,"maxConcurrency": 2,"proxyEnabled": false,"fixtureMode": false,"completedAt": "2026-09-08T10:00:00.000Z"}
Key-Value Store artifacts
OUTPUT_SUMMARY: run status and counters.OUTPUT: compatibility copy of the summary.SOURCE_METADATA: per-source request, retry, failure, and page metadata.
The product Dataset intentionally excludes Actor instrumentation, HTTP internals, transport metadata, debugging wrappers, and run counters.
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Troubleshooting
The Dataset contains no products
Check OUTPUT_SUMMARY, SOURCE_METADATA, and the run logs. ACCESS_BOUNDARY, HTTP 401/403/429/451, CAPTCHA/challenge text, off-host redirects, and robots/access restrictions are fail-closed outcomes. When source-backed products were parsed but filters remove all of them, the run completes with status: SUCCEEDED and dataStatus: NO_RESULTS. If no product evidence can be parsed, the run reports an extraction failure; a request or extraction failure without saved products fails the run. Reduce request volume, verify that the source is public, and follow Alibaba's terms; do not add login or bypass logic.
The run returns no products
Check that the query or sourceUrls points to a public Alibaba result/detail route. Remove restrictive filters, increase maxPages, or inspect SOURCE_METADATA and the run logs to distinguish a valid empty result from an extraction failure.
A field is missing
Missing values mean the public page did not expose that field in the supported JSON-LD, embedded offer, or visible-card structures. The Actor does not fabricate values. Use includeMedia, includeAttributes, and includeSupplierDetails to control optional output groups.
A local fixture is rejected
Local parser tests use checked-in HTML fixtures. Public Actor inputs use Alibaba URLs and do not expose fixture overrides; Cloud runs always request the public source.
Browser rendering is unavailable
Set renderJavaScript to false only when the source is static HTML or for local fixtures. Browser startup failures are reported in logs and the Key-Value Store; no access-control bypass is attempted.
API and support
The Apify API documentation describes programmatic runs and Dataset downloads. The Actor API identifier is devcake~alibaba-products-scraper.
curl -X POST "https://api.apify.com/v2/acts/devcake~alibaba-products-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"queries":["wireless earbuds"],"maxProducts":25}'
For support or an issue report, use the Actor Store page and include the run ID, input, status, and relevant failure details from run logs. Do not include credentials or private supplier data.
Privacy, legal, and affiliation
This Actor requests public Alibaba pages and stores the resulting observations in your Apify Dataset and Key-Value Store. It does not request or store Alibaba credentials. You are responsible for using the Actor lawfully, respecting Alibaba's terms, robots directives, applicable privacy rules, and any rights attached to the collected content.
This Actor is an independent community tool and is not affiliated with, endorsed by, or sponsored by Alibaba.com or Alibaba Group. Product, supplier, price, rating, and availability values are public observations at scrape time and are not guarantees.
Local validation
npm installapify validate-schemanpm testapify run --purge --input-file ./test/inputs/pagination.jsonnpm run validate
The repository's QA inputs exercise default fields, pagination, multiple sources, filters and sorting, media opt-out, developer options, successful empty output, and fail-closed errors without requiring a live Alibaba request. Issue counts stay in the run summary, and details stay in run logs.
Run summaries include the required status, runStatus, and dataStatus fields. status and runStatus are SUCCEEDED when source-backed rows were saved or a run completed cleanly with no matches; they are FAILED only when a real failure occurs before any rows are saved. dataStatus is COMPLETE, PARTIAL, NO_RESULTS, or FAILED. Failure details stay in the run logs; key-value summaries retain counts only.