AliExpress Scraper — Products, Prices & Stores
Pricing
from $2.00 / 1,000 product scrapeds
AliExpress Scraper — Products, Prices & Stores
Scrape AliExpress search results and product pages: price, original price, discount, rating, orders, shipping, SKUs, store name and rating, images. Any keyword, category URL or product URL.
Pricing
from $2.00 / 1,000 product scrapeds
Rating
0.0
(0)
Developer
Trevor Ortega
Maintained by CommunityActor stats
0
Bookmarked
29
Total users
15
Monthly active users
10 days ago
Last modified
Categories
Share
AliExpress Scraper
Scrape AliExpress search results, category pages and product pages into a clean dataset: title, sale price, original price, discount, rating, review count, orders, shipping and delivery estimate, Choice / Plus badges, images, and (with details on) every SKU with its own price and stock, the specification table, description images, shipping options, warranty and the store profile. Any keyword, category URL or product URL, in the currency and ship-to country you choose.
Download as JSON, CSV or Excel, or pull it through the API into your own app, Google Sheets or an LLM pipeline. You pay only for the products you get.
What data does AliExpress Scraper extract?
Every product from a search or category page (the result event):
| Field | Description |
|---|---|
productId | AliExpress product id (global 1005... id; aliexpress.us ids are converted) |
title | Product title |
url | Product page URL |
price | Current sale price (number) |
originalPrice | Price before discount |
currency | ISO currency code of the prices (input currency) |
discountPercent | Discount as shown by AliExpress |
priceText | Price exactly as displayed, e.g. US $23.47 (for Choice "FREE with any purchase" cards, the item price in the page format) |
rating | Star rating, 0-5 (null when the product has no reviews yet) |
reviewCount | Number of reviews (only with includeDetails) |
ordersCount, soldText | Orders as a number (16539) and as displayed (10,000+ sold) |
shippingText, isFreeShipping, deliveryText | Shipping badge / delivery estimate from the card |
deliveryDaysMin, deliveryDaysMax, deliveryDateMin, deliveryDateMax | Estimated delivery window for the ship-to country |
shipFrom | Ship-from country code of the displayed SKU |
isChoice, isPlus, isAd, badges | AliExpress Choice badge, Plus (local warehouse) badge, sponsored card, all badge texts (Free shipping, Lowest price in 90 days, FREE with any purchase, ...) |
categoryId, categoryIdPath | Leaf category id and the id path (44/100000306/518) |
imageUrl, images | Main image and all card images (full size) |
skuId, originProductId | SKU shown on the card; the original listing id behind a "superlink" card |
store | {id, name, url, rating, positiveRate, followers, yearsActive} - filled with includeDetails |
searchTerm, sourceUrl, scrapedAt | Provenance: the search term, the search / category / product URL the item came from (for search terms, the AliExpress search URL built from the term), and the scrape time |
changeType, previousValues | Only with Only new or changed items on: new or changed, and for changed products the old values of the fields that changed |
With Include product details on (the extra detail event), each product also gets:
| Field | Description |
|---|---|
skus | Every variant: {skuId, attributes: {Color: "Blue", "Ships From": "United States"}, price, originalPrice, currency, stock, isAvailable, maxPurchaseQty, imageUrl} |
variants | Variant options: [{name: "Color", values: ["Blue", "Navy with Black"]}] |
priceMin, priceMax | Cheapest / most expensive SKU |
specifications | Specification table as a dict ({"Battery Capacity[mAh]": "6600", ...}), plus brand |
description, descriptionImages | Description text and images |
shippingOptions | [{carrier, fee, feeText, currency, isFree, freeShippingThreshold, deliveryDaysMin, deliveryDaysMax, etaMin, etaMax, shipFrom, shipTo, hasTracking}] |
warranty, deliveryGuarantee | e.g. Free returns within 90 days |
videoUrl, userManualUrl | Product video (MP4) and manual (PDF) when present |
stock, maxPurchaseQty, isAvailable, saleEndsAt, wishlistCount | Availability and promotion end |
categoryPath | Category breadcrumb names when the page has them |
store | id, name, url, rating, positiveRate, followers, yearsActive, openedAt, soldLast180Days, communicationRating, country, sellerId, isTopRated, logo |
How to use AliExpress Scraper
- Type one or more Search terms (one per line) and/or paste Start URLs (search pages, category pages or product pages -
aliexpress.uslinks work too). - Pick the Currency and Ship-to country you want prices and shipping for (default USD / US) and the Sort order (best match, orders, price).
- Set Max items to cap the run (and the cost). Turn on Include product details if you need SKUs, specifications, shipping options or the store profile.
- Click Start. Results appear in the Dataset tab; export from there or use the API.
Input example
{"searchTerms": ["bluetooth speaker"],"startUrls": [{ "url": "https://www.aliexpress.com/category/518/speakers.html" }],"maxItems": 200,"maxPagesPerSearch": 5,"includeDetails": false,"currency": "USD","shipTo": "US","sortBy": "orders"}
Output example
{"productId": "1005012918250674","title": "Ortizan Bluetooth Speakers 40W TWS Portable Speaker with Stereo Sound Bass, Bluetooth 5.3 Wireless USB Type C Outdoor, 6600mAh Battery","url": "https://www.aliexpress.com/item/1005012918250674.html","price": 23.47,"originalPrice": 79.86,"currency": "USD","discountPercent": 70,"priceText": "US $23.47","rating": 4.9,"reviewCount": null,"ordersCount": 16539,"soldText": "10,000+ sold","shippingText": "Free shipping","isFreeShipping": true,"deliveryText": "Delivery: Sep 13 - 20","deliveryDaysMin": 4,"deliveryDaysMax": 11,"deliveryDateMin": "2026-09-13","deliveryDateMax": "2026-09-20","shipFrom": "US","isChoice": false,"isPlus": true,"isAd": false,"badges": ["Free shipping", "Lowest price in 90 days"],"categoryId": "518","categoryIdPath": "44/100000306/518","imageUrl": "https://ae-pic-a1.aliexpress-media.com/kf/Sf17ee9faed23457e919cf721857821d3P.png","images": ["https://ae-pic-a1.aliexpress-media.com/kf/Sf17ee9faed23457e919cf721857821d3P.png", "..."],"store": { "id": null, "name": null, "url": null, "rating": null, "positiveRate": null, "followers": null, "yearsActive": null },"searchTerm": "bluetooth speaker","sourceUrl": "https://www.aliexpress.com/w/wholesale-bluetooth-speaker.html?SearchText=bluetooth+speaker","scrapedAt": "2026-09-09T12:30:00+00:00"}
With includeDetails: true the same item additionally carries skus, variants, specifications, description, descriptionImages, shippingOptions, warranty, videoUrl, stock and a filled store object ({"id": "1105448245", "name": "Ortizan EU Store", "url": "https://www.aliexpress.com/store/1105448245", "rating": 4.9, "positiveRate": 97.9, "followers": 29, ...}).
How to scrape AliExpress prices in a different currency or country
Set currency (e.g. EUR) and shipTo (e.g. DE). AliExpress then returns the prices, promotions and shipping options it would show a shopper in that country; products that cannot ship there are left out by the site itself. Prices are the ones shown to a not-logged-in visitor, so "new shopper" coupon prices are not applied.
How to find AliExpress best sellers
Use sortBy: "orders" to rank by orders, then filter the dataset by ordersCount, rating and isChoice. discountPercent is computed by AliExpress from the (often inflated) originalPrice, so treat it as a marketing signal.
Can I get product variants, SKU prices and stock?
Yes - turn on Include product details. Each product then carries skus (one entry per variant with its own price, originalPrice, stock and maxPurchaseQty), variants (the option names and values) and specifications. This opens one product page per item (through the product API the page itself uses, three products in parallel, typically 1-4 seconds per product) and is charged as the extra detail event only for products whose details actually arrive.
Monitor changes on a schedule
Turn on Only new or changed items and the Actor remembers what earlier runs of the same input returned: each run outputs only products that are new in the watched results or whose price, struck-through original price or currency changed (for product URLs and with details on, also availability). Unchanged products are dropped on the search page, before any product page is requested, so they are not charged; product URLs are compared after their product data is read and are not charged when unchanged. Max items becomes the window checked on every run, e.g. the first 60 results of a search, so a run with nothing new costs one or two search pages. Save the input as a task and add a Schedule to it in Apify Console (Schedules → Create new, for example daily). Every output product carries changeType (new or changed); changed ones carry previousValues, e.g. {"price": 24.99} for a speaker that now costs 19.99. Order counts, ratings and delivery dates change all the time and do not count as changes. AliExpress shows different visitors different things: some get "New shoppers save $X" prices or another variant of the product on the card, and the order of relevance results depends on where the visitor is. So "New shoppers save" prices (they differ from visitor to visitor) are never compared, only regular prices are, a card showing another variant becomes the new reference without being reported, and for a steady watch you should keep the proxy in one country (Proxy → country = your Ship to country) and sort by Orders or price rather than relevance. Even then AliExpress rotates which products fill the first results, so the first runs of a new watch report a share of the window as new (each product only once, the first time it rotates in). Use Monitoring key to keep several schedules on the same input separate.
Does it work without login or a browser?
Yes. The Actor reads the JSON that AliExpress embeds in its pages and the product API the page itself calls; no browser and no account are needed, which keeps it fast (about 1 second per 60 products) and cheap.
What about captchas and blocking?
AliExpress shows a slider captcha to traffic it does not like. The Actor detects it, retries on a fresh proxy session and reports the count in the run's SUMMARY record (captchaPages). Product details use AliExpress' product API, which answers suspicious traffic with a captcha. The Actor spaces those calls, moves to a fresh proxy IP and session token when it happens, and gives up on a product after a few attempts instead of retrying for minutes. If the API refuses many products in a row, the Actor pauses details (retrying every 30 seconds), keeps saving the listing data and does not charge the detail event for products without details; such products carry a detailError field. If you see many of those, switch the proxy to residential (ideally in the ship-to country) and lower maxItems per run.
Pricing
Pay per product: the result event for every product saved, plus the detail event for every product page opened when Include product details is on. There is no subscription; Apify's free plan is enough to try it.
Integrations and API
Use the run in Zapier, Make, n8n, Google Sheets, or call it from Python/Node with the Apify client. See the API tab for ready-made snippets.
Is it legal to scrape AliExpress?
This Actor collects only publicly available, non-personal data (product listings and store business profiles). It does not log in, does not collect buyer names or reviews, and does not touch personal data. You are responsible for how you use the data and for complying with AliExpress' terms and applicable law.
Support
Found a bug or need a field added? Open an issue in the Issues tab; it is usually answered within a day.