# AliExpress Product Scraper - Listings, Prices & Orders (`scrapeworks/aliexpress-product-scraper`) Actor

Scrape AliExpress search results in bulk: product titles, prices, orders sold, ratings and image URLs as clean JSON. Many keywords or AliExpress search URLs per run, deep pagination, any currency. No login or API key needed.

- **URL**: https://apify.com/scrapeworks/aliexpress-product-scraper.md
- **Developed by:** [Nicolas van Arkens](https://apify.com/scrapeworks) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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 Product Scraper — Listings, Prices, Orders & Ratings

Scrape **AliExpress search results in bulk** and get clean JSON for every product:
title, price, number of orders sold, rating, and image URL. Feed it
a list of keywords (or your own AliExpress search URLs) and it paginates deep,
returning thousands of product rows per run — no login, no API key, no browser needed.

Perfect for **product research, dropshipping, price monitoring, market analysis, and
competitor tracking** on the world's largest cross-border marketplace.

### What you get

Each product in the results is one clean JSON row with these fields:

| Field | Description |
|---|---|
| `productId` | AliExpress product ID |
| `title` | Product title |
| `url` | Direct link to the product page |
| `price` | Sale price as shown (e.g. `US $12.34`) |
| `priceValue` | Sale price as a number for sorting/filtering |
| `priceMax` | Upper price when the listing shows a range |
| `currency` | Currency code of the prices (USD, EUR, …) |
| `originalPrice` / `originalPriceValue` | Pre-discount price, when shown |
| `orders` | Number of orders sold (parsed to an integer) |
| `ordersText` | Raw "sold" text (e.g. `1,000+ sold`) |
| `rating` | Average star rating (0–5), when shown |
| `image` | Main product image URL |
| `tags` | Badge/selling-point texts (e.g. free shipping) |
| `searchTerm` | The keyword/URL this row came from |
| `position` | Rank of the product within its search |
| `scrapedAt` | UTC timestamp of the scrape |

### Input

```json
{
  "searchTerms": ["wireless earbuds", "led strip lights"],
  "maxResultsPerQuery": 300,
  "sortBy": "orders",
  "currency": "USD",
  "shipToCountry": "US",
  "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
````

- **searchTerms** — one or more keywords. Each is searched and paginated independently.
- **directUrls** — optional: paste full AliExpress search URLs (with your own category
  or filters applied) instead of / in addition to keywords.
- **maxResultsPerQuery** — how many products to collect per keyword/URL (deep paginated).
- **sortBy** — `relevance`, `orders` (most sold), `newest`, `price_asc`, `price_desc`.
- **currency** — 3-letter code prices are returned in (USD, EUR, GBP, …).
- **shipToCountry** — 2-letter region code used for the shipping context.
- **proxyConfiguration** — **RESIDENTIAL Apify Proxy is strongly recommended.** AliExpress
  serves a CAPTCHA / "punish" page to datacenter traffic; residential IPs get real pages.

### Output sample

```json
{
  "productId": "1005006789012345",
  "title": "Wireless Earbuds Bluetooth 5.3 Headphones HiFi Stereo",
  "url": "https://www.aliexpress.com/item/1005006789012345.html",
  "price": "US $12.34",
  "priceValue": 12.34,
  "priceMax": null,
  "currency": "USD",
  "originalPrice": "US $24.68",
  "originalPriceValue": 24.68,
  "orders": 1000,
  "ordersText": "1,000+ sold",
  "rating": 4.7,
  "image": "https://ae01.alicdn.com/kf/Sabcdef.jpg",
  "tags": ["Free shipping"],
  "searchTerm": "wireless earbuds",
  "position": 1,
  "scrapedAt": "2026-07-18T12:00:00+00:00"
}
```

### Use cases

- **Dropshipping product research** — find best-selling products by orders and rating.
- **Price monitoring** — track prices and discounts across many keywords over time.
- **Market & competitor analysis** — map pricing and demand for a niche.

### FAQ

**Do I need an AliExpress account or API key?** No. The actor reads AliExpress's public
search pages — just enter keywords.

**Why is a residential proxy recommended?** AliExpress blocks datacenter IPs with a
CAPTCHA page. RESIDENTIAL Apify Proxy (the default) returns real result pages reliably.

**How many products can I get?** Up to a few thousand per keyword (AliExpress's own
search cap). Add more keywords to collect more in one run.

**What currency are prices in?** Whatever you set in `currency` (default USD); AliExpress
converts prices to that currency regardless of the proxy exit country.

**How am I billed?** Pay per result — one charge per product row returned. CAPTCHA/empty
pages return nothing and are never charged.

# Actor input Schema

## `searchTerms` (type: `array`):

One or more keywords/phrases to search on AliExpress (e.g. 'wireless earbuds', 'led strip lights', 'phone case'). Each term is searched separately and paginated deep up to 'Max results per query'. Add as many as you like in a single run - results are billed per product row, so more keywords = more rows.

## `directUrls` (type: `array`):

Optional: paste full AliExpress search-results URLs (e.g. a /w/wholesale-....html link or a /wholesale?SearchText=... link with your own category or filters already applied). Each URL is scraped and paginated just like a keyword. Use this when you want AliExpress's own advanced filters; otherwise just use 'Search keywords'.

## `maxResultsPerQuery` (type: `integer`):

Maximum products to return for EACH keyword/URL. The actor paginates automatically (about 60 products per page). AliExpress itself caps a single search at a few thousand results.

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

Result order, same as AliExpress's own sort dropdown.

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

3-letter currency code prices are returned in (e.g. USD, EUR, GBP). AliExpress converts prices to this currency regardless of the proxy country.

## `shipToCountry` (type: `string`):

2-letter country code used for the shipping/region context (e.g. US, GB, DE). Affects which offers and prices AliExpress shows.

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

Proxy used to reach AliExpress. AliExpress serves a CAPTCHA / 'punish' page to datacenter traffic, so RESIDENTIAL Apify Proxy is strongly recommended for reliable results.

## Actor input object example

```json
{
  "searchTerms": [
    "wireless earbuds"
  ],
  "maxResultsPerQuery": 100,
  "sortBy": "relevance",
  "currency": "USD",
  "shipToCountry": "US",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

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

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

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

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

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

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "wireless earbuds"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call scrapeworks/aliexpress-product-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapeworks/aliexpress-product-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "AliExpress Product Scraper - Listings, Prices & Orders",
        "description": "Scrape AliExpress search results in bulk: product titles, prices, orders sold, ratings and image URLs as clean JSON. Many keywords or AliExpress search URLs per run, deep pagination, any currency. No login or API key needed.",
        "version": "0.1",
        "x-build-id": "4TL4yvBoeD5zLa6sz"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapeworks~aliexpress-product-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapeworks-aliexpress-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrapeworks~aliexpress-product-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapeworks-aliexpress-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrapeworks~aliexpress-product-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapeworks-aliexpress-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchTerms": {
                        "title": "Search keywords",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "One or more keywords/phrases to search on AliExpress (e.g. 'wireless earbuds', 'led strip lights', 'phone case'). Each term is searched separately and paginated deep up to 'Max results per query'. Add as many as you like in a single run - results are billed per product row, so more keywords = more rows.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "directUrls": {
                        "title": "AliExpress search URLs (optional, power users)",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Optional: paste full AliExpress search-results URLs (e.g. a /w/wholesale-....html link or a /wholesale?SearchText=... link with your own category or filters already applied). Each URL is scraped and paginated just like a keyword. Use this when you want AliExpress's own advanced filters; otherwise just use 'Search keywords'.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResultsPerQuery": {
                        "title": "Max results per query",
                        "minimum": 1,
                        "maximum": 3000,
                        "type": "integer",
                        "description": "Maximum products to return for EACH keyword/URL. The actor paginates automatically (about 60 products per page). AliExpress itself caps a single search at a few thousand results.",
                        "default": 100
                    },
                    "sortBy": {
                        "title": "Sort by",
                        "enum": [
                            "relevance",
                            "orders",
                            "newest",
                            "price_asc",
                            "price_desc"
                        ],
                        "type": "string",
                        "description": "Result order, same as AliExpress's own sort dropdown.",
                        "default": "relevance"
                    },
                    "currency": {
                        "title": "Currency",
                        "type": "string",
                        "description": "3-letter currency code prices are returned in (e.g. USD, EUR, GBP). AliExpress converts prices to this currency regardless of the proxy country.",
                        "default": "USD"
                    },
                    "shipToCountry": {
                        "title": "Ship-to country",
                        "type": "string",
                        "description": "2-letter country code used for the shipping/region context (e.g. US, GB, DE). Affects which offers and prices AliExpress shows.",
                        "default": "US"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy used to reach AliExpress. AliExpress serves a CAPTCHA / 'punish' page to datacenter traffic, so RESIDENTIAL Apify Proxy is strongly recommended for reliable results.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
