# AliExpress Product Search Scraper – Prices, Sales & Ratings (`glidepath/aliexpress-products-scraper`) Actor

Search AliExpress by keyword. Input: search queries. Output: products with price, list price, discount, rating, units sold, sponsored flag, images and URL. $1.92/1k products.

- **URL**: https://apify.com/glidepath/aliexpress-products-scraper.md
- **Developed by:** [Glidepath](https://apify.com/glidepath) (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.92 / 1,000 products

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 Product Search Scraper – Prices, Sales & Ratings

Search AliExpress by keyword and get the products it shows: title, price, list price, discount, star rating, units sold, sponsored flag, images and product URL. One row per product, ready for a spreadsheet or your own database.

It reads AliExpress's public search pages with plain HTTP requests, follows AliExpress's `robots.txt`, needs no login and never tries to get around a bot check.

### Who uses it

- **Dropshippers and product researchers**: find what sells in a niche (units sold, rating, price band) before you list it.
- **Brands and resellers**: watch the price and discount level of your category on AliExpress.
- **Analysts and AI agents**: pull a clean table of the top AliExpress results for a list of keywords.

### How to use it

1. Enter one or more **search queries**, one per line (e.g. `phone case`, `wireless earbuds`).
2. Optionally set **Max products per search** (up to 60) and a total limit.
3. Run it and download the results as JSON, CSV or Excel, or read them through the API.

### Input example

```json
{
  "searchQueries": ["phone case", "wireless earbuds"],
  "maxItemsPerQuery": 20,
  "includeSponsored": true
}
```

### Output example

```json
{
  "query": "phone case",
  "position": 1,
  "productId": "3256812779735221",
  "url": "https://www.aliexpress.com/item/3256812779735221.html",
  "title": "Phone Case for iPhone 18 Pro Max Official Original Liquid Silicone Cases ...",
  "price": 3.66,
  "originalPrice": null,
  "discountPercent": null,
  "currency": "USD",
  "newCustomerDeal": false,
  "rating": 4.8,
  "soldCount": 1000,
  "soldText": "1,000+ sold",
  "isAd": false,
  "listedSince": "2026-08-16",
  "imageUrl": "https://ae-pic-a1.aliexpress-media.com/kf/Sd5b386caccb741888e09dfa437ea752fE.jpg",
  "images": ["https://ae-pic-a1.aliexpress-media.com/kf/Sd5b386caccb741888e09dfa437ea752fE.jpg"],
  "scrapedAt": "2026-09-26T15:30:00Z"
}
```

| Field | Type | Meaning |
|---|---|---|
| `query` | string | The search query this product was found with |
| `position` | integer | Position in the search results (1 = first) |
| `productId` | string | AliExpress product id |
| `url` | string | Public product page |
| `title` | string | Product title |
| `price` | number / null | Price shown in the results (lowest variant). Null when the card only shows a new-customer gift deal |
| `originalPrice` | number / null | List price before discount (lowest variant) |
| `discountPercent` | integer / null | Discount of `price` vs `originalPrice`, in percent |
| `currency` | string | Currency of the prices (USD) |
| `newCustomerDeal` | boolean | True when the shown price is a new-customer welcome deal or gift (use `originalPrice` for the regular list price) |
| `rating` | number / null | Average star rating (0–5) |
| `soldCount` | integer / null | Units sold as a number (lower bound: `1,000+ sold` → 1000) |
| `soldText` | string / null | Units sold as shown by AliExpress |
| `isAd` | boolean | True for sponsored results |
| `listedSince` | string / null | Listing date shown by AliExpress (YYYY-MM-DD) |
| `imageUrl` | string / null | Main product image |
| `images` | array | Up to 10 product image URLs |
| `scrapedAt` | string | When the row was collected (ISO 8601, UTC) |

A per-search summary (products found and saved, any error) is saved in the run's key-value store as `SUMMARY`.

### Pricing

Pay per result: **$1.92 per 1,000 products**, the same price on every Apify plan. A search that can't be read is never charged, and the same product is never charged twice for the same search in one run.

- Track 50 keywords × 60 products every week: 12,000 products/month → about **$23.04/month**.
- One-off research of 20 keywords × 60 products: 1,200 products → about **$1.92** plus a little.

Set **Maximum cost per run** in the run options and the Actor stops cleanly when it is reached.

### Limits and notes

- **Up to 60 products per search**: the first results page as AliExpress shows it to a visitor from the United States, prices in USD.
- Prices are what the search results show to a first-time visitor. AliExpress often shows such visitors a welcome-deal price or a "free gift" offer; those rows have `newCustomerDeal = true` (for a gift card `price` is null). `originalPrice` is the regular list price on every row where AliExpress shows one.
- No seller, buyer or review data is collected: no store names, no reviewer names, no contact details.
- If AliExpress answers with a bot check instead of results, that search is reported as blocked in `SUMMARY` and not charged; the Actor never tries to solve or avoid the check.

### FAQ

**Is it legal?** The Actor only reads public search pages that AliExpress's `robots.txt` allows, identifies itself honestly, needs no login and collects product facts, not personal data. You are responsible for how you use the data; check AliExpress's terms for your use case.

**Why did a search return nothing?** Either AliExpress had no results for it, or it answered with a bot check. The `SUMMARY` record says which.

**Can I get more than 60 products per keyword?** Not in version 0.1. Use several more specific queries (e.g. `iphone 16 case`, `iphone 16 case magsafe`).

**Can I get product details, variants or reviews?** No, this Actor covers search results only. Reviews are out of scope on purpose (they carry reviewer identities).

See the [changelog](./CHANGELOG.md) for changes.

### Support

Found a problem or need a field? Open an issue on the Actor's Issues tab; we answer within 2 business days.

# Changelog

This Actor's version history is a separate document: https://apify.com/glidepath/aliexpress-products-scraper/changelog.md

# Actor input Schema

## `searchQueries` (type: `array`):

One AliExpress search per line, as you would type it on aliexpress.com (e.g. 'phone case', 'wireless earbuds'). Each search returns up to 60 products (the first results page).

## `maxItemsPerQuery` (type: `integer`):

Stop after this many products for each search (1–60).

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

Stop the whole run after this many products. Leave empty for no limit (your maximum cost per run still applies).

## `includeSponsored` (type: `boolean`):

AliExpress mixes ads into search results. Kept by default and marked with isAd = true; turn off to keep only organic results.

## `redactContactInfo` (type: `boolean`):

Recommended. Removes contact details if a seller put them in a product title.

## Actor input object example

```json
{
  "searchQueries": [
    "phone case",
    "wireless earbuds"
  ],
  "maxItemsPerQuery": 20,
  "includeSponsored": true,
  "redactContactInfo": true
}
```

# Actor output Schema

## `products` (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 = {
    "searchQueries": [
        "phone case",
        "wireless earbuds"
    ],
    "maxItemsPerQuery": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("glidepath/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 = {
    "searchQueries": [
        "phone case",
        "wireless earbuds",
    ],
    "maxItemsPerQuery": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("glidepath/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 '{
  "searchQueries": [
    "phone case",
    "wireless earbuds"
  ],
  "maxItemsPerQuery": 20
}' |
apify call glidepath/aliexpress-products-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,glidepath/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/TfyEbCZP2hZmCg039/builds/wtjiLVTwxvNI6l13W/openapi.json
