# AliExpress Reviews Scraper — AI sentiment, no login · $1.5/1k (`leoworks/aliexpress-reviews-classifier`) Actor

Scrape AliExpress product reviews — text, English translation, star rating, date, buyer country, option (SKU) and photos — from any product URL. Optional AI classification adds complaint types, sentiment and purchase motive, plus a per-product summary. No login.

- **URL**: https://apify.com/leoworks/aliexpress-reviews-classifier.md
- **Developed by:** [Leoworks](https://apify.com/leoworks) (community)
- **Categories:** E-commerce, AI, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.28 / 1,000 reviews

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/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 Reviews Scraper — AI sentiment, no login

**For dropshippers, sourcing teams and sellers** who want the reviews of any AliExpress product — **text, English translation, star rating, date, buyer country, the option bought (SKU) and photos** — from a product URL or ID, for $1.50 per 1,000 reviews, and who want to know *why* buyers complain: with **AI classification** on, every review gets complaint types, sentiment and purchase motive, and each run saves a summary per product. No login, no cookies.

> Independent tool — not affiliated with, endorsed by or sponsored by AliExpress or Alibaba Group. The name is used only to describe the data source.

- **Reviews** — original text + AliExpress' English translation, stars (1–5), date, country, option (color/size), photos, aspect ratings (e.g. "Sound quality: Good"), helpful votes, follow-up reviews
- **Product stats** — total review count, average rating and the star distribution (in the summary)
- **AI classification (optional)** — complaint types (quality/defect, size/fit, delivery, packaging, price/value, customer service, no effect, skin/body reaction, other), sentiment and purchase motive, with probabilities
- **Star-only reviews skipped by default** — AliExpress has many reviews with stars but no text; they are not collected or charged unless you ask for them

**Use it to:** check a product's real complaints before you source or dropship it · compare competitors' weak points · monitor your own listings' reviews on a schedule · feed review data and labels to your AI agent or dashboard.

### Output sample

Real rows (one per review) from run `e0PZVblM8YcK4BhbH` (2026-10-05, 1,000 reviews of one earbuds listing, classification on). The original text and AliExpress' English translation are both returned.

| rating | date | country | text (original) | textEnglish (AliExpress translation) | complaint (probability) | sentiment | motive |
|---|---|---|---|---|---|---|---|
| 1 | 2026-05-08 | US | прийшло повністю пошкрябане і наче… | It arrived completely scratched and as if it had already bee… | quality_defect (0.98) | negative (1.00) | unknown |
| 5 | 2026-04-04 | MX | Son cómodos y con un volumen bastan… | They are comfortable and have a fairly high volume. Physical… | quality_defect (0.86), other (0.56) | positive (1.00) | unknown |
| 5 | 2025-11-15 | US | Все прийшло.Подарунок виграв на Али… | Everything has arrived. The gift was won on Aliexpress. | none (0.98) | positive (0.98) | gift |
| 5 | 2026-03-11 | US | conseguido con el juego. muy bien | achieved with the game. very good | none (0.98) | positive (1.00) | unknown |

Every row also has `reviewId`, `productId`, `productUrl`, `option`, `images[]`, `aspects[]`, `helpfulVotes`, `additionalReview`, `logistics`, `language` and `classifiedFrom` — see **Output** below.

### Input example

The form default — one product, its 20 most recent text reviews, classified (about $0.04, 10 seconds):

```json
{
  "productUrls": ["https://www.aliexpress.com/item/1005008549911526.html"],
  "reviewsPerProduct": 20
}
```

For competitor research:

```json
{
  "productUrls": ["https://www.aliexpress.com/item/1005008549911526.html", "1005010748356463"],
  "reviewsPerProduct": 200,
  "reviewFilter": "all",
  "classifyReviews": true
}
```

### Pricing

Pay only for what you collect — no subscription.

| Event | Price | When |
|---|---|---|
| `review` | $0.0015 | One AliExpress review collected (text, English translation, rating, date, country, option, photos). |
| `review-judged` | $0.0005 | Complaint types, sentiment and purchase motive for one review (only when classification is on). |

That is **$1.50 per 1,000 reviews** plus **$0.50 per 1,000 classifications** — $2 per 1,000 classified reviews. **First run with the form defaults: about $0.04** (20 reviews classified, 10 seconds).

**Cost examples**

| Run | Cost |
|---|---|
| 20 reviews of one product, classified | $0.04 |
| 1,000 reviews, classified | $2.00 |
| 1,000 reviews, not classified | $1.50 |
| 10 competitor products × 200 reviews, classified | $4.00 |

With the free $5 monthly Apify credit you can collect about **2,500 classified reviews** or **3,333 reviews** without classification.

Failed products are reported with an `error` row and **not charged**. Star-only reviews are skipped and **not charged** (turn on *Include star-only reviews* to collect them). If you set a maximum cost per run, the Actor stops cleanly when it is reached (classification is switched off first when the budget only covers collection).

### Works with

- **Apify API, JavaScript and Python clients** — start a run and read the dataset like any Actor (`leoworks/aliexpress-reviews-classifier`).
- **Apify Schedules** — a weekly schedule keeps watching the reviews of your own and competitors' listings; our own monitoring runs this Actor every morning.
- **Claude, Cursor and Claude Code through the Apify MCP server** — see the next section (verified 2026-10-06).
- **AliExpress Search Scraper** — find the products first with [leoworks/aliexpress-search-scraper](https://apify.com/leoworks/aliexpress-search-scraper) and pass their `productUrl` here. **Korean Review Classifier** — the same labels for any other review dataset: [leoworks/korean-review-classifier](https://apify.com/leoworks/korean-review-classifier).

### Use with Claude, Cursor or Claude Code (MCP)

Add the Apify MCP server with this Actor as a tool and ask your agent in plain language — for example *"Get the latest 50 reviews of https://www.aliexpress.com/item/1005008549911526.html and tell me the main complaints."* The agent calls the tool `leoworks--aliexpress-reviews-classifier` and reads the rows and the per-product summary with `get-dataset-items` and `get-key-value-store-record`.

Claude Desktop or Cursor (`mcp.json`):

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=leoworks/aliexpress-reviews-classifier",
      "headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
    }
  }
}
```

Claude Code: `claude mcp add --transport http apify "https://mcp.apify.com?tools=leoworks/aliexpress-reviews-classifier" --header "Authorization: Bearer YOUR_APIFY_TOKEN"`. Leave out the header to sign in with OAuth in the browser instead. Your Apify token is in Console → Settings → API & Integrations. We verified this setup with the Apify MCP server (v0.17.2) on 2026-10-06.

### How to use

1. Paste AliExpress **product URLs** (any site — aliexpress.com, aliexpress.us, ko.aliexpress.com …) or **product IDs**.
2. Set **Reviews per product** (the form starts at 20 for a quick first run).
3. Optional: **Which reviews** (all / with photos / with a follow-up review), **Classify reviews with AI** (on by default).
4. Run it, or schedule it to track new reviews.

### Output (one row per review)

```json
{
  "type": "review",
  "productId": "1005008549911526",
  "reviewId": "60093737103906642",
  "rating": 5,
  "date": "2025-11-15",
  "country": "US",
  "text": "Все прийшло.Подарунок виграв на Алиєкспрес",
  "textEnglish": "Everything has arrived. The gift was won on Aliexpress.",
  "language": "other",
  "option": "Color:black",
  "images": ["https://ae-pic-a1.aliexpress-media.com/kf/A4d5c8b0dedb6489ebd7b6d2cfa37a710f.jpg", "…"],
  "aspects": [{ "aspect": "Quality of sound", "value": "Fast" }, { "aspect": "Durability", "value": "Fast" }, { "aspect": "User Friendly", "value": "Good" }],
  "helpfulVotes": 0,
  "labels": {
    "complaint": [{ "label": "none", "labelKo": "불만 없음", "probability": 0.97 }],
    "sentiment": { "label": "positive", "probability": 0.97, "confidence": 0.96 },
    "motive": { "label": "gift", "probability": 0.87, "confidence": 0.84 }
  },
  "classifiedFrom": "english_translation",
  "productUrl": "https://www.aliexpress.com/item/1005008549911526.html"
}
```

Reviews written in other languages are classified from AliExpress' own English translation (`classifiedFrom`). Reviewer names and avatars are not collected.

#### Summary by product (REPORT)

Each run also saves a **REPORT** record (Output tab → *Summary by product*) at no extra charge: per product, the AliExpress totals (`productReviewTotal`, `productAverageRating`, `productStars` 5→1) and, for the reviews collected, the complaint rate and mix, sentiment shares, purchase motives and the 3 strongest complaint reviews.

### Classification accuracy

Measured on hand-labelled AliExpress reviews (earbuds, phone cases, dresses, kitchen tools, LED strips, car holders; about half with 1–3 stars): complaint type **93%** and sentiment **87%** on 30 reviews it had not seen before. Labels were set by us; automated labels can be wrong, so check samples before making big decisions.

### Limits

| Item | Limit |
|---|---|
| Reviews per product | Up to 5,000 per run |
| Order | AliExpress' default order (the source does not offer sorting by date or stars) |
| Filters | All · with photos · with a follow-up review |
| Classification | English, Korean, Japanese text; other languages via AliExpress' English translation |
| Product details | Not included — this Actor collects reviews only |
| Speed | 1,000 reviews (893 classified) in about 8 min on the default 256 MB (measured 2026-10-05) |

### FAQ

**Which AI makes the judgments?** Jev, TypeSafe's decision model (version `jev-1.13.0`, pinned). Jev answers each label with a calibrated probability instead of generated text, so the same input gets the same answer from run to run. Only the review text (or its English translation) and the star rating are sent to Jev.

**Why are some reviews missing labels?** Reviews with photos but no text, or in a language without an English translation, are returned without labels and charged only as `review`.

**Do you classify reviews from other sources?** Yes — our [Korean Review Classifier](https://apify.com/leoworks/korean-review-classifier) classifies any review dataset, and [OliveYoung Global & Amore Mall](https://apify.com/leoworks/kbeauty-ranking-review-monitor) covers K-beauty reviews.

**Is it legal?** It reads publicly visible review pages without logging in. You are responsible for how you use the data; follow AliExpress' terms and local laws, and do not use personal data.

### Reviews and support

If this Actor saved you time, a short review on Apify Store helps others find it. Questions or a product that does not work? Open an issue in the **Issues** tab — we answer within a day.

### Changelog

See the Changelog tab.

# Changelog

This Actor's version history is a separate document: https://apify.com/leoworks/aliexpress-reviews-classifier/changelog.md

# Actor input Schema

## `productUrls` (type: `array`):

AliExpress product pages (any site: www.aliexpress.com, aliexpress.us, ko.aliexpress.com …) or product IDs, e.g. https://www.aliexpress.com/item/1005008549911526.html or 1005008549911526.

## `reviewsPerProduct` (type: `integer`):

Maximum reviews to collect for each product (charged per review). The form starts at 20 for a quick, low-cost first run; raise it up to 5,000 (default when omitted via API: 100).

## `reviewFilter` (type: `string`):

Reviews come in AliExpress' default order. Star and date sorting are not offered by the source.

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

Two-letter country code used for the request (affects which reviews AliExpress shows first and the translation language base). Default US.

## `includeStarOnly` (type: `boolean`):

AliExpress has many reviews with a star rating but no text or photos. They are skipped (not charged) by default; turn this on to collect them too (charged as review).

## `classifyReviews` (type: `boolean`):

Add complaint types (delivery, quality/defect, size/fit, price/value, customer service, packaging, no effect, skin/body reaction, other), sentiment and purchase motive to each review. Reviews in other languages are classified from AliExpress' English translation. Charged per review as review-judged.

## `complaintThreshold` (type: `number`):

Minimum probability (0–1) for a complaint type to be reported.

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

Products processed in parallel.

## `residentialFallback` (type: `boolean`):

Retry failing requests through residential proxy in the shipping country.

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

Default Apify datacenter proxy works.

## `healthCheck` (type: `boolean`):

Internal: fail the run when results look degraded (used by the developer's scheduled checks).

## Actor input object example

```json
{
  "productUrls": [
    "https://www.aliexpress.com/item/1005008549911526.html"
  ],
  "reviewsPerProduct": 20,
  "reviewFilter": "all",
  "country": "US",
  "includeStarOnly": false,
  "classifyReviews": true,
  "complaintThreshold": 0.5,
  "maxConcurrency": 5,
  "residentialFallback": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "healthCheck": false
}
```

# Actor output Schema

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

No description

## `report` (type: `string`):

No description

## `summary` (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 = {
    "productUrls": [
        "https://www.aliexpress.com/item/1005008549911526.html"
    ],
    "reviewsPerProduct": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("leoworks/aliexpress-reviews-classifier").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 = {
    "productUrls": ["https://www.aliexpress.com/item/1005008549911526.html"],
    "reviewsPerProduct": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("leoworks/aliexpress-reviews-classifier").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 '{
  "productUrls": [
    "https://www.aliexpress.com/item/1005008549911526.html"
  ],
  "reviewsPerProduct": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call leoworks/aliexpress-reviews-classifier --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,leoworks/aliexpress-reviews-classifier"
        }
    }
}
```

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/cq0xUODQd5K1dQcJ0/builds/xrcdCZEIcVszWcRzk/openapi.json
