AliExpress Product & Variant Scraper
Pricing
$1.50 / 1,000 product scrapeds
AliExpress Product & Variant Scraper
Scrape AliExpress search results, category pages and product URLs into clean JSON: prices, discounts, orders sold, ratings, store info, shipping cost/ETA for your chosen country, and full SKU-level variant pricing and stock.
Pricing
$1.50 / 1,000 product scrapeds
Rating
0.0
(0)
Developer
James White
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
Turn AliExpress search results, category pages and product links into clean, ready-to-use product data — including the SKU-level variant table (every colour/size option with its own price and stock) that most catalogue scrapers leave out.
Give the Actor a few keywords, listing URLs or bare product IDs. It returns one row per product with title, image gallery, current price, pre-discount price, discount percentage, rating, review and orders count, store details, dispatch country, shipping cost and delivery estimate, breadcrumb category path, and the full variant list.
No browser is used: the Actor reads the JSON that AliExpress embeds in its own pages, so runs are fast and cheap.
Price
$0.0015 per product returned (pay-per-event product-scraped). You are only charged for
rows that actually land in your dataset — pages that fail or are filtered out cost nothing.
Apify platform usage is billed separately by Apify as usual.
100 products ≈ $0.15. 10,000 products ≈ $15.
Typical uses
- Dropshipping and product research: find winning items by price, orders and rating.
- Competitive price monitoring, including per-variant prices your competitors hide.
- Building a supplier catalogue feed with images, options and stock levels.
- Checking landed cost for one market: shipping cost and delivery ETA for your country.
Inputs
| Field | Type | Default | What it does |
|---|---|---|---|
searchQueries | array of strings | [] | Keyword phrases to search, e.g. mechanical keyboard. Each query is paginated until maxItems is reached. |
startUrls | array of strings | [] | AliExpress search, category or product URLs to scrape directly. Product URLs are fetched as single products. |
productIds | array of strings | [] | Bare AliExpress item IDs, e.g. 1005006238899018. |
maxItems | integer | 100 | Hard cap on how many products are output across all inputs. The run stops fetching as soon as it is reached. |
shipToCountry | string | US | ISO-2 country code used to resolve prices, shipping cost and delivery estimate, e.g. US, DE, BR. |
currency | string | USD | Currency requested for returned prices, e.g. USD, EUR, GBP. |
language | string | en | Site language for titles and attribute names, e.g. en, es, fr. |
sortBy | string | default | Listing order: default, price_asc, price_desc, orders_desc, newest. |
minPrice | integer | 0 | Drop products cheaper than this (in the chosen currency). 0 disables. |
maxPrice | integer | 0 | Drop products more expensive than this. 0 disables. |
includeVariants | boolean | true | Also open each product page to collect per-variant price, stock and attributes, plus store, gallery, shipping and category data. Slower, much richer. |
freeShippingOnly | boolean | false | Keep only products confirmed to ship free to the selected country. |
At least one of searchQueries, startUrls or productIds must be filled.
Example input
{"searchQueries": ["mechanical keyboard", "usb c cable"],"startUrls": ["https://www.aliexpress.com/w/wholesale-smart-watch.html"],"productIds": ["1005006238899018"],"maxItems": 200,"shipToCountry": "US","currency": "USD","language": "en","sortBy": "orders_desc","minPrice": 5,"maxPrice": 120,"includeVariants": true,"freeShippingOnly": false}
Output
One dataset row per product.
| Field | Type | Description |
|---|---|---|
productId | string | AliExpress item ID. |
url | string | Canonical product URL. |
title | string | Product title. |
imageUrl | string | Main product image. |
images | array | Gallery image URLs (filled when the product page is opened). |
price | number | Current sale price. |
originalPrice | number | Pre-discount list price when shown, otherwise null. |
discountPercent | number | Discount off the list price, otherwise null. |
currency | string | Currency code of the returned prices. |
ratingAvg | number | Average stars out of 5, when shown. |
reviewCount | integer | Number of reviews, when shown. |
ordersCount | integer | Units sold / orders as shown by AliExpress. |
storeName | string | Seller store name. |
storeId | string | Seller store ID. |
storeUrl | string | Seller store URL. |
shipsFrom | string | Declared dispatch country. |
shippingCost | number | Shipping cost to the selected country, 0 when free. |
deliveryEstimate | string | Delivery window text for the selected country. |
variants | array | SKU rows: skuId, attributes, price, originalPrice, stock, inStock. |
categoryPath | array | Breadcrumb category names. |
sourceQuery | string | The query, URL or ID that produced the row. |
scrapedAt | string | ISO 8601 extraction timestamp. |
Example output row
{"productId": "1005009494458560","url": "https://www.aliexpress.com/item/1005009494458560.html","title": "AJAZZ NK61 Wired Gaming Mechanical Keyboard 60% RGB Hot-Swappable 61 Keys Red Switch Mini Keyboard for Gamer PC","imageUrl": "https://ae-pic-a1.aliexpress-media.com/kf/S21fa9e98da3547c5a2e840c1917ce9cdI.png_480x480.png","images": ["https://ae-pic-a1.aliexpress-media.com/kf/S21fa9e98da3547c5a2e840c1917ce9cdI.png","https://ae-pic-a1.aliexpress-media.com/kf/S4b1f7b7a1a6f4c0aa7b1b0a9a1d0f1e2.png"],"price": 31.49,"originalPrice": 43.16,"discountPercent": 27.0,"currency": "USD","ratingAvg": 4.7,"reviewCount": 2841,"ordersCount": 15288,"storeName": "AJAZZ Official Store","storeId": "1102283018","storeUrl": "https://www.aliexpress.com/store/1102283018","shipsFrom": "CN","shippingCost": 0,"deliveryEstimate": "Delivery: Feb 18 - Mar 02","variants": [{"skuId": "12000049283740115","attributes": { "Color": "Black", "Switch": "Red Switch" },"price": 31.49,"originalPrice": 43.16,"stock": 812,"inStock": true},{"skuId": "12000049283740116","attributes": { "Color": "White", "Switch": "Brown Switch" },"price": 33.99,"originalPrice": 45.99,"stock": 0,"inStock": false}],"categoryPath": ["Computer & Office", "Keyboards & Mice", "Keyboards"],"sourceQuery": "mechanical keyboard","scrapedAt": "2024-06-05T09:41:12Z"}
Limits and honest notes
- Only what AliExpress publishes. Fields such as
reviewCount,shippingCost,deliveryEstimate,shipsFromororiginalPriceare returned when the page exposes them and arenullotherwise. Nothing is guessed. - Variants require
includeVariants: true, which opens one extra page per product. With it off the run is faster butvariants,images, store and shipping fields stay mostly empty. - Ship-to country, currency and language are requested through AliExpress's own site
preference mechanism. AliExpress may still answer in its regional default for some
routes; the
currencyfield always reports the currency of the prices actually returned. - Sponsored cards appear in AliExpress listings and are returned like any other product.
- Pagination depth is limited by AliExpress itself (roughly a few dozen pages per query). Use several narrower queries or price bands for large harvests.
- If AliExpress blocks the run (HTTP 403 / 429 or an anti-bot challenge), the Actor logs this clearly and stops instead of trying to get around it. You keep everything already scraped and are billed only for delivered rows.
- Requests are sent with the honest User-Agent , at most 4 in parallel, with retries and a pause between listing pages.Mozilla/5.0 (compatible; aliexpress-catalog-variant-scraper/1.0)
Terms
This Actor reads only publicly reachable AliExpress catalogue pages; it never logs in and
collects no buyer, reviewer or other personal data. AliExpress's terms of use discourage
automated collection and redistribution of site content, so you are responsible for making
sure your use of the output complies with those terms and with applicable law in your
jurisdiction. Prices, stock and delivery estimates change constantly — treat every row as a
snapshot taken at scrapedAt.