# AliExpress Search Scraper — rank, price, sold count · $2/1k (`leoworks/aliexpress-search-scraper`) Actor

Scrape AliExpress search results for any keyword — rank, title, price, discount, sold count, rating, ship-from and ads flagged — up to 60 pages. Rank mode tracks where your products rank for each keyword over time. No login.

- **URL**: https://apify.com/leoworks/aliexpress-search-scraper.md
- **Developed by:** [Leoworks](https://apify.com/leoworks) (community)
- **Categories:** E-commerce, SEO tools, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.70 / 1,000 search results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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

## AliExpress Search Scraper — rank, price, sold count

**For dropshippers, sourcing teams and price researchers** who want AliExpress search results for a keyword — position, price, discount, sold count, rating, ship-from, ads flagged — as clean rows for $2 per 1,000 products, and who want to know where their own listings rank for each keyword over time. No login, no cookies.

> Independent tool — not affiliated with, endorsed by or sponsored by AliExpress or Alibaba Group. The name is used only to describe the data source.

**Use it to:** find what sells for a keyword before you source or dropship · watch competitors' prices and sold counts · track your listings' keyword rank on a schedule · feed product research to your AI agent or spreadsheet.

### Output sample

Real rows (search mode, one per product) from run `GtezzMn88GcSODQbV` (2026-10-05, keyword "wireless earbuds", US / USD). Titles are shortened here.

| position | organicRank | isAd | title | price | originalPrice | discount | sold | rating | shipFrom |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | false | 2026 New Air 3 Pro 3 Bluetooth Wireless Earbuds with Heart Rate Monitoring… | $19.01 | $57.20 | 66% | 4,000+ sold (`soldCount` 4000) | 4.9 | US |
| 2 | 2 | false | TWS Wireless Bluetooth Headset LED Display Gamer Earbuds with Mic… | $3.42 | $24.79 | 86% | 1,000+ sold | 4.9 | US |
| 3 | 3 | false | SK Small Headphones Wireless Bluetooth Headset Sport Sleeping Invisible… | $2.54 | $30.28 | 91% | 5,000+ sold | 4.9 | US |
| 4 | null | **true** | Wireless Clip-On Bluetooth Earbuds Premium HiFi Audio Sports Headphones… | $3.33 | $14.62 | 77% | 900+ sold | 4.6 | CN |

Every row also has `productId`, `globalProductId`, `productUrl`, `imageUrl`, `tags[]` (promo and delivery tags), `page`, `totalResults` and `country`. Rank mode rows (`type: "rank"`) add `found`, `previousRank`, `rankChange` and `isNew` per tracked product — see **Output** below.

### Input example

The form default — one keyword, 20 products, best match, US / USD (about $0.04, 6 seconds):

```json
{
  "keywords": ["wireless earbuds"],
  "maxResultsPerKeyword": 20
}
```

**Rank mode** — add products to track; one row per keyword × product, with the change since the last run when scheduled:

```json
{
  "keywords": ["wireless earbuds", "bluetooth earphones"],
  "trackProducts": ["https://www.aliexpress.com/item/1005012974863527.html"],
  "maxPages": 5
}
```

### Pricing

Pay only for what you collect — no subscription.

| Event | Price | When |
|---|---|---|
| `result` | $0.002 | One product from the search results (rank, title, price, sold count, rating) — search mode. |
| `keyword-checked` | $0.003 | The rank of one tracked product for one keyword (found or not found) — rank mode. |

That is **$2 per 1,000 search results** (search mode) and **$3 per 1,000 rank checks** (rank mode, one tracked product × one keyword). **First run with the form defaults: about $0.04** (20 results, 6 seconds).

**Cost examples**

| Run | Cost |
|---|---|
| 1 keyword, 20 products (form default) | $0.04 |
| 10 keywords × 5 pages (3,000 products) | $6.00 |
| Rank mode: 20 keywords × 3 products, daily for 30 days | $5.40 |

With the free $5 monthly Apify credit you can collect about **2,500 search results** or run **1,666 rank checks**.

Failed keywords are reported with an `error` row and **not charged**. If you set a maximum cost per run, the Actor stops cleanly when it is reached.

### Works with

- **Apify API, JavaScript and Python clients** — start a run and read the dataset like any Actor (`leoworks/aliexpress-search-scraper`).
- **Apify Schedules** — a daily schedule in rank mode gives `previousRank`, `rankChange` and `isNew` per product; our own monitoring runs this Actor every morning.
- **Claude, Cursor and Claude Code through the Apify MCP server** — see the next section (verified 2026-10-06).
- **AliExpress Reviews Scraper** — pass the `productUrl` of any result to [leoworks/aliexpress-reviews-classifier](https://apify.com/leoworks/aliexpress-reviews-classifier) to read its reviews and complaint labels.

### Use with Claude, Cursor or Claude Code (MCP)

Add the Apify MCP server with this Actor as a tool and ask your agent in plain language — for example *"Search AliExpress for 'magsafe phone case', 40 results, and list the 5 best-selling ones with price and rating."* The agent calls the tool `leoworks--aliexpress-search-scraper` and reads the rows with `get-dataset-items`.

Claude Desktop or Cursor (`mcp.json`):

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=leoworks/aliexpress-search-scraper",
      "headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
    }
  }
}
```

Claude Code: `claude mcp add --transport http apify "https://mcp.apify.com?tools=leoworks/aliexpress-search-scraper" --header "Authorization: Bearer YOUR_APIFY_TOKEN"`. Leave out the header to sign in with OAuth in the browser instead. Your Apify token is in Console → Settings → API & Integrations. We verified this setup with the Apify MCP server (v0.17.2) on 2026-10-06.

### How to use

**Search mode** — add keywords, set how many products per keyword (`maxResultsPerKeyword`, the form starts at 20; up to 3,600) and the sort (`best_match`, `orders`, `price_asc`, `price_desc`, `newest`). Country and currency change the store region and prices.

**Rank mode** — add product URLs or IDs in `trackProducts`; each run tells you where each product ranks for each keyword, how far it moved since the last run, and whether it only appears as an ad. Schedule it daily.

### Output

Search mode (one row per product):

```json
{
  "type": "result",
  "keyword": "wireless earbuds",
  "page": 1,
  "position": 1,
  "isAd": false,
  "productId": "3256811621288203",
  "globalProductId": "1005011807602955",
  "title": "2026 New Air 3【 Pro 3 】 Bluetooth Wireless Earbuds with Heart Rate Monitoring, Active Noise Cancellation Headphones, Waterproof for Daily Use, For IPhone IOS Smartphone, Gaming /Sports /Fitness Earphones.",
  "price": 19.02,
  "originalPrice": 57.16,
  "discountPercent": 66,
  "currency": "USD",
  "sold": "4,000+ sold",
  "soldCount": 4000,
  "rating": 4.9,
  "shipFrom": "US",
  "tags": [
    "New shoppers save $38.14",
    "Delivery: Oct 08 - 16"
  ],
  "imageUrl": "https://ae-pic-a1.aliexpress-media.com/kf/Sa57a4580c1274b01988d5df3fa8e76cbx.jpg",
  "productUrl": "https://www.aliexpress.com/item/1005011807602955.html",
  "organicRank": 1,
  "totalResults": 51283,
  "country": "US"
}
```

Rank mode (one row per keyword × tracked product):

```json
{
  "type": "rank",
  "keyword": "wireless earbuds",
  "target": "https://www.aliexpress.com/item/1005012974863527.html",
  "globalProductId": "1005012974863527",
  "found": true,
  "organicRank": 34,
  "position": 45,
  "page": 1,
  "adOnly": false,
  "previousRank": 9,
  "rankChange": -25,
  "isNew": false,
  "notFoundWithin": null,
  "title": "Mini TWS Wireless Bluetooth Earbuds Powerful Active Noise Cancellation …",
  "price": 3.73,
  "currency": "USD",
  "sold": "1,000+ sold",
  "soldCount": 1000,
  "rating": 4.9,
  "sort": "best_match",
  "country": "US"
}
```

`organicRank` counts organic results only (ads excluded); `position` is the place on the page including ads. Not found → `found: false` and `notFoundWithin` = how many results were checked. AliExpress shows US-region products with a second ID (`productId`); `globalProductId` is the usual ID in product URLs, and rank mode matches either form.

### Limits

| Item | Limit |
|---|---|
| Depth | Up to 60 pages × 60 products per keyword |
| Fields | Only what the search results show — **no product page details** (no stock, variants, seller info or full description) |
| Rank stability | AliExpress personalises and reshuffles results; the same product can move many places between two checks. Schedule runs and look at trends |
| Sold count | As AliExpress displays it ("4,000+ sold"); `soldCount` is the number in that text |
| Speed | 2,759 results (10 keywords × 5 pages) in about 3 min (measured 2026-10-05) |

### FAQ

**Why do ranks jump between runs?** AliExpress ranks change with time, region and its own testing. Use the same country and sort every time, run on a schedule and compare averages rather than single checks.

**Do you scrape product pages?** No. This Actor reads search results only. For reviews, use our [AliExpress Reviews Scraper](https://apify.com/leoworks/aliexpress-reviews-classifier).

**Is it legal?** It reads publicly visible search pages without logging in. You are responsible for how you use the data; follow AliExpress' terms and local laws.

### Reviews and support

If this Actor saved you time, a short review on Apify Store helps others find it. Questions or a keyword that does not work? Open an issue in the **Issues** tab — we answer within a day.

### Changelog

See the Changelog tab.

# Changelog

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

# Actor input Schema

## `keywords` (type: `array`):

Search terms, one per line (e.g. wireless earbuds, phone case).

## `maxResultsPerKeyword` (type: `integer`):

Stop after this many products per keyword. Applied before the page count. Starts at 20 for a quick, low-cost first run; raise it up to 3,600 (60 pages).

## `maxPages` (type: `integer`):

60 products per page. Search mode: an upper bound next to the result cap (default 60 pages). Rank mode: how deep to look for tracked products (default 5 = top 300, up to 60).

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

Order of the search results.

## `trackProducts` (type: `array`):

Optional. Product URLs or IDs (any AliExpress site). When set, the Actor runs in rank mode: one row per keyword × product with its organic rank (ads excluded), position, page, and the change since the previous run — or 'not found within N'. Charged as keyword-checked instead of per result.

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

Two-letter country code. Results, prices and product IDs depend on the region; the proxy exits in this country.

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

Three-letter currency code for prices (e.g. USD, EUR, GBP).

## `includeAds` (type: `boolean`):

Keep sponsored products in search-mode results (flagged isAd). Organic rank never counts ads.

## `rankHistoryStore` (type: `string`):

Key-value store in your account that keeps the last rank of each keyword × product, so each row shows previousRank, rankChange (positive = moved up) and isNew. Leave empty to turn off. No extra charge.

## `maxConcurrency` (type: `integer`):

Keywords processed in parallel.

## `residentialFallback` (type: `boolean`):

Retry failing pages through residential proxy in the shipping country.

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

Default Apify datacenter proxy (in the shipping country) works.

## `healthCheck` (type: `boolean`):

Internal: fail the run when results look degraded (used by the developer's scheduled checks).

## Actor input object example

```json
{
  "keywords": [
    "wireless earbuds"
  ],
  "maxResultsPerKeyword": 20,
  "sort": "best_match",
  "country": "US",
  "currency": "USD",
  "includeAds": true,
  "rankHistoryStore": "aliexpress-rank-history",
  "maxConcurrency": 3,
  "residentialFallback": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "healthCheck": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (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 = {
    "keywords": [
        "wireless earbuds"
    ],
    "maxResultsPerKeyword": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("leoworks/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 = {
    "keywords": ["wireless earbuds"],
    "maxResultsPerKeyword": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

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

```

## MCP server setup

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