# AliExpress Scraper — Search & Product Data (`native_emblem/aliexpress-scraper`) Actor

Scrape AliExpress search and category results: price, original price, discount, exact sold count, rating, ship-from, delivery window, Choice and ad flags, images. Any country and currency.

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

## Pricing

from $3.00 / 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 Scraper

Type a keyword like "wireless earbuds" or paste an AliExpress search or category URL, and you get every product from the result pages as a clean record: price, original price, discount, units sold, rating, ship-from country, delivery window and store. Prices follow the country you pick. A US run comes back in USD, a German run in EUR with German titles.

In our test runs on 16 October 2026, three search terms at 300 products each finished in 44 seconds.

People use it for dropshipping product research, price tracking and competitor monitoring. Our tip: sort by most orders. The first page is usually the fastest read on what's actually selling in a niche.

### What you get for each product

| Field | What it is |
|---|---|
| `productId`, `url` | AliExpress product ID and product page link |
| `title` | Product title in the language you picked |
| `price`, `priceFormatted`, `currency` | Current price, as a number and as shown on the site |
| `originalPrice`, `discountPercent` | Price before the discount, when there is one |
| `soldCount`, `soldText` | Units sold. AliExpress rounds the label to "1,000+ sold", but the page usually carries the exact figure too, so you get 1,090 instead of 1,000 |
| `rating` | Average star rating, 0 to 5 |
| `shipFrom` | Ship-from country code (CN, US, ES…) |
| `freeShipping` | `true` when AliExpress marks free shipping to your country, `null` when the card doesn't say |
| `deliveryDaysMin`, `deliveryDaysMax`, `deliveryDateFrom`, `deliveryDateTo` | Delivery estimate to your country, when shown |
| `isChoice` | Part of the AliExpress Choice program |
| `isAd` | Sponsored placement |
| `storeName` | Store name, when shown in the results |
| `badges` | Labels on the card ("Top selling on AliExpress", "Lowest price in 90 days", coupons) |
| `imageUrl`, `images` | Main image and the card's image set |
| `categoryId`, `categoryPath` | AliExpress category ID and its parent IDs |
| `listedDate` | Date the listing went live |
| `position` | Rank in the results (1 = top of page 1) |
| `searchTerm` / `sourceUrl` | Which of your inputs produced the record |
| `country`, `scrapedAt` | Ship-to country used, and when the record was collected |

### Input

| Field | Type | Description |
|---|---|---|
| `searchTerms` | string\[] | Keywords, one product list per term |
| `startUrls` | string\[] | AliExpress search or category URLs. Filters already in the URL are kept |
| `maxProductsPerSearch` | integer | Products per term or URL (default 100). AliExpress shows 60 per page |
| `sort` | string | `""` best match, `orders` most orders, `price_asc`, `price_desc` |
| `minPrice`, `maxPrice` | integer | Price range in the selected currency |
| `freeShippingOnly` | boolean | Only products with free shipping to your country |
| `choiceOnly` | boolean | Only AliExpress Choice products |
| `includeAds` | boolean | Keep sponsored placements (default `true`, flagged with `isAd`) |
| `country` | string | Ship-to country, e.g. `US`, `GB`, `DE`, `FR`, `CA`, `AU`, `BR` (default `US`) |
| `currency` | string | Optional. Defaults to the country's currency |
| `language` | string | Optional title language: `en`, `de`, `fr`, `es`, `pt`… (default English) |
| `maxItems` | integer | Stop after this many products in total |
| `proxyConfiguration` | object | Leave the default unless you have a reason to change it |

#### Example inputs

Best sellers for a keyword, shipped to the US:

```json
{
  "searchTerms": ["wireless earbuds", "yoga mat"],
  "maxProductsPerSearch": 300,
  "sort": "orders",
  "country": "US"
}
```

A category, shipped to Germany, Choice products between €10 and €40:

```json
{
  "startUrls": ["https://www.aliexpress.com/category/63705/earphones-headphones.html"],
  "country": "DE",
  "language": "de",
  "choiceOnly": true,
  "minPrice": 10,
  "maxPrice": 40
}
```

### Output example

A real record from a US run:

```json
{
  "productId": "3256812972305397",
  "url": "https://www.aliexpress.com/item/3256812972305397.html",
  "title": "2026 New Air 3【 Pro3 】 Bluetooth Wireless Earbuds With Heart Rate Monitoring, Active Noise Cancellation Headphones…",
  "price": 19.11,
  "originalPrice": 57.32,
  "discountPercent": 66,
  "currency": "USD",
  "priceFormatted": "US $19.11",
  "rating": 4.9,
  "soldCount": 234,
  "soldText": "234 sold",
  "shipFrom": "US",
  "freeShipping": true,
  "deliveryDaysMin": 4,
  "deliveryDaysMax": 10,
  "deliveryDateFrom": "2026-10-20",
  "deliveryDateTo": "2026-10-26",
  "isChoice": false,
  "isAd": false,
  "storeName": "Shop1105233629 Store",
  "badges": ["New shoppers save $38.21", "Free shipping"],
  "imageUrl": "https://ae-pic-a1.aliexpress-media.com/kf/Sa57a4580c1274b01988d5df3fa8e76cbx.jpg",
  "categoryId": "63705",
  "categoryPath": ["44", "100000306", "63705"],
  "listedDate": "2026-09-09",
  "position": 1,
  "searchTerm": "wireless earbuds",
  "country": "US",
  "scrapedAt": "2026-10-16T13:03:02.531Z"
}
```

Export as JSON, CSV or Excel, or read the dataset through the Apify API. It plugs into Make, Zapier and n8n like any other actor, and you can put it on a schedule for daily price tracking.

### Pricing

$3 per 1,000 products. You pay only for products saved to your dataset. A run that finds nothing costs nothing.

### Limits worth knowing

- Product page URLs (`aliexpress.com/item/...`) aren't supported yet. Search for the product, or use its category URL, for now.
- AliExpress repeats products across deep result pages, and the actor drops the repeats. In one test, 22 pages of "phone case" covered 1,313 result positions and gave 978 unique products.
- Some fields only appear on some cards. Delivery dates were on about half the cards in our tests and the store name on about 40%. Brand-new listings have no rating yet. Missing values are `null`, never guessed.
- AliExpress limits how fast a single IP can browse. The actor spreads requests across rotating Apify Proxy IPs and moves to residential IPs on its own if datacenter ones get blocked, so you don't need to touch the proxy settings.

### FAQ

**Which countries work?** Any two-letter country code AliExpress ships to. We've tested US, GB and DE; prices, currency and delivery estimates change with the country.

**How many products can I get per search?** Up to about 3,600 (60 pages of 60), which is as deep as AliExpress itself goes.

**What does `freeShipping: null` mean?** The product card didn't say either way. Turn on `freeShippingOnly` if you need a guarantee; with it on, every result qualifies.

**Something's broken or missing?** Open an issue on the Issues tab. We usually reply within a day.

**Is scraping AliExpress allowed?** The actor collects publicly visible product information. You're responsible for using the data in line with AliExpress's terms and the law where you are.

### More scrapers from us

- [SHEIN Product Scraper](https://apify.com/native_emblem/shein-product-scraper): SHEIN search and product detail in 40+ regions
- [App Reviews Scraper](https://apify.com/native_emblem/app-reviews-scraper): Google Play and App Store reviews in one run
- [Google Trends Scraper](https://apify.com/native_emblem/google-trends-scraper): interest over time and by region, related queries
- [ATS Job Feed Scraper](https://apify.com/native_emblem/ats-job-feed-scraper): live jobs from Greenhouse, Lever, Ashby and SmartRecruiters

Need product data from 20+ retailers in one schema? See [Cartpie](https://cartpie.com/).

***

*Tags: aliexpress scraper, aliexpress api, aliexpress product data, aliexpress price tracker, aliexpress search scraper, dropshipping product research, ecommerce scraper.*

# Changelog

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

# Actor input Schema

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

Keywords to search on AliExpress, one product list per term (e.g. "wireless earbuds", "yoga mat").

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

AliExpress search or category page URLs (e.g. https://www.aliexpress.com/w/wholesale-yoga-mat.html or https://www.aliexpress.com/category/63705/earphones-headphones.html). Filters already in the URL are kept.

## `maxProductsPerSearch` (type: `integer`):

How many products to return for each search term or URL. AliExpress shows 60 per page and up to about 3,600 per listing.

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

Sort order for search results.

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

Only products priced at or above this amount (in the selected currency).

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

Only products priced at or below this amount (in the selected currency).

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

Only products with free shipping to the selected country.

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

Only products in the AliExpress Choice program (faster delivery, free returns).

## `includeAds` (type: `boolean`):

Keep sponsored placements in the results (they're flagged with isAd). Turn off for organic results only.

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

Two-letter country code (e.g. US, GB, DE, FR, CA, AU, BR). Sets prices, shipping and delivery estimates.

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

Optional currency code (e.g. USD, EUR, GBP). Defaults to the ship-to country's currency.

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

Optional language for product titles (e.g. en, de, fr, es, pt). Defaults to English.

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

Stop after this many products across all search terms and URLs. Leave empty for no total limit.

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

Apify Proxy keeps large runs reliable. The default works for most runs.

## Actor input object example

```json
{
  "searchTerms": [
    "wireless earbuds"
  ],
  "maxProductsPerSearch": 60,
  "sort": "",
  "freeShippingOnly": false,
  "choiceOnly": false,
  "includeAds": true,
  "country": "US",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

Clean AliExpress product records (price, discount, sold count, rating, shipping, images) in the 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"
    ],
    "maxProductsPerSearch": 60,
    "country": "US",
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("native_emblem/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"],
    "maxProductsPerSearch": 60,
    "country": "US",
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("native_emblem/aliexpress-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": [
    "wireless earbuds"
  ],
  "maxProductsPerSearch": 60,
  "country": "US",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call native_emblem/aliexpress-scraper --silent --output-dataset

```

## MCP server setup

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