Alibaba Listings Scraper
Pricing
from $2.99 / 1,000 product listings
Alibaba Listings Scraper
The Alibaba Listings Scraper extracts paginated public product results from Alibaba for market research and supplier analysis.
Pricing
from $2.99 / 1,000 product listings
Rating
0.0
(0)
Developer
w3crawler
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
What does Alibaba Listings Scraper do?
Alibaba Listings Scraper collects public product cards from Alibaba search, country/category, and showroom pages. It parses the public HTML/JSON-LD contract observed on Alibaba's current listings surface and returns product titles, canonical links, price ranges, MOQ, supplier facts, ratings, review counts, sold/reorder signals, product-scoped media, badges, attributes, and shipping or delivery text when those values are visible.
It supports multiple search sources, observed next-page links, bounded pagination, rich filters, stable sorting, deterministic local fixtures, and standard Apify Proxy routing. It never requires an Alibaba login and does not attempt CAPTCHA solving or access-control bypass.
How to use it
- Open the Input tab.
- Enter
searchQuery, or provide one or more public AlibabasourceUrls. - Set
maxPagesandmaxItemsfor the amount of data required. - Add filters or choose
sortBywhen a focused result set is needed. - Start the Actor and open the dataset from the Output tab.
The Actor follows Alibaba's public next-page links such as /countrysearch/CN/wireless-earbuds_2.html. If a page does not expose a usable link, it uses a bounded, source-specific fallback URL. Pagination is sequential within each source; independent sources can run up to maxConcurrency in parallel.
Input
All input values are validated before a request starts. Unsafe hosts, credentials, non-HTTPS URLs, unsupported properties, invalid ranges, and unsafe fixture paths are rejected. Values are bounded rather than silently expanded.
Search sources and limits
| Input | Type | Default | Meaning |
|---|---|---|---|
searchQuery | string | wireless earbuds | Query used when no source URL is supplied. |
queries | string[] | [] | Additional independent queries. |
sourceUrls | string[] | generated from searchQuery | Public Alibaba search/category/showroom URLs. |
startUrls | string[] | [] | Compatibility alias for sourceUrls. |
maxPages | integer 1–100 | 2 | Pages per source. |
maxItems | integer 1–5000 | 100 | Final product rows after filtering, sorting, and deduplication. |
deduplicate | boolean | true | Deduplicate canonical product URLs across pages and sources. |
When sourceUrls is supplied, it takes precedence over generated query URLs. queries is useful for separate product families; the global maxItems limit is applied after all sources are collected.
Filters and sorting
| Input | Type | Meaning |
|---|---|---|
textQuery | string | Match observed title, supplier, category, badge, or selling-point text. |
currency | 3-letter string | Keep a displayed currency such as USD, INR, or EUR. |
supplierCountries | string[] | Keep observed supplier country/region codes such as CN or IN. |
minPrice, maxPrice | number | Keep overlapping advertised price ranges. |
minOrderQuantity, maxOrderQuantity | number | Keep observed MOQ values in range. |
minSupplierRating | number 0–5 | Minimum displayed rating. |
minReviewCount | integer | Minimum displayed review count. |
minSoldCount | integer | Minimum displayed sold count. |
minSupplierYears | number 0–100 | Minimum displayed Alibaba tenure. |
minReorderRatePercent | number 0–100 | Minimum displayed reorder rate. |
requiredBadges | string[] | Every value must occur in observed badge labels. |
requiredCertifications | string[] | Every value must occur in badge, selling-point, or attribute text. |
certifiedOnly | boolean | Keep cards with explicit certified/verified/assessed/Gold Supplier evidence. |
sortBy | enum | relevance, price_asc, price_desc, supplier_rating_desc, review_count_desc, sold_count_desc, supplier_years_desc, moq_asc, or title_asc. |
Unknown optional values are not guessed. A filter requiring a missing value excludes that row, while an unfiltered row keeps the remaining observed fields.
Dataset detail controls
| Input | Default | Meaning |
|---|---|---|
includeMedia | true | Keep product-scoped Alibaba CDN images, thumbnail, alt text, and count. |
includeAttributes | true | Keep observed product specification key-value pairs. |
Image extraction is intentionally strict: only image URLs associated with the product card and hosted on Alibaba's public CDN are retained. Navigation icons, flags, certification icons, unrelated recommendations, and arbitrary third-party image URLs are not promoted to imageUrl, thumbnailUrl, or imageUrls.
Developer options
| Input | Default | Range / meaning |
|---|---|---|
requestDelayMs | 1000 | 0–15000 ms before each live request. |
maxConcurrency | 2 | 1–5 independent source crawls; pages inside one source remain ordered. |
maxRequestRetries | 3 | 0–10 transient retries with bounded backoff. Challenges and unsafe redirects are not retried as a bypass. |
requestTimeoutSecs | 60 | 15–300 seconds per request. |
maxResponseBytes | 20000000 | 100000–50000000 byte response safety cap. |
proxyConfiguration | disabled | Standard Apify Proxy object with useApifyProxy, optional apifyProxyGroups, and optional apifyProxyCountry. |
userAgent | actor default | Optional transparent browser-like User-Agent. |
locale | en-US | Accept-Language locale. |
Proxy routing changes the network route only. It does not solve CAPTCHAs or bypass Alibaba access controls.
Local validation fixtures
The local parser tests load inline and Actor-relative HTML fixtures directly. Ordered fixtures cover page 1, later pages, and multi-source parsing without network access; public Actor inputs do not expose fixture overrides.
Example input:
{"searchQuery": "wireless earbuds","sourceUrls": ["https://www.alibaba.com/countrysearch/CN/wireless-earbuds.html"],"maxPages": 3,"maxItems": 50,"minPrice": 5,"maxPrice": 100,"minSupplierRating": 4.5,"requiredBadges": ["certified"],"sortBy": "price_asc","includeMedia": true,"requestDelayMs": 750,"maxConcurrency": 1,"maxRequestRetries": 2,"requestTimeoutSecs": 45,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyCountry": "US"}}
Fixture pagination example:
{"sourceUrls": ["https://www.alibaba.com/countrysearch/CN/wireless-earbuds.html"],"maxPages": 2,"maxItems": 100,"sortBy": "supplier_rating_desc","requestDelayMs": 0}
Dataset output
Normal dataset rows contain only real public product facts and provenance. They do not contain fieldCoverage, dataQuality, httpStatus, record, recordId, recordType, or run-debug wrapper fields.
Example product row:
{"title": "Acme ANC Earbuds","productId": "160000000001","productUrl": "https://www.alibaba.com/product-detail/Acme-Earbuds_160000000001.html","url": "https://www.alibaba.com/product-detail/Acme-Earbuds_160000000001.html","priceMin": 12.5,"priceMax": 18,"currency": "USD","priceText": "$12.50 - $18.00","priceFormatted": "$12.50 - $18.00","minOrderQuantity": 10,"minOrderUnit": "pieces","moqText": "MOQ: 10 pieces","supplierName": "Acme Audio Co., Ltd.","supplierProfileUrl": "https://acme-audio.en.alibaba.com/","supplierCountry": "CN","supplierYears": 8,"supplierYearsText": "8 yrs","supplierRating": 4.8,"reviewCount": 71,"reorderRatePercent": 22,"reorderRateText": "Reorder rate 22%","imageUrl": "https://s.alicdn.com/@sc04/kf/acme-1.jpg_300x300.jpg","imageUrls": ["https://s.alicdn.com/@sc04/kf/acme-1.jpg_300x300.jpg"],"thumbnailUrl": "https://s.alicdn.com/@sc04/kf/acme-1.jpg_300x300.jpg","imageCount": 1,"imageAlt": "Acme ANC Earbuds - Product Image 1","badges": ["5% off", "certified"],"promotions": ["5% off", "Delivery by 10 Oct", "Reorder rate 22%"],"sellingPoints": ["5% off", "Delivery by 10 Oct", "Reorder rate 22%", "certified"],"attributes": {},"shippingInfo": "Delivery by 10 Oct","leadTime": "Delivery by 10 Oct","deliveryEstimate": "Delivery by 10 Oct","discount": "5% off","category": "Wireless earbuds","isAd": false,"isCertified": true,"canAddToCart": false,"canChatNow": true,"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","pageTitle": "Wireless Earbuds China Trade - Alibaba.com","scrapedAt": "2026-09-06T00:00:00.000Z"}
The url alias always equals the canonical productUrl; tracking query parameters and hashes are removed. Optional values are omitted when Alibaba does not expose them. When includeMedia or includeAttributes is false, the corresponding fields are omitted.
The dataset contains only source-backed product listing records. Run metrics and operational issue counts are written to OUTPUT_SUMMARY; per-source page metadata is written to SOURCE_METADATA, and failure details stay in the run logs. A valid search with no matching products completes with status: SUCCEEDED and dataStatus: NO_RESULTS; a request/input failure before any product row fails the run. If rows were saved before a later request or optional-output failure, the run completes as SUCCEEDED with dataStatus: PARTIAL and keeps those rows.
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Output fields
| Field | Meaning |
|---|---|
title, productId, productUrl, url | Product identity and canonical public link. |
priceMin, priceMax, currency, priceText, priceFormatted | Observed advertised price range and display text. |
minOrderQuantity, minOrderUnit, moqText | Public minimum-order information. |
supplierName, supplierProfileUrl, supplierCountry, supplierYears, supplierYearsText | Supplier identity and public tenure facts. supplierProfileUrl is omitted when no supplier/company profile link was observed; the source search URL is never used as a fallback. |
supplierRating, reviewCount | Public rating and review count shown on the card. |
soldCount, transactionCount, soldText, reorderRatePercent, reorderRateText | Public sales and reorder signals when shown. |
imageUrl, imageUrls, thumbnailUrl, imageCount, imageAlt | Product-scoped public Alibaba CDN media only. |
badges, promotions, sellingPoints, attributes | Public card labels and structured specifications. |
shippingInfo, leadTime, deliveryEstimate, discount, category | Visible delivery, shipping, promotion, and category text. |
isAd, isCertified, canAddToCart, canChatNow | Card capabilities or explicit public status signals. |
sourceType, sourceUrl, pageUrl, pageNum, position, query, pageTitle | Useful source provenance, not run-debug metadata. |
scrapedAt | UTC emission timestamp. |
Pricing and cost estimation
Apify charges for compute, network usage, and storage consumed by a run. Keep maxPages, maxItems, and maxConcurrency close to the amount of data needed. Small exploratory runs are usually the most economical; review your current Apify pricing and usage limits before scheduling large collections.
Access, reliability, and troubleshooting
Alibaba can return an AWSC or other anti-automation challenge instead of product markup. The Actor fails closed and records ACCESS_BOUNDARY in operational metadata; it does not solve the challenge. Transient request failures use the configured bounded retry count. Non-HTML responses, oversized responses, and unsafe redirects are reported outside the dataset.
If a run returns no rows, inspect OUTPUT_SUMMARY and the run logs, then try a focused public country/category URL or use a respectful requestDelayMs. A page can be valid while optional fields remain absent because Alibaba rendered them only client-side or changed the visible card.
Legal and support
Collect only public pages and follow Alibaba's terms, robots policy, and applicable privacy laws. This Actor does not bypass login, paywalls, CAPTCHA, or access controls. For a reproducible issue, include the public source URL, input JSON, and relevant diagnostic code in the Issues tab.
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.