# AliExpress Product Scraper - Search, Reviews & Price Data (`sian.agency/aliexpress-product-scraper`) Actor

Scrape AliExpress at scale: bulk product search, full item details, customer reviews with rating breakdowns, SKU price tiers, shipping estimates and store/seller data. Export clean structured datasets to JSON, CSV or Excel. Pay only for the rows you keep.

- **URL**: https://apify.com/sian.agency/aliexpress-product-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 product search 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 — Search, Reviews & Price Data 🛒

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Taobao & Tmall Product Scraper](https://img.shields.io/badge/Store-Taobao%20%26%20Tmall%20Scraper-FF4F00)](https://apify.com/sian.agency/taobao-tmall-product-scraper?fpr=sian) [![TikTok Shop Scraper](https://img.shields.io/badge/Store-TikTok%20Shop%20Scraper-25F4EE)](https://apify.com/sian.agency/tiktok-shop-scraper?fpr=sian) [![Xiaohongshu RedNote Scraper](https://img.shields.io/badge/Store-Xiaohongshu%20Scraper-FF2442)](https://apify.com/sian.agency/xiaohongshu-rednote-scraper?fpr=sian)

#### 🎉 Six AliExpress scrapers in one — search 60 products per page, then drill into details, reviews, SKU prices, shipping & seller trust
##### For dropshippers, price-trackers, market researchers and e-commerce teams who need clean AliExpress data without logins, proxies or browser automation.

---

### 📋 Overview

**Pull structured AliExpress data at scale** — whether you are sourcing products to dropship, tracking competitor prices, mining customer reviews, or vetting suppliers, this actor turns AliExpress into clean JSON/CSV/Excel in one run.

**Why thousands of e-commerce professionals choose us:**
- ✅ **Six operations, one actor**: product search, full detail, reviews, SKU price tiers, shipping estimates, and store/seller data — no juggling five separate scrapers.
- ⚡ **60 products per search page**: bulk-search any keyword and get price, order volume, rating and image for every result.
- 🎯 **The data sourcing actually needs**: per-variant SKU price matrix, package weight/dimensions, and per-destination shipping fees and ETAs — not just the headline price.
- 💰 **Pay-per-result**: you are only charged for rows you keep. The cheap-per-row search headline keeps bulk research affordable.
- 💎 **Localized**: set region, currency and language to get prices and shipping the way your buyers see them.
- ✨ **No login, no API key, no proxies**: paste a keyword or product ID and run.

---

### ✨ Features

- 🔍 **Product Search**: keyword search with ~60 results per page, price/promo, order count, rating and image.
- 📦 **Product Detail**: title, image gallery, price ranges, breadcrumbs, package weight/size, delivery and seller.
- ⭐ **Customer Reviews**: per-review text, star rating, buyer country, photos, and the aggregate star breakdown.
- 💲 **SKU Price Matrix**: per-variant price, promo price and stock for every option (color, size, etc.).
- 🚚 **Shipping Estimates**: per-destination fee, carrier, transit window, delivery date and tracking availability.
- 🏪 **Store / Seller**: followers, positive-feedback rate, seller level and score for supplier due diligence.
- ↕️ **Sort & price filters**: order by best match, most orders or price, and bound by min/max price.
- 🌐 **Region, currency & locale**: localized prices and shipping for any destination market.
- 📄 **Pagination**: fetch multiple pages of search results or reviews in one run, with automatic de-duplication.
- 📊 **Clean exports**: JSON, CSV or Excel straight from the Apify dataset, with a built-in run report.

---

### 🎬 Quick Start

Pick an operation, give it a keyword or product ID, and run. Search to discover products, then use a product's `itemId` for detail, reviews, SKU prices or shipping — and its `sellerId` for the store profile.

```bash
curl -X POST "https://api.apify.com/v2/acts/sian.agency~aliexpress-product-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"operation": "productSearch", "keyword": "wireless earbuds", "maxPages": 1}'
````

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Choose an operation

Select **Product Search**, **Product Detail**, **Product Reviews**, **SKU Prices**, **Shipping Estimates**, or **Store / Seller**.

#### Step 2: Provide the input

A search **keyword**, a product **itemId**, or a **sellerId** — depending on the operation. Optionally set region, currency, locale and price filters.

#### Step 3: Run and export

Start the run and export the dataset to JSON, CSV or Excel.

**That's it! In under a minute, you'll have:**

- Clean, structured AliExpress data matching your operation
- Localized prices and shipping for your target market
- A ready-to-analyze dataset and an HTML run report

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| operation | string | Yes | `productSearch` · `productDetail` · `productReviews` · `skuPrices` · `shippingEstimate` · `storeInfo` |
| keyword | string | For search | Search query (Product Search) |
| sort | string | No | `default` · `salesDesc` · `priceAsc` · `priceDesc` |
| minPrice / maxPrice | integer | No | Price bounds for Product Search |
| itemId | string | For detail/reviews/sku/shipping | Numeric AliExpress product ID |
| sellerId | string | For store | Numeric AliExpress seller ID |
| region | string | No | Destination country code (default `US`) |
| currency | string | No | Currency code (default `USD`) |
| locale | string | No | Language locale (default `en_US`) |
| maxPages | integer | No | Pages to fetch for paginated ops (default 3, max 50) |

**Example — Product Search:**

```json
{
  "operation": "productSearch",
  "keyword": "summer dress",
  "sort": "salesDesc",
  "minPrice": 5,
  "maxPrice": 40,
  "region": "US",
  "currency": "USD",
  "maxPages": 2
}
```

**Example — Product Detail:**

```json
{
  "operation": "productDetail",
  "itemId": "3256808868342109",
  "region": "US",
  "currency": "USD"
}
```

***

### 📤 Output

Results are saved to the Apify dataset. Fields vary by operation; the most valuable include:

| Field | Type | Description |
|-------|------|-------------|
| itemId | string | AliExpress product ID |
| productTitle | string | Product title |
| price / promotionPrice | number | List and promotion price |
| currencyCode | string | Currency of the prices |
| sales | number | Number of orders |
| averageStarRate | number | Average rating (0–5) |
| skuList | array | Per-variant price/stock matrix (SKU Prices) |
| reviewContent | string | Customer review text (Reviews) |
| reviewStars | number | Star rating of the review |
| buyerCountry | string | Reviewer country |
| shippingFee | string | Shipping cost (Shipping) |
| estimateDeliveryDate | string | Estimated delivery date |
| storeFollowers | number | Store followers (Store) |
| sellerPositiveRate | string | Seller positive-feedback rate |
| productUrl | string | Canonical product page URL |

**Example — search result row:**

```json
{
  "itemId": "3256808868342109",
  "productTitle": "M-4XL Summer Plus Loose Printed Short Sleeve Dress for Women",
  "price": 18.66,
  "promotionPrice": 8.23,
  "currencyCode": "USD",
  "sales": 900,
  "averageStarRate": 4.9,
  "productUrl": "https://www.aliexpress.com/item/3256808868342109.html",
  "_operation": "productSearch",
  "status": "success"
}
```

***

### 💼 Use Cases & Examples

#### 1. Product & Niche Research

**E-commerce researchers mapping a category before committing inventory.**

**Input:** A keyword plus sort and price filters.
**Output:** ~60 products per page with price, orders, rating and seller.
**Use:** Spot winning products and saturated niches at a glance.

#### 2. Price & Promotion Monitoring

**Repricing tools and deal sites tracking AliExpress prices over time.**

**Input:** A product `itemId` (or a keyword to track a basket).
**Output:** List price, promo price and the full per-variant SKU price matrix.
**Use:** Power price-tracker alerts and competitive intelligence.

#### 3. Dropshipping Sourcing

**Dropshippers vetting suppliers and computing landed cost.**

**Input:** A product `itemId`.
**Output:** Full detail, SKU prices, package weight/dimensions and shipping estimates per destination.
**Use:** Calculate margins and import products into a store.

#### 4. Review Sentiment Analysis

**Brands and analysts mining customer feedback.**

**Input:** A product `itemId`.
**Output:** Per-review text, stars, buyer country and the aggregate rating breakdown.
**Use:** Run NLP sentiment analysis and product-quality scoring.

#### 5. Supplier Due Diligence

**Sourcing teams benchmarking store trust.**

**Input:** A `sellerId`.
**Output:** Followers, positive-feedback rate, seller level and score.
**Use:** Vet suppliers before placing orders.

***

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/aliexpress-product-scraper').call({
  operation: 'productSearch',
  keyword: 'wireless earbuds',
  maxPages: 1
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/aliexpress-product-scraper').call(
    run_input={'operation': 'productDetail', 'itemId': '3256808868342109'}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~aliexpress-product-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation": "productReviews", "itemId": "3256808868342109", "maxPages": 1}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: Schedule or webhook
2. **HTTP Request**: Call the actor API
3. **Process**: Handle JSON results
4. **Action**: Save, notify, or transform

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- Full feature access, same data quality
- No credit card required
- Perfect for testing and small projects

#### PAID Tier (Production Ready)

- Scale up search and review pagination
- Pay-per-result: only charged for successful rows

💰 **Cheap-per-row search headline** — bulk product research stays affordable; richer single-record operations (detail, SKU, shipping, store) are priced as premium enrichment.

🔗 [View current pricing](https://apify.com/sian.agency/aliexpress-product-scraper?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: How do I get a product's `itemId`?**
A: Run a `Product Search` first and copy `itemId` from any result row, or take the numeric segment from an AliExpress product URL (`https://www.aliexpress.com/item/{ID}.html`).

**Q: Can I get prices in my own currency?**
A: Yes — set `region`, `currency` and `locale` and prices/shipping localize accordingly.

**Q: What output formats are available?**
A: JSON, CSV and Excel — export directly from the Apify dataset.

**Q: Does Product Search return hard prices?**
A: Yes — each search row includes list price and promotion price. For the full per-variant matrix, use the SKU Prices operation.

**Q: Can I scrape reviews and the rating breakdown?**
A: Yes — Product Reviews returns per-review rows plus the aggregate star distribution and positive/negative rates.

**Q: Do I need an account or API key?**
A: No — just provide a keyword or product ID and run.

***

### 🐛 Troubleshooting

**No results returned for a search**

- Try a broader keyword, or relax the `minPrice` / `maxPrice` bounds.

**"Invalid or missing required parameter"**

- Make sure the operation's required input is set: `keyword` for search, `itemId` for detail/reviews/SKU/shipping, `sellerId` for store.

**"Temporarily unavailable — please retry"**

- The data source had a transient hiccup. The actor retries automatically; re-run if it persists.

**A product ID isn't found**

- The product may have been removed or be region-restricted. Try a different `region`.

***

### ⚠️ Trademark Disclaimer

This is an **independent scraping tool**. It is not affiliated with, endorsed by, or sponsored by Alibaba Group Holding Limited or AliExpress. The **AliExpress®** name and logo are trademarks of their respective owners and are used here only for nominative, descriptive purposes (to identify the public marketplace this tool collects publicly available data from).

***

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. 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

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue in the actor's Issues tab
- Check the [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

## `operation` (type: `string`):

🎯 **PICK ONE OPERATION PER RUN.** Each run produces one clean dataset matching the chosen mode.

- **🔍 Product Search** — keyword or category search across AliExpress (~60 products/page) with price, sales, rating and image
- **📦 Product Detail** — deep scrape of a single product (title, images, price ranges, delivery, package weight/size, seller)
- **⭐ Product Reviews** — paginated customer reviews with star rating, buyer country, photos, and an aggregate rating breakdown
- **💲 SKU Prices** — the per-variant price matrix for one product (price, promo price, stock per option)
- **🚚 Shipping Estimates** — shipping options for a product and destination (fee, carrier, ETA, tracking)
- **🏪 Store / Seller** — a seller's store profile (followers, positive-rate, seller level and score)

💡 **TIP:** To combine operations, run the actor multiple times with different configurations — e.g. Search first to collect product IDs, then Detail or Reviews per ID.

## `keyword` (type: `string`):

🔍 **Required for the `Product Search` operation.**

Any AliExpress search query, e.g.:

- `wireless earbuds`
- `summer dress`
- `phone case`

💡 **TIP:** Specific queries return higher-relevance results. Combine with the price filters below to narrow a product niche.

⚠️ **Ignored** for all other operations.

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

↕️ **Optional, applies to `Product Search`.** How to order search results.

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

💲 **Optional, applies to `Product Search`.** Only return products at or above this price (in the result currency). Leave blank for no minimum.

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

💰 **Optional, applies to `Product Search`.** Only return products at or below this price (in the result currency). Leave blank for no maximum.

## `itemId` (type: `string`):

📦 **Required for `Product Detail`, `Product Reviews`, `SKU Prices`, and `Shipping Estimates`.**

The numeric AliExpress product ID. You can find it:

- In any AliExpress product URL: `https://www.aliexpress.com/item/{ID}.html` → the numeric segment
- In the `itemId` field of any `Product Search` result row

💡 **TIP:** Run a `Product Search` first, copy the `itemId` from the result rows, then run Detail / Reviews / SKU / Shipping per ID.

⚠️ **Ignored** for the Store / Seller operation.

## `sellerId` (type: `string`):

🏪 **Required for the `Store / Seller` operation.**

The numeric AliExpress seller ID. You can find it:

- In the `sellerId` field of any `Product Detail` result row

💡 **TIP:** Run a `Product Detail` first to get a product's `sellerId`, then run `Store / Seller` to pull the full store profile.

⚠️ **Ignored** for all other operations.

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

🌐 **Optional.** Two-letter destination country code used for localized pricing, currency and shipping estimates (e.g. `US`, `GB`, `DE`, `FR`, `BR`). Defaults to `US`.

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

💱 **Optional.** Three-letter currency code for prices (e.g. `USD`, `EUR`, `GBP`). Defaults to `USD`.

## `locale` (type: `string`):

🗣️ **Optional.** Language/locale for titles and text (e.g. `en_US`, `de_DE`, `fr_FR`). Defaults to `en_US`.

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

📄 **Applies to paginated operations** (Product Search, Product Reviews). Ignored for single-record operations (Detail, SKU, Shipping, Store).

- **Product Search:** ~60 products per page
- **Product Reviews:** ~20 reviews per page

💡 **TIP:** Start small (1–2 pages) to preview results before scaling up.

⚠️ Hard cap: 50 pages to prevent runaway runs.

## Actor input object example

```json
{
  "operation": "productSearch",
  "keyword": "wireless earbuds",
  "sort": "default",
  "itemId": "3256808868342109",
  "sellerId": "2678280160",
  "region": "US",
  "currency": "USD",
  "locale": "en_US",
  "maxPages": 3
}
```

# Actor output Schema

## `results` (type: `string`):

Clean structured rows — products, reviews, SKU prices, shipping options or store profiles depending on the chosen operation.

## `scrapingSummary` (type: `string`):

HTML summary showing successful and failed results with key metrics.

# 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 = {
    "keyword": "wireless earbuds",
    "itemId": "3256808868342109",
    "sellerId": "2678280160"
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/aliexpress-product-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 = {
    "keyword": "wireless earbuds",
    "itemId": "3256808868342109",
    "sellerId": "2678280160",
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/aliexpress-product-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 '{
  "keyword": "wireless earbuds",
  "itemId": "3256808868342109",
  "sellerId": "2678280160"
}' |
apify call sian.agency/aliexpress-product-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "AliExpress Product Scraper - Search, Reviews & Price Data",
        "description": "Scrape AliExpress at scale: bulk product search, full item details, customer reviews with rating breakdowns, SKU price tiers, shipping estimates and store/seller data. Export clean structured datasets to JSON, CSV or Excel. Pay only for the rows you keep.",
        "version": "1.0",
        "x-build-id": "aykc5QVpPfUfVhLv3"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~aliexpress-product-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-aliexpress-product-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/sian.agency~aliexpress-product-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-aliexpress-product-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/sian.agency~aliexpress-product-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-aliexpress-product-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": [
                    "operation"
                ],
                "properties": {
                    "operation": {
                        "title": "🎯 Operation — what do you want to scrape?",
                        "enum": [
                            "productSearch",
                            "productDetail",
                            "productReviews",
                            "skuPrices",
                            "shippingEstimate",
                            "storeInfo"
                        ],
                        "type": "string",
                        "description": "🎯 **PICK ONE OPERATION PER RUN.** Each run produces one clean dataset matching the chosen mode.\n\n- **🔍 Product Search** — keyword or category search across AliExpress (~60 products/page) with price, sales, rating and image\n- **📦 Product Detail** — deep scrape of a single product (title, images, price ranges, delivery, package weight/size, seller)\n- **⭐ Product Reviews** — paginated customer reviews with star rating, buyer country, photos, and an aggregate rating breakdown\n- **💲 SKU Prices** — the per-variant price matrix for one product (price, promo price, stock per option)\n- **🚚 Shipping Estimates** — shipping options for a product and destination (fee, carrier, ETA, tracking)\n- **🏪 Store / Seller** — a seller's store profile (followers, positive-rate, seller level and score)\n\n💡 **TIP:** To combine operations, run the actor multiple times with different configurations — e.g. Search first to collect product IDs, then Detail or Reviews per ID.",
                        "default": "productSearch"
                    },
                    "keyword": {
                        "title": "🔍 Search Keyword (for Product Search)",
                        "type": "string",
                        "description": "🔍 **Required for the `Product Search` operation.**\n\nAny AliExpress search query, e.g.:\n- `wireless earbuds`\n- `summer dress`\n- `phone case`\n\n💡 **TIP:** Specific queries return higher-relevance results. Combine with the price filters below to narrow a product niche.\n\n⚠️ **Ignored** for all other operations.",
                        "default": "wireless earbuds"
                    },
                    "sort": {
                        "title": "↕️ Sort Order (for Product Search)",
                        "enum": [
                            "default",
                            "salesDesc",
                            "priceAsc",
                            "priceDesc"
                        ],
                        "type": "string",
                        "description": "↕️ **Optional, applies to `Product Search`.** How to order search results.",
                        "default": "default"
                    },
                    "minPrice": {
                        "title": "💲 Minimum Price (for Product Search)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "💲 **Optional, applies to `Product Search`.** Only return products at or above this price (in the result currency). Leave blank for no minimum."
                    },
                    "maxPrice": {
                        "title": "💰 Maximum Price (for Product Search)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "💰 **Optional, applies to `Product Search`.** Only return products at or below this price (in the result currency). Leave blank for no maximum."
                    },
                    "itemId": {
                        "title": "📦 Product ID (for Detail / Reviews / SKU / Shipping)",
                        "type": "string",
                        "description": "📦 **Required for `Product Detail`, `Product Reviews`, `SKU Prices`, and `Shipping Estimates`.**\n\nThe numeric AliExpress product ID. You can find it:\n- In any AliExpress product URL: `https://www.aliexpress.com/item/{ID}.html` → the numeric segment\n- In the `itemId` field of any `Product Search` result row\n\n💡 **TIP:** Run a `Product Search` first, copy the `itemId` from the result rows, then run Detail / Reviews / SKU / Shipping per ID.\n\n⚠️ **Ignored** for the Store / Seller operation.",
                        "default": "3256808868342109"
                    },
                    "sellerId": {
                        "title": "🏪 Seller ID (for Store / Seller)",
                        "type": "string",
                        "description": "🏪 **Required for the `Store / Seller` operation.**\n\nThe numeric AliExpress seller ID. You can find it:\n- In the `sellerId` field of any `Product Detail` result row\n\n💡 **TIP:** Run a `Product Detail` first to get a product's `sellerId`, then run `Store / Seller` to pull the full store profile.\n\n⚠️ **Ignored** for all other operations.",
                        "default": "2678280160"
                    },
                    "region": {
                        "title": "🌐 Region",
                        "type": "string",
                        "description": "🌐 **Optional.** Two-letter destination country code used for localized pricing, currency and shipping estimates (e.g. `US`, `GB`, `DE`, `FR`, `BR`). Defaults to `US`.",
                        "default": "US"
                    },
                    "currency": {
                        "title": "💱 Currency",
                        "type": "string",
                        "description": "💱 **Optional.** Three-letter currency code for prices (e.g. `USD`, `EUR`, `GBP`). Defaults to `USD`.",
                        "default": "USD"
                    },
                    "locale": {
                        "title": "🗣️ Language Locale",
                        "type": "string",
                        "description": "🗣️ **Optional.** Language/locale for titles and text (e.g. `en_US`, `de_DE`, `fr_FR`). Defaults to `en_US`.",
                        "default": "en_US"
                    },
                    "maxPages": {
                        "title": "📄 Max pages to fetch",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "📄 **Applies to paginated operations** (Product Search, Product Reviews). Ignored for single-record operations (Detail, SKU, Shipping, Store).\n\n- **Product Search:** ~60 products per page\n- **Product Reviews:** ~20 reviews per page\n\n💡 **TIP:** Start small (1–2 pages) to preview results before scaling up.\n\n⚠️ Hard cap: 50 pages to prevent runaway runs.",
                        "default": 3
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
