# AliExpress Scraper - Products, Prices, SKUs & Reviews (`randy-tools/aliexpress-products-scraper`) Actor

Scrape AliExpress products by keyword, category or product URL. Get price, discount, rating, orders sold and images, plus optional details: every SKU variant with price and stock, shipping options, specs and store info. Optional reviews. Any country, currency and language.

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

## Pricing

Pay per event

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?

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 Scraper — Products, Prices, SKUs & Reviews

Extract **products from AliExpress** by keyword, category or product URL. Every product comes with its price, original price, discount, rating, orders sold, images and category. Turn on **full details** to get every **SKU variant** with its own price and stock, **shipping options** with fees and delivery dates, specifications, the full image gallery and **store info**. Add **reviews** with ratings, text, translations and buyer photos.

Built for **reliability and clean data**. It reads AliExpress's own JSON data over plain HTTP (no browser), so runs are fast and cheap. When AliExpress puts up a bot check, the scraper retries from a fresh IP automatically. Prices, shipping and language follow the **country, currency and language you choose**.

### What you can do with it

- **Dropshipping product research:** find best-selling products in any niche, with exact orders sold, rating and price
- **Price monitoring:** track prices, discounts and stock per variant over time
- **Supplier vetting:** compare stores by rating, positive feedback, followers and years open
- **Shipping analysis:** see shipping cost and delivery time to your customers' country
- **Review mining:** thousands of reviews per product, with English translations and buyer photos

### Features

- 🔎 **Search by keyword**, up to 3,600 products per term (60 pages)
- 🗂️ **Category and search URLs:** paste any aliexpress.com `/category/...` or `/w/wholesale-...` link
- 📦 **Product URLs or ids**, e.g. `https://www.aliexpress.com/item/1005007502032342.html`
- ↕️ **Sorting and price filters:** best match, most orders, price low→high or high→low, min/max price
- 💲 **Listing data:** title, price, original price, discount, currency, rating, exact orders sold, images, category ids, Choice badge, ad flag, search rank, delivery days
- 🧾 **Full details (optional):** every SKU with attributes (color, size, model...), price, original price, stock and image; shipping methods with fee, delivery days and dates; specifications; review count; wishlist count; total stock; video
- 🏪 **Store info:** name, id, URL, seller id, positive feedback %, feedback count, followers, country, opening date
- 💬 **Reviews (optional):** 1–5 stars, text, English translation, date, variant bought, buyer country, photos, helpful votes
- 🌍 **Any ship-to country, currency and language**, e.g. Germany in EUR with German titles

### Input example

```json
{
  "searchTerms": ["yoga mat", "phone holder"],
  "startUrls": [
    "https://www.aliexpress.com/category/100003109/women-clothing.html",
    "https://www.aliexpress.com/item/1005007502032342.html"
  ],
  "maxItems": 120,
  "sortBy": "orders",
  "minPrice": 5,
  "includeDetails": true,
  "maxReviewsPerProduct": 50,
  "country": "US",
  "currency": "USD",
  "language": "en_US"
}
```

### Output

The dataset holds two record types, `product` and `review`. The Console shows each in its own view. Here is a product with full details (SKU and shipping lists shortened):

```json
{
  "type": "product",
  "productId": "1005007857239353",
  "title": "Foldable Yoga Mat Eco Friendly EVA Folding Travel Fitness Exercise Mat 3mm/4mm/6mm Thicknesses for Yoga Pilates & Floor Workouts",
  "url": "https://www.aliexpress.com/item/1005007857239353.html",
  "image": "https://ae-pic-a1.aliexpress-media.com/kf/S2257ca91174b4889b14af415e518602cj.jpg",
  "price": 1.09,
  "originalPrice": 13.94,
  "discountPercent": 76,
  "priceMin": 1.09,
  "priceMax": 11.6,
  "currency": "USD",
  "rating": 4.9,
  "reviewsCount": 570,
  "soldCount": 6053,
  "wishlistCount": 555,
  "stock": 181,
  "isChoice": true,
  "storeName": "Stone's Store",
  "categoryIds": ["18", "100005371", "200001927", "200001928"],
  "specifications": [{ "name": "Material", "value": "Natural Rubber" }, { "name": "Thickness", "value": "4 mm (Senior Type)" }],
  "skus": [
    { "skuId": "12000042560830619", "attributes": { "Color": "0.6cm Black" }, "price": 5.53, "originalPrice": 23.06, "currency": "USD", "stock": 15, "available": true, "image": "https://ae-pic-a1.aliexpress-media.com/kf/S4ee3ba61241a4008ab1eec0158ea6e10p.jpg" }
  ],
  "shipping": [
    { "method": "AliExpress Selection Standard Shipping", "code": "CAINIAO_FULFILLMENT_STD", "fee": 1.99, "currency": "USD", "free": false, "deliveryDaysMin": 6, "deliveryDaysMax": 10, "deliveryDateMin": "2026-10-04", "deliveryDateMax": "2026-10-08", "shipFrom": "China", "shipTo": "US", "tracking": true }
  ],
  "store": { "name": "Stone's Store", "id": "1103576287", "url": "https://www.aliexpress.com/store/1103576287", "sellerId": "2678280160", "positiveFeedbackPercent": 100, "followers": 29157, "country": "China", "openedAt": "2024-03-01" },
  "searchTerm": "yoga mat",
  "position": 1,
  "country": "US",
  "language": "en_US",
  "detailsScraped": true,
  "scrapedAt": "2026-09-28T12:33:02+00:00"
}
```

```json
{
  "type": "review",
  "reviewId": "30097063997418909",
  "productId": "1005007502032342",
  "rating": 5,
  "text": "Geweldig , heeft ook camera bescherming ",
  "translatedText": "Great, also has camera protection.",
  "language": "nl",
  "date": "2025-12-05",
  "variant": "Color:Dark Green Material:For iPhone 16 Pro",
  "buyerName": "U***l",
  "buyerCountry": "US",
  "images": [],
  "helpfulCount": 0,
  "shippingMethod": "Aliexpress Selection Premium shipping",
  "url": "https://www.aliexpress.com/item/1005007502032342.html"
}
```

Without full details, a product record has the listing fields only (price, rating, sold count, images and so on). Export results as JSON, CSV, Excel or HTML, or pull them via the Apify API, webhooks, Make, Zapier, n8n or MCP.

### Pricing

Pay only for what you get: a small fee per run start and a fee **per product**. **Full details** are an extra fee per product, and **reviews** are a much smaller fee each. Proxy costs are included.

### FAQ

**Why do some prices look very low?** AliExpress shows signed-out shoppers welcome deals and coin discounts, and the scraper returns the price AliExpress displays to them. `originalPrice` is the list price before discounts, and each SKU has its own price.

**Which proxy should I use?** Keep the default (Apify datacenter proxy). Full product details are fetched through residential IPs automatically, because AliExpress challenges datacenter IPs more often. Proxy costs are included in the price.

**Is this legal?** The Actor collects only publicly visible product listings and reviews, without logins. Reviewer names come already masked by AliExpress (e.g. `U***l`). You are responsible for handling the data in line with applicable laws (such as GDPR) and the website's terms.

**Something broke?** Open an issue on the Issues tab. We monitor the Actor daily and usually respond within 24 hours.

# Actor input Schema

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

Keywords to search, e.g. "phone case", "yoga mat". Each term is scraped up to 'Max products per search or URL'.

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

Product URLs (aliexpress.com/item/...), search result URLs (/w/wholesale-...) or category URLs (/category/...). Product URLs always include full details.

## `maxItems` (type: `integer`):

AliExpress shows 60 products per page, up to 60 pages.

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

Order of search and category results.

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

Only products at or above this price, in the selected currency.

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

Only products at or below this price, in the selected currency.

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

Adds every SKU variant (attributes, price, stock, image), shipping options with fees and delivery times, specifications, full image gallery, review count, wishlist count and store info. Charged as an extra event per product.

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

0 = no reviews. Reviews include rating, text, English translation, date, variant bought, buyer country and photos.

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

Two-letter country code, e.g. US, GB, DE, FR, ES, AU, CA. Sets availability, prices and shipping options.

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

Three-letter currency code, e.g. USD, EUR, GBP, AUD, CAD.

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

Language of titles and review translations.

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

Apify datacenter proxy (the default) works best: AliExpress challenges residential IPs more often. Proxy costs are included in the price.

## Actor input object example

```json
{
  "searchTerms": [
    "phone case"
  ],
  "maxItems": 60,
  "sortBy": "default",
  "includeDetails": false,
  "maxReviewsPerProduct": 0,
  "country": "US",
  "currency": "USD",
  "language": "en_US",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (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": [
        "phone case"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

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

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,randy-tools/aliexpress-products-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/26N0WZy3KofpR9qUn/builds/RgQdVP9MqJdLEHfGk/openapi.json
