# AliExpress Product Scraper — Search, Prices, Variants & Sellers (`haketa/aliexpress-product-scraper`) Actor

Extract AliExpress products by keyword or URL with live prices, discounts, images, sales signals, shipping labels, seller data, specifications, SKU variants and stock. Built for fast product research, dropshipping, supplier discovery, price monitoring and e-commerce datasets.

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

## Pricing

from $1.30 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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 Product Scraper — Search, Prices, Variants & Sellers

<div align="center">

#### Turn AliExpress product feeds into clean, ready-to-use data

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-00c7b7?style=for-the-badge\&logo=apify)](https://apify.com)
![Fast bulk search](https://img.shields.io/badge/Bulk_search-Fast-22c55e?style=for-the-badge)
![Product details](https://img.shields.io/badge/Product_details-Optional-f97316?style=for-the-badge)
![No account](https://img.shields.io/badge/AliExpress_account-Not_required-6366f1?style=for-the-badge)

**Search products · compare prices · discover suppliers · monitor assortments**

</div>

***

### ✨ What can you do with it?

| Goal | What you get |
|---|---|
| 🔎 Discover products | Keyword-ranked AliExpress product feeds |
| 💸 Compare prices | Sale price, original price, currency and discount |
| 📦 Validate demand | Public order and rating signals when displayed |
| 🏪 Research suppliers | Store name, seller country and positive feedback |
| 🎨 Build a catalog | Titles, IDs, product URLs and multiple images |
| 🧩 Inspect variants | SKU options, variant prices and available stock |

> **Best of both worlds:** bulk search is optimized for speed and cost. Rich product-detail enrichment is optional, so you only pay the extra runtime when you need it.

### 🚀 Quick start

1. Enter one or more product keywords.
2. Choose the result limit, destination country and currency.
3. Click **Start**.
4. Export the dataset as JSON, CSV, Excel, XML or RSS.

The ready-to-run input returns a meaningful bulk dataset without extra configuration:

```json
{
  "searchTerms": ["wireless earbuds"],
  "maxResults": 150,
  "shipToCountry": "US",
  "currency": "USD"
}
```

### 📊 Data you receive

#### Every product

- Product ID, title and canonical URL
- Main image and product gallery
- Sale price, original price and currency
- Discount percentage
- Rating and public order text when available
- Free-shipping and promotional labels
- Ship-from country when displayed
- Sponsored result flag
- Search keyword and organic rank
- Category IDs and scrape timestamp

#### Optional detail enrichment

- Store and seller IDs
- Store name, URL, country and positive feedback rate
- Store opening date
- Total available inventory
- Product specifications
- Full SKU / variant matrix
- Variant attributes, price and stock
- Product description URL
- Additional high-resolution images

> 💡 Enable details for a shortlist, not an entire discovery run. `maxDetails` gives you a firm runtime and cost ceiling.

### 🎯 Popular use cases

#### Dropshipping product research

Find products in a niche, sort by demand signals, compare displayed prices and shortlist promising suppliers.

#### Price and assortment monitoring

Schedule the same keyword input daily and compare datasets to detect new products, promotions and price changes.

#### Supplier discovery

Use detail enrichment on selected products to connect listings with stores, seller reputation and available inventory.

#### Marketplace catalog building

Create structured product feeds for internal search, enrichment, classification or competitive intelligence.

#### AI and analytics datasets

Feed normalized product records into recommendation systems, agents, dashboards, spreadsheets or data warehouses.

### ⚙️ Input guide

| Input | Recommended use |
|---|---|
| `searchTerms` | One or more products or niche keywords |
| `startUrls` | Known AliExpress `/item/` URLs |
| `maxResults` | Total unique products to save |
| `shipToCountry` | Two-letter destination, such as `US`, `GB`, `DE` or `TR` |
| `currency` | Currency such as `USD`, `EUR`, `GBP` or `TRY` |
| `sort` | Relevance, orders, newest or price |
| `minPrice` / `maxPrice` | Keep products inside your target price band |
| `minRating` | Keep products meeting a rating threshold |
| `minOrders` | Keep products meeting a public sales threshold |
| `freeShipping` | Keep results displaying free shipping |
| `includeDetails` | Add variants, stock, specs and seller data |
| `maxDetails` | Maximum products to enrich |

#### Search multiple niches

```json
{
  "searchTerms": [
    "portable blender",
    "pet grooming kit",
    "solar garden lights"
  ],
  "maxResults": 300,
  "shipToCountry": "US",
  "currency": "USD",
  "sort": "orders"
}
```

#### Enrich selected products

```json
{
  "searchTerms": [],
  "startUrls": [
    { "url": "https://www.aliexpress.com/item/1005000000000000.html" }
  ],
  "maxResults": 10,
  "includeDetails": true,
  "maxDetails": 10,
  "shipToCountry": "US",
  "currency": "USD"
}
```

### 🧾 Example result

```json
{
  "recordType": "product",
  "productId": "1005001234567890",
  "title": "Wireless Bluetooth Earbuds with Charging Case",
  "productUrl": "https://www.aliexpress.com/item/1005001234567890.html",
  "imageUrl": "https://ae-pic-a1.aliexpress-media.com/kf/example.jpg",
  "salePrice": 8.49,
  "originalPrice": 12.99,
  "currency": "USD",
  "discountPercent": 35,
  "ordersSoldText": "5K+ sold",
  "freeShipping": true,
  "query": "wireless earbuds",
  "rank": 1,
  "scrapedAt": "2026-08-03T10:00:00.000Z"
}
```

### ✅ Built for dependable datasets

- Unique products are deduplicated by AliExpress product ID.
- Failed connections rotate and retry automatically.
- Search and detail modes keep the same stable product schema.
- Empty or over-filtered inputs return a clear, actionable error.
- Search-only runs avoid browser overhead for faster, cheaper exports.
- Dataset columns are arranged for immediate Store preview and export.

<details>
<summary><strong>API examples</strong></summary>

#### JavaScript

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('haketa/aliexpress-product-scraper').call({
  searchTerms: ['wireless earbuds'],
  maxResults: 150,
  shipToCountry: 'US',
  currency: 'USD'
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python

```python
from apify_client import ApifyClient
import os

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('haketa/aliexpress-product-scraper').call(run_input={
    'searchTerms': ['wireless earbuds'],
    'maxResults': 150,
    'shipToCountry': 'US',
    'currency': 'USD',
})

items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

</details>

<details>
<summary><strong>Tips for better results</strong></summary>

- Use specific commercial keywords instead of very broad one-word searches.
- Set the destination country and currency to match your target market.
- Use multiple search terms to expand the dataset and reduce feed bias.
- Apply filters only when necessary; aggressive filters naturally reduce output.
- Run bulk discovery first, then enrich only the products you shortlist.
- For monitoring, keep the same input and schedule it at a fixed interval.

</details>

<details>
<summary><strong>FAQ</strong></summary>

#### Do I need an AliExpress account or cookies?

No. The Actor works with publicly displayed product data and does not require you to supply account credentials.

#### Why are some ratings or sales fields empty?

AliExpress does not display every signal on every search card. The Actor uses `null` instead of inventing values.

#### Why is detail mode slower?

Seller, stock, specification and variant modules load on individual product pages. Search-only mode deliberately skips that work.

#### Can I export to Excel?

Yes. Open the run dataset and choose Excel, CSV, JSON, XML or another supported export format.

#### Can I run it on a schedule?

Yes. Use Apify Schedules to repeat a saved input and connect webhooks for downstream processing.

</details>

### 🔄 Changelog

#### 1.0.0

- Fast keyword product discovery
- Regional currency and ship-to controls
- Optional seller, stock, specification and SKU enrichment
- Filtering, sorting and direct product URL support

***

<div align="center">

#### Ready to build your AliExpress product dataset?

**Enter a keyword, click Start, and export clean product data.**

</div>

# Actor input Schema

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

Enter one or more product keywords. Each keyword opens a new AliExpress product feed.

## `startUrls` (type: `array`):

Paste AliExpress /item/ product URLs when you already know which products to enrich.

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

Total unique product records to save. The default is tuned for a useful bulk export in under 5 minutes.

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

Two-letter destination country code used for regional availability and price context.

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

Three-letter currency code for displayed prices, for example USD, EUR, GBP or TRY.

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

Choose how AliExpress should order each keyword feed.

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

Optional lower price boundary in your chosen currency.

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

Optional upper price boundary in your chosen currency.

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

Keep products at or above this public rating when it is displayed.

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

Keep products at or above this public order count when it is displayed.

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

Keep only products carrying a free-shipping label in the selected market.

## `includeDetails` (type: `boolean`):

Adds seller profile, SKU variants, stock, specifications and extra images. Slower than search-only mode; ideal for a focused shortlist.

## `maxDetails` (type: `integer`):

Protects runtime and cost when detail enrichment is enabled.

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

Apify Proxy is recommended for reliable regional product feeds.

## Actor input object example

```json
{
  "searchTerms": [
    "wireless earbuds"
  ],
  "startUrls": [],
  "maxResults": 150,
  "shipToCountry": "US",
  "currency": "USD",
  "sort": "default",
  "freeShipping": false,
  "includeDetails": false,
  "maxDetails": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

## `datasetUi` (type: `string`):

No description

## `output` (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 = {
    "searchTerms": [
        "wireless earbuds"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/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"] }

# Run the Actor and wait for it to finish
run = client.actor("haketa/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"
  ]
}' |
apify call haketa/aliexpress-product-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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