# AliExpress Search Scraper (`axlymxp/aliexpress-search-scraper`) Actor

Search AliExpress by keyword or URL and export products at scale — price, original price, discount %, rating, order counts, store, Choice flag, selling points, images and URLs — as structured JSON. Multiple sort orders and deep pagination. Pay only for the results you get.

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

## Pricing

from $3.00 / 1,000 dataset items

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## AliExpress Search Scraper

Search **AliExpress by keyword or search URL** and export the product results at scale — **price, original price, discount %, star rating, order count, store, "Choice" flag, selling points, image and product URL** — as clean, structured JSON. Choose the sort order, page deep, and get analysis‑ready data for pricing, sourcing and market research.

Built on a real Chrome fingerprint with an automatic anti‑bot bootstrap, so runs stay reliable where simpler scrapers get blocked or return empty pages.

### Who uses this

- **Dropshippers & product researchers** — find best‑selling products by order count, compare prices and discounts, and spot winners fast.
- **Pricing & sourcing analysts** — track price, discount depth and "Choice" status across a keyword set.
- **Agencies & resellers** — build product feeds and catalogs from AliExpress search.
- **Data teams / SaaS** — a stable JSON product feed for dashboards and models.

### Output fields

| Field                      | Type    | Description                                |
| -------------------------- | ------- | ------------------------------------------ |
| `keyword`                  | string  | The search keyword that produced the row   |
| `rank`                     | number  | Position within the keyword's results      |
| `product_id`               | string  | AliExpress product ID                      |
| `title`                    | string  | Product title                              |
| `url`                      | string  | Product URL                                |
| `image`                    | string  | Main product image URL                     |
| `price`                    | number  | Current sale price (decimal)               |
| `price_formatted`          | string  | Localized price string (e.g. `US $14.19`)  |
| `currency`                 | string  | Currency code                              |
| `discount_percent`         | number  | Discount vs original price                 |
| `original_price`           | number  | Pre‑discount price                         |
| `original_price_formatted` | string  | Localized original price                   |
| `rating`                   | number  | Average product rating (0–5)               |
| `orders`                   | number  | Number of orders/sales                     |
| `orders_text`              | string  | Raw orders label (e.g. `10,000+ sold`)     |
| `store_id`                 | string  | Seller/store ID                            |
| `sku_id`                   | string  | Default SKU ID                             |
| `category_id`              | string  | Category ID                                |
| `is_choice`                | boolean | Whether it's an AliExpress **Choice** item |
| `selling_points`           | array   | Badges/tags (e.g. free shipping)           |
| `scraped_at`               | string  | ISO‑8601 timestamp of extraction           |

### High‑value use cases

1. **Winning‑product discovery** — sort by **Most orders** and pull the top 300 for a niche to find proven sellers.
2. **Price & discount monitoring** — schedule a keyword set and track `price`, `discount_percent` and `original_price` over time.
3. **Catalog building** — turn a list of keywords into a structured product feed with images and URLs.
4. **Choice/quality filtering** — keep only `is_choice` items for faster, more reliable fulfillment.
5. **Competitive research** — compare stores by rating and order volume across a category.

### Input parameters

| Parameter            | Type    | Default                   | Description                                                |
| -------------------- | ------- | ------------------------- | ---------------------------------------------------------- |
| `searchQueries`      | array   | —                         | Keywords to search (each scraped independently).           |
| `searchUrls`         | array   | —                         | Full AliExpress search URLs (keyword parsed from the URL). |
| `maxItemsPerQuery`   | integer | `100`                     | Max products per keyword (60 per page).                    |
| `sort`               | string  | `default`                 | `default`, `orders`, `newest`, `price_asc`, `price_desc`.  |
| `region`             | string  | `US`                      | Ship‑to country code.                                      |
| `currency`           | string  | `USD`                     | Price currency.                                            |
| `language`           | string  | `en_US`                   | Display locale for titles.                                 |
| `proxyConfiguration` | object  | Apify Proxy (Residential) | Residential proxies recommended.                           |
| `headless`           | boolean | `true`                    | Run the bootstrap browser headless (keep on for Apify).    |

#### Example input

```json
{
    "searchQueries": ["wireless earbuds", "mechanical keyboard"],
    "maxItemsPerQuery": 120,
    "sort": "orders",
    "region": "US",
    "currency": "USD"
}
```

#### Example output row

```json
{
    "keyword": "wireless earbuds",
    "rank": 1,
    "product_id": "3256806491670200",
    "title": "Lenovo GM2 Pro TWS Wireless HIFI Stereo Headset",
    "url": "https://www.aliexpress.com/item/3256806491670200.html",
    "image": "https://ae01.alicdn.com/kf/....jpg",
    "price": 14.19,
    "price_formatted": "US $14.19",
    "currency": "USD",
    "discount_percent": 56,
    "original_price": 32.55,
    "rating": 4.9,
    "orders": 275870,
    "orders_text": "275,870 sold",
    "store_id": "1101234567",
    "is_choice": true,
    "selling_points": ["Free shipping"],
    "scraped_at": "2026-08-22T10:14:21.000Z"
}
```

### Scheduling & integrations

- **Schedule** keyword runs from the Apify Console to monitor prices and new products.
- **Webhooks** push results to your endpoint on completion.
- Export to **JSON, CSV, Excel, or Google Sheets**, or integrate via **Make, Zapier, and the Apify API**.

### Use from AI assistants (MCP)

Works with the **Apify MCP server** — AI assistants (Claude, ChatGPT and other MCP clients) can call this Actor as a tool: ask your agent to "find the best‑selling wireless earbuds on AliExpress" and get structured results back.

### FAQ

**Do I need an AliExpress account?** No. The Actor scrapes public search results; it bootstraps the required anti‑bot cookie automatically.

**Why should I use residential proxies?** AliExpress challenges datacenter IPs aggressively. Residential proxies (the default) keep search results flowing.

**How many products can I get per keyword?** Up to AliExpress's practical search depth (~3,600). Set `maxItemsPerQuery` to cap it.

**Can I paste search URLs instead of keywords?** Yes — put them in `searchUrls`; the keyword is parsed from each URL.

**How fresh is the data?** Every run fetches live results; `scraped_at` records the time.

**Is scraping this legal?** The Actor collects only publicly available product data. You are responsible for using the output in line with AliExpress's terms and applicable law.

**A run got interrupted — do I lose progress?** No. Progress is checkpointed per keyword and resumes on a re‑run with the same input.

# Actor input Schema

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

One or more keywords to search AliExpress for. Each keyword is scraped independently.

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

Optional. Full AliExpress search URLs (e.g. https://www.aliexpress.com/w/wholesale-mechanical-keyboard.html). The keyword is parsed from each URL.

## `maxItemsPerQuery` (type: `integer`):

Stop after this many products for each keyword (60 products per page).

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

How to sort the AliExpress results.

## `region` (type: `string`):

Ship-to country code driving price/availability (e.g. US, GB, DE, BR).

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

ISO currency code for prices.

## `language` (type: `string`):

Display locale for titles.

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

Residential proxies are strongly recommended so AliExpress's anti-bot lets requests through. Datacenter IPs are challenged more aggressively.

## `headless` (type: `boolean`):

Run the anti-bot bootstrap browser headless. Leave enabled on the Apify platform.

## Actor input object example

```json
{
  "searchQueries": [
    "wireless earbuds",
    "mechanical keyboard"
  ],
  "searchUrls": [
    "https://www.aliexpress.com/w/wholesale-led-strip.html"
  ],
  "maxItemsPerQuery": 100,
  "sort": "default",
  "region": "US",
  "currency": "USD",
  "language": "en_US",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "headless": true
}
```

# Actor output Schema

## `dataset` (type: `string`):

Every scraped product as a structured JSON row.

# 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"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

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

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

```

## MCP server setup

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