# AliExpress Products Scraper (`insights_data/aliexpress-products-scraper`) Actor

Search AliExpress by keyword, search or category link. Get price, discount, rating, exact sold count, sales per day, estimated revenue, shipping and delivery for every product as clean JSON. Find trending products. Bulk input, no account or cookies needed.

- **URL**: https://apify.com/insights_data/aliexpress-products-scraper.md
- **Developed by:** [Insights Data](https://apify.com/insights_data) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 93.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.20 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### 🛒 What is AliExpress Products Scraper?

**AliExpress Products Scraper** helps dropshippers, ecommerce sellers and market researchers find winning products, watch prices and size up a niche on AliExpress, without copying listings by hand. Enter a keyword or an AliExpress search or category link, click **Start**, and get one row per product with its price, discount, star rating, units sold, shipping offers and image links, ready to export to CSV or Excel.

You need no AliExpress account, login, cookies or coding, and you can try it on the Apify Free plan with its $5 monthly credit. The default input (one keyword, 10 products) is a good first test run.

**Quick win for product hunters:** set **Sort by** to Best Selling and **Minimum rating** to 4.5, then sort the result by `soldCount`.

- 🏆 **Find winning products:** for dropshipping product research, sort a keyword by best selling, keep only well-rated products, and compare units sold, ratings and prices side by side.
- 📈 **Spot new listings that sell:** `launchDate` and `productAgeDays` show how new a listing is, which helps when you research AliExpress trending products. Compare `soldCount` between scheduled runs to see what is selling now.
- 💵 **Watch prices:** save your keywords as a task, schedule it, and compare `price`, `priceOriginal` and `priceDiscount` between runs, the same way ecommerce price monitoring works for other stores.
- 🔎 **Do market research and competitor analysis:** see which products rank for a keyword, at what price, how many listings AliExpress reports, and how many units the top listings have sold.
- 📦 **Shortlist products to source:** collect titles, images, ships-from country, delivery estimates and Choice or local-warehouse badges. Product sourcing still needs your own supplier check: seller names and store ratings are not included.
- 🌍 **Compare countries:** run the same keyword with another shopper country to see local prices, currency and shipping offers.

#### What can AliExpress Products Scraper do?

- 🔍 Search AliExpress by keyword, or read AliExpress search and category links, many in one run
- ↕️ Sort by default order, price (low to high or high to low) or best selling
- 🎯 Filter by free shipping, Choice badge, minimum rating, minimum units sold and a price range
- 🔥 Return units sold, plus a rough sales-per-day average and a rough revenue estimate for every product
- 🚚 Add shipping and offer details: free shipping, free-shipping threshold, ships-from country, delivery estimate, local warehouse, bulk discount and a "lowest price in 90 days" flag
- 📸 Return the main image link, gallery image links, numeric category IDs and the variant (SKU) ID
- ⏱️ Save products while the run is going, so the table fills up page by page
- 🔌 Export to JSON, CSV, Excel, XML or HTML, run it through the Apify API, schedule it, and connect it to Google Sheets, Make, Zapier or n8n (and from there to Slack, through a webhook)

***

### 📋 AliExpress Products Scraper data: what can you extract?

Every product row has 43 fields. The names below are the exact field names in the output.

| Field | What it contains |
|---|---|
| 🆔 `productId`, `skuId` | AliExpress product ID and the ID of the listed variant |
| 📝 `title` | Product title as shown on AliExpress |
| 🔗 `productUrl` | Link to the product page |
| 🔍 `searchQuery`, `rank`, `page` | The keyword or link that found the product, its position in the results and the result page |
| 💵 `priceCurrent`, `price`, `priceCurrency` | Price as displayed, the price as a number and the currency code |
| 🏷️ `priceOriginal`, `priceDiscount` | Price before the discount and the discount in percent, only when the listing shows a discount |
| 🎟️ `newShopperSavings`, `priceIsNewShopperDeal` | The amount a new-shopper deal saves (in the price currency) and whether the shown price is that deal |
| ⭐ `ratingValue` | Average star rating (0 to 5) |
| 🔥 `soldCount`, `soldDescription` | Units sold as a number and the sold label as displayed, for example "50,000+ sold" |
| 📈 `soldPerDay`, `estimatedRevenue` | Two rough estimates: lifetime units sold per day, and lifetime units sold times today's price (see below) |
| 📅 `launchDate`, `productAgeDays`, `scrapedAt` | When the product was listed, its age in days, and when the row was read |
| 🚚 `freeShipping`, `freeShippingOver`, `shipFrom`, `deliveryEstimate`, `localWarehouse` | Shipping offers, ships-from country code and the delivery window as displayed |
| 🏅 `isChoice`, `topSelling`, `bulkDiscount`, `lowestPrice90d`, `isSponsored` | Whether the listing shows the Choice badge, a top-selling label, a bulk discount offer or the "lowest price in 90 days" label, and whether the slot is sponsored |
| 🎁 `tags`, `promotions`, `highlights`, `topReview` | Text labels, promotion codes, feature snippets and the review snippet shown on the listing |
| 🗂️ `categoryId`, `categoryPath` | Numeric AliExpress category IDs: the deepest category and the path from the top level down |
| 📸 `imageUrl`, `imageWidth`, `imageHeight`, `gallery`, `galleryCount` | Main image link and size, gallery image links and how many there are |

> **Note:** fields that AliExpress does not show for a product stay empty (`null`) instead of being guessed.

How to read the sales numbers:

- `soldCount` is the exact number of units sold when the listing data has it. Otherwise it is the lower end of the label, so "10K+ sold" becomes 10000.
- `soldPerDay` is `soldCount` divided by `productAgeDays`: the average over the listing's whole life. It is a rough figure and changes slowly from week to week. For recent sales, compare `soldCount` between two runs instead.
- `estimatedRevenue` is `soldCount` multiplied by today's `price`. It is a rough lifetime figure, not income: earlier sales may have happened at other prices.
- When AliExpress shows a new-shopper deal, the displayed price can be that deal (`priceIsNewShopperDeal` is `true` and the saving is in `newShopperSavings`). It can then be lower than the price a returning customer sees.

#### What data can't AliExpress Products Scraper extract?

- Seller or store names and store ratings
- Stock per variant, variant lists and full product descriptions or specifications
- Category names (you get numeric category IDs)
- Review lists (you get one review snippet, `topReview`, when the listing shows it)
- Image files (you get image links)
- Past prices: each run returns the current price only

If you also source from China's domestic marketplaces and need shop details and seller ratings, use [Taobao 淘宝 & Tmall 天猫 Product Scraper - USD & Reviews](https://apify.com/insights_data/taobao-tmall-product-scraper).

***

### 🧭 How to scrape AliExpress products

AliExpress Products Scraper is built for an easy start, even if you have never extracted data from the web before. Here's how to scrape AliExpress in five steps:

1. [Create a free Apify account](https://console.apify.com/sign-up) with your email.
2. Open [AliExpress Products Scraper](https://apify.com/insights_data/aliexpress-products-scraper) and click **Try for free**.
3. In **Search keywords or AliExpress links**, enter one keyword per line (for example `wireless earbuds`) or paste AliExpress search or category links.
4. Set **Max products per search** and, if you like, a sort order, a country and filters. Then click **Start**.
5. Watch the products appear in the **Output** tab. When the run finishes, click **Export** there and pick JSON, CSV, Excel, XML or HTML.

***

### 💲 AliExpress Products Scraper pricing

#### How much does it cost to scrape AliExpress?

AliExpress Products Scraper uses **pay-per-event** pricing. The bill for a run has three parts:

| Part | Price | When it's charged |
|---|---|---|
| 💲 Results | **$3.00 per 1,000 products** ($0.003 each) on the Free plan, lower on paid plans (see below) | Once for each product saved to the main products table |
| 🚀 Start fee | $0.00005 per run | A tiny fixed fee each time a run starts (at the default memory) |
| ⚙️ Apify platform usage | Billed at your Apify plan's rates | The compute and storage the run uses. If AliExpress rejects requests and the run switches to Apify Proxy, that proxy traffic is part of platform usage too. It depends on your settings and on how AliExpress responds, so check it on your own test run (below) |

| Apify plan | Price per product | Price per 1,000 products |
|---|---|---|
| 🆓 Free | $0.003 | $3.00 |
| 🌱 Starter | $0.0027 | $2.70 |
| 🏗️ Scale | $0.0025 | $2.50 |
| 🏢 Business and higher | $0.0022 | $2.20 |

The plan discount applies to the result price only. The start fee is the same on every plan, and platform usage is billed at your Apify plan's own rates.

Result charges at the Free plan price (platform usage comes on top):

| Products saved | Results cost |
|---|---|
| 🔟 10 | $0.03 |
| 💯 100 | $0.30 |
| 🧮 1,000 | $3.00 |

What is billed and what is not:

- ✅ Billed: each product saved to the main products table.
- ❌ Not billed: products your filters remove, repeats inside one search, and the rows of the extra tables (Pricing, Sales and demand, Shipping and offers, Images, Searches).
- ⚠️ Each search is billed on its own. If two of your keywords find the same product, it is saved once per search and billed twice.
- A run that stops early or fails is billed the same way: only the products it saved, plus the start fee and the platform usage it used.

**How to estimate your total:** do a small test run with the settings you plan to use (for example one keyword and 10 products). When it finishes, open the run's page in Apify Console, where [Apify shows the cost of each run](https://docs.apify.com/platform/actors/running/actors-in-store), including platform usage. Scale that up for the number of products you want, and treat it as a rough guide.

**Maximum charge limit:** set a maximum charge limit in the run options when you start a run (`maxTotalChargeUsd` in the API). When the run reaches it, AliExpress Products Scraper stops cleanly, keeps everything already saved, and its status message starts with "Maximum charge limit reached". See the [pricing tab](https://apify.com/insights_data/aliexpress-products-scraper/pricing) for the event list.

#### Is there a free AliExpress scraper?

You can use this one on the [Apify Free plan](https://apify.com/pricing), which includes $5 of monthly credit. The credit pays the result charges ($0.003 per product on the Free plan) and platform usage. **Free-plan runs work the same as paid runs**: the same settings, limits and data. Start with a small test run to see the cost for your settings.

***

### ⬇️ AliExpress Products Scraper input

To run AliExpress Products Scraper you only need **one keyword or one AliExpress search or category link**. Every other field has a default. If the list is empty, the run stops with "Add at least one search keyword or AliExpress search link to the 'Search keywords or AliExpress links' field."

#### Settings most people change

| Setting (API name) | Default | What it does |
|---|---|---|
| 🔍 **Search keywords or AliExpress links** (`urls`) | `wireless earbuds` (prefill) | Keywords or AliExpress search and category links, one per line. Bulk lists are fine |
| 🔢 **Max products per search** (`maxProducts`) | 10 | Stop each search after this many products |
| ↕️ **Sort by** (`sortBy`) | Default | Default, Price: Low to High, Price: High to Low, or Best Selling (Most Orders) |
| 🌍 **Country** (`country`) | United States | Shopper country: sets the currency and the shipping offers shown |

Here's an example that searches AliExpress for "wireless earbuds" as a US shopper and saves up to 10 products:

```json
{
  "urls": ["wireless earbuds"],
  "maxProducts": 10,
  "sortBy": "default",
  "country": "US"
}
```

See the [input tab](https://apify.com/insights_data/aliexpress-products-scraper/input-schema) for a full description of every field.

#### Keywords, search links and category links

Each line is searched on its own, and every row shows the line it came from in `searchQuery`. If you enter the same line twice, it is searched once (this is about your input lines; the same product found by two different lines is saved for each of them).

- ✅ Good: `wireless earbuds`
- ✅ Good: a search results link or a category page link copied from your browser's address bar
- ❌ Bad: `https://www.aliexpress.com/item/3256806491667018.html` (product page)

> ⚠️ Product, store and home page links are not supported. They are skipped and listed in the Searches table with the status `skipped`. If none of your entries can be used, the run fails with "None of the inputs is a keyword, search link or category link."

#### How many products per search

**Max products per search** counts per keyword or link, not per run. A setting of 50 with three keywords can save up to 150 products. AliExpress lists at most about 3,600 products for one search, so anything above about 3,600 has no effect.

#### Filters

All filters are optional. Only products that match every filter you set are saved, and removed products are not billed.

| Setting (API name) | Default | What it keeps |
|---|---|---|
| 🚚 **Free shipping only** (`freeShipping`) | off | Products whose listing shows plain free shipping (AliExpress free shipping with a minimum basket does not count) |
| 🏅 **Choice products only** (`choiceOnly`) | off | AliExpress Choice products (the Choice badge) |
| ⭐ **Minimum rating** (`minRating`) | 0 (off) | Products rated at least this many stars. Products without a rating are removed while the filter is on |
| 🔥 **Minimum units sold** (`minSold`) | 0 (off) | Products sold at least this many times. Products without a sold count count as 0 |
| 💵 **Minimum price** (`minPrice`) / 💰 **Maximum price** (`maxPrice`) | 0 (off) | Products in this price range, in the currency of the selected country. Products without a price are removed while a price filter is on |

> ⚠️ If none of roughly the first 600 products of a search match your filters, that search stops early and its Searches row shows `no matches`. Loosen the filters or try a broader keyword.

#### Sort order, country and currency

- **Best Selling (Most Orders)** (`orders`) lists the AliExpress best sellers for a keyword first. If AliExpress returns a page that doesn't follow the chosen order, a warning appears in the run's **Log** tab. The products are still saved in the order AliExpress showed them, so sort your export by `soldCount` if the order matters.
- **Country** offers 32 shopper countries: United States, United Kingdom, Germany, France, Spain, Italy, Netherlands, Poland, Portugal, Brazil, Russia, Mexico, Canada, Australia, New Zealand, Saudi Arabia, United Arab Emirates, Israel, Turkey, India, Japan, South Korea, Singapore, Malaysia, Thailand, Indonesia, Philippines, Vietnam, South Africa, Egypt, Ukraine and Kazakhstan.
- The country sets the currency of the prices, and the price filters use that currency. For India, Egypt and Kazakhstan, prices may come in US dollars. `priceCurrency` on each row tells you the real currency.
- **Proxy** (`proxyConfiguration`): leave it as it is. Runs start without a proxy and switch to stronger proxies on their own if AliExpress rejects requests.

***

### ⬆️ AliExpress Products Scraper output

Everything a run produces is in its **Output** tab, and products appear there while the run is going. To download, pick the table in the Output tab and click **Export**, then choose JSON, CSV, Excel, XML or HTML.

The Output tab has three kinds of results:

1. **Products** (the main table, one row per product, billed). It has five views that show different groups of its columns: **Products**, **Pricing**, **Sales and demand**, **Shipping and offers** and **Category and media**. A view is just a column selection; the data is the same table.
2. **Extra tables** (free, not billed): **Pricing**, **Sales and demand** and **Shipping and offers** are copies of those column groups as separate tables. **Images** has one row per gallery image, and **Searches** has one row per keyword or link.
3. **Run summary**: a short record with the totals of the run.

Each run creates a new set of tables. To build a larger AliExpress dataset over time, keep the results of your scheduled runs.

#### JSON example

Results for the input example above (first product, title as shown on AliExpress, gallery shortened):

```json
{
  "productId": "3256806491667018",
  "title": "Original Lenovo XT80 Sports Wireless Earphones with Mics, LED Power Display,Hifi Stereo Sound Bluetooth 5.3 TWS HeadphHeadphones",
  "productUrl": "https://www.aliexpress.com/item/3256806491667018.html",
  "searchQuery": "wireless earbuds",
  "rank": 1,
  "page": 1,
  "scrapedAt": "2026-10-25T12:18:18Z",
  "imageUrl": "https://ae-pic-a1.aliexpress-media.com/kf/Sc304388c77474000888a8dd1027131046.jpg",
  "priceCurrent": "US $15.39",
  "price": 15.39,
  "priceOriginal": 33.67,
  "priceDiscount": 54,
  "priceCurrency": "USD",
  "newShopperSavings": null,
  "ratingValue": 4.9,
  "soldCount": 66557,
  "soldDescription": "50,000+ sold",
  "soldPerDay": 69.55,
  "estimatedRevenue": 1024312.23,
  "launchDate": "2024-03-12T00:00:00Z",
  "productAgeDays": 957,
  "isChoice": true,
  "freeShipping": true,
  "freeShippingOver": null,
  "shipFrom": "CN",
  "topSelling": false,
  "bulkDiscount": false,
  "lowestPrice90d": false,
  "localWarehouse": false,
  "deliveryEstimate": "Fastest delivery in 6 days",
  "isSponsored": false,
  "topReview": null,
  "highlights": null,
  "tags": ["Fastest delivery in 6 days", "Free shipping"],
  "promotions": ["platformItemSubsidy", "channelDiscount"],
  "priceIsNewShopperDeal": false,
  "categoryId": 63705,
  "categoryPath": [44, 100000306, 63705],
  "skuId": "12000037991533877",
  "imageWidth": 350,
  "imageHeight": 350,
  "gallery": [
    "https://ae-pic-a1.aliexpress-media.com/kf/Sc304388c77474000888a8dd1027131046.jpg",
    "https://ae-pic-a1.aliexpress-media.com/kf/S260304b71cc5462cbee36b989060ae4ew.jpg"
  ],
  "galleryCount": 6
}
```

How to read this example: the listing has existed for 957 days and reports 66,557 units sold, so `soldPerDay` is 66,557 ÷ 957 = 69.55, an average over its whole life. `estimatedRevenue` is 66,557 × $15.39 (today's discounted price) = $1,024,312.23. That is a rough lifetime figure, not what the seller earned: many of those units were probably sold at other prices.

#### Extra tables

| Table | One row per | Main fields |
|---|---|---|
| 💵 Pricing | product | `price`, `priceOriginal`, `priceDiscount`, `priceCurrency`, `newShopperSavings`, `priceIsNewShopperDeal` |
| 🔥 Sales and demand | product | `ratingValue`, `soldCount`, `soldPerDay`, `estimatedRevenue`, `launchDate`, `productAgeDays` |
| 🚚 Shipping and offers | product | `freeShipping`, `freeShippingOver`, `shipFrom`, `deliveryEstimate`, `isChoice`, `isSponsored` |
| 📸 Images | gallery image | `position`, `imageUrl`, `isMain` |
| 🔍 Searches | keyword or link | `search`, `kind`, `status`, `pagesRead`, `productsRead`, `productsSaved`, `siteTotal`, `finishedAt` |

Every product row in these tables also carries `productId`, `title` and `productUrl`, so you can join them in a spreadsheet.

#### Search status

The Searches table tells you how each keyword or link went. `kind` is `keyword`, `url` (a search or category link) or `unknown` (a skipped entry).

| Status | Meaning |
|---|---|
| ✅ `ok` | The search ended normally with products saved |
| 🕳️ `no results` | AliExpress showed no products, or nothing was found to save |
| 🎯 `no matches` | Products were found, but none matched your filters |
| ⚠️ `partial` | A page could not be loaded after some products of this search were saved. The search stopped there and the saved products are kept |
| ❌ `error` | A page could not be loaded before any product of this search was saved |
| ⏭️ `skipped` | The entry is not a keyword, search link or category link |
| 💲 `stopped` | The run's maximum charge limit was reached |

#### Run summary

The run summary lists, in plain numbers: products saved, products charged, searches run, products removed by your filters, the country and currency used, and whether the maximum charge limit stopped the run. Developers can read it through the API as the `RUN_SUMMARY` record of the run's key-value store.

***

### 💡 Tips and advanced usage

#### How many results can you scrape with AliExpress Products Scraper?

Up to your **Max products per search** for every keyword or link, and at most about 3,600 products per search, which is as far as AliExpress lists results. A search also ends when AliExpress has no more results for it. To collect more products on one topic, split it into several narrower keywords or category links. A small test run shows what your keywords return.

#### Run it on a schedule: weekly AliExpress price monitoring

There is no built-in AliExpress product monitoring or price history: you run the same input again and compare the runs.

1. Fill in the input for your niche, for example 5 keywords, **Sort by** Best Selling and **Max products per search** 100. Set a maximum charge limit in the run options to cap the result charges of each run (platform usage is billed on top).
2. Click **Save as new task** and give it a name such as "Earbuds weekly".
3. Open **Schedules** in Apify Console, create a schedule (for example every Monday at 08:00) and add the task.
4. After each run, compare it with the previous one by `productId`. Changes in `price` and `priceDiscount` show price moves. The change in `soldCount` gives a rough idea of sales between the two runs (it may not move when `soldCount` comes from a rounded label such as "10K+ sold").

**No-code way to compare two runs:** export both runs to CSV and open them in Google Sheets on two tabs. In the newer tab, add a column with `=XLOOKUP(A2, 'Last week'!A:A, 'Last week'!J:J)` (adjust the columns so A is `productId` and J is `price`), then subtract to see the price change. Filter by `productId` to follow one product.

#### Can I use it for product trend analysis?

Yes, by comparing runs over time. Which products gain the most units sold from week to week is a better trend signal than `soldPerDay`, which is a lifetime average. `launchDate` and `productAgeDays` tell you which of them are new listings.

#### How to keep costs down

- Start with a low **Max products per search** and raise it once the results look right.
- Use filters: removed products are not saved and not billed.
- Don't put overlapping keywords in one run. The same product found by two searches is billed twice.
- Set a maximum charge limit in the run options when you start a run.

***

### 🔌 Integrations and API

#### Is there an AliExpress scraper API?

Yes. The [Apify API](https://docs.apify.com/api/v2) lets you start AliExpress Products Scraper runs, schedule them and fetch results from your own apps. Use the `apify-client` [NPM package](https://apify.com/insights_data/aliexpress-products-scraper/api/javascript) for Node.js or the `apify-client` [PyPI package](https://apify.com/insights_data/aliexpress-products-scraper/api/python) for Python. The [API tab](https://apify.com/insights_data/aliexpress-products-scraper/api) has ready-to-use code.

#### How to scrape AliExpress with Python

No need to maintain your own AliExpress scraper Python script: start a run with the `apify-client` package and read the rows. This prints every row of the AliExpress product dataset from that run:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("insights_data/aliexpress-products-scraper").call(run_input={
    "urls": ["wireless earbuds"],
    "maxProducts": 10,
    "sortBy": "default",
    "country": "US",
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["title"], item["price"], item["soldCount"])
```

#### Can I integrate AliExpress Products Scraper with other apps?

Yes. Connect it with almost any cloud service through [Apify integrations](https://apify.com/integrations) and [webhooks](https://docs.apify.com/integrations/webhooks). Two workflows that fit this Actor:

- 📊 **Google Sheets product tracker:** schedule the task from the tip above and add the Google Sheets integration to it in Apify Console. The integration's settings let you choose whether each run adds rows or replaces the sheet. Then use the XLOOKUP tip above to compare weeks.
- 🔔 **Slack alert for new winners** (needs Make, Zapier or n8n): add a webhook that fires when a run succeeds and send it to one of these tools. There, fetch the run's dataset, keep products above your `soldCount` and `ratingValue` limits, and post them to a Slack channel.

#### Can I use AliExpress Products Scraper with AI agents (MCP)?

Yes. Connect it to Claude and other AI assistants through the Apify MCP server, then ask in plain words, for example "find 10 best-selling phone cases under $5 with free shipping". Open the [MCP tab](https://apify.com/insights_data/aliexpress-products-scraper/api/mcp) for setup steps.

***

### 🧰 Other e-commerce scrapers

These Actors from the same author cover other marketplaces and the next steps of product research:

- 🛒 [Amazon Product Scraper](https://apify.com/insights_data/amazon-product-scraper): Amazon products from URLs, keywords or ASINs across 23 marketplaces, with price, Buy Box seller, stock, rating, reviews and Best Sellers Rank, plus a monitor mode for price and stock changes.
- 🏮 [Taobao 淘宝 & Tmall 天猫 Product Scraper - USD & Reviews](https://apify.com/insights_data/taobao-tmall-product-scraper): Taobao and Tmall products with English titles, CNY and USD prices, shop details, seller ratings and sample reviews.
- 🛍️ [Flipkart Product Scraper](https://apify.com/insights_data/flipkart-product-scraper): Flipkart products by keyword or category URL with prices, discounts, ratings, specs, sellers and offers.
- 💬 [Flipkart Reviews Scraper](https://apify.com/insights_data/flipkart-reviews-scraper): Flipkart product reviews, star ratings, photos and rating summaries in bulk.
- 🧺 [E commerce Scraping Tool Api](https://apify.com/insights_data/e-commerce-scraping-tool-api): product data from Shopify, WooCommerce and any schema.org store, with prices, discounts, live stock, variants, GTIN, ratings, images and seller info, from a store, category or product URL.
- 🔑 [Keyword Search Volume — Bulk Google Metrics (CPC & Trend)](https://apify.com/insights_data/keyword-search-volume): Google search volume, CPC and a 12-month trend for thousands of keywords, to check demand for a product idea outside AliExpress.

***

### ❓ FAQ

#### Is it legal to scrape AliExpress?

Scraping publicly available product data is generally legal, but you are responsible for how you use it, and the same goes for any AliExpress data extraction. AliExpress Products Scraper reads public search and category listings and returns product data, not personal data. Respect AliExpress's terms of service and intellectual property rules (for example, product photos belong to their owners), and get legal advice for your case if you are unsure. This is not legal advice.

#### How does AliExpress Products Scraper work?

It works like a shopper browsing AliExpress search results, only faster. For each keyword or link, it opens the results in your country and sort order, reads every product on each page, applies your filters and saves the matching products straight away. It stops at your max products or at the end of the results. Like any AliExpress data scraper, it can only return what the pages show: fields that AliExpress doesn't show stay empty instead of being guessed.

#### Do I need coding skills to use an AliExpress product scraper?

Not for this one. Unlike writing your own AliExpress web scraper, there is no code to set up or host: you fill in a form in Apify Console and click **Start**. The API and Python options above are there if you want them.

#### How do I find AliExpress best sellers?

Set **Sort by** to Best Selling (Most Orders). AliExpress then lists the most-ordered products first, each with `soldCount`. Add **Minimum units sold** or **Minimum rating** to skip weak listings.

#### How do I find winning products for AliExpress dropshipping?

Combine a niche keyword with Best Selling, a minimum rating (for example 4.5), free shipping and a price range that fits your margin. Sort the export by `soldCount`, then schedule the same search and see which products gain the most units between runs. The final choice, and the supplier check, are up to you.

#### Is this an AliExpress product research tool?

It is the data part of product research: units sold, ratings, prices, discounts, shipping offers and badges for every product of a search. It doesn't score or rank products for you, and it doesn't return seller details.

#### How accurate is the sales estimation?

`soldCount` is exact when the listing data has the number, otherwise it is the lower end of a label such as "10K+ sold". `soldPerDay` and `estimatedRevenue` are calculated from it (lifetime average per day, and lifetime units times today's price), so treat both as rough estimates, not AliExpress sales figures.

#### Can I track AliExpress prices over time?

Yes, by running it on a schedule and comparing the runs (see the schedule tip above). Each run returns the current price only, so the history is the series of runs you keep. The `lowestPrice90d` flag tells you when AliExpress itself marks a listing as at its lowest price in 90 days.

#### What prices does it return?

The current price a shopper in your chosen country sees (`price`, `priceCurrent`), plus the original price and the discount when the listing shows a discount. That covers what most people want from an AliExpress price scraper. When AliExpress shows a new-shopper deal, the displayed price can be that deal (`priceIsNewShopperDeal` is `true`), so it can be lower than what a returning customer sees in the browser.

#### Can I compare AliExpress prices between countries?

Yes. For an AliExpress price comparison, run the same keyword twice with a different **Country**, then match the rows by `productId`. Prices are not converted: each run keeps the currency of its country, shown in `priceCurrency`.

#### Does the Free plan limit how many products I get?

No. Free-plan runs work the same as paid runs. The limits are your own **Max products per search** (default 10), the roughly 3,600 products AliExpress lists per search, and any maximum charge limit you set. Your $5 monthly credit pays the result charges and platform usage.

#### How do I export AliExpress products to CSV or Excel?

Open the run's **Output** tab, pick the table and click **Export**, then choose CSV. Getting AliExpress products to Excel works the same way: choose Excel in the export dialog. JSON, XML and HTML are there too, and you can fetch the same data through the API or send it to Google Sheets with an integration.

#### How is this different from the official AliExpress API?

The official AliExpress product API is meant for approved developers and affiliates and needs an application and app keys. AliExpress Products Scraper needs only an Apify account and returns the AliExpress product data that the search pages show, including units sold, badges and shipping offers.

#### Do I need a separate AliExpress category scraper?

No. The same field takes keywords, search result links and category links, so one run covers what an AliExpress search scraper and an AliExpress listings scraper would do separately. Paste each link as it appears in your browser; the run starts from the first page of that listing.

#### Can I use it as an AliExpress image scraper?

Partly. You get the links of the main image and of every gallery image (the Images table has one row per image), not the image files. Download them yourself if you need the files, and respect the owners' rights.

#### Can it scrape a single AliExpress product page?

No. Product page links are not supported and are skipped. AliExpress Products Scraper works from keywords, search results and category listings only.

#### Why am I getting fewer results than expected?

- **Max products per search** is 10 by default. Raise it.
- Filters remove products. Check the Searches table: `no matches` means nothing matched your filters.
- AliExpress lists at most about 3,600 products per search, and fewer for narrow keywords (see `siteTotal`).
- A product found twice in one search is saved once.
- Product, store and home page links are skipped (status `skipped`).
- If AliExpress keeps rejecting requests, the run stops early and keeps what it saved, and you pay only for those products. You don't need to change the proxy setting: wait a while and run it again.

***

### 📧 Support and feedback

Found a bug or need another field? Please create an issue on the [Issues tab](https://apify.com/insights_data/aliexpress-products-scraper/issues/open) and include the input you used.

Need a **custom solution** or more data? Contact us at hello.insights.data@gmail.com.

Built and maintained by [Insights Data](https://apify.com/insights_data).

# Changelog

This Actor's version history is a separate document: https://apify.com/insights_data/aliexpress-products-scraper/changelog.md

# Actor input Schema

## `urls` (type: `array`):

Keywords to search for (for example wireless earbuds) or AliExpress search and category links, one per line. Bulk lists are welcome. Product, store and home page links are not supported.

## `maxProducts` (type: `integer`):

Stop each search after this many products. One search can return up to about 3,600 products.

## `sortBy` (type: `string`):

Order of the search results.

## `country` (type: `string`):

Shopper country. It sets the currency of the prices and the shipping offers shown.

## `freeShipping` (type: `boolean`):

Keep only products whose listing shows plain free shipping.

## `choiceOnly` (type: `boolean`):

Keep only products with the AliExpress Choice badge.

## `minRating` (type: `number`):

Keep only products with at least this star rating (0 to 5). 0 means no rating filter.

## `minSold` (type: `integer`):

Keep only products sold at least this many times. 0 means no filter.

## `minPrice` (type: `number`):

Keep only products priced at or above this amount, in the currency of the selected country. 0 means no minimum.

## `maxPrice` (type: `number`):

Keep only products priced at or below this amount, in the currency of the selected country. 0 means no maximum.

## `proxyConfiguration` (type: `object`):

Runs start without a proxy. If the requests are rejected, the Actor switches to stronger proxies on its own and keeps using them for the rest of the run. Choose Apify Proxy here only if you want to start with a proxy.

## Actor input object example

```json
{
  "urls": [
    "wireless earbuds"
  ],
  "maxProducts": 10,
  "sortBy": "default",
  "country": "US",
  "freeShipping": false,
  "choiceOnly": false,
  "minRating": 0,
  "minSold": 0,
  "minPrice": 0,
  "maxPrice": 0,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `products` (type: `string`):

One row per product.

## `pricing` (type: `string`):

Prices, discounts and new-shopper deals.

## `sales` (type: `string`):

Ratings, units sold, sales per day and estimated revenue.

## `delivery` (type: `string`):

Shipping, delivery estimate, badges and offers.

## `images` (type: `string`):

One row per gallery image.

## `searches` (type: `string`):

One row per search with pages read and products saved.

## `summary` (type: `string`):

Counts for the finished run.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "wireless earbuds"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("insights_data/aliexpress-products-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": ["wireless earbuds"],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("insights_data/aliexpress-products-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "wireless earbuds"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call insights_data/aliexpress-products-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,insights_data/aliexpress-products-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/BnAmPkYbCHCjfGlqb/builds/bjSBGtkVny6Db3N5t/openapi.json
