# AliExpress Search Scraper (`xtracto/aliexpress-search-scraper`) Actor

Run keyword searches on AliExpress and collect every result card across paginated pages.

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

## Pricing

from $10.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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 Search Scraper

Search any keyword on AliExpress and export every product card — price, rating, orders, store details, and more — across as many pages as you need.

### Why use this actor

- No AliExpress account or login required — works on fully public search results.
- Multi-keyword input with configurable page depth per query.
- Localized results — choose your ship-to country and currency at run time.
- Rich card payload including title, sale price, original price, discount, rating, orders count, free-shipping flag, and sponsored indicator.
- Stable JSON output ready to load into any database, spreadsheet, or data pipeline.
- Automatic retries ensure you get complete results even on flaky connections.

### How it works

1. You provide one or more search keywords and set how many pages to collect per keyword.
2. The actor fetches each search results page and parses every product card on the page.
3. Localization settings (country, currency) are applied so prices reflect your target market.
4. Results stream into your Apify dataset as they are collected, page by page.
5. When all pages are done you can download the full dataset as JSON, CSV, or Excel.

You don't need to manage any browsers or scrapers.

### Input

```json
{
  "queries": ["bluetooth headphones", "mini projector"],
  "maxPagesPerQuery": 3,
  "country": "US",
  "currency": "USD",
  "maxConcurrency": 4,
  "maxRequestRetries": 4,
  "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
````

| Field | Type | Description |
|---|---|---|
| `queries` | array | Search keywords — one string per entry. |
| `maxPagesPerQuery` | integer | Pages to collect per keyword. Each page has up to 60 products. Default: 3. |
| `country` | string | Two-letter ISO country code for localized pricing and shipping (e.g. `US`, `GB`, `DE`). Default: `US`. |
| `currency` | string | ISO currency code for displayed prices (e.g. `USD`, `EUR`, `GBP`). Default: `USD`. |
| `maxConcurrency` | integer | Maximum parallel page requests. Default: 4. |
| `maxRequestRetries` | integer | Per-request retry budget before giving up. Default: 4. |
| `proxyConfiguration` | object | Apify Proxy or your own proxy list. RESIDENTIAL group is recommended. |

### Output

One record per product card per page:

```json
{
  "query": "bluetooth headphones",
  "page": 1,
  "position": 3,
  "productId": "1005005847632158",
  "title": "TWS Wireless Bluetooth 5.3 Earphones Noise Cancellation In-Ear Headphones with Mic",
  "price": 6.58,
  "priceFormatted": "US $6.58",
  "originalPrice": 12.99,
  "originalPriceFormatted": "US $12.99",
  "discount": 49,
  "currency": "USD",
  "currencySymbol": "US $",
  "rating": 4.6,
  "orders": 5300,
  "ordersRaw": "5300+ sold",
  "freeShipping": true,
  "tags": ["Free shipping", "Save $6"],
  "sponsored": false,
  "image": "https://ae01.alicdn.com/kf/S3fab12c7a3dc4e1f9f.jpg",
  "images": ["https://ae01.alicdn.com/kf/S3fab12c7a3dc4e1f9f.jpg"],
  "url": "https://www.aliexpress.com/item/1005005847632158.html",
  "storeId": "1103856720",
  "storeName": "TechGadgets Official Store",
  "storeUrl": "https://www.aliexpress.com/store/1103856720",
  "productType": "natural",
  "totalResults": 48000,
  "pageSize": 60,
  "scrapedAt": "2026-05-13T04:35:22Z"
}
```

| Field | Type | Description |
|---|---|---|
| `query` | string | The search keyword that produced this result. |
| `page` | integer | Page number this card appeared on. |
| `position` | integer | Position of the card on the page (1-indexed). |
| `productId` | string | AliExpress product ID. |
| `title` | string | Full product title. |
| `price` | number | Current sale price. |
| `priceFormatted` | string | Sale price with currency symbol. |
| `originalPrice` | number | Pre-discount price (if any). |
| `discount` | integer | Discount percentage (0 if no discount). |
| `currency` | string | ISO currency code. |
| `rating` | number | Average star rating (0–5). Present on ~17% of cards. |
| `orders` | integer | Total orders count. Present on ~42% of cards. |
| `freeShipping` | boolean | Whether free shipping is offered. |
| `sponsored` | boolean | `true` for paid-placement cards. |
| `image` | string | Primary product image URL. |
| `url` | string | Direct link to the product page. |
| `storeId` | string | Seller's store ID. |
| `storeName` | string | Seller's store name. |
| `totalResults` | integer | Total results AliExpress reports for this query. |
| `scrapedAt` | string | ISO 8601 timestamp of when the record was collected. |

### Other AliExpress Scrapers

| Actor | Description |
|---|---|
| [AliExpress Search Scraper](https://apify.com/search?q=aliexpress-search-scraper) | Keyword search results across multiple pages. |
| [AliExpress Category Scraper](https://apify.com/search?q=aliexpress-category-scraper) | Browse products by category ID. |
| [AliExpress Product Scraper](https://apify.com/search?q=aliexpress-product-scraper) | Full product detail from individual product URLs. |
| [AliExpress Store Scraper](https://apify.com/search?q=aliexpress-store-scraper) | Store profile and identity data from seller pages. |
| [AliExpress Review Scraper](https://apify.com/search?q=aliexpress-review-scraper) | Per-product review aggregates for every item in a store. |

# Actor input Schema

## `queries` (type: `array`):

Search keywords (one per array entry).

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

Two-letter ISO country code.

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

ISO currency code (e.g. USD, EUR, GBP).

## `maxPagesPerQuery` (type: `integer`):

How many result pages to traverse per query.

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

Maximum number of parallel requests.

## `maxRequestRetries` (type: `integer`):

How many times a request will be retried before giving up.

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

Apify Proxy or your own proxy list. RESIDENTIAL group is recommended.

## Actor input object example

```json
{
  "queries": [
    "bluetooth headphones"
  ],
  "country": "US",
  "currency": "USD",
  "maxPagesPerQuery": 3,
  "maxConcurrency": 4,
  "maxRequestRetries": 4,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "queries": [
        "bluetooth headphones"
    ],
    "country": "US",
    "currency": "USD",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("xtracto/aliexpress-search-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 = {
    "queries": ["bluetooth headphones"],
    "country": "US",
    "currency": "USD",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("xtracto/aliexpress-search-scraper").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 '{
  "queries": [
    "bluetooth headphones"
  ],
  "country": "US",
  "currency": "USD",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call xtracto/aliexpress-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "AliExpress Search Scraper",
        "description": "Run keyword searches on AliExpress and collect every result card across paginated pages.",
        "version": "1.0",
        "x-build-id": "uL70wxRXiZU2yIHrw"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/xtracto~aliexpress-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-xtracto-aliexpress-search-scraper",
                "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/xtracto~aliexpress-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-xtracto-aliexpress-search-scraper",
                "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/xtracto~aliexpress-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-xtracto-aliexpress-search-scraper",
                "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": [
                    "queries"
                ],
                "properties": {
                    "queries": {
                        "title": "Search keywords",
                        "type": "array",
                        "description": "Search keywords (one per array entry).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "country": {
                        "title": "Ship-to country",
                        "type": "string",
                        "description": "Two-letter ISO country code.",
                        "default": "US"
                    },
                    "currency": {
                        "title": "Currency",
                        "type": "string",
                        "description": "ISO currency code (e.g. USD, EUR, GBP).",
                        "default": "USD"
                    },
                    "maxPagesPerQuery": {
                        "title": "Max pages per query",
                        "minimum": 1,
                        "maximum": 60,
                        "type": "integer",
                        "description": "How many result pages to traverse per query.",
                        "default": 3
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "type": "integer",
                        "description": "Maximum number of parallel requests.",
                        "default": 4
                    },
                    "maxRequestRetries": {
                        "title": "Max retries",
                        "type": "integer",
                        "description": "How many times a request will be retried before giving up.",
                        "default": 4
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify Proxy or your own proxy list. RESIDENTIAL group is recommended."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
