# AliExpress Scraper (`crawlerbros/aliexpress-scraper`) Actor

Scrape AliExpress search results, product details, store profiles, and customer reviews. Multi-region (com / us / ru / es / fr / de / it / nl / pt / pl / ar / tr / ko / ja / vi / th / id / he), multi-currency, with sort, price, rating, and ship-from/ship-to filters.

- **URL**: https://apify.com/crawlerbros/aliexpress-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 16 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.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 Scraper

Scrape AliExpress search results, product listings, store profiles, and customer reviews — across every regional storefront (global, US, RU, ES, FR, DE, IT, NL, PT, PL, AR, TR, KO, JA, VI, TH, ID, HE).

No login. No cookies required. The actor pulls the public SSR JSON state embedded in every search/store page and the public `feedback.aliexpress.com/pc/searchEvaluation.do` reviews JSON endpoint, with TLS-fingerprint-aware HTTP and an automatic Apify-residential-proxy fallback if AliExpress rate-limits the request.

---

### Features

- **5 modes**:
  - `search` — text query (e.g. *"phone case"*) → up to 60 products per page, paginated.
  - `byProduct` — fetch product detail records by numeric AliExpress item ID.
  - `byStore` — fetch store profile records by numeric store ID.
  - `byReviews` — fetch customer reviews for one or more product IDs.
  - `byUrl` — paste any AliExpress URL (search, item, store, or feedback API URL); the actor auto-detects the kind and region.
- **18 regional storefronts**: global, United States, Russia, Spain, France, Germany, Italy, Netherlands, Portugal, Poland, Arabic, Turkey, Korea, Japan, Vietnam, Thailand, Indonesia, Hebrew.
- **42 currencies**: USD, EUR, GBP, JPY, CNY, RUB, BRL, INR, AUD, CAD, HKD, TWD, KRW, SGD, MXN, ARS, CLP, COP, PEN, UYU, ILS, TRY, AED, SAR, ZAR, PLN, CHF, SEK, NOK, DKK, CZK, HUF, RON, THB, VND, PHP, IDR, MYR, NZD, PKR, EGP, NGN.
- **18 UI languages** that AliExpress localizes responses in.
- **Filters**: sort order, minimum/maximum price, minimum rating, ship-from country, ship-to country.
- **Optional review enrichment**: attach up to 200 reviews to each product record.
- **Resilient fetcher**: retries with exponential backoff; auto-escalates from datacenter IP to Apify residential proxy on rate-limit / connection-reset.

---

### Sample input

```json
{
  "mode": "search",
  "searchQuery": "phone case",
  "region": "com",
  "currency": "USD",
  "language": "en_US",
  "sortBy": "orders_desc",
  "priceMin": 0,
  "priceMax": 10,
  "ratingMin": 4,
  "shipFrom": "CN",
  "maxItems": 50,
  "maxPages": 2
}
````

### Sample output (mode=search)

```json
{
  "productId": "1005010155028387",
  "title": "Bowknot Kitty Cat 3D Silicone Soft Phone Case For iPhone 17 Pro Max",
  "productUrl": "https://www.aliexpress.com/item/1005010155028387.html",
  "imageUrl": "https://ae-pic-a1.aliexpress-media.com/kf/Se78d305732ec4f97ba23188ebce0e368X.jpg",
  "salePrice": { "amount": 4.39, "currency": "USD", "formatted": "$4.39", "discountPercent": 55 },
  "originalPrice": { "amount": 9.84, "currency": "USD", "formatted": "$9.84" },
  "discountPercent": 55,
  "currencyCode": "USD",
  "rating": 4.9,
  "ordersText": "5,000+ sold",
  "ordersCount": 5000,
  "sellingPoints": [
    "Free shipping over $10.00",
    "New shoppers save $5.45"
  ],
  "listedAt": "2025-10-14 00:00:00",
  "productType": "natural",
  "shipFromCountry": "CN",
  "region": "com",
  "recordType": "product",
  "siteName": "AliExpress",
  "scrapedAt": "2026-05-08T12:34:56.000+00:00"
}
```

### Sample output (mode=byReviews)

```json
{
  "productId": "1005005883203176",
  "reviewId": "5000043517822",
  "rating": 5,
  "reviewText": "Excellent quality, fast shipping, recommend!",
  "reviewerName": "M***a",
  "reviewerCountry": "BR",
  "reviewedAt": "2025-09-12 14:23:45",
  "skuInfo": "Color:Black",
  "imageUrls": ["https://ae01.alicdn.com/kf/...jpg"],
  "helpfulCount": 4,
  "recordType": "review",
  "siteName": "AliExpress",
  "scrapedAt": "2026-05-08T12:34:56.000+00:00"
}
```

***

### Modes — when to use which

| Mode | Use case | Required input |
| --- | --- | --- |
| `search` | Discover products by free-text query | `searchQuery` |
| `byProduct` | Enrich known products with metadata (title, image, store id, rating) | `productIds` |
| `byStore` | Get a store / seller profile (name, ID, follower count, opening date) | `storeIds` |
| `byReviews` | Pull customer reviews for known products | `productIds` |
| `byUrl` | One-shot — paste any AliExpress URL and the actor classifies it | `urls` |

***

### FAQ

**Do I need an AliExpress account or cookies?**
No. Every endpoint the actor uses is public.

**Do I need a proxy?**
Not for typical use. The actor speaks AliExpress's TLS fingerprint via curl\_cffi and works from datacenter IPs. If you hit rate limits, enable `useProxy` (or rely on `autoEscalateOnBlock`, which is on by default and switches the actor to Apify residential proxy mid-run).

**Why is the product detail record sparser than the search-card record?**
AliExpress migrated product pages to client-side rendering — the full product JSON is fetched via signed API calls after page load, which a stateless scraper can't replicate without cookies. The actor still surfaces title, canonical URL, image, store ID, and JSON-LD price/rating when AliExpress includes them in the SSR HTML. For the richest dataset, use `mode=search` (every search-card carries title + price + rating + sales count + selling points).

**How does pricing work across regions?**
The `currency` and `language` inputs are sent via the `aep_usuc_f` cookie that AliExpress uses for locale negotiation; the response prices are formatted in the requested currency. Regional sub-domains (e.g. `es.aliexpress.com`) localize text but the same products are returned across regions.

**What happens if I set price min > price max?**
The filter is dropped with a log warning and the run continues without bounds — no crash, no infinite loop.

**Can I scrape a category?**
AliExpress's `/category/{id}/...` URLs redirect to the corresponding wholesale search; pass the category as a `searchQuery` (e.g. `"cellphones"`) for the same effect.

**How many records per page?**
60 products per search page, up to 60 pages. Reviews are 20 per page; the actor paginates automatically up to your `maxReviewsPerProduct` cap.

***

### Limitations

- Product detail page is client-side rendered; only OG meta tags + JSON-LD (when present) are extracted. Use `mode=search` for the richest per-product fields.
- Variation/SKU details (color, size, dimensions) are loaded via signed mtop calls after page load — not captured.
- Shipping calculation is per-buyer / per-IP and not surfaced in the SSR HTML.
- AliExpress can rate-limit aggressive crawls; `autoEscalateOnBlock` mitigates this with residential proxy fallback. For sustained scraping, enable `useProxy` with a residential group up front.
- **Currency localisation is best-effort.** The `currency` input is sent via the `aep_usuc_f` cookie, but AliExpress may override it based on the proxy IP's geolocation (e.g. an unrelated-country proxy can return prices in the local currency of the egress IP). For deterministic pricing, enable `useProxy=true` and configure a residential proxy in a country aligned with the requested currency.
- **Some regional storefronts (e.g. `ja`, `ko`, `he`) sometimes serve a CSR-only page** that omits the `_init_data_` JSON state used for parsing; in that case the run finishes with 0 records and a status message. The `com`, `us`, `de`, `fr`, `es`, `it`, `nl`, `pt`, `pl`, `tr`, `ru`, `ar`, `vi`, `th`, `id` storefronts ship SSR JSON reliably.

# Actor input Schema

## `mode` (type: `string`):

What to scrape. search: text-query results. byProduct: product detail by ID. byStore: store profile by ID. byReviews: customer reviews for product IDs. byUrl: parse any AliExpress URL (search, item, store, or feedback).

## `searchQuery` (type: `string`):

Free-text search query, e.g. "phone case", "led strip", "running shoes". Required when mode=search.

## `productIds` (type: `array`):

AliExpress numeric product IDs (e.g. 1005010155028387). Each ID becomes one fetch in byProduct, or one batch of reviews in byReviews.

## `storeIds` (type: `array`):

AliExpress numeric store IDs from /store/{id} URLs.

## `urls` (type: `array`):

Any mix of AliExpress URLs: search (/wholesale or /w/...), product (/item/{id}.html), store (/store/{id}), or feedback (/pc/searchEvaluation.do?productId={id}). Region is auto-detected from the host.

## `region` (type: `string`):

AliExpress regional sub-domain to query. com is the global English storefront; us is the United States storefront; the rest are language-localized variants.

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

ISO-4217 currency code; controls the prices AliExpress renders in the response (via the aep\_usuc\_f cookie).

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

Locale that AliExpress should render text in (b\_locale cookie).

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

How AliExpress should sort the search results.

## `priceMin` (type: `integer`):

Minimum price (in the selected currency). Records below this are excluded.

## `priceMax` (type: `integer`):

Maximum price (in the selected currency). 0 disables the upper bound.

## `ratingMin` (type: `number`):

Minimum star rating (0–5, accepts decimals like 4.5). Records below are excluded; products with no rating are kept (the user opted into a filter, not into requiring the field).

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

ISO 3166-1 alpha-2 country code of the warehouse the item ships from (CN by default).

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

ISO 3166-1 alpha-2 country to ship to (also drives currency / locale defaults).

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

Hard cap on emitted records.

## `maxPages` (type: `integer`):

Maximum pagination pages per search query (60 items per page).

## `enrichReviews` (type: `boolean`):

If true, fetch up to maxReviewsPerProduct customer reviews for every product record.

## `maxReviewsPerProduct` (type: `integer`):

Cap on how many reviews to keep per product (when enrichReviews=true, or in mode=byReviews). 0 disables.

## `useProxy` (type: `boolean`):

Route requests through Apify proxy. AliExpress is generally accessible without a proxy from datacenter IPs; enable only if you see frequent rate limits.

## `autoEscalateOnBlock` (type: `boolean`):

If a request is blocked or rate-limited, transparently switch to Apify residential proxy for retries.

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

Apify proxy configuration. Used only when useProxy is enabled.

## Actor input object example

```json
{
  "mode": "search",
  "searchQuery": "phone case",
  "productIds": [
    "1005010155028387"
  ],
  "storeIds": [
    "1101493050"
  ],
  "urls": [
    "https://www.aliexpress.com/item/1005010155028387.html"
  ],
  "region": "com",
  "currency": "USD",
  "language": "en_US",
  "sortBy": "default",
  "priceMin": 0,
  "priceMax": 0,
  "ratingMin": 0,
  "shipFrom": "",
  "shipTo": "",
  "maxItems": 5,
  "maxPages": 3,
  "enrichReviews": false,
  "maxReviewsPerProduct": 0,
  "useProxy": false,
  "autoEscalateOnBlock": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": []
  }
}
```

# Actor output Schema

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

Dataset containing AliExpress records (products / stores / reviews based on mode).

# 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 = {
    "mode": "search",
    "searchQuery": "phone case",
    "productIds": [
        "1005010155028387"
    ],
    "storeIds": [
        "1101493050"
    ],
    "urls": [
        "https://www.aliexpress.com/item/1005010155028387.html"
    ],
    "region": "com",
    "currency": "USD",
    "language": "en_US",
    "sortBy": "default",
    "priceMin": 0,
    "priceMax": 0,
    "ratingMin": 0,
    "shipFrom": "",
    "shipTo": "",
    "maxItems": 5,
    "maxPages": 3,
    "enrichReviews": false,
    "maxReviewsPerProduct": 0,
    "useProxy": false,
    "autoEscalateOnBlock": true,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": []
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/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 = {
    "mode": "search",
    "searchQuery": "phone case",
    "productIds": ["1005010155028387"],
    "storeIds": ["1101493050"],
    "urls": ["https://www.aliexpress.com/item/1005010155028387.html"],
    "region": "com",
    "currency": "USD",
    "language": "en_US",
    "sortBy": "default",
    "priceMin": 0,
    "priceMax": 0,
    "ratingMin": 0,
    "shipFrom": "",
    "shipTo": "",
    "maxItems": 5,
    "maxPages": 3,
    "enrichReviews": False,
    "maxReviewsPerProduct": 0,
    "useProxy": False,
    "autoEscalateOnBlock": True,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": [],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/aliexpress-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 '{
  "mode": "search",
  "searchQuery": "phone case",
  "productIds": [
    "1005010155028387"
  ],
  "storeIds": [
    "1101493050"
  ],
  "urls": [
    "https://www.aliexpress.com/item/1005010155028387.html"
  ],
  "region": "com",
  "currency": "USD",
  "language": "en_US",
  "sortBy": "default",
  "priceMin": 0,
  "priceMax": 0,
  "ratingMin": 0,
  "shipFrom": "",
  "shipTo": "",
  "maxItems": 5,
  "maxPages": 3,
  "enrichReviews": false,
  "maxReviewsPerProduct": 0,
  "useProxy": false,
  "autoEscalateOnBlock": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": []
  }
}' |
apify call crawlerbros/aliexpress-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "AliExpress Scraper",
        "description": "Scrape AliExpress search results, product details, store profiles, and customer reviews. Multi-region (com / us / ru / es / fr / de / it / nl / pt / pl / ar / tr / ko / ja / vi / th / id / he), multi-currency, with sort, price, rating, and ship-from/ship-to filters.",
        "version": "1.0",
        "x-build-id": "bWZDPg9Oyda4cUXCM"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~aliexpress-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-aliexpress-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/crawlerbros~aliexpress-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-aliexpress-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/crawlerbros~aliexpress-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-aliexpress-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",
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "byProduct",
                            "byStore",
                            "byReviews",
                            "byUrl"
                        ],
                        "type": "string",
                        "description": "What to scrape. search: text-query results. byProduct: product detail by ID. byStore: store profile by ID. byReviews: customer reviews for product IDs. byUrl: parse any AliExpress URL (search, item, store, or feedback).",
                        "default": "search"
                    },
                    "searchQuery": {
                        "title": "Search query (mode=search)",
                        "type": "string",
                        "description": "Free-text search query, e.g. \"phone case\", \"led strip\", \"running shoes\". Required when mode=search.",
                        "default": "phone case"
                    },
                    "productIds": {
                        "title": "Product IDs (mode=byProduct or byReviews)",
                        "type": "array",
                        "description": "AliExpress numeric product IDs (e.g. 1005010155028387). Each ID becomes one fetch in byProduct, or one batch of reviews in byReviews.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "storeIds": {
                        "title": "Store IDs (mode=byStore)",
                        "type": "array",
                        "description": "AliExpress numeric store IDs from /store/{id} URLs.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "urls": {
                        "title": "URLs (mode=byUrl)",
                        "type": "array",
                        "description": "Any mix of AliExpress URLs: search (/wholesale or /w/...), product (/item/{id}.html), store (/store/{id}), or feedback (/pc/searchEvaluation.do?productId={id}). Region is auto-detected from the host.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "region": {
                        "title": "Regional storefront",
                        "enum": [
                            "com",
                            "us",
                            "ru",
                            "es",
                            "fr",
                            "de",
                            "it",
                            "nl",
                            "pt",
                            "pl",
                            "ar",
                            "tr",
                            "ko",
                            "ja",
                            "vi",
                            "th",
                            "id",
                            "he"
                        ],
                        "type": "string",
                        "description": "AliExpress regional sub-domain to query. com is the global English storefront; us is the United States storefront; the rest are language-localized variants.",
                        "default": "com"
                    },
                    "currency": {
                        "title": "Currency",
                        "enum": [
                            "USD",
                            "EUR",
                            "GBP",
                            "JPY",
                            "CNY",
                            "RUB",
                            "BRL",
                            "INR",
                            "AUD",
                            "CAD",
                            "HKD",
                            "TWD",
                            "KRW",
                            "SGD",
                            "MXN",
                            "ARS",
                            "CLP",
                            "COP",
                            "PEN",
                            "UYU",
                            "ILS",
                            "TRY",
                            "AED",
                            "SAR",
                            "ZAR",
                            "PLN",
                            "CHF",
                            "SEK",
                            "NOK",
                            "DKK",
                            "CZK",
                            "HUF",
                            "RON",
                            "THB",
                            "VND",
                            "PHP",
                            "IDR",
                            "MYR",
                            "NZD",
                            "PKR",
                            "EGP",
                            "NGN"
                        ],
                        "type": "string",
                        "description": "ISO-4217 currency code; controls the prices AliExpress renders in the response (via the aep_usuc_f cookie).",
                        "default": "USD"
                    },
                    "language": {
                        "title": "UI language",
                        "enum": [
                            "en_US",
                            "es_ES",
                            "fr_FR",
                            "de_DE",
                            "it_IT",
                            "pt_BR",
                            "pt_PT",
                            "ru_RU",
                            "ja_JP",
                            "ko_KR",
                            "ar_MA",
                            "tr_TR",
                            "th_TH",
                            "vi_VN",
                            "id_ID",
                            "nl_NL",
                            "pl_PL",
                            "iw_IL"
                        ],
                        "type": "string",
                        "description": "Locale that AliExpress should render text in (b_locale cookie).",
                        "default": "en_US"
                    },
                    "sortBy": {
                        "title": "Sort order (mode=search)",
                        "enum": [
                            "default",
                            "orders_desc",
                            "newest",
                            "price_asc",
                            "price_desc"
                        ],
                        "type": "string",
                        "description": "How AliExpress should sort the search results.",
                        "default": "default"
                    },
                    "priceMin": {
                        "title": "Minimum price",
                        "minimum": 0,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Minimum price (in the selected currency). Records below this are excluded.",
                        "default": 0
                    },
                    "priceMax": {
                        "title": "Maximum price",
                        "minimum": 0,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Maximum price (in the selected currency). 0 disables the upper bound.",
                        "default": 0
                    },
                    "ratingMin": {
                        "title": "Minimum rating",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "number",
                        "description": "Minimum star rating (0–5, accepts decimals like 4.5). Records below are excluded; products with no rating are kept (the user opted into a filter, not into requiring the field).",
                        "default": 0
                    },
                    "shipFrom": {
                        "title": "Ship from country",
                        "enum": [
                            "",
                            "CN",
                            "US",
                            "RU",
                            "ES",
                            "FR",
                            "DE",
                            "IT",
                            "GB",
                            "PL",
                            "TR",
                            "BR",
                            "JP",
                            "KR",
                            "AU",
                            "CA",
                            "MX",
                            "AE",
                            "SA",
                            "IL",
                            "TH",
                            "VN",
                            "ID",
                            "MY",
                            "NL",
                            "BE",
                            "PT"
                        ],
                        "type": "string",
                        "description": "ISO 3166-1 alpha-2 country code of the warehouse the item ships from (CN by default).",
                        "default": ""
                    },
                    "shipTo": {
                        "title": "Ship to country",
                        "enum": [
                            "",
                            "US",
                            "CN",
                            "RU",
                            "ES",
                            "FR",
                            "DE",
                            "IT",
                            "GB",
                            "PL",
                            "TR",
                            "BR",
                            "JP",
                            "KR",
                            "AU",
                            "CA",
                            "MX",
                            "AE",
                            "SA",
                            "IL",
                            "TH",
                            "VN",
                            "ID",
                            "MY",
                            "NL",
                            "BE",
                            "PT",
                            "IN",
                            "PK",
                            "EG",
                            "ZA",
                            "NG"
                        ],
                        "type": "string",
                        "description": "ISO 3166-1 alpha-2 country to ship to (also drives currency / locale defaults).",
                        "default": ""
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Hard cap on emitted records.",
                        "default": 25
                    },
                    "maxPages": {
                        "title": "Max search pages",
                        "minimum": 1,
                        "maximum": 60,
                        "type": "integer",
                        "description": "Maximum pagination pages per search query (60 items per page).",
                        "default": 3
                    },
                    "enrichReviews": {
                        "title": "Enrich with reviews",
                        "type": "boolean",
                        "description": "If true, fetch up to maxReviewsPerProduct customer reviews for every product record.",
                        "default": false
                    },
                    "maxReviewsPerProduct": {
                        "title": "Max reviews per product",
                        "minimum": 0,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Cap on how many reviews to keep per product (when enrichReviews=true, or in mode=byReviews). 0 disables.",
                        "default": 0
                    },
                    "useProxy": {
                        "title": "Use Apify proxy",
                        "type": "boolean",
                        "description": "Route requests through Apify proxy. AliExpress is generally accessible without a proxy from datacenter IPs; enable only if you see frequent rate limits.",
                        "default": false
                    },
                    "autoEscalateOnBlock": {
                        "title": "Auto-escalate on block",
                        "type": "boolean",
                        "description": "If a request is blocked or rate-limited, transparently switch to Apify residential proxy for retries.",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify proxy configuration. Used only when useProxy is enabled.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": []
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
