Alibaba B2B Product Scraper
Pricing
from $2.99 / 1,000 b2b products
Alibaba B2B Product Scraper
Direct public SSR/JSON-LD scraper for Alibaba.com B2B product listings, including MOQ, prices, supplier ratings, and bounded product metadata.
Pricing
from $2.99 / 1,000 b2b products
Rating
0.0
(0)
Developer
w3crawler
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
7 days ago
Last modified
Categories
Security
Limited permissionsShare
Browser-first extraction for public Alibaba.com product search and product-detail pages. The Actor supports rich product fields, multiple sources, bounded pagination, global filtering/sorting/deduplication, optional product-detail enrichment, Apify Proxy routing, and fail-closed run status reporting.
Get started
- Open the Actor Store page and select Try for free or open the Input tab.
- Set
keyword, or supplystartUrls/sourceUrlswith public Alibaba search or product-detail URLs.countryis fixed toglobalin the current Actor. - Keep
maxItemsandmaxPagessmall for the first run. EnableincludeDetailsonly when you need description, brand, SKU, or attribute enrichment. - Start the Actor, open the dataset, and export the saved records as JSON, CSV, or Excel. Open Run summary (
OUTPUT_SUMMARY) to check the outcome and counts.
Input
All fields are optional; the defaults below are ready to use. Unsupported field names and out-of-range values are rejected before requests start.
| Field | Type | Required? | Default | Meaning |
|---|---|---|---|---|
keyword | string | Optional | wireless earbuds | Product phrase used for the default Alibaba search URL. Canonical field; keyword/query aliases are accepted for compatibility. 1–200 characters. |
startUrls | object array | Optional | Not supplied | Optional public Alibaba.com trade-search, country-search, or product-detail URLs. Country-search pagination follows Alibaba's numbered page URLs. Multiple sources are crawled with one global maxItems cap. up to 20 items. |
sourceUrls | object array | Optional | Not supplied | Compatibility alias for startUrls. If both are supplied, startUrls are processed first. up to 20 items. |
sourceUrl | string | Optional | Not supplied | Compatibility alias for one public Alibaba.com URL. It is appended after startUrls/sourceUrls. |
searchUrl | string | Optional | Not supplied | Compatibility alias for one public Alibaba.com search URL. |
keywords | string | Optional | Not supplied | Compatibility alias for keyword; canonical keyword takes precedence. |
searchQuery | string | Optional | Not supplied | Compatibility alias for keyword. |
query | string | Optional | Not supplied | Compatibility alias for keyword. |
queries | string array | Optional | Not supplied | Compatibility alias; the first non-empty query is used. up to 20 items. |
country | string enum | Optional | global | Configured market. The current actor supports the public global Alibaba.com catalog. |
locale | string enum | Optional | en-US | Locale used for browser and HTTP Accept-Language headers. Alibaba may still choose the displayed currency/catalog. Allowed values: "en-US", "en-GB", "de-DE", "fr-FR", "es-ES", "it-IT", "pt-BR", "ja-JP", "ko-KR", "zh-CN". |
maxItems | integer | Optional | 40 | Global maximum number of product rows across all sources and pages. Diagnostics do not consume this product cap. 1–500. |
maxPages | integer | Optional | 3 | Per-source page bound. Use 0 to follow observed next-page links up to the actor hard cap of 100 pages. 0–100. |
max_products | integer | Optional | Not supplied | Compatibility alias for maxItems. 1–500. |
maxProducts | integer | Optional | Not supplied | Compatibility alias for maxItems. 1–500. |
max_pages | integer | Optional | Not supplied | Compatibility alias for maxPages. 0–100. |
sortBy | string enum | Optional | best_match | Global sort applied after all requested sources/pages are collected. Missing values sort after populated values. Allowed values: "best_match", "transaction_level", "price_asc", "price_desc", "rating_desc", "reviews_desc", "sold_desc", "supplier_years_desc". |
excludeAds | boolean | Optional | false | Discard cards that Alibaba labels as ads. |
certifiedOnly | boolean | Optional | false | Keep only cards displaying Alibaba certification text/badges. |
supplierCountry | string | Optional | any | Optional displayed supplier country/region code such as CN or IN. Use any for all countries. |
supplierLocation | string | Optional | Not supplied | Optional case-insensitive match against publicly exposed supplier location/country text. up to 120 characters. |
minPrice | number | Optional | Not supplied | Keep products whose displayed price range reaches this value. No currency conversion is performed. |
maxPrice | number | Optional | Not supplied | Keep products whose displayed price range overlaps this value. No currency conversion is performed. |
minOrderQuantity | number | Optional | Not supplied | Keep products with a displayed minimum order quantity at or above this value. at least 1. |
minSupplierRating | number | Optional | Not supplied | Keep products with a displayed supplier rating at or above this five-point value. 0–5. |
minReviewCount | integer | Optional | Not supplied | Keep products with at least this displayed supplier review count. at least 0. |
minSoldCount | integer | Optional | Not supplied | Keep products with at least this publicly displayed sold count. at least 0. |
minReorderRatePercent | number | Optional | Not supplied | Keep products with a displayed reorder rate at or above this percentage. 0–100. |
requiredBadges | string array | Optional | Not supplied | Keep products whose normalized badge text includes every listed value, for example certified. up to 10 items. |
includeMedia | boolean | Optional | true | Include validated public Alibaba CDN imageUrl, thumbnail, images, imageUrls, imageCount, and imageAlt fields. |
includeDetails | boolean | Optional | false | After selecting products, visit up to maxDetailItems public product-detail pages for description, brand, SKU, attributes, detail images, availability, price, rating, and canonical metadata. |
maxDetailItems | integer | Optional | 40 | Bound the number of optional product-detail visits. Detail failures remain attached to the base product row. 0–500. |
include_details | boolean | Optional | Not supplied | Compatibility alias for includeDetails. |
deduplicate | boolean | Optional | true | Suppress repeated product IDs across pages and sources. |
requestDelayMs | integer | Optional | 1000 | Delay before each browser/HTTP page request. Use a bounded value that respects the source. 0–15000. |
pageDelayMs | integer | Optional | Not supplied | Compatibility alias for requestDelayMs. 0–15000. |
maxConcurrency | integer | Optional | 2 | Maximum concurrent browser requests for search/detail crawling. 1–5. |
maxRequestRetries | integer | Optional | 3 | Retries for transient browser/HTTP failures. Access barriers are not bypassed or retried as a workaround. 0–10. |
requestTimeoutSecs | integer | Optional | 60 | Per-navigation and HTTP request timeout. 15–300. |
navigationTimeoutSecs | integer | Optional | Not supplied | Compatibility alias for requestTimeoutSecs. 15–300. |
timeoutMs | integer | Optional | Not supplied | Compatibility alias for requestTimeoutSecs. 15000–300000. |
requestHandlerTimeoutSecs | integer | Optional | 300 | Maximum allowed time for one Crawlee request handler, including page extraction. 60–900. |
selectorTimeoutSecs | integer | Optional | 30 | Reserved compatibility option for selector readiness checks. 5–120. |
proxyConfiguration | object | Optional | Not supplied | Optional standard Apify Proxy routing for public requests. Proxying changes the route only; it does not solve CAPTCHA or bypass access controls. |
verified_supplier | boolean | Optional | Not supplied | Compatibility alias for certifiedOnly. |
alibaba_guaranteed | boolean | Optional | Not supplied | Compatibility alias for certifiedOnly. |
price_min | number | Optional | Not supplied | Compatibility alias for minPrice. at least 0. |
price_max | number | Optional | Not supplied | Compatibility alias for maxPrice. at least 0. |
moq_min | number | Optional | Not supplied | Compatibility alias for minOrderQuantity. at least 1. |
Default input:
{"keyword": "led light","maxItems": 10,"maxPages": 2,"sortBy": "best_match","includeMedia": true,"includeDetails": false,"deduplicate": true,"requestDelayMs": 1000,"maxConcurrency": 2,"maxRequestRetries": 3,"requestTimeoutSecs": 60,"requestHandlerTimeoutSecs": 300,"proxyConfiguration": {"useApifyProxy": false}}
The shipped example input uses smaller limits and the query led light; the schema default query remains wireless earbuds. The Actor reads public Alibaba.com search, country-search, and product-detail pages through a browser with a bounded HTTP/SSR fallback. startUrls, sourceUrls, sourceUrl, searchUrl, the keyword aliases, and the limit aliases are compatibility inputs; the canonical fields win when both forms are supplied. Optional proxyConfiguration uses standard Apify Proxy settings and changes only the request route. The Actor does not sign in, solve CAPTCHA, or bypass an access control.
Output
The dataset contains one row per public product card that resolves to an Alibaba product URL. Repeated product IDs are suppressed when deduplicate is enabled. Alias fields duplicate canonical values for compatibility; they are not separate observations. Optional information appears only when the source publishes it; missing values are omitted rather than inferred, and no diagnostic or placeholder rows are written.
| Field | Type | Availability | Meaning |
|---|---|---|---|
url | string | Always | Canonical product URL; the record identity. |
productUrl | string | Always | Canonical public Alibaba product-detail URL; required in every row. |
productId | string | When published | Public Alibaba product identifier. |
title | string | Always | Product title shown on the public card. |
name | string | Always | Title alias retained for compatibility; normally equals title. |
source | string | When published | Marketplace label; Alibaba.com for this Actor. |
sourceUrl | string | Always | Public search or detail page from which the row was observed. |
pageNumber | integer | When published | Source result page on which the card appeared. |
pageNum | integer | When published | Alias of pageNumber. |
position | integer | When published | One-based position on the source page or in the emitted result order. |
keyword | string | When published | Search phrase that produced the source page. |
country | string | When published | Configured market; global for this Actor. |
locale | string | When published | Locale used for the request. |
price | string | When published | Price text exactly as displayed, including the currency symbol. |
priceFormatted | string | When published | Normalized price text such as USD 3.43-7.16. |
priceMin | number | When published | Lower bound of the displayed price range. |
priceMax | number | When published | Upper bound of the displayed price range. |
currency | string | When published | Currency code parsed from the displayed price. |
minimumOrderQuantity | number | When published | Numeric minimum order quantity. |
minimumOrderUnit | string | When published | Unit associated with the MOQ, such as pieces or meters. |
moq | string | When published | Displayed minimum-order text combining quantity and unit. |
supplierName | string | When published | Supplier or company name shown on the card. |
companyName | string | When published | Alias of supplierName. |
supplierSlug | string | When published | Supplier host label used in the public profile URL. |
supplierId | string | When published | Public supplier identifier. |
companyId | string | When published | Alias of supplierId. |
supplierProfileUrl | string | When published | Public supplier company-profile URL. |
supplierHomepage | string | When published | Public supplier product-list or home page URL. |
supplierCountry | string | When published | Supplier country or region code. |
supplierLocation | string | When published | Supplier location text shown on the card. |
supplierYears | number | When published | Supplier tenure in years. |
supplierYearsText | string | When published | Original tenure label, such as 13. |
supplierRating | number | When published | Supplier rating out of five. |
productRating | number | When published | Product rating out of five when shown separately. |
supplierReviewCount | number | When published | Review count attributed to the supplier. |
reviewCount | number | When published | Review count shown on the product card. |
productScore | number | When published | Product score shown by Alibaba. |
shippingScore | number | When published | Shipping score shown by Alibaba. |
starLevel | number | When published | Supplier star level. |
soldCount | number | When published | Units sold as displayed. |
soldText | string | When published | Original sold-count text, including separators. |
reorderRatePercent | number | When published | Reorder rate as a percentage. |
reorderRateText | string | When published | Original reorder-rate text. |
deliveryText | string | When published | Delivery or dispatch text shown on the card. |
leadTime | string | When published | Lead-time text shown on the card. |
shippingInfo | string | When published | Shipping information shown on the card. |
isAd | boolean | When published | True when the card was labeled as an advertisement. |
isCertified | boolean | When published | True when a certification or verification signal was visible. |
certified | boolean | When published | Alias of isCertified. |
canAddToCart | boolean | When published | True when the public card exposed add-to-cart. |
canChatNow | boolean | When published | True when the public card exposed chat. |
badges | string array | When published | Normalized badge labels shown on the card. |
badgeTexts | string array | When published | Alias of badges. |
badgeCount | integer | When published | Number of normalized badge labels. |
promotions | string array | When published | Promotion labels shown on the card. |
sellingPoints | string array | When published | Selling-point text shown on the card. |
imageUrl | string | When published | Primary product image URL on the Alibaba CDN. |
thumbnail | string | When published | Primary image alias; equals images[0] when media is present. |
images | string array | When published | Product-scoped Alibaba CDN image URLs. |
imageUrls | string array | When published | Alias of images. |
imageCount | integer | When published | Number of product images retained. |
imageAlt | string | When published | Alt text published with the primary image. |
supplierLogo | string | When published | Supplier logo URL. |
companyLogo | string | When published | Alias of supplierLogo. |
description | string | When detail enrichment returns it | Product description from the public detail page. |
brand | string | When detail enrichment returns it | Brand from the public detail page. |
sku | string | When detail enrichment returns it | SKU or MPN from the public detail page. |
manufacturer | string | When detail enrichment returns it | Manufacturer from the public detail page. |
category | string | When detail enrichment returns it | Product category from the public detail page. |
attributes | object array | When detail enrichment returns it | { name, value } specification pairs. |
detailImageUrls | string array | When detail enrichment returns it | Additional image URLs from the detail page. |
availability | string | When detail enrichment returns it | Availability text from the detail page. |
detailPrice | number | When detail enrichment returns it | Numeric price parsed from the detail page. |
detailCurrency | string | When detail enrichment returns it | Currency for detailPrice. |
detailRating | number | When detail enrichment returns it | Rating parsed from the detail page. |
detailReviewCount | number | When detail enrichment returns it | Review count parsed from the detail page. |
detailCanonicalUrl | string | When detail enrichment returns it | Canonical URL declared by the detail page. |
keywordMatchScore | number | When published | Observed title/keyword match score; 1 is a direct match. |
scrapedAt | string | Always | Time the product row was saved, in ISO UTC. |
The example below is a real saved row from the 2026-10-25 run, limited to fields declared in the dataset schema and to core fields for readability.
{"productUrl": "https://www.alibaba.com/product-detail/50W-100W-4ft-8ft-V-Shape_1600939543957.html","scrapedAt": "2026-10-25T20:41:48.023Z","url": "https://www.alibaba.com/product-detail/50W-100W-4ft-8ft-V-Shape_1600939543957.html","productId": "1600939543957","title": "Super Bright 50W 100W 4ft 8ft V Shape Integrated T8 Led Tube Light Shop Lighting Led Light for for Garage Warehouse Workshop","name": "Super Bright 50W 100W 4ft 8ft V Shape Integrated T8 Led Tube Light Shop Lighting Led Light for for Garage Warehouse Workshop","source": "Alibaba.com","sourceUrl": "https://www.alibaba.com/countrysearch/CN/led-light.html","pageNumber": 1,"pageNum": 1,"position": 1,"price": "US $3.43-$7.16","priceFormatted": "USD 3.43-7.16","priceMin": 3.43,"priceMax": 7.16,"currency": "USD","minimumOrderQuantity": 100,"minimumOrderUnit": "pieces","moq": "100 pieces","supplierName": "Zhongshan Aier Lighting Technology Co., Ltd.","companyName": "Zhongshan Aier Lighting Technology Co., Ltd.","supplierId": "230926674"}
price is the raw displayed text, while priceMin and priceMax are the parsed bound values. attributes entries contain name and value. Detail fields appear only when includeDetails is enabled and the public detail page returns them. Alias fields repeat their canonical counterparts and are not separate measurements.
Run summary
Run summary is stored separately from the dataset in the run's key-value store under OUTPUT_SUMMARY; the saved run also contains an OUTPUT compatibility alias with the same values.
| Field | Meaning |
|---|---|
status | Actor process outcome: SUCCEEDED or FAILED. |
keyword | Canonical search phrase used when no explicit source URL was supplied. |
country | Configured market; the current Actor supports global only. |
locale | Locale sent to Alibaba pages for the run. |
startUrlCount | Number of resolved source URLs used by the run. |
startUrls | The public search or product URLs actually processed. |
itemCount | Rows saved to the dataset. |
productCount | Product cards collected from the sources before the row is saved. |
successfulItems | Product rows saved successfully; normally equals productCount. |
diagnosticItems | Diagnostic dataset rows; always 0 because operational issues are not written as products. |
diagnosticCount | Operational issues recorded for the run. |
blockedCount | Source responses stopped by an access block. |
noResultsCount | Sources or pages that completed without a usable product. |
pagesFetched | Public source pages fetched. |
searchPagesProcessed | Search result pages parsed for product cards. |
filteredOutCount | Cards removed by the price, MOQ, rating, badge, or location filters. |
detailRequested | Product-detail pages requested by optional enrichment. |
detailSucceeded | Detail pages parsed and merged into a product row. |
detailFailed | Detail pages that failed; the base product row is retained. |
maxItems | Global product-row limit used for the run. |
maxPages | Per-source page limit used for the run. |
sortBy | Global sort applied after collection. |
deduplicate | Whether repeated product IDs were suppressed. |
includeMedia | Whether media fields were requested. |
includeDetails | Whether optional product-detail enrichment was requested. |
requestDelayMs | Delay used before each browser or HTTP request. |
maxConcurrency | Concurrent browser request limit used for the run. |
maxRequestRetries | Retry limit for transient failures. |
requestTimeoutSecs | Per-navigation and HTTP request timeout. |
requestHandlerTimeoutSecs | Time budget for one source/page request handler. |
usedProxy | Whether Apify Proxy routing was used. |
fallbackUsed | Whether the bounded HTTP/SSR fallback was used after a browser problem. |
dataAvailable | Whether at least one source-backed product row was saved. |
source | Marketplace label; Alibaba.com for this Actor. |
sourceWebsite | Marketplace home page for the run. |
completedAt | Time the summary was written, in ISO UTC. |
runStatus | Canonical run status; always matches status. |
dataStatus | Completeness of source-backed dataset rows. |
failedRequests | Optional count of failed source requests when the run records one. |
failedPages | Optional count of source pages that failed. |
| Status | Data status | Meaning |
|---|---|---|
SUCCEEDED | COMPLETE | Eligible results were saved without an extraction problem. |
SUCCEEDED | PARTIAL | Some results were saved, but a later problem prevented a complete run. Saved rows remain available. |
SUCCEEDED | NO_RESULTS | The source completed cleanly and returned no matching results. |
FAILED | FAILED | A fatal error occurred before any usable result was saved. |
Example OUTPUT from the saved run:
{"status": "SUCCEEDED","keyword": "led light","country": "global","locale": "en-US","startUrlCount": 1,"startUrls": ["https://www.alibaba.com/countrysearch/CN/led-light.html"],"itemCount": 3,"productCount": 3,"successfulItems": 3,"diagnosticItems": 0,"diagnosticCount": 0,"blockedCount": 0,"noResultsCount": 0,"pagesFetched": 1,"searchPagesProcessed": 1,"filteredOutCount": 0,"detailRequested": 0,"detailSucceeded": 0,"detailFailed": 0,"maxItems": 3,"maxPages": 1,"sortBy": "best_match","deduplicate": true,"includeMedia": true,"includeDetails": false,"requestDelayMs": 0,"maxConcurrency": 2,"maxRequestRetries": 3,"requestTimeoutSecs": 60,"requestHandlerTimeoutSecs": 300,"usedProxy": true,"fallbackUsed": true,"dataAvailable": true,"source": "Alibaba.com","sourceWebsite": "https://www.alibaba.com/","completedAt": "2026-10-25T20:41:48.246Z","runStatus": "SUCCEEDED","dataStatus": "COMPLETE"}
Coverage and limitations
The Actor reads public Alibaba.com search and product-detail pages. It does not sign in, access private supplier data, solve CAPTCHA, or bypass an access control. Coverage is limited to the cards and detail modules Alibaba returns for the supplied keyword or URLs; the global catalog is the only supported market. Detail fields such as description, brand, sku, attributes, detail images, and detail price appear only when includeDetails is enabled and the public detail page parses. Card prices, MOQ, ratings, sold counts, and supplier facts are point-in-time values and can change after the run.
Proxy routing only changes the transport. Blocked, empty, or partial responses are reported in OUTPUT_SUMMARY and logs rather than represented as products. Optional fields are omitted when the source does not publish them, and alias fields are not used to invent missing values. If a detail request fails, the base product row remains available and the failure is counted in the summary.
Usage and support
Run cost depends on Apify compute, the number of source requests, and any optional proxy or browser usage. Start with small item and page limits, inspect the dataset and run summary, then scale gradually. See the Actor's Pricing tab for current account rates. Use the Actor Issues page to report a problem. Include the run ID, the input used, and the run summary; do not include tokens, cookies, or private data. This Actor is not affiliated with Alibaba. Use it only for public data and in accordance with the source's terms, robots guidance, and applicable law. Public pages can contain personal information; use the output only for lawful purposes.