AliExpress Scraper
Pricing
$1.00 / 1,000 results
AliExpress Scraper
Search public AliExpress product listings by keyword. Export prices, discounts, ratings, sales, shipping origin, images, and result metadata with filters and pagination.
Pricing
$1.00 / 1,000 results
Rating
0.0
(0)
Developer
MLG Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape AliExpress search results by product keyword and export product listings to JSON, CSV, or Excel. This AliExpress search data extractor is a practical API alternative for collecting displayed prices, discounts, ratings, sold counts, images, shipping origin, and links from public product cards.
Enter one or more search terms, choose a result order, and set the number of matching products to collect for each term. The scraper reads the structured product data supplied with each public search page, follows additional result pages when needed, removes duplicate products within a keyword, and saves one flat record per listing. You can apply price, rating, and order-count thresholds without opening individual product pages.
What data can you extract from AliExpress?
Each output row describes a product card as it appeared for one keyword at the time of the run. Fields are flat so they can be filtered, grouped, or joined by productId after export. A field may be null when the search card does not supply that detail. Promotional labels and images are arrays because a card can contain several of each.
| Field | Description | Example |
|---|---|---|
| keyword | Input search term that produced the listing | laptop stand |
| page | Search result page, starting at one | 1 |
| position | Position on that page, starting at one | 1 |
| productId | Listing identifier used in the product URL | 3256810573092072 |
| productTitle | Product title displayed on the card | Set of 2 Adjustable Laptop Supports |
| productUrl | Direct product page URL | https://www.aliexpress.com/item/3256810573092072.html |
| imageUrl | Main product image URL | https://ae-pic-a1.aliexpress-media.com/kf/S8f0680dee13e44f6bd9cf823256805633.jpg |
| additionalImages | Other image URLs supplied with the card | Array of image URLs |
| price | Numeric displayed sale price | 1.09 |
| originalPrice | Numeric original price when supplied | 3.85 |
| currency | Currency code for the displayed price | USD |
| formattedPrice | Price exactly as formatted in the listing data | US $1.09 |
| discount | Displayed percentage reduction | -71% |
| rating | Displayed star rating | 4.9 |
| orders | Sold count from the card's structured data | 33480 |
| soldLabel | Rounded sold count printed on the card | 10,000+ sold |
| shipping | Free-shipping label when visible as text | Free shipping |
| shippingFrom | Shipping origin country code when supplied | CN |
| tags | Visible text promotions and offer labels | New shoppers save $2.76 |
| isTopRated | True when the displayed rating is at least 4.8 | true |
| productType | Site classification of the result | natural |
| isSponsored | True when the site classifies the card as an ad | false |
| totalResults | Site-reported approximate result count | 11751 |
| searchUrl | Search page that contained the listing | Search URL with sort parameters |
| scrapedAt | Time the listing was parsed, in UTC | 2026-09-27T19:51:34.673647+00:00 |
The numeric orders value can be more precise than soldLabel. In the verified example, the card displayed “10,000+ sold” while its structured count was 33,480. Use orders for numeric comparisons and soldLabel when you need to reproduce the visible card wording. Product prices may reflect a temporary promotion, a new-customer condition, or the region assigned to the request. Treat price as a snapshot of the search listing, not as a guaranteed checkout amount.
How to scrape AliExpress search results
- Enter one or more product phrases in Search keywords. A phrase such as “laptop stand” searches the corresponding public product results page.
- Choose Sort results. Best match keeps the site's relevance order. Most orders and the two price options request those orders from the site. Top rated sorts the fetched pages by displayed rating.
- Set Max items per keyword and Max pages per keyword. Start with 40 items and two pages if you want a quick sample. Increase the page limit when filters are narrow.
- Optionally enter a minimum or maximum price, minimum rating, or minimum order count. Run the actor and inspect the saved product rows.
- Download the dataset in JSON, CSV, or Excel format, or read it through the dataset endpoint from a scheduled workflow.
The item limit applies separately to every keyword. For example, two keywords with a limit of 40 can produce up to 80 rows. A run can return fewer rows when a search has fewer visible listings, a filter removes candidates, a page cap is reached, or the site changes what it returns. The scraper does not create placeholder records to fill a requested quota.
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
| keywords | String array | Required | Product terms to search, one term per entry. |
| sort | String | default | default, orders, price_asc, price_desc, or rating. |
| minPrice | Number | Unset | Minimum displayed sale price. |
| maxPrice | Number | Unset | Maximum displayed sale price. |
| minRating | Number | Unset | Minimum displayed rating from 0 to 5. |
| minOrders | Integer | Unset | Minimum structured sold count. |
| maxItems | Integer | 48 | Maximum saved products for each keyword; allowed range 1–200. |
| maxPages | Integer | 3 | Maximum pages checked for each keyword; allowed range 1–20. |
| proxyConfiguration | Object | Enabled | Proxy settings for search requests. |
This example asks for popular laptop stands and allows a second page if fewer than 40 qualifying products appear on the first. The price limits use the currency shown on the search page. They do not perform currency conversion.
{"keywords": ["laptop stand"],"sort": "orders","minPrice": 10,"maxPrice": 30,"minRating": 4.5,"minOrders": 100,"maxItems": 40,"maxPages": 2}
AliExpress supports site-side price ranges and site-side sorting for orders and price. The scraper also checks the final numeric price against your price bounds because the displayed card value is the value that matters for the exported row. Rating and minimum orders are checked on the extracted cards. A narrow rating or order filter may therefore require more pages to find enough matches. Top rated sorts only the pages fetched for that keyword; it does not claim to rank every product in the site's complete result set.
Output example
This is a product from a verified run for “laptop stand,” ordered by sales. The additionalImages array is shortened here for readability; the stored record includes every image URL supplied by that card.
{"keyword": "laptop stand","page": 1,"position": 1,"productId": "3256810573092072","productTitle": "Set of 2 Adjustable Laptop Supports Foldable Two-Gear Height Notebook Riser Portable Desktop Elevated Holder for Home Office","productUrl": "https://www.aliexpress.com/item/3256810573092072.html","imageUrl": "https://ae-pic-a1.aliexpress-media.com/kf/S8f0680dee13e44f6bd9cf823256805633.jpg","additionalImages": ["https://ae-pic-a1.aliexpress-media.com/kf/Scee43e351f364742b2bc5747c6a556f4B.jpg"],"price": 1.09,"originalPrice": 3.85,"currency": "USD","formattedPrice": "US $1.09","discount": "-71%","rating": 4.9,"orders": 33480,"soldLabel": "10,000+ sold","shipping": null,"shippingFrom": "CN","tags": ["New shoppers save $2.76", "Lowest price in 90 days"],"isTopRated": true,"productType": "natural","isSponsored": false,"totalResults": 11751,"searchUrl": "https://www.aliexpress.com/w/wholesale-laptop-stand.html?sortType=total_tranpro_desc","scrapedAt": "2026-09-27T19:51:34.673647+00:00"}
The result count is a number reported by the site for that search. It can change as inventory, promotions, and ranking change. It is not the number collected by the actor. Use the dataset's row count for the actual delivered quantity. The page and position fields tell you where a listing appeared, which helps when comparing search placement across repeated runs.
Use cases
- Product sourcing: Compare advertised prices and shipping origins for a shortlist of product terms before checking individual listings. Keep the canonical product link so an analyst can verify an offer.
- Price monitoring: Run the same keywords regularly and compare price, originalPrice, discount, and scrapedAt by productId. Separate the observed search price from the final checkout price in your own analysis.
- Demand research: Sort by orders and compare exact structured sold counts with visible rounded labels. Use a minimum order threshold to focus on listings with established sales.
- Search placement checks: Keep page and position over time for selected keywords. Check whether a product appears consistently or only during a promotion.
- Catalog enrichment: Add image URLs, titles, ratings, and country codes to an internal product comparison table. A product may show different data in a different regional session.
- Promotion tracking: Review discount percentages and visible card labels alongside the sale price. Promotional wording may change, so retain the raw tags array instead of expecting one fixed label.
How much does it cost to scrape AliExpress?
The configured dataset-item price is $1.00 per 1,000 delivered product rows, or $0.001 per saved row. A run that delivers 40 rows costs $0.04 in result charges; 200 rows cost $0.20; 1,000 rows cost $1.00. If filters leave only 25 qualifying rows, the result charge is based on those 25 delivered rows rather than the 40 requested. Prices shown here are for the actor's configured per-result charge; your account's billing view is the authoritative place to check charges for a run.
Start with a small maxItems value when testing a new keyword or filter. The number of page requests can be greater than the number of delivered rows because the actor must inspect cards before applying rating and order thresholds. Choosing a very high maxPages value for a narrow query can increase run time, even when the final dataset is small. A lower page cap gives a predictable bound on the search work.
Tips for best results
Use specific, ordinary product terms. A phrase such as “adjustable laptop stand” narrows the search more clearly than a broad word such as “stand.” Each keyword is processed independently, and the same product can appear for different keywords. If you need one row per product across the entire run, deduplicate your export by productId after collection while retaining keyword values separately for attribution.
Choose a site-side sort when order matters. The orders setting asks AliExpress for its popular ordering, while price_asc and price_desc ask the site for price ordering. The rating setting differs: the actor fetches pages in the default site order, applies your filters, then sorts the fetched matching cards by rating and orders. Increase maxPages if you want that local ranking to consider more candidates. No setting guarantees a complete scan of the reported totalResults count.
Set maxPages high enough for the filters. A page generally contains up to about 60 cards, but some cards are unpriced free-gift promotions and are omitted from the dataset. If you ask for 100 priced results with only one page, one page may be insufficient. Ratings can be absent for new products, and a minimum rating excludes those products. A minimum orders value also excludes cards that do not provide a usable count.
Price is captured from the listing's sale-price object. Some listings use new-customer or bundle promotions; review the product page before treating a search price as a procurement commitment. The original price and percentage discount are the site's displayed comparison, not a calculation made from an independent price history. For consistent comparisons, keep the currency and the timestamp with every numeric price.
The proxy is enabled by default. The scraper begins with a standard connection and can retry through a browser session or a different proxy route if a block occurs. Search pages may vary by request region. If you compare runs over time, keep the same settings and note that regional pricing or availability can still vary.
Limits
Only public search results are read. The scraper does not sign in, open checkout, claim stock availability, inspect seller profiles, or extract private account information. A product card can omit shipping text even when a detail page later provides shipping options. shippingFrom is a country code extracted from structured card data when present; it is not a delivery guarantee.
Some result cards represent free gifts and have no sale-price object. These are skipped because the output is intended for priced product comparison. Other fields may still be empty on normal priced cards: shipping is commonly null, tags may be an empty array, and additionalImages may have no entries. A null value means the card did not supply that field. It does not prove that the product lacks that feature.
Search pages reported roughly 60 results per page in the verified probes, and a page numbered 30 still returned product cards. The actor caps maxPages at 20 to keep runs bounded. The reported totalResults number is approximate and may shift between adjacent requests. Product ranking, price, promotion labels, and order counts can change during a run or between runs. The actor deduplicates repeated product IDs within each keyword, which can reduce the count relative to the number of cards inspected.
The direct search data route presented a challenge during discovery, so the actor uses the structured data embedded in the public search page. If the site changes that payload or begins serving a challenge instead of product data, a run may fail or return fewer records. Check the run log and try a smaller keyword sample when that happens. A successful run does not imply that every item in the site's reported total was reachable.
Use in automated workflows
An automated workflow can ask: “Collect 40 laptop stands, order by sales, keep products rated at least 4.5, and return titles, prices, currencies, orders, and product URLs.” Another useful request is: “Search wireless earbuds and USB hubs separately, limit each term to 60 priced listings, and flag products whose sale price has changed since yesterday.” Map those requests to the input fields above and read the resulting dataset after each run.
Because output fields have stable names, a workflow can save productId as the join key and scrapedAt as the observation time. Keep keyword, page, and position when ranking context matters. For price changes, compare rows in the same currency and account for promotions. For demand research, orders is a snapshot, not a daily sales figure; subtracting two snapshots is only an estimate and can be affected by listing changes.
FAQ
Is it legal to collect this data?
The actor reads public product search listings. Check the site's terms and applicable law for your use, use reasonable request volumes, and avoid using the results to collect or misuse personal data. Public availability does not grant ownership of images or product descriptions.
Do I need to configure a proxy?
The input has a proxy enabled by default. Most users can leave that setting alone. A search page may still change based on location or a request may encounter a block, so review the run log if a keyword unexpectedly yields no rows.
How fast is a run?
The verified 40-product run completed in about 25 seconds, including startup. Larger maxPages values, several keywords, filters that require extra pages, and retries can make a run slower. Use a small sample to estimate time for your own search terms.
Can I schedule and monitor searches?
Yes. Schedule the same input for regular snapshots and monitor run status and dataset row counts. Compare productId, price, rating, orders, and scrapedAt between runs. Save the original query settings with your analysis so changes in filters do not look like market changes.
Can I export to a spreadsheet?
Yes. Download the default dataset as CSV or Excel for spreadsheet work, or use JSON for a database or script. Arrays such as tags and additionalImages remain nested values in JSON; check how your spreadsheet reader represents them in CSV.
Why is shipping or a promotional field empty?
The search card may not show a shipping label or promotion for that product. The actor leaves an unavailable scalar as null and an unavailable collection as an empty array. Product detail pages can contain different or later information; this actor only describes the search listing.
Why did I receive fewer rows than maxItems?
The actor stops at maxPages, skips unpriced free-gift cards, removes repeated IDs within a keyword, and applies your thresholds. If too few matching priced cards remain, increase maxPages or relax the filters. A site challenge or layout change can also interrupt collection; inspect the run log in that case.
Integrations
Use the dataset endpoint to feed a catalog database, a price dashboard, or a scheduled comparison job. You can trigger a run through the platform API, receive completion through a webhook, and export the dataset to a spreadsheet or an automation workflow. Store productId, keyword, currency, and scrapedAt with each record so later imports can distinguish product changes from a different search context.
Support
Open an issue on the Issues tab; we reply within 24h and add fields on request.