# AliExpress Search Scraper Cheap (`data_api/aliexpress-search-scraper-cheap`) Actor

AliExpress Search Scraper fetches product listings by keyword and returns prices, ratings, sold counts, and shipping details as structured data, so you can see what actually sells and what it costs.

- **URL**: https://apify.com/data\_api/aliexpress-search-scraper-cheap.md
- **Developed by:** [Data API](https://apify.com/data_api) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## AliExpress Product Scraper

![AliExpress Product Scraper](cover.jpg)

Searching AliExpress by hand is slow, and the data you actually care about — price, rating, how many people bought it, where it ships from — is scattered across hundreds of cards you have to scroll past one at a time. This scraper does the scrolling for you. Type in a search term, set a few filters if you want them, and it pages through the results and hands back every product as a clean row with the price, star rating, orders sold, images, and the badges on the card. Run one term or a whole list, then export to JSON, CSV, or Excel.

### What you get

Each product comes back as one row with a steady set of columns, so results drop straight into a sheet or database. Fields you get per product:

- **Identity** — `itemId`, `itemName`, `itemUrl`, plus the `searchTerm`, `pageNumber`, and `rankPosition` that located it
- **Pricing** — `currentPrice`, `listPrice`, `currencyCode`, the exact `priceLabel` AliExpress prints, and the `discountLabel`
- **Popularity** — `starRating`, `ordersSold`, and a `topRated` flag for anything at 4.8 stars or above
- **Images** — `imageLink` for the main photo and `extraImages` for the rest of the carousel
- **Shipping and badges** — `shippingLabel`, `shipsFrom`, and the promotional `badges` shown on the card

### Quick start

1. Press **Try for free** to open the input form.
2. Type your search terms into **Search terms** — one product phrase per line.
3. Optionally narrow things down with a price range, a lowest star rating, or a minimum number of orders sold.
4. Pick a result order (best match, most orders, cheapest, priciest, or highest rated) and set how many products to pull per term.
5. Hit **Start**, then download the results as JSON, CSV, or Excel.

![How it works](how-it-works.jpg)

### Use cases

- **Product research** — see what the top listings for any term charge, and which ones have real sales behind them
- **Price monitoring** — track current and list prices across competing products over time
- **Dropshipping sourcing** — filter by orders sold and rating to shortlist proven products worth listing
- **Market analysis** — pull a category's listings and compare pricing, ratings, and shipping origin side by side
- **Catalog building** — collect titles, images, and prices to seed a comparison site or internal database

### Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `searchTerms` | array of strings | Yes | Product phrases to look up on AliExpress. Each term is searched on its own. |
| `sortBy` | string | No | Result order: `default`, `orders`, `price_asc`, `price_desc`, or `rating`. Default `default`. |
| `priceFrom` | number | No | Drop products priced below this amount. |
| `priceTo` | number | No | Drop products priced above this amount. |
| `minStarRating` | number | No | Keep only products rated at this many stars or higher, from 0 to 5. |
| `minOrdersSold` | integer | No | Keep only products with at least this many orders sold. |
| `resultsLimit` | integer | No | How many products to gather per term, up to 200. Default `60`. |
| `pageLimit` | integer | No | Cap on result pages per term, up to 20. Left empty, the scraper pages automatically to reach your product count. |
| `timeoutSeconds` | integer | No | Seconds to wait on each request before giving up. Default `75`. |

#### Example input

```json
{
    "searchTerms": ["mechanical keyboard", "led strip lights"],
    "sortBy": "orders",
    "priceFrom": 10,
    "priceTo": 80,
    "minStarRating": 4.5,
    "minOrdersSold": 100,
    "resultsLimit": 60,
    "timeoutSeconds": 75
}
````

### Output

Every product becomes one row. Fields with no value on the card come back as `null`, so your columns line up no matter how complete each listing is.

#### Example output

```json
{
    "searchTerm": "mechanical keyboard",
    "pageNumber": 1,
    "rankPosition": 1,
    "itemId": "1005008001302101",
    "itemName": "RGB Mechanical Gaming Keyboard 87 Keys Hot-Swappable Red Switch",
    "itemUrl": "https://www.aliexpress.com/item/1005008001302101.html",
    "imageLink": "https://ae-pic-a1.aliexpress-media.com/kf/Sd419c7122b4e430fb3e0d405ec9a436dG.jpg",
    "extraImages": [],
    "currentPrice": 34.19,
    "listPrice": 62.16,
    "currencyCode": "USD",
    "priceLabel": "US $34.19",
    "discountLabel": "-45%",
    "starRating": 4.9,
    "ordersSold": 12480,
    "shippingLabel": "Free shipping",
    "shipsFrom": "CN",
    "badges": ["Choice", "Free shipping"],
    "topRated": true,
    "collectedAt": "2026-06-29T12:00:00.000000+00:00"
}
```

#### Output fields

| Field | Type | Description |
|-------|------|-------------|
| `searchTerm` | string | The phrase that surfaced this product |
| `pageNumber` | integer | Results page the product was found on |
| `rankPosition` | integer | Position in the results, counting from 1 |
| `itemId` | string | AliExpress identifier for the product |
| `itemName` | string | Complete listing title |
| `itemUrl` | string | Direct link to the product page |
| `imageLink` | string | Address of the primary product photo |
| `extraImages` | array | Further photo URLs from the carousel, when present |
| `currentPrice` | number | What the product sells for right now |
| `listPrice` | number | Price before any discount |
| `currencyCode` | string | Three-letter currency code, such as USD or EUR |
| `priceLabel` | string | Price text exactly as shown on AliExpress, e.g. "US $34.19" |
| `discountLabel` | string | Percentage off shown on the card, e.g. -45% |
| `starRating` | number | Average score from 0 to 5, or `null` with no reviews yet |
| `ordersSold` | integer | How many times the product has been ordered |
| `shippingLabel` | string | Delivery text on the card, e.g. "Free shipping", or `null` |
| `shipsFrom` | string | Country code the item dispatches from, e.g. CN, ES |
| `badges` | array | Promotional labels on the card, such as "Choice" |
| `topRated` | boolean | True when the product scores 4.8 stars or higher |
| `collectedAt` | string | ISO 8601 timestamp of when the row was captured |

### Tips for best results

- **Start with one term.** Run a single search term and a small `resultsLimit` first to confirm the fields match your pipeline before scaling up.
- **Let pagination run itself.** Leave `pageLimit` empty and the scraper reads exactly enough pages to hit your product count; set it only when you want a hard ceiling.
- **Filter on the platform and after.** `sortBy` orders results at the source, while `priceFrom`, `priceTo`, `minStarRating`, and `minOrdersSold` trim the rows you keep.
- **Watch for empty ratings.** A brand-new listing with no reviews returns `starRating` as `null` rather than 0, so account for that when you sort or average.
- **Raise the timeout on big runs.** If you hit timeout errors, push `timeoutSeconds` toward 120 to give heavier pages room to load.

### How can I use AliExpress product data?

**How can I use the AliExpress Product Scraper to find winning dropshipping products?**
Sort by `orders` and set `minOrdersSold` and `minStarRating` so only proven sellers come through. Each row carries the price, orders sold, rating, and images you need to judge a product, so you can shortlist candidates in minutes instead of clicking through pages of listings by hand.

**How can I scrape AliExpress prices for competitor and market research?**
Run the terms your category sells under and read the `currentPrice`, `listPrice`, and `discountLabel` across the results. Export to CSV or Excel and you have a snapshot of where the market sits on price, what discounts look like, and which listings carry the most orders.

**How can I export AliExpress search results to a spreadsheet?**
Enter your search terms, set a `resultsLimit`, and run the actor. Every product comes back as a flat row with consistent columns, ready to download as JSON, CSV, or Excel and open in any spreadsheet or BI tool for sorting, filtering, and charts.

### Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses or private contact information. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### Support

Questions, feature requests, or a field you'd like added? Reach out at <data.apify@proton.me> and we'll get back to you.

# Actor input Schema

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

One or more product phrases to look up on AliExpress, for example 'mechanical keyboard', 'led strip lights', or 'car phone mount'.

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

Choose how AliExpress should order the products on each results page.

## `priceFrom` (type: `number`):

Skip any product that sells for less than this amount.

## `priceTo` (type: `number`):

Skip any product that sells for more than this amount.

## `minStarRating` (type: `number`):

Keep only products rated at this many stars or higher, on a 0 to 5 scale.

## `minOrdersSold` (type: `integer`):

Keep only products that have sold at least this many orders.

## `resultsLimit` (type: `integer`):

How many products to gather for each search term.

## `pageLimit` (type: `integer`):

Upper limit on how many result pages to read per term. Leave empty to let the scraper page automatically until it reaches your product count.

## `timeoutSeconds` (type: `integer`):

How long to wait on each request before giving up. Raise it if you run into timeout errors.

## Actor input object example

```json
{
  "searchTerms": [
    "car phone mount",
    "portable blender"
  ],
  "sortBy": "default",
  "resultsLimit": 60,
  "timeoutSeconds": 75
}
```

# 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": [
        "mechanical keyboard",
        "led strip lights"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("data_api/aliexpress-search-scraper-cheap").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": [
        "mechanical keyboard",
        "led strip lights",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("data_api/aliexpress-search-scraper-cheap").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": [
    "mechanical keyboard",
    "led strip lights"
  ]
}' |
apify call data_api/aliexpress-search-scraper-cheap --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=data_api/aliexpress-search-scraper-cheap",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "AliExpress Search Scraper Cheap",
        "description": "AliExpress Search Scraper fetches product listings by keyword and returns prices, ratings, sold counts, and shipping details as structured data, so you can see what actually sells and what it costs.",
        "version": "0.0",
        "x-build-id": "VykCd3wORZJpm2s0t"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/data_api~aliexpress-search-scraper-cheap/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-data_api-aliexpress-search-scraper-cheap",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/data_api~aliexpress-search-scraper-cheap/runs": {
            "post": {
                "operationId": "runs-sync-data_api-aliexpress-search-scraper-cheap",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/data_api~aliexpress-search-scraper-cheap/run-sync": {
            "post": {
                "operationId": "run-sync-data_api-aliexpress-search-scraper-cheap",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "searchTerms"
                ],
                "properties": {
                    "searchTerms": {
                        "title": "Search terms",
                        "type": "array",
                        "description": "One or more product phrases to look up on AliExpress, for example 'mechanical keyboard', 'led strip lights', or 'car phone mount'.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "sortBy": {
                        "title": "Result order",
                        "enum": [
                            "default",
                            "orders",
                            "price_asc",
                            "price_desc",
                            "rating"
                        ],
                        "type": "string",
                        "description": "Choose how AliExpress should order the products on each results page.",
                        "default": "default"
                    },
                    "priceFrom": {
                        "title": "Lowest price",
                        "type": "number",
                        "description": "Skip any product that sells for less than this amount."
                    },
                    "priceTo": {
                        "title": "Highest price",
                        "type": "number",
                        "description": "Skip any product that sells for more than this amount."
                    },
                    "minStarRating": {
                        "title": "Lowest star rating",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "number",
                        "description": "Keep only products rated at this many stars or higher, on a 0 to 5 scale."
                    },
                    "minOrdersSold": {
                        "title": "Fewest orders sold",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Keep only products that have sold at least this many orders."
                    },
                    "resultsLimit": {
                        "title": "Products per term",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "How many products to gather for each search term.",
                        "default": 60
                    },
                    "pageLimit": {
                        "title": "Page cap per term (optional)",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Upper limit on how many result pages to read per term. Leave empty to let the scraper page automatically until it reaches your product count."
                    },
                    "timeoutSeconds": {
                        "title": "Request timeout (seconds)",
                        "minimum": 30,
                        "maximum": 180,
                        "type": "integer",
                        "description": "How long to wait on each request before giving up. Raise it if you run into timeout errors.",
                        "default": 75
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
