# AliExpress Scraper - Products, Prices, Orders & Supplier Leads (`scrapesage/aliexpress-scraper`) Actor

Scrape AliExpress products by keyword or URL: sale & original price, discount %, orders sold, rating, images, full SKU/variant matrix, live stock, shipping, specs, reviews & supplier leads. Choose currency & ship-to country, filter & monitor price drops.

- **URL**: https://apify.com/scrapesage/aliexpress-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** E-commerce, Lead generation, Automation
- **Stats:** 19 total users, 12 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 product scrapeds

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 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 Scraper — Products, Prices, Orders, Reviews & Supplier Leads

Extract **complete AliExpress product data** — including the fields most scrapers skip: **real sale & original prices, discount %, live orders-sold counts, ratings, the full SKU/variant matrix with per-option price and live stock, shipping options, full specifications, buyer reviews, and the supplier/store profile**. Pick your **currency and ship-to country**, filter, and run it on a schedule to track **price drops and restocks**.

No login, no cookies you have to manage, no API key — fast JSON extraction localized to any market.

### Why this AliExpress scraper?

Most AliExpress scrapers return a title, one price and a thumbnail. This actor pulls data from AliExpress's own product API and search feed and ships the **richest dataset in the category**:

| Data | Typical scrapers | This actor |
|---|---|---|
| Sale price + original price + discount % | partial | ✅ both, in your currency |
| Orders sold (real count, not "1000+") | ❌ | ✅ numeric + text |
| Average rating + total reviews | partial | ✅ |
| Full SKU / variant matrix (price + stock per option) | ❌ | ✅ |
| Live total inventory | ❌ | ✅ |
| All images + product video | thumbnail only | ✅ |
| Shipping options (fee / ETA / carrier) | ❌ | ✅ |
| Full specifications | ❌ | ✅ |
| Buyer reviews (text, country, photos, bought SKU) | ❌ | ✅ opt-in |
| Supplier / store profile (level, years, country, top-rated) | ❌ | ✅ opt-in |
| Currency & ship-to country localization | ❌ | ✅ |
| Price-drop / restock monitoring | ❌ | ✅ |

### Use cases

- **Dropshipping & product research** — find winning products by orders sold and rating, capture price, variants and supplier, and **monitor price drops & restocks** on a schedule so your store and margins stay in sync.
- **Repricing & price intelligence** — track competitor product prices and discounts across markets and currencies.
- **Sourcing & supplier vetting** — turn every product into a **supplier lead** with store level, years open, country and top-rated badge, scored 0–100 for quick shortlisting.
- **Catalog & content** — pull full specs, images, video and the SKU matrix to build or enrich your own listings.
- **Review & sentiment mining** — collect buyer reviews with rating, country and photos to gauge real product quality before you buy.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.
2. Open the **AliExpress Scraper**, enter search keywords (or paste product/search/store URLs), set your **currency** and **ship-to country**, and click **Start**.
3. Watch results stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "searchTerms": ["wireless earbuds"],
    "sort": "orders",
    "minPrice": 5,
    "maxPrice": 50,
    "fourStarPlus": true,
    "shipToCountry": "US",
    "currency": "USD",
    "maxProducts": 100,
    "includeProductDetails": true,
    "includeReviews": true,
    "maxReviewsPerProduct": 20,
    "emitStoreLeads": true
}
```

- **searchTerms** — keywords; each is scraped as its own product feed (~60 products per page).
- **startUrls** — product pages (`/item/<id>.html`), search/category pages (`/w/wholesale-<kw>.html`) or store pages (`/store/<id>`).
- **productIds** — AliExpress product IDs to fetch full detail for directly.
- **sort** — `default`, `orders` (most sold), `newest`, `priceAsc`, `priceDesc`.
- **minPrice / maxPrice / fourStarPlus / choiceOnly / freeShippingOnly** — filters.
- **shipToCountry / currency / language** — localize prices, availability and text to any market.
- **includeProductDetails** *(default false)* — full SKU/variant matrix (price + stock per option), live inventory, all images & video, shipping, specs, description URL and the supplier/store profile.
- **includeReviews** *(default false)* — buyer reviews (rating, text, country, photos, bought SKU) plus the star breakdown; **maxReviewsPerProduct** caps them.
- **emitStoreLeads** *(default false)* — one deduplicated supplier lead per store (type `store`) with level, years, country, top-rated badge and a 0–100 lead score.
- **monitorMode / monitorKey** — emit only products that are new or whose price/stock changed since the last run.

### Output

One record per product (`type: "product"`), plus optional review records (`type: "review"`) and supplier lead records (`type: "store"`):

```json
{
    "type": "product",
    "productId": "1005006398294390",
    "title": "TWS Wireless Earbuds Bluetooth 5.3 Headphones Noise Cancelling",
    "url": "https://www.aliexpress.com/item/1005006398294390.html",
    "salePrice": 8.74,
    "originalPrice": 34.96,
    "discountPercent": 75,
    "currency": "USD",
    "ordersCount": 4213,
    "ordersText": "4,000+ sold",
    "rating": 4.7,
    "reviewsCount": 1582,
    "availableInventory": 920,
    "isChoice": true,
    "images": ["https://ae-pic-a1.aliexpress-media.com/kf/S....jpg"],
    "video": { "videoId": "5000535516472", "url": "https://video.aliexpress-media.com/.../5000535516472.mp4" },
    "variantOptions": [{ "name": "Color", "values": ["White", "Black"] }],
    "variants": [
        { "skuId": "12000049470857556", "option": "Color:White", "available": true, "stock": 460, "salePrice": 8.74, "originalPrice": 34.96 }
    ],
    "specs": [{ "name": "Bluetooth Version", "value": "5.3" }, { "name": "Battery Capacity", "value": "300mAh" }],
    "shipping": { "carrier": "AliExpress Standard Shipping", "fee": "Free", "deliveryEstimate": "Sep 12 - Sep 28" },
    "storeId": "1104759009",
    "storeName": "TopAudio Official Store",
    "storeUrl": "https://www.aliexpress.com/store/1104759009",
    "sellerLevel": "23-s",
    "store": { "country": "China", "yearsOpen": 4, "topRated": true },
    "changeType": "price_drop",
    "searchTerm": "wireless earbuds",
    "scrapedAt": "2026-06-17T12:00:00.000Z"
}
```

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets, and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — run it hourly/daily to track price drops, restocks and new products in a niche; perfect for dropshipping pipelines and repricing.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (import to your store, Slack price-drop alert, sheet update) the moment a run finishes.

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

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/aliexpress-scraper').call({
    searchTerms: ['phone case'],
    sort: 'orders',
    shipToCountry: 'US',
    currency: 'USD',
    maxProducts: 100,
    includeProductDetails: true,
    emitStoreLeads: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} products & supplier leads`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push price drops or new products straight into your store or sheet.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored product drops in price or restocks.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "find the best-selling wireless earbuds under $15 on AliExpress with their suppliers" and let it run this scraper for you.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready** — AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)** — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — no account, no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)** — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More scrapers from scrapesage

Build a complete **e-commerce, sourcing & price-intelligence stack**:

- **[eBay Scraper](https://apify.com/scrapesage/ebay-scraper)** — listings, real sold prices (comps) and seller leads.
- **[Made-in-China Scraper](https://apify.com/scrapesage/made-in-china-scraper)** — B2B suppliers, products and manufacturer leads.
- **[TradeIndia Scraper](https://apify.com/scrapesage/tradeindia-scraper)** — India B2B suppliers, products and contact leads.
- **[ImportYeti Scraper](https://apify.com/scrapesage/importyeti-scraper)** — supplier/importer shipment records from US customs data.
- **[Shopify Store Scraper](https://apify.com/scrapesage/shopify-store-scraper)** — products, prices, inventory and merchant leads from any Shopify store.
- **[Poshmark Scraper](https://apify.com/scrapesage/poshmark-scraper)** — fashion resale listings, sold comps and seller leads.
- **[Reverb Scraper](https://apify.com/scrapesage/reverb-scraper)** — musical-instrument marketplace listings, price guide and seller leads.
- **[Steam Scraper](https://apify.com/scrapesage/steam-scraper)** — game listings, prices, reviews and publisher leads.

### Tips

- **Find winners fast**: sort by `orders` and turn on `fourStarPlus` to surface proven, well-rated products.
- **Localize correctly**: set `shipToCountry` and `currency` together — a US shopper and a German shopper see different prices and shipping. The actor pins the proxy and the AliExpress currency cookie to your choice (a random country would localize prices to the wrong currency).
- **Cost control**: leave `includeProductDetails`/`includeReviews` off for a fast, cheap price/orders sweep; turn them on only when you need the full SKU matrix, specs or reviews. Supplier leads are deduplicated per store.
- **Recurring monitoring**: combine [Schedules](https://docs.apify.com/platform/schedules) with `monitorMode` to get only new products and price-drop/restock changes — ideal for repricing and dropshipping alerts.
- **Proxies**: keep the default residential proxy group; AliExpress challenges datacenter IPs with an anti-bot "punish" page.

### FAQ

**How do I scrape AliExpress products for a keyword?** Put the keyword in `searchTerms` (e.g. `led strip`). Combine with `sort`, price filters and `fourStarPlus` to narrow it down, or paste a search/category/product/store URL into `startUrls`.

**Does it work without the AliExpress API?** Yes. No developer key or affiliate account is needed — the actor reads AliExpress's own public search feed and product API, localized to your chosen market.

**Can I get prices in my currency?** Yes — set `currency` (e.g. `EUR`, `GBP`) and `shipToCountry`. Prices, discounts and shipping are returned for that market.

**Can I export to Google Sheets, CSV, or Excel?** Yes — one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**How do I track price drops automatically?** Create a [Schedule](https://docs.apify.com/platform/schedules) (e.g. daily) with `monitorMode` on — each run emits only new products and items whose price or stock changed, each tagged with a `changeType` (`price_drop`, `price_rise`, `restocked`, `out_of_stock`, `new`).

**Can I get the supplier's email or phone?** No — AliExpress does not publish seller emails or phone numbers; contact is handled through the platform. The supplier lead gives you the store URL, level, years open, country, top-rated badge and a lead score for vetting and outreach via the store page.

**A field is empty — why?** Some products genuinely don't list a video, some have a single SKU (no variants), and some are too new to have reviews. Fields are empty only when the data doesn't exist — not because the scraper skipped them.

**Is scraping AliExpress legal?** This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws (e.g. GDPR/CCPA for personal data) and AliExpress's terms.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome — this actor is actively maintained.

# Actor input Schema

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

Keywords to search AliExpress for, e.g. <code>wireless earbuds</code>, <code>phone case</code>, <code>led strip</code>. Each keyword is scraped as its own product feed. Leave empty if you only use Start URLs / Product IDs.

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

AliExpress URLs to scrape directly: product pages (<code>/item/\<id>.html</code>), search/category pages (<code>/w/wholesale-\<kw>.html</code> or <code>/wholesale?SearchText=</code>) or store pages (<code>/store/\<id></code>). Used in addition to the keyword search.

## `productIds` (type: `array`):

AliExpress product IDs to fetch full product detail for directly (e.g. <code>1005006398294390</code>). Equivalent to pasting their item URLs.

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

How AliExpress orders the search results.

## `minPrice` (type: `integer`):

Only keep products whose sale price (in the chosen currency) is at least this much.

## `maxPrice` (type: `integer`):

Only keep products whose sale price (in the chosen currency) is at most this much.

## `fourStarPlus` (type: `boolean`):

Only keep products with an average rating of 4.0 stars or higher (drops new/low-rated items).

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

Only keep AliExpress Choice products (faster shipping / curated).

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

Only keep products flagged as free shipping on the search card.

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

ISO country code that prices, shipping and availability are localized to (e.g. <code>US</code>, <code>GB</code>, <code>DE</code>, <code>AU</code>, <code>BR</code>). Affects displayed price & delivery options.

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

Currency code for all prices (e.g. <code>USD</code>, <code>EUR</code>, <code>GBP</code>). AliExpress converts to this currency.

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

Locale for titles, specs and reviews (e.g. <code>en\_US</code>, <code>es\_ES</code>, <code>fr\_FR</code>, <code>de\_DE</code>, <code>pt\_BR</code>).

## `maxProducts` (type: `integer`):

Maximum number of product records to scrape across all searches/URLs. AliExpress search returns ~60 products per page.

## `includeProductDetails` (type: `boolean`):

Open each product to add the full SKU/variant matrix (per-option price & stock), live total inventory, all images & video, shipping options (fee/ETA/carrier), full specifications, description URL, coupons and the supplier/store profile. Adds one API call per product.

## `includeReviews` (type: `boolean`):

Fetch buyer reviews per product (rating, text, country, photos, purchased SKU) plus the full star-rating breakdown. Adds one or more API calls per product.

## `maxReviewsPerProduct` (type: `integer`):

Maximum number of buyer reviews to pull per product when reviews are enabled (20 per page).

## `reviewSort` (type: `string`):

Order of buyer reviews.

## `emitStoreLeads` (type: `boolean`):

In addition to product records, push one deduplicated lead record per unique store (type = "store") with the store URL, seller level, years open, country, top-rated badge, product count and a 0–100 lead score. (Implies product detail. Note: AliExpress does not publish seller emails/phones — contact is via the platform.)

## `deduplicateProducts` (type: `boolean`):

Drop duplicate products that appear in more than one search/page in the same run.

## `monitorMode` (type: `boolean`):

Remember products across runs in a named key-value store and emit ONLY products that are new OR whose price/stock changed since last run (each carries a <code>changeType</code>: new / price\_drop / price\_rise / restocked / out\_of\_stock). Pair with Apify Schedules for price-drop & restock alerts — it complements the scheduler (the schedule starts the run, monitor mode dedupes against prior runs).

## `monitorKey` (type: `string`):

Names the monitor's memory store so you can run several independent monitors (e.g. one per keyword). Reuse the same key to keep tracking the same feed.

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

Parallel page/API fetches. Keep low (2–4) so AliExpress's anti-bot doesn't challenge the proxy.

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

Proxies to use. Residential proxies are strongly recommended — AliExpress challenges datacenter IPs (anti-bot 'punish' page). Fresh residential sessions per request stay ungated.

## Actor input object example

```json
{
  "searchTerms": [
    "wireless earbuds"
  ],
  "sort": "default",
  "fourStarPlus": false,
  "choiceOnly": false,
  "freeShippingOnly": false,
  "shipToCountry": "US",
  "currency": "USD",
  "language": "en_US",
  "maxProducts": 100,
  "includeProductDetails": false,
  "includeReviews": false,
  "maxReviewsPerProduct": 20,
  "reviewSort": "default",
  "emitStoreLeads": false,
  "deduplicateProducts": true,
  "monitorMode": false,
  "monitorKey": "default",
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

All scraped AliExpress product records, optional buyer review records and optional supplier/store lead records as JSON items in the default dataset.

# 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("scrapesage/aliexpress-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("scrapesage/aliexpress-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 scrapesage/aliexpress-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/PHBDebvUiTNNiWpOx/builds/Aw0gsujmm2rU9vDwX/openapi.json
