AliExpress Products Scraper avatar

AliExpress Products Scraper

Pricing

from $0.19 / 1,000 products

Go to Apify Store
AliExpress Products Scraper

AliExpress Products Scraper

Scrape AliExpress products by keyword, category or URL, in 51 countries: price, discount, units sold, rating, delivery, seller and reviews. Export to JSON, CSV or Excel.

Pricing

from $0.19 / 1,000 products

Rating

0.0

(0)

Developer

Nice Dev

Nice Dev

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

a day ago

Last modified

Share

🔎 What is AliExpress Products Scraper?

AliExpress Products Scraper extracts products from AliExpress: price, discount, rating, units sold, delivery dates, category, store and reviews, for any keyword, category or product link, in 51 delivery countries. It works as an AliExpress API alternative: run it on a schedule, call it from your code, or plug it into Make, Zapier or n8n.

Type a keyword (wireless earbuds) or paste an AliExpress link, click Start, and download the products in JSON, CSV or Excel. No login, nothing to set up. Optional extras: the full product page, buyer reviews, and price monitoring that tells you which products are new, cheaper or dearer since your last run.

📋 What data can you extract from AliExpress?

One item per product and delivery country, 94 fields:

CategoryWhat you get
🏷️ Producttitle, link, AliExpress product number, photos, video — 2026 New Air 3 Pro Bluetooth Earbuds
💰 Price and promotionscurrent price, crossed-out price, discount, the seller's own price, currency, import tax rate, new-shopper offers, promotion type and end date, coupons — 15.31 USD
📈 Sales and ratingsexact units sold, rating, number of reviews, wishlist count — 4,031 sold
🚚 Deliveryestimated delivery dates and days, ships-from country, cheapest shipping, every shipping option
🏪 Seller and storestore name, number, link, country, opening date, positive feedback, followers, regular buyers, top-rated seller
🗂️ Categorycategory number, path and readable name
📄 Product pagevariants with price and stock, total stock, specifications, brand, description, return policy, buyer protection, size feedback, compliance notes
⭐ Reviewsrating breakdown, review topics, each review with its text, translation, date, buyer country and photos
🔔 Price monitoringnew products, price drops and rises, previous price, change in %, price history

Every field, with an example, is listed in the Output section below.

Fields of the Product page and Reviews rows are filled only when you tick Full product details or Include buyer reviews (both are options, off by default, see the price section). The product page also fills, in the other rows: the store details (all but the store name), the ships-from country, the shipping cost and options, the number of reviews, the wishlist count, the coupons, the brand and the video. Everything else comes with the search itself.

✅ Why use AliExpress Products Scraper?

  • 🌍 Any country, any currency: the same search in several countries in one run, to compare prices. globalProductId is the same product number in every country.
  • 🔢 Exact units sold: the real count, not the rounded « 1,000+ sold » of the page.
  • 📦 More than 3,600 products per search: AliExpress stops at 60 pages; large searches are read again by price range.
  • 🧩 Nothing missed, nothing twice: each product is returned once per country.
  • 🔔 Monitoring built in: tick Only new products, schedule the Actor, and each run returns only what it has never delivered; add price changes to hear when a seller moves a price.
  • ⭐ Reviews with filters: by stars, by word, by date, with photos, from buyers in your country.

🚀 How to scrape AliExpress

  1. Create a free Apify account.
  2. Open AliExpress Products Scraper and type a Search keyword (e.g. wireless earbuds).
  3. Or paste your own AliExpress links into Start URLs: search, category or product pages.
  4. Set Max products (100 by default, 0 = no limit) — and Max products per search when you run several searches — then click Start.
  5. Download the dataset in JSON, CSV, Excel or via API.

💰 How much does it cost to scrape AliExpress?

This Actor uses pay per event pricing: you pay for each product returned, plus a small fee per run start. Everything else is an option, off by default, charged apart and only for what it delivers. See the Pricing tab for every amount.

  • Product page (Full product details, and every product you give by link or number in Product URLs or IDs): one charge for each product page read. A product AliExpress does not sell in the delivery country still costs it (its row says available is false), because the page was asked for.
  • Residential fallback: product pages are protected harder than search pages. When AliExpress turns away every normal connection for a page, the Actor reads it through a premium connection and charges this event for that one page. A page read normally, a page nobody could read, and any run with your own proxies never pay it.
  • Buyer reviews (Include buyer reviews): one charge for each review delivered. Reviews read and then dropped by one of your review filters, or cut by Max reviews per product, cost nothing.
  • Price changes (Also products whose price changed): one charge for each product returned because the seller's price moved by at least Minimum price change (%). A new product costs its normal product price only; so does a removed product.
  • Filter check and Detail filter check: the filters the site does not offer are applied by the Actor on every product it reads. A product that passes them costs its normal price; a product a filter drops costs a small filter fee instead, so filtering never costs more than taking everything. With onlyNew, a product your filters drop is checked (and the fee charged) once; the next runs with the same filters skip it for free, except a product that may pass later (see below). Change a filter, or tick resetState, to check them again. Filter check covers launch date, minimum rating, minimum units sold, minimum discount, sponsored products and excluded words. Detail filter check covers the two filters that need the product page (Promotion ends within and Only products with a promotion end date): each product dropped after its page was read pays it. The filters AliExpress itself offers (price range, free shipping, Choice, on sale, local warehouse, ships from, and 4 stars and up) cost nothing extra.

Platform usage (compute, proxy) is included in the price.

⚙️ Input

{
"query": "wireless earbuds",
"maxItems": 200,
"country": "GB",
"currency": "GBP"
}

Several keywords in several countries, a cap per search, only the products not delivered before:

{
"searchQueries": ["wireless earbuds", "usb cable"],
"country": "DE",
"countries": ["FR"],
"maxItemsPerQuery": 50,
"onlyNew": true,
"stateKey": "earbuds-eu"
}

Or with your own links, and a filter:

{
"startUrls": [
{ "url": "https://www.aliexpress.com/w/wholesale-phone-case.html" },
{ "url": "https://www.aliexpress.com/category/100003109/women-clothing.html" }
],
"freeShippingOnly": true,
"maxItems": 500
}

Two products by link, with their reviews:

{
"productUrls": ["https://www.aliexpress.com/item/1005006123456789.html", "3256806491667018"],
"includeReviews": true,
"maxReviewsPerProduct": 10
}

Monitoring a search: new products, and the ones whose price moved:

{
"query": "wireless earbuds",
"onlyNew": true,
"includePriceChanges": true,
"stateKey": "earbuds-us"
}
FieldNotes
startUrlsSearch pages (https://www.aliexpress.com/w/wholesale-phone-case.html), category pages (https://www.aliexpress.com/category/100003109/women-clothing.html) or product pages (https://www.aliexpress.com/item/1005006123456789.html). Filters set on the site are kept. Max 1 000 URLs × delivery countries (500 URLs in 2 countries).
query, searchQueriesFree-text search, exactly as typed on AliExpress (wireless earbuds); searchQueries adds more keywords, one search each.
categoryIdA category number (100003109): alone it reads the whole category, with a keyword the keyword inside it.
productUrlsSingle products, as links or numbers (1005006123456789). Each one is read from its product page and always delivered, even with onlyNew. Max 1 000.
maxItemsStop after this many products for the whole run (0 = unlimited).
maxItemsPerQueryCap for EACH keyword, category or search URL (keyword × country). 0 = no per-search cap.
splitByPriceRead a search that fills AliExpress's 60 pages again by price range, to go past 3,600 products. Not used when the search is sorted by price: it then stops at 3,600 products, in the order of the sort.
sortByOrder of the results: orders for the best-selling first, or by price.
minPrice, maxPricePrice range in the chosen currency (5, 20). AliExpress applies it.
freeShippingOnlyOnly products with free shipping. AliExpress applies it.
choiceOnlyOnly Choice products. AliExpress applies it.
saleOnlyOnly products on sale. AliExpress applies it.
localWarehouseOnlyOnly products shipped from a warehouse in the delivery country. AliExpress applies it to searches.
shipFromCountryOnly products shipped from this country (CN). AliExpress applies it to searches.
country, countriesDelivery country (default US), and more of them, added to it: every keyword is searched in every country (max 500 searches per run). Example: GB.
currencyCurrency of the prices, for example EUR.
languageLanguage of the titles, for example fr_FR.
extractDetailsProduct page for each product: variants, stock, shipping, specifications, seller. A paid option, off by default.
includeDescriptionWith the product page: the seller's description, at no extra charge.
includeReviewsBuyer reviews of each product, with or without the product page. A paid option, off by default.
maxReviewsPerProductReviews kept for each product, 20 by default.
reviewFilterWhich reviews to keep, for example image for those with photos, or local for buyers in the delivery country.
reviewMinRating, reviewMaxRatingKeep reviews between these stars (1, 5). The Actor reads more pages to find enough of them.
reviewKeywordKeep the reviews that say this word or phrase, in their text or its English translation (battery).
reviewPostedAfterKeep the reviews written on or after this date (2026-03-01) or within a period (30 days).
postedAfter, postedBeforeLaunch date range: 2026-09-01, or a period before now (7 days, 2 weeks, 1 month).
minRatingOnly products rated at least this (4). From 4, AliExpress's own "4 stars and up" filter is used too.
minOrdersOnly products with at least this many units sold (1000).
minDiscountPercentOnly products whose card shows at least this discount (50).
expiringWithinHoursOnly products whose promotion ends within this many hours (48). Needs the product page.
onlyWithExpiryOnly products whose page gives the end date of their promotion. Needs the product page.
excludeSponsoredDrop the products marked as ads.
excludeKeywordsDrop the products whose title contains one of these words (broken). Case and accents ignored.
onlyNewMonitoring: only the products never delivered under this memory key.
includePriceChangesWith monitoring: also the products whose seller's price changed. A paid option, off by default.
minPriceChangePercentSmallest change of the seller's price that counts, in % of the price on the last row delivered to you (3 by default, 0 = any change, to the cent).
includeRemovedWith price changes: also the products that left the search results.
stateKeyName of the memory (earbuds-us): one per schedule.
resetStateForget the memory before the run.
AdvancedproxyConfiguration (Apify proxy by default, included in the price; the residential proxy is not available), maxConcurrency, maxRequestsPerMinute, minRequestIntervalMs, maxRequestRetries, debugLog.

📦 Output

One real item, shortened:

{
"id": "3256811621288203",
"url": "https://www.aliexpress.com/item/3256811621288203.html",
"title": "2026 New Air 3 Pro 3 Bluetooth Wireless Earbuds with Heart Rate Monitoring",
"price": 15.31,
"originalPrice": 64.01,
"discountPercent": 76,
"currency": "USD",
"images": ["https://ae-pic-a1.aliexpress-media.com/kf/Sa57a4580c1274b01988d5df3fa8e76cbx.jpg"],
"rating": 4.9,
"soldCount": 4031,
"publishedAt": "2026-03-09",
"tags": ["Sale", "Lowest price in 90 days"],
"isSponsored": false,
"estimatedDeliveryFrom": "2026-09-22",
"estimatedDeliveryTo": "2026-09-29",
"coupons": [],
"categoryId": "63705",
"categoryPath": ["44", "100000306", "63705"],
"categoryName": "Headphones & Earphones",
"variants": [],
"deliveryDaysMin": 4,
"deliveryDaysMax": 11,
"shippingOptions": [],
"specifications": [],
"descriptionImages": [],
"reviewTopics": [],
"reviews": [],
"priceHistory": [],
"country": "US",
"scrapedAt": "2026-10-01T12:00:00.000Z"
}

You can download the dataset in various formats such as JSON, HTML, CSV or Excel.

All 94 fields

FieldsWhat you get
id, url, title, images, imageUrl, videoUrlproduct number, link, title, photos
price, originalPrice, sellerOfferPrice, discountPercent, currency, priceText, taxRateprices and discount
isNewShopperPrice, promotionType, promotionEndsAtthe promotion behind the price
rating, soldCount, soldCountIsLowerBound, soldText, reviewCount, wishlistCountrating and sales
globalProductId, spuId, skuIdAliExpress's other numbers for the product
publishedAt, tags, isChoice, isTopBrand, freeShipping, isSponsored, couponslaunch day, labels and offers
estimatedDeliveryFrom, estimatedDeliveryTo, deliveryDaysMin, deliveryDaysMax, shipFrom, shippingCost, shippingOptionsdelivery
storeName, storeId, storeUrl, sellerId, storeCountry, storeOpenedAt, storePositiveRate, storeRating, isTopRatedSeller, sellerLevel, storeFeedbackCount, storeFollowers, storeServiceRating, storeCommunicationScore, storeSoldLast180Days, storeRegularBuyers, storeOnVacation, storeLogo, isLocalSeller, storeSalesTextthe store
categoryId, categoryPath, categoryName, topCategoryNamecategory
brand, available, totalStock, variantCount, isLot, variants, specifications, description, descriptionImages, manualUrl, returnPolicy, returnDays, buyerProtection, sizeFeedback, sizeChartUrl, complianceNotesproduct page
reviewStats, reviewTopics, reviewsbuyer reviews
changeType, previousPrice, priceChangePercent, priceHistorymonitoring
searchQuery, position, page, sortBy, country, language, searchUrl, scrapedAtthe search that found the product

💡 Tips

How to get more results

Set maxItems to 0 and use a broad keyword: with splitByPrice on, a search that fills AliExpress's 60 pages is read again by price range, so a large search returns far more than 3,600 products. Sorted by price, a search is not split (the price ranges would not come in the order of the sort): it stops at its 60 pages, about 3,600 products, in that order.

How to reduce costs

The price is per product, so the levers are maxItems, maxItemsPerQuery, the filters AliExpress offers (a product it does not list costs nothing) and onlyNew for recurring runs (a product delivered once is never charged again; one your filters drop is checked, and charged the filter fee, once, then skipped for free while your filters stay the same, except a product that may pass a time-dependent filter later, such as the minimum number of orders). The product page, the reviews and the price changes are options: leave them off when you do not need them. Reviews are charged per review delivered, so maxReviewsPerProduct and the review filters cap that cost too.

Several searches in one run

Fill searchQueries and / or countries: the Actor runs one search per keyword × country (up to 500 per run). The single query and country fields still work and are added to the lists: country is US unless you change it, so set it to one of your countries rather than leave the US in. A product found in two countries is saved once per country. To compare countries, match the rows on globalProductId: the id AliExpress serves can differ from one country to another. If your filters match almost nothing in one search (300 products in a row dropped after their product page was read), that search stops and the run goes on with the next ones; the run stops only when every search is in that case.

Product page and delivery country

With extractDetails, each product page is read: every variant with its price and stock, shipping options, specifications, seller details and, with includeDescription, the seller's description. A product AliExpress does not sell in the delivery country is still returned, with available set to false and the page fields empty; it is charged like any product page read. productUrls always read the product page.

Buyer reviews

Tick includeReviews to add each product's reviews, with or without the product page. Reviews are always asked in English: translatedText is the English translation, text stays the buyer's original words. The delivery country of the row orders the reviews (its buyers first) and sets the local choice of reviewFilter. AliExpress filters reviews by photos and follow-up only: the stars, word and date filters are applied by the Actor, which then reads more review pages to find enough of them. AliExpress gives no choice of order for reviews, so they come in its default order. Reviews are charged per review delivered, up to maxReviewsPerProduct.

Filters

AliExpress applies these itself: minPrice, maxPrice, freeShippingOnly, choiceOnly, saleOnly, localWarehouseOnly, shipFromCountry, and minRating from 4. localWarehouseOnly and shipFromCountry work on searches only. The Actor applies the others on every product it reads: minOrders, minRating, minDiscountPercent, postedAfter, postedBefore, excludeSponsored, excludeKeywords, and, with extractDetails, expiringWithinHours and onlyWithExpiry. A product dropped by the Actor is not saved and does not count in maxItems, and costs the filter fee shown in the Pricing tab (see the price section for which filter pays which fee). A product without the value a filter reads (no rating, no launch date, no discount) is dropped.

Monitoring: only the new products

Tick Only new products (onlyNew) and schedule the Actor. The first run returns everything; each later run skips the products already delivered: they are not saved and not charged. The memory lives in a named key-value store of your account (aliexpress-products-scraper-seen, up to 150,000 products per key) and is only updated with products that really reached the dataset. Give each schedule its own stateKey, and tick resetState once to start over. AliExpress cannot sort by newest, so a run reads the search page by page and stops after 20 results pages in a row where every product was already delivered (one new product on a page starts the count again). A new product listed further down is then missed, and a search stopped this way gives no removed rows. With price changes, a product whose price moved does not count as already delivered. A product your filters dropped is remembered too (under the same stateKey): the next runs with the same filters skip it without reading it or charging the filter fee; change a filter, or tick resetState, to check it again. A product that does not pass a time-dependent filter yet (a relative "posted before" date, the minimum number of orders) is checked again on the next run, and charged the filter fee again while it is still refused, so it is delivered as soon as it passes.

Monitoring: price changes

Tick Also products whose price changed (includePriceChanges, with onlyNew) and each run also returns the products it delivered before whose price moved: changeType is price_drop or price_rise, with previousPrice (the seller's price on the last row we delivered), priceChangePercent and priceHistory (the seller's price, units sold and rating at each of your last 30 runs that saw the product). A new product has changeType new.

  • Which price is followed. The price AliExpress shows on a result (price) is different for each visitor and each visit: new-shopper offers, coupons and promotions change it between two reads a few minutes apart (measured on real runs: 49 prices of 124 differed between two connections, some by several times the price). Following it would send you false changes all day. The Actor follows the seller's own price (sellerOfferPrice), which stays put until the seller changes it. The row still shows the current price too. A product whose result shows no seller's price is never reported as changed.
  • How big a change must be. A product is returned, and charged, only when the seller's price moved by at least minPriceChangePercent (3 % by default, 0 = any change, to the cent) compared with the price on the last row we delivered to you for that product. The Actor compares with that row, not with the previous run, so small drifts add up: a currency moving by less than 2 % a day returns nothing at first, then the product comes back once the total passes your threshold.
  • A product that did not move enough stays out of the dataset and costs nothing, but your run is still added to its history.
  • Removed products. Tick includeRemoved (off by default) to get a row with changeType removed for each product an earlier run delivered that its search no longer lists: product number, country, link, previousPrice (the last price seen) and history, no current price. It is said only for a keyword or category search read to its very end in that run (fewer than 3,600 products), with no failed request, and in a run that was neither resumed nor stopped early. productUrls never give removed rows. A removed row counts in maxItems and in its search's maxItemsPerQuery, and is charged like a product; it is reported once, then forgotten. A removed row cut by a cap or by the run's maximum cost is reported by the next run.
  • Memory. Prices live under the same stateKey as onlyNew, up to 50,000 products per key (the ones not seen for the longest time are forgotten and learned again silently, never reported as changes). Under 512 MB of run memory, the prices of the 25,000 products seen last are kept (50,000 from 512 MB). resetState forgets prices and delivered products together, so the next run returns and charges everything again.

Filter by launch date

postedAfter and postedBefore take a date (2026-09-01, the whole day is included) or a period before now (7 days, 2 weeks, 1 month). The filter reads publishedAt, the day AliExpress first listed the product; a product without one is dropped as soon as a date bound is set.

🔌 Integrations and API

Call the Actor via the Apify API, the JavaScript or Python clients, or connect it with integrations and webhooks (Make, Zapier, n8n, Google Sheets, Slack, Airtable…). The dataset can be fetched as JSON or CSV from any tool.

🤖 Use with AI agents (MCP)

AI agents (Claude, ChatGPT, Cursor…) can find and run this Actor through the Apify MCP server, billed to their Apify account like any run. It returns one item per AliExpress product and delivery country.

Smallest input, for a cheap first call:

{
"query": "wireless earbuds",
"maxItems": 10
}

Key output fields: url, title, price, currency, soldCount, rating, estimatedDeliveryTo. Cap each call with maxItems and, through the API, with the run option maxTotalChargeUsd. The prices are in the Pricing tab.

❓ FAQ

The Actor only reads what AliExpress shows publicly to any anonymous visitor. It logs in to nothing. Results contain no personal data of buyers beyond the masked name AliExpress shows with a review; do not store it without a legitimate reason (GDPR). You are responsible for using the data in compliance with AliExpress's Terms of Use and applicable law. This Actor is not affiliated with AliExpress.

Does it need a login or a proxy?

No login. The proxy is included in the price: leave the default setting (the residential proxy is not available). A request the site turns away is retried at once on a new proxy session, up to 10 times on top of the retries (without a proxy, after a pause of 5 seconds, doubled at each retry up to 80 seconds).

Why is the price not the one I see on AliExpress?

AliExpress shows each visitor their own price: new-shopper offers, coupons and promotions can change it from one visit to the next. The Actor gives the price an anonymous visitor sees in the delivery country and currency you chose; isNewShopperPrice tells you when it is a new-shopper offer, and sellerOfferPrice is the seller's own price, before those offers.

Is the data safe to open in Excel or to show on a web page?

Titles and review texts are the sellers' and buyers' own words, copied as they are. A text can begin with -, +, = or @: Excel and Google Sheets may read such a cell of a CSV file as a formula. The Actor leaves the text as it is, so that the JSON and the API give the real value: when you open a CSV, import these columns as text. Every URL field holds an http(s) URL or null. On a web page, escape every field like any text written by a stranger.

Known limitations

  • AliExpress serves 60 pages per search; splitByPrice goes past it by price range, which can return a product twice (it is saved once). Not with a sort by price: that search stops at about 3,600 products, in the order of the sort.
  • The number of units sold is exact when AliExpress sends it with the search result, else the rounded figure of the page (soldCountIsLowerBound is then true).
  • Questions and answers, package dimensions and the regular price outside new-shopper offers are not available: AliExpress does not give them.
  • AliExpress cannot sort by newest, nor reviews in any other order than its own: those choices are not offered.

A run that reaches its timeout stops itself about 45 seconds before it: no new page is asked, what it read is saved and, with onlyNew, remembered, and the run ends Succeeded with "Stopped before the run's timeout". Resurrect it to go on from there, or give the next run a longer timeout (Run options).

Something doesn't work?

The last line of the log counts the products saved, filtered out and the requests that failed after every retry. Those requests are listed, with the reason, in the FAILED_REQUESTS record of the run's key-value store. A run that saved nothing and had failed requests fails, and its last message gives the cause.

If AliExpress changes its pages, you are told instead of paying for blank rows. If the first 20 products read all lack their title, price, photo, launch date or category, the run saves nothing more, stops and fails, and its last message names the missing field: at most those first products are charged. A search of fewer products (a scheduled onlyNew run, a small Max products) is checked at its end, from 5 products.

🛟 Support

Open an issue in the Issues tab with a link to your run: the run log and the FAILED_REQUESTS record of the key-value store show exactly which URLs failed and why.