# AliExpress Search Scraper: Prices & Exact Orders, $2/1K (`scrapelark/aliexpress-search-scraper`) Actor

Search AliExpress by keyword or link and get price, exact orders, rating, Choice, ship-from and delivery days for 39 countries. 300 products in 20 seconds, 27 fields. Export to JSON, CSV or Excel. $2 per 1,000; rows without a price are never charged.

- **URL**: https://apify.com/scrapelark/aliexpress-search-scraper.md
- **Developed by:** [ScrapeLark](https://apify.com/scrapelark) (community)
- **Categories:** E-commerce, Automation, Integrations
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

### AliExpress Search Scraper & API: Prices, Exact Orders, Choice and Rank (2026)

**$2 per 1,000 products, and you pay only for products with a price.** Repeats are left out, and "FREE with any
purchase" cards come free. Proxies and server time are included. No AliExpress account, no login.

Type what you would type in the AliExpress search box, or paste AliExpress search links, and get every product of the
results as one row: price, crossed-out price, exact order count, rating, photos, Choice, ship-from country, delivery
days and its place in the results. Prices and results are what a shopper in your country sees, in your currency.
Built for dropshipping product research, price tracking, best-seller lists and rank tracking.

### Why choose this AliExpress search scraper

- **Pay only for products with a price.** On AliExpress some cards show "FREE with any purchase" (a welcome gift for
  new shoppers) instead of a price: 16% of rows across 20 US searches on 30 Oct 2026, and up to 47% for phone cases.
  Those rows are kept, marked `welcomeGift`, and free, and they do not count towards your **Max products per search**.
  The same product shown again on a later page is left out and never charged.
- **Exact order counts, not "5,000+".** The card says "5,000+ sold"; the row also has the exact count AliExpress keeps
  behind it (7,752 in the output example below), so you can sort by real sales. In a 12,000-product US test, 92% of
  rows had a sales count.
- **Your country, your currency.** 39 ship-to countries and 28 currencies, with English titles. On 30 Oct 2026, 100-
  product searches in the UK, Canada and Australia came back in GBP, CAD and AUD in 7 to 11 seconds each.
- **The marks dropshippers filter on.** Choice, the ship-from country (84% of rows in the US test, for example `US`
  for a US warehouse), delivery days when the card gives them (53%), paid listings marked `isAd`, and the card's own
  badges ("Fastest delivery in 6 days", "Top selling on AliExpress").
- **Fast and steady.** A plain page download, no browser. Our 30 Oct 2026 test read 200 search pages (11,996
  products from 20 searches) in about 2.5 minutes, every page on the first try, with 0 blocked pages.
- **Rank tracking built in.** Every row has its page, its place on the page and its rank in the whole search. Run the
  same search every day and watch a product move.
- **Easy to switch to.** The same input names as other AliExpress listing actors: `searchQueries`, `searchUrls`,
  `maxResults`, `shipTo`, `currency`, `sort`, `minPrice`, `maxPrice`, `minOrders`, `minRating`, `choiceOnly`.

### Try your first run

Keep the prefilled form and press **Start**, or paste this into the JSON tab:

```json
{
    "searchQueries": ["wireless earbuds"],
    "maxResults": 100
}
```

You get the first 100 wireless earbuds with a price that a US shopper sees, in US dollars, in the site's own order,
plus any "FREE with any purchase" cards in between (free). Our 100-product test runs on 30 Oct 2026 took 7 to 11
seconds. Open the rows as a table, or download them as JSON, CSV or Excel. Then change the words, the country or the
sort, and run again.

### Copy to your AI assistant

Paste this block into Claude, ChatGPT or Cursor before you ask it to write code or plan a dataset:

```text
Apify actor: scrapelark/aliexpress-search-scraper (AliExpress Search Scraper by ScrapeLark)
It reads AliExpress search results and returns one row per product. No login needed.
Run it: https://apify.com/scrapelark/aliexpress-search-scraper, the Apify API, or the Apify MCP server.

Input (give searchQueries or searchUrls, or both):
- searchQueries (array of strings): search words, e.g. ["wireless earbuds", "phone case"]
- searchUrls (array of {url}): AliExpress search links; a link keeps its own sort and filters
- maxResults (integer, default 100): products with a price per search; free "welcome gift" rows come on top
- shipTo (two-letter country, default "US"): one of 39 countries; prices and results follow it
- currency (default "USD"): one of 28 currencies
- sort: "bestMatch" (default), "orders", "priceAsc", "priceDesc"
- minPrice, maxPrice (number, in the chosen currency); minOrders (integer); minRating (0 to 5)
- choiceOnly, freeShippingOnly (boolean); shipFrom (two-letter country, e.g. "US" for a US warehouse)

Output, one row per product:
id, productUrl, title, price, originalPrice, discountPercentage, currency, imageUrl, additionalImages,
rating, totalSold (card text), totalSoldCount (exact orders), sellingPoints, isAd, isChoice, shipFrom,
deliveryDaysMin, deliveryDaysMax, welcomeGift, searchQuery, searchUrl, page, position, rank, shipTo,
status ("ok"), scrapedAt. A search where every page failed gives one free row with status "failed".
Price: $2 per 1,000 rows with a price; rows without a price and failed rows are free.
For variants, stock and every shipping option, send productUrl to scrapelark/aliexpress-product-details.
```

### How to use it: 5 recipes

#### 1. Find the best sellers in a niche

Sort by orders and keep only products that already sell:

```json
{
    "searchQueries": ["dog toys", "cat bed", "pet water fountain"],
    "maxResults": 200,
    "sort": "orders",
    "minOrders": 500
}
```

Sort the result by `totalSoldCount` for the real ranking. Run it again next week and compare to see which products
gain sales.

#### 2. Find products in a US warehouse

For fast delivery to US customers, keep only products sent from the US:

```json
{
    "searchQueries": ["wireless earbuds"],
    "maxResults": 200,
    "sort": "orders",
    "maxPrice": 20,
    "minOrders": 1000,
    "shipFrom": "US"
}
```

#### 3. Track your product's rank every day

Run the same search on a schedule and follow `rank` for your product `id`. `rank` counts every card from the top of
page 1, ads included, so it matches what a shopper scrolls through.

```json
{
    "searchQueries": ["led strip lights"],
    "maxResults": 300
}
```

#### 4. Check prices in another country

Prices, products and delivery marks follow the ship-to country. Set the country and its currency:

```json
{
    "searchQueries": ["phone case"],
    "maxResults": 100,
    "shipTo": "GB",
    "currency": "GBP"
}
```

#### 5. Get every variant and shipping option of the products you shortlist

Send the `productUrl` values to our [AliExpress Product Details Scraper](https://apify.com/scrapelark/aliexpress-product-details).
It returns every variant with its own price and stock, every shipping option for your country, specifications and the
seller.

### Input

| Field              | Form name               | What it does                                                                                                                                                                                            |
| ------------------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `searchQueries`    | Search words            | What you would type in the AliExpress search box, one search per line                                                                                                                                   |
| `searchUrls`       | Search links            | AliExpress search links; a link keeps its own sort and filters, and a filter you set is added to it                                                                                                     |
| `maxResults`       | Max products per search | Products with a price per search (default 100); "FREE with any purchase" rows come on top, free                                                                                                         |
| `shipTo`           | Ship to country         | One of 39 countries (default US); prices, products and delivery marks follow it                                                                                                                         |
| `currency`         | Currency                | One of 28 currencies (default USD), also for Min price and Max price                                                                                                                                    |
| `sort`             | Sort by                 | Best match (default), Most orders, Price: low to high, Price: high to low                                                                                                                               |
| `minPrice`         | Min price               | Only products at this price or more                                                                                                                                                                     |
| `maxPrice`         | Max price               | Only products at this price or less                                                                                                                                                                     |
| `minOrders`        | Min orders              | Only products with at least this many orders                                                                                                                                                            |
| `minRating`        | Min rating              | Only products with at least this star rating; products without a rating are left out                                                                                                                    |
| `choiceOnly`       | AliExpress Choice only  | Only Choice products                                                                                                                                                                                    |
| `freeShippingOnly` | Free shipping only      | AliExpress's own free-shipping filter, as on the site                                                                                                                                                   |
| `shipFrom`         | Ships from              | Only products sent from this country, as a two-letter code: `US` for a US warehouse, `CN` for China. The actor checks every product; products whose card does not say where they ship from are left out |

### Output

| Field                                          | What it is                                                                                    |
| ---------------------------------------------- | --------------------------------------------------------------------------------------------- |
| `id`, `productUrl`, `status`                   | The product id, its link, and `ok`                                                            |
| `title`                                        | Product title                                                                                 |
| `price`, `originalPrice`, `discountPercentage` | The price on the card, the crossed-out price and the discount                                 |
| `currency`                                     | The currency of the prices                                                                    |
| `rating`                                       | Star rating, 0 to 5                                                                           |
| `totalSold`, `totalSoldCount`                  | Sales as shown ("5,000+ sold") and the exact order count                                      |
| `imageUrl`, `additionalImages`                 | The main photo and the card's other photos                                                    |
| `sellingPoints`                                | The short texts on the card: "Free shipping", "Fastest delivery in 4 days", "Top selling" ... |
| `isAd`                                         | True for a paid listing                                                                       |
| `isChoice`                                     | True for an AliExpress Choice product                                                         |
| `shipFrom`                                     | The ship-from country, when the card gives it                                                 |
| `deliveryDaysMin`, `deliveryDaysMax`           | Delivery days, when the card gives them (most often in the US)                                |
| `welcomeGift`                                  | True for a "FREE with any purchase" card: the price is empty and the row is free              |
| `searchQuery`, `searchUrl`                     | The search the product came from                                                              |
| `page`, `position`, `rank`                     | The page, the place on that page, and the place in the whole search                           |
| `shipTo`, `scrapedAt`                          | The ship-to country of the run, and when the page was read                                    |

A search where every page failed gives one free row with `status` `failed` and a `message`. Run it again later.

One real row, from a US search for "wireless earbuds" on 30 Oct 2026:

```json
{
    "id": "1005009970168305",
    "productUrl": "https://www.aliexpress.com/item/1005009970168305.html",
    "title": "Wireless Earbuds Open-Ear Sports Baseus Eli 2i Fit Open-Ear Earphones True Wireless Bluetooth 6.0 Ear Hooks Headphones IPX5 Waterproof Sports Earbuds Bass Boost",
    "price": 23.79,
    "originalPrice": 59.33,
    "discountPercentage": 59,
    "currency": "USD",
    "imageUrl": "https://ae-pic-a1.aliexpress-media.com/kf/Sdf2dfd6027034dfdb0d79d01fa4ef8e8z.png",
    "additionalImages": [
        "https://ae-pic-a1.aliexpress-media.com/kf/S568b997cce15443c851eca7f83f18116E.jpg",
        "https://ae-pic-a1.aliexpress-media.com/kf/Sbc0ee1d8de8a4337afb607efc19a8c7dI.png"
    ],
    "rating": 4.7,
    "totalSold": "5,000+ sold",
    "totalSoldCount": 7752,
    "sellingPoints": ["Top selling on AliExpress", "Fastest delivery in 6 days"],
    "isAd": true,
    "isChoice": true,
    "shipFrom": "CN",
    "deliveryDaysMin": 6,
    "deliveryDaysMax": 11,
    "welcomeGift": false,
    "searchQuery": "wireless earbuds",
    "searchUrl": "https://www.aliexpress.com/w/wholesale-wireless-earbuds.html",
    "page": 1,
    "position": 2,
    "rank": 2,
    "shipTo": "US",
    "status": "ok",
    "scrapedAt": "2026-10-30T18:28:01.512Z"
}
```

### Pricing

**$2 per 1,000 products** ($0.002 per product with a price). The proxy and the server time are included. The only other
charge is the run start: $0.00005 per GB of memory, so $0.00005 for a run at the default 1 GB.

Only rows with a price are charged. Repeats are left out and cost nothing; "FREE with any purchase" rows and failed
searches are free. **Max products per search** counts only products with a price, so a search gives you the number you
asked for (when it has that many), and the free rows come on top.

| Products with a price | You pay |
| --------------------- | ------- |
| 100                   | $0.20   |
| 1,000                 | $2      |
| 10,000                | $20     |

A worked example: a dropshipper checks 10 niches every week, 200 products each. That is 2,000 products with a price, so
$4 a week. If 300 "FREE with any purchase" cards come with them, those 300 rows are free.

Set a spending limit when you start the run, and the run stops cleanly when it is reached.

### Schedule it: rank and price tracking

AliExpress does not show past prices or past ranks, so build the history yourself:

1. Save your input as a task and add a schedule in Apify (for example every morning).
2. Each run gives a new dataset. Keep them, or send each run to Google Sheets or your database.
3. Match rows by `id` and compare `price`, `totalSoldCount` and `rank` from day to day.

The actor reads the search fresh every time; it has no "only new products" mode yet.

### Integrations: API, MCP, n8n, Make and Zapier

- **API:** start a run and read the rows from any language. In Node.js:

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('scrapelark/aliexpress-search-scraper').call({
    searchQueries: ['wireless earbuds'],
    maxResults: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items[0]);
```

- **AI agents (MCP):** add the actor as a tool in the Apify MCP server (mcp.apify.com), and Claude, ChatGPT, Cursor or
  any MCP client can search AliExpress for you.
- **No-code:** the Apify app in n8n, Make and Zapier starts a run and hands the rows to your next step. A webhook can
  tell your system when a run ends.

### FAQ

**How many products can one search give?**
AliExpress shows about 60 products a page, and the actor reads up to 60 pages of one search. Repeats are left out, and
a filtered search has fewer products a page. A search with fewer results than **Max products per search** gives all it
has.

**Why did my run give more rows than "Max products per search"?**
The number counts products with a price. "FREE with any purchase" rows come on top, free, so a search can give more
rows than the number you set. Filter on `welcomeGift` to drop them.

**Why does a row have no price?**
On some cards AliExpress shows "FREE with any purchase" instead of a price: a welcome gift for new shoppers, and the
actor visits as a new shopper. Those rows have `welcomeGift` true and an empty price, and they are free. Open the
product with our [product details actor](https://apify.com/scrapelark/aliexpress-product-details) for its real prices.

**What is the difference between `totalSold` and `totalSoldCount`?**
`totalSold` is the text on the card, rounded ("5,000+ sold"). `totalSoldCount` is the exact order count AliExpress
keeps in the page's data, or the shown number when the page has no exact one.

**Do I need an AliExpress account or cookies?**
No. The actor reads the search results a logged-out shopper sees. You give no login and no cookies, and nothing about
the visit is kept after the run.

**Does AliExpress have an official API?**
AliExpress has an Open Platform for affiliates, dropshippers and sellers: you register as a developer, create an app
and wait for approval, and what you can read depends on the program. This actor needs no key, app or approval. It
returns the public search results a shopper sees.

**Which countries and currencies can I use?**
39 ship-to countries, including the US, UK, Canada, Australia, most of the EU, Brazil, Mexico, Japan and South Korea,
and 28 currencies. Any currency works with any country, for example Germany with US dollars. Titles come in English.

**Does "Free shipping only" mean every product ships free?**
It uses AliExpress's own free-shipping filter, the same as the box on the site, and AliExpress decides which products
count. On our 31 Oct 2026 test (US smart watches, Choice and free shipping together) the site applied both filters,
but only 1 of the first 10 cards said "Free shipping" in its badges. Check `sellingPoints` for the card's own words,
and the product details actor for the exact shipping price.

**Are ads included?**
Yes, as on AliExpress itself, marked with `isAd` true. Filter them out if you do not want them.

**Why are delivery days empty for many products?**
The search card gives delivery days only sometimes, most often in the US (53% of rows in our US test). The product
details actor gives every delivery option with its days.

**How fast is it?**
In our tests, about 12,000 products in 2.5 minutes at the default memory. A search of 100 products takes a few
seconds, plus the run start.

**What happens when a page is blocked?**
The actor tries the page again as a new visitor, up to 4 tries. If every page of a search fails, you get one free row
with `status` `failed`, and you pay nothing for that search. Run it again later.

**Can I use my own AliExpress search link?**
Yes. Paste it into **Search links**. It keeps its own sort and filters, and any filter you set in the form is added to
it.

**Does it keep any data about my runs?**
No. No cookies or browsing data are kept after a run ends. Your results stay in your own Apify dataset.

### Related ScrapeLark scrapers

- [AliExpress Product Details Scraper: SKUs & Shipping](https://apify.com/scrapelark/aliexpress-product-details): the
  full record for the products you find here: every variant with its own price and stock, every shipping option for
  your country, specifications, photos and the seller. $7 per 1,000 products, and you pay only for products that come
  back with data.

### Feedback and support

Missing a field, a filter or a country? Open an issue on the **Issues** tab. We read every one and usually reply within
a day. If the actor saves you time, a rating on this page helps other buyers find it, and saving the actor keeps it one
click away.

# Actor input Schema

## `searchQueries` (type: `array`):

What you would type in the AliExpress search box, one search per line, for example "wireless earbuds".

## `searchUrls` (type: `array`):

AliExpress search links, for example https://www.aliexpress.com/w/wholesale-phone-case.html. A link keeps its own sort and filters; a filter you set below is added to it.

## `maxResults` (type: `integer`):

Each search gives at most this many products with a price. "FREE with any purchase" cards (welcomeGift true) are free and come on top of this number, so a search can give a few more rows than this. Repeats (the same product on a later page) are left out and not counted.

## `shipTo` (type: `string`):

Prices, filters and delivery marks are for this country. Each run uses one country; run again for another.

## `currency` (type: `string`):

The currency for all prices, and for "Min price" and "Max price".

## `sort` (type: `string`):

The order of the results. Search links keep their own order with "Best match".

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

Only products at this price or more, in the chosen currency.

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

Only products at this price or less, in the chosen currency.

## `minOrders` (type: `integer`):

Only products with at least this many orders.

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

Only products with at least this star rating (0 to 5). Products without a rating are left out.

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

Only Choice products: AliExpress's own faster, free-shipping service.

## `freeShippingOnly` (type: `boolean`):

AliExpress's own free-shipping filter, the same as the box on the site. AliExpress decides which products count, and a card may not say "Free shipping" itself: check sellingPoints for the card's own words.

## `shipFrom` (type: `string`):

Only products sent from this country, as a two-letter code: for example US for a US warehouse, or CN for China. The actor checks every product; products whose card does not say where they ship from are left out.

## Actor input object example

```json
{
  "searchQueries": [
    "wireless earbuds",
    "phone case"
  ],
  "searchUrls": [
    {
      "url": "https://www.aliexpress.com/w/wholesale-phone-case.html?sortType=total_tranpro_desc"
    }
  ],
  "maxResults": 100,
  "shipTo": "US",
  "currency": "USD",
  "sort": "orders",
  "minPrice": 5,
  "maxPrice": 20,
  "minOrders": 1000,
  "minRating": 4.5,
  "choiceOnly": true,
  "freeShippingOnly": true,
  "shipFrom": "US"
}
```

# Actor output Schema

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

No description

# 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 = {
    "searchQueries": [
        "wireless earbuds"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapelark/aliexpress-search-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 = { "searchQueries": ["wireless earbuds"] }

# Run the Actor and wait for it to finish
run = client.actor("scrapelark/aliexpress-search-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 '{
  "searchQueries": [
    "wireless earbuds"
  ]
}' |
apify call scrapelark/aliexpress-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapelark/aliexpress-search-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/bgLAzbrhUYO5qeOQT/builds/fKrAWn2ijvptgCfvT/openapi.json
