# AliExpress Scraper – Products, Prices, Variants & Shipping (`ninhothedev/aliexpress-scraper`) Actor

Scrape AliExpress search, category & product pages: price, discount, exact orders, rating, store, shipping cost to your country, SKUs, specs, coupons. Pay per result.

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

## Pricing

from $1.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 – Products, Prices, Variants & Shipping

Scrape **AliExpress** search results, category pages and product pages into clean JSON, CSV or Excel. Get the **price, original price and discount, exact order count, rating and review count, store name / ID / rating, shipping cost and delivery time to your country, free-shipping and Choice flags, every variant (SKU) with its own price and stock, specifications, coupons, images and video** – for any ship-to country, currency and language. No login, no API key, pay only per product.

**Why this AliExpress scraper?**

- **Fast & cheap:** pure HTTP/JSON (no browser) – 20 products in ~6 seconds, from **$0.001 per product**.
- **Exact orders:** the real order count (e.g. `114316`), not just "10,000+ sold".
- **Your market:** ship-to country, currency and language change prices, shipping cost, delivery days and availability.
- **Search + details in one run:** keywords, search/category URLs and product URLs/IDs in the same input.
- **Reliable:** captcha pages are detected and retried automatically with fresh sessions (direct → datacenter → residential).

### What data can you extract?

| Field | Example |
|---|---|
| `product_id`, `url`, `title` | `1005009916264127`, `https://www.aliexpress.com/item/1005009916264127.html` |
| `price`, `original_price`, `currency`, `discount_percent` | `3.50`, `25.12`, `USD`, `86` |
| `price_min`, `price_max` (across variants) | `1.69`, `9.19` |
| `rating`, `reviews_count` | `4.9`, `11154` |
| `orders`, `orders_text` | `114316`, `100K+ sold` |
| `image`, `images`, `video_url` | CDN URLs |
| `store_name`, `store_id`, `store_url`, `seller_id` | `Stone's Store`, `1103573332` |
| `store_rating`, `store_positive_feedback`, `store_items_sold_180d`, `store_country`, `store_open_since` | `4.9`, `93.2`, `20000`, `China`, `Mar 1, 2024` |
| `shipping_cost`, `shipping_currency`, `free_shipping`, `shipping_method` | `1.99`, `EUR`, `false`, `AliExpress Selection Standard Shipping` |
| `delivery_days_min`, `delivery_days_max`, `delivery_text`, `ship_from`, `ship_to` | `5`, `8`, `Oct. 20 - Oct. 23`, `China`, `DE` |
| `shipping_options` | all delivery options with cost and days |
| `is_choice`, `is_sponsored`, `selling_points`, `coupons` | `true`, `false`, `["Save 0,06€"]` |
| `variants` | SKU ID, attributes (color/size…), price, original price, stock, image |
| `sku_properties`, `variants_count`, `stock`, `max_per_order` | options and inventory |
| `specs` | `{"Brand Name": "Amour Brave", "Material": "TPU"}` |
| `category_id`, `category_ids` | `100000356`, `["44","629",…]` |
| `search_query`, `page`, `position`, `scraped_at` | ranking position and timestamp |

Search results contain the listing fields (price, discount, orders, rating, images, free shipping, Choice, delivery estimate, coupons). Turn on **Scrape full product details** (or pass product URLs/IDs) to also get store, shipping cost, reviews count, variants, specs and video.

### How to use

1. Enter one or more **search keywords** (e.g. `wireless earbuds`) and/or paste **AliExpress URLs** – search pages, category pages, product pages, short links or plain product IDs.
2. Choose **ship-to country**, currency, sort order and filters (price range, free shipping, Choice, min rating, ships-from).
3. Click **Start** and download the results as JSON, CSV, Excel or via API.

```json
{
  "searchQueries": ["wireless earbuds", "usb c cable"],
  "startUrls": ["https://www.aliexpress.com/item/1005009463232289.html"],
  "maxItems": 100,
  "sort": "orders",
  "minPrice": 5,
  "maxPrice": 40,
  "minRating": "4.5",
  "freeShippingOnly": true,
  "shipTo": "US",
  "scrapeDetails": true
}
```

### Output example

Real product from a test run (ship to Germany, with details; long arrays shortened):

```json
{
  "product_id": "1005009916264127",
  "url": "https://www.aliexpress.com/item/1005009916264127.html",
  "title": "PD 60W USB C to USB Type C Cable Fast Charge Data Cable For Iphone 15 15Pro Huawei Samsung Xiaomi Data Line Black White 1M 2M 3M",
  "price": 1.69,
  "original_price": null,
  "currency": "EUR",
  "discount_percent": null,
  "price_formatted": "€ 1,82",
  "price_min": 1.69,
  "price_max": 9.19,
  "rating": 4.9,
  "reviews_count": 11154,
  "orders": 114316,
  "orders_text": "100K+ sold",
  "image": "https://ae-pic-a1.aliexpress-media.com/kf/Sa5effb1497dc48219efccbf9bc229e40p.jpg",
  "images": [
    "https://ae-pic-a1.aliexpress-media.com/kf/Sa5effb1497dc48219efccbf9bc229e40p.jpg",
    "https://ae-pic-a1.aliexpress-media.com/kf/Sac2c7216967f465bb5d8735d3bd00fa1J.jpg",
    "https://ae-pic-a1.aliexpress-media.com/kf/S4cd59251c0654851adb9278877866285G.jpg"
  ],
  "video_url": "https://video.aliexpress-media.com/play/u/ae_sg_item/3000004200160/p/1/e/6/t/10301/5000255456762.mp4",
  "store_name": "Stone's Store",
  "store_url": "https://www.aliexpress.com/store/1103573332",
  "store_id": "1103573332",
  "seller_id": "2678280160",
  "store_rating": null,
  "store_positive_feedback": 100,
  "store_country": "China",
  "store_open_since": "Mar 1, 2024",
  "store_top_rated": false,
  "shipping_cost": 1.99,
  "shipping_currency": "EUR",
  "free_shipping": false,
  "shipping_method": "AliExpress Selection Standard Shipping",
  "delivery_days_min": 5,
  "delivery_days_max": 8,
  "delivery_text": "Oct. 20 - Oct. 23",
  "ship_from": "China",
  "ship_to": "DE",
  "shipping_options": [
    {
      "method": "AliExpress Selection Standard Shipping",
      "code": "CAINIAO_FULFILLMENT_STD",
      "cost": 1.99,
      "currency": "EUR",
      "free": false,
      "delivery_days_min": 5,
      "delivery_days_max": 8,
      "eta": "Oct. 20 - Oct. 23",
      "ship_from": "China",
      "tracking": true
    }
  ],
  "category_id": "100000356",
  "category_ids": [
    "44",
    "629",
    "200001706",
    "100000356"
  ],
  "category_path": null,
  "is_choice": true,
  "is_sponsored": false,
  "selling_points": [
    "Buy 3+, duty covered"
  ],
  "coupons": [
    "2,00€ off on 19,00€",
    "Save 0,06€"
  ],
  "stock": 550,
  "max_per_order": 24,
  "variants_count": 63,
  "sku_properties": [
    {
      "name": "Ships From",
      "values": [
        "China Mainland"
      ]
    },
    {
      "name": "Color",
      "values": [
        "black",
        "WHITE",
        "green"
      ]
    },
    {
      "name": "Cable length",
      "values": [
        "2m",
        "1m",
        "3m"
      ]
    }
  ],
  "variants": [
    {
      "sku_id": "12000050569616652",
      "attributes": {
        "Color": "black",
        "Cable length": "3m",
        "Ships From": "China Mainland"
      },
      "price": 2.49,
      "original_price": null,
      "stock": 4,
      "available": true,
      "image": "https://ae-pic-a1.aliexpress-media.com/kf/Sa9e54e9dbaad4fe4b1e9c0feacdd12e2v.jpg"
    },
    {
      "sku_id": "12000050569616653",
      "attributes": {
        "Color": "black",
        "Cable length": "1m 2pcs",
        "Ships From": "China Mainland"
      },
      "price": 4.99,
      "original_price": null,
      "stock": 0,
      "available": false,
      "image": "https://ae-pic-a1.aliexpress-media.com/kf/Sa9e54e9dbaad4fe4b1e9c0feacdd12e2v.jpg"
    }
  ],
  "specs": {
    "Structure": "Without modular telephone connectors",
    "High-concerned chemical": "none",
    "Package": "No",
    "Model Number": "usb cable",
    "USB Type": "USB2.0 Type-C"
  },
  "description_url": "https://pdp.aliexpress-media.com/product/description/pc/v2/en_US/desc.htm?productId=1005009916264127&key=S01fb7927519c4354b356b07a14b355268.zip&token=65150f4e88b8366bd4d8762b8455583d&sellerId=2678280160",
  "sku_id": "12000050569616643",
  "details_scraped": true,
  "source": "search",
  "search_query": "usb c cable",
  "search_url": "https://www.aliexpress.com/w/wholesale-usb-c-cable.html?SearchText=usb+c+cable&sortType=total_tranpro_desc",
  "page": 1,
  "position": 2,
  "language": "en_US",
  "scraped_at": "2026-10-15T20:59:36.318Z",
  "store_items_sold_180d": 10000
}
```

### Pricing

Pay per result – no monthly fee:

- **$0.001 per product** (search/category listing data)
- **+ $0.001 per product with full details** (store, shipping, variants, specs) – only when details are loaded

| | 1,000 products | 10,000 products |
|---|---|---|
| Listing data | $1.00 | $10.00 |
| Full details | $2.00 | $20.00 |

Products that are unavailable in your ship-to country or no longer exist are not charged. Platform usage is minimal because no browser is used.

### Use cases

- **Dropshipping product research:** find best sellers by exact order count, price and rating for your market.
- **Price monitoring:** schedule daily runs to track prices, discounts and coupons of competitors or your own listings.
- **Supplier & store lead generation:** collect store names, IDs, ratings and positive-feedback rates per niche.
- **Shipping intelligence:** compare shipping cost, delivery days and warehouses (ships-from) per destination country.
- **Catalog enrichment:** import titles, images, specs and variants into Shopify, WooCommerce or your PIM.
- **Market analytics:** category size, price distribution and Choice share for a keyword.

### Integrations

Use the results anywhere: **API**, **Make**, **Zapier**, **n8n**, **Google Sheets**, **Slack**, **webhooks**, Airbyte, or download as JSON/CSV/Excel.

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("ninhothedev/aliexpress-scraper").call(run_input={
    "searchQueries": ["wireless earbuds"], "maxItems": 50, "shipTo": "US", "sort": "orders",
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["title"], item["price"], item["orders"])
```

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('ninhothedev/aliexpress-scraper').call({ searchQueries: ['wireless earbuds'], maxItems: 50 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

### FAQ

**Is scraping AliExpress legal?** The actor only collects publicly visible product data, the same you see without logging in. Make sure your use complies with AliExpress' terms and data-protection law in your jurisdiction.

**How many products can I get?** A search shows up to 60 products per page and up to 60 pages; use several keywords or category URLs for larger datasets. `maxItems` is an exact cap.

**Do I need a proxy?** No. The actor rotates connections automatically and retries captcha pages. You can still set your own proxy under *Advanced*.

**Why are prices different from my browser?** Prices depend on ship-to country, currency and promotions. Set `shipTo` and `currency` to match your browser. New-user coupons are shown in `coupons`, not deducted from `price`.

**Which product ID format is used?** `product_id` is always the global AliExpress ID (`1005…`). US-site IDs (`3256…`) are accepted as input and converted automatically.

**Can I schedule it?** Yes – use Apify Schedules (e.g. daily price tracking) and integrations to push changes to Sheets or Slack.

**Something broke?** Open an issue on the actor's *Issues* tab – fixes are usually shipped within a day. A `RUN_SUMMARY` record in the key-value store lists any problem per input.

### Related scrapers

- [Amazon Product Scraper](https://apify.com/ninhothedev/amazon-product-scraper)
- [eBay Scraper](https://apify.com/ninhothedev/ebay-scraper)
- [Shopify Store Scraper](https://apify.com/ninhothedev/shopify-store-scraper)

# Actor input Schema

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

Keywords to search on AliExpress (one search per line), e.g. 'wireless earbuds'.

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

Search URLs (/w/wholesale-...), category URLs (/category/...), product URLs (/item/<id>.html), short links (a.aliexpress.com/\_...) or plain product IDs. Product URLs/IDs always return full details.

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

Maximum number of products in total (exact cap).

## `maxItemsPerSearch` (type: `integer`):

Optional per-search limit (0 = no limit, only Max products applies).

## `scrapeDetails` (type: `boolean`):

Also load each product's detail data: store name/ID/rating, shipping cost & delivery time to your country, review count, variants/SKUs with price and stock, specifications, video, coupons. Charged as an extra 'product details' event.

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

Sort order for keyword searches.

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

Minimum price in the chosen currency.

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

Maximum price in the chosen currency.

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

Only products with free shipping to your ship-to country.

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

Only 'Choice' products (faster delivery, free returns).

## `minRating` (type: `string`):

Drop products below this star rating (unrated products are dropped too).

## `shipFrom` (type: `string`):

Optional warehouse country filter, e.g. US, ES, FR, DE, CN.

## `shipTo` (type: `string`):

Destination country (ISO 2-letter, e.g. US, GB, DE, FR, CA, AU). Affects prices, availability, shipping cost and delivery time.

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

ISO currency code (USD, EUR, GBP, CAD, AUD, ...). Leave empty to use the ship-to country's currency.

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

Language of titles and texts (AliExpress machine translations).

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

Parallel detail requests.

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

Optional. By default the actor rotates direct, datacenter and (if needed) residential connections automatically.

## Actor input object example

```json
{
  "searchQueries": [
    "wireless earbuds"
  ],
  "maxItems": 20,
  "maxItemsPerSearch": 0,
  "scrapeDetails": false,
  "sort": "best_match",
  "freeShippingOnly": false,
  "choiceOnly": false,
  "minRating": "",
  "shipTo": "US",
  "language": "en",
  "maxConcurrency": 4
}
```

# Actor output Schema

## `products` (type: `string`):

No description

## `details` (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": [
        "wireless earbuds"
    ],
    "maxItems": 20,
    "shipTo": "US"
};

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

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

```

## MCP server setup

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