# AliExpress Scraper: Products, Prices & Reviews, No Login (`cliqtomedia/aliexpress-scraper`) Actor

Scrape AliExpress search results and product reviews: price, original price, discount, currency, rating, orders, delivery note and images, plus review text, stars, country and date. Pick ship-to country and currency. No login.

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

## Pricing

from $1.02 / 1,000 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

Type keywords or paste AliExpress product links, and get AliExpress search results or buyer reviews as one row each. Products come with price as a number, original price, discount, currency, rating, orders as a number, delivery note and images; reviews have stars, text, English translation, country, date and variant. No AliExpress login, no cookies, no API key. The prefilled search (10 products) costs about $0.014.

Use it for price research, dropshipping product research and review analysis. The prefilled search `usb c cable` with 10 products finishes in about 4 seconds.

![AliExpress Scraper: keywords or product links in, AliExpress products with price, original price, discount and orders, and buyer reviews with translation out, one row each](https://api.apify.com/v2/key-value-stores/cEdHL4RxkxC5pDwsf/records/aliexpress-readme-banner-20261015.png)

### Table of contents

- [What it does](#what-it-does)
- [Quick start](#quick-start)
- [Use cases](#use-cases)
- [Input](#input)
- [Output](#output)
- [Pricing and limits](#pricing-and-limits)
- [API, export and integrations](#api-export-and-integrations)
- [Troubleshooting](#troubleshooting)
- [FAQ](#faq)
- [Related Actors](#related-actors)
- [Support](#support)

### What it does

The Actor reads public pages of [AliExpress](https://www.aliexpress.com/) in one of two modes:

- **Search** — for each keyword, it reads the AliExpress search results in page order (60 products per page) for the ship-to country and currency you pick. One row per product: price, original price, discount, currency, new-shopper price flag, rating, orders, delivery note, images, badges, ad flag and the position in the results.
- **Reviews** — for each product link or ID, it reads the buyer reviews. One row per review: stars, text, English translation by AliExpress, reviewer country, date, variant, shipping method, photos and helpful votes, plus the product rating and total number of reviews.

Every row has `status`, `source`, a link and `fetchedAt`, so you can filter, sort and join rows in the Dataset, a spreadsheet or by API.

#### Good fit

- Find products by keyword and compare price, discount and orders across sellers.
- Track how prices and discounts change for the same keywords over time (run on a schedule).
- Read what buyers say about a product: stars, text in English, countries and variants.

#### Not a fit / limits

- No product page details: no store name, no exact shipping cost by method, no variants (SKU) list, no stock. Search cards give a delivery note only (for example `Free shipping` or `Delivery: Oct 20 - 25`).
- Prices are the ones AliExpress shows to a new visitor. Often this is a new-shopper offer; the row marks it with `newShopperPrice: true`. Regular buyers may pay more.
- aliexpress.ru, short share links (`a.aliexpress.com`) and other AliExpress apps are not supported.
- Up to 1,000 products per keyword and 1,000 reviews per product.

### Quick start

1. Open the **Input** tab.
2. Keep **Mode** = `Search` and the prefilled keyword `usb c cable` in **Search queries**, or type your own.
3. Keep **Ship to** = `US` and **Currency** = `USD`, or pick your country and currency.
4. Keep **Max products per query** = 10 (prefill) or raise it up to 1,000.
5. Click **Start**.
6. Open the **Output** tab, view **Products**, and check `price`, `originalPrice` and `ordersCount`.

Expected result: 10 rows with status `complete`, one per product, in AliExpress search order.

For reviews, set **Mode** = `Reviews`, add product links or IDs to **Product URLs**, and view **Reviews** in the Output tab.

### Use cases

| Buyer job | Input path | Output entity | Key fields | Next integration |
| --- | --- | --- | --- | --- |
| Product research for dropshipping | `searchQueries` | product | `price`, `ordersCount`, `rating`, `discountPercent` | Google Sheets, CSV |
| Price and discount tracking | `searchQueries` + schedule | product | `price`, `originalPrice`, `newShopperPrice`, `fetchedAt` | Dataset API, webhooks |
| Review analysis | `productUrls` (mode `reviews`) | review | `rating`, `translatedText`, `country`, `variant` | LLM or sentiment tools |
| Prices for a local market | `shipTo` + `currency` | product | `price`, `currency`, `shipTo` | spreadsheet |

### Input

#### Input fields

| Field | Plain name | Type | Required | Default / prefill | Allowed values | Effect | Example | Recommendation |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| `mode` | Mode | string | no | default `search` | `search`, `reviews` | What to collect | `"reviews"` | If you send only `productUrls` without `mode`, the Actor uses `reviews` |
| `searchQueries` | Search queries | array of strings | yes in search | prefill `["usb c cable"]` | 1–20 queries, each up to 200 characters | One search per query | `["yoga mat", "phone case iphone 16"]` | Repeated queries are read once |
| `productUrls` | Product URLs | array of strings | yes in reviews | — | 1–200 aliexpress.com or aliexpress.us links, or numeric IDs | Products to read reviews for | `["1005004047407131"]` | aliexpress.us IDs are converted; bad entries are skipped and listed in `RUN_SUMMARY` |
| `shipTo` | Ship to | string | no | default and prefill `US` | two-letter country code | Prices, discounts and delivery notes for this country | `"DE"` | Use the country of your buyers |
| `currency` | Currency | string | no | default `USD` | 45 currencies (USD, EUR, GBP, BRL, PLN, JPY…) | Currency of `price` and `originalPrice` | `"EUR"` | Match it with `shipTo` |
| `maxItems` | Max products per query | integer | no | default 50, prefill 10 | 1–1000 | Most products per search query | `200` | 60 products = one results page |
| `maxReviews` | Max reviews per product | integer | no | default 20 | 1–1000 | Most reviews per product | `100` | Cost grows with the number of reviews |
| `proxyConfiguration` | Proxy | object | no | none | Apify Proxy (automatic or datacenter) | Uses this proxy from the first request | `{"useApifyProxy": true}` | Not needed: the Actor switches to Apify Proxy itself if AliExpress blocks it. Residential proxy is rejected |

Empty or wrong input stops the run with status `invalid_input` and a message that names the field. Fields of the other mode are ignored and noted in `RUN_SUMMARY.warnings`.

#### Interacting settings

| When | Input A | Input B | Effective behavior | Example | Cost/result effect |
| --- | --- | --- | --- | --- | --- |
| No mode, only links | `mode` missing | `productUrls` | Reviews mode | `{"productUrls": ["1005004047407131"]}` | Charged per review |
| Search mode with links | `mode` = `search` | `productUrls` | Links are ignored, search runs (if there are only links, reviews mode is used) | — | None |
| Country and currency | `shipTo` | `currency` | Prices for `shipTo`, shown in `currency` | `DE` + `EUR` | None |
| Some links are wrong | `productUrls` | — | Good links are read; wrong ones go to `RUN_SUMMARY.invalidInputs` | `"not a url"` | Wrong links are free |

#### Input examples

##### Search products by keyword

```json
{
  "mode": "search",
  "searchQueries": ["usb c cable"],
  "maxItems": 10,
  "shipTo": "US",
  "currency": "USD"
}
```

Expected behavior: reads the first results page for `usb c cable`.
Expected output: 10 product rows with `price`, `originalPrice`, `discountPercent`, `ordersCount`.
Limit or cost note: about 4 seconds, $0.0135 on the Free plan.

##### Reviews of a product in Germany

```json
{
  "mode": "reviews",
  "productUrls": ["https://www.aliexpress.com/item/1005004047407131.html"],
  "maxReviews": 25,
  "shipTo": "DE"
}
```

Expected behavior: reads review pages (20 reviews per page) until 25 reviews or the end.
Expected output: review rows with `rating`, `text`, `translatedText`, `country`, `date`, `variant`.
Limit or cost note: $0.0015 + $0.0005 per review on the Free plan.

### Output

The Dataset has two views: **Products** (search mode) and **Reviews** (reviews mode). The run summary is in the Key-value store record `RUN_SUMMARY`.

#### Output fields

Common fields:

| Field | Meaning | Type | Can be empty? | Example / enum | Source / notes |
| --- | --- | --- | --- | --- | --- |
| `status` | Row status | string | no | `complete`, `partial`, `no_reviews` | `partial` = price or title missing, see `error` |
| `productId` | AliExpress product ID | string | rarely | `"1005013255649235"` | Global numbering; aliexpress.us IDs converted |
| `error` | What is missing and why | string | yes | `null` | Empty on `complete` rows |
| `source` | Data source | string | no | `"aliexpress"` | Always the same |
| `fetchedAt` | When the row was read | string | no | `"2026-10-15T06:31:22.607Z"` | ISO 8601, UTC |

Product fields (search mode):

| Field | Meaning | Type | Can be empty? | Example / enum | Source / notes |
| --- | --- | --- | --- | --- | --- |
| `title` | Product title | string | rarely | `"240W 10A Cables Super Fast Charging…"` | As on the card |
| `url` | Product page | string | no | `"https://www.aliexpress.com/item/1005013255649235.html"` | www.aliexpress.com |
| `price` | Current price, lowest variant | number | rarely | `3.49` | For `shipTo`, in `currency` |
| `originalPrice` | Price before discount | number | yes | `6.96` | From the card, or from the card's price data when it gives the same discount; `null` when there is none |
| `discountPercent` | Discount in percent | number | yes | `49` | As AliExpress shows it |
| `currency` | Currency code | string | rarely | `"USD"` | |
| `priceText` | Price as shown | string | yes | `"US $3.49"` | `null` on "FREE with any purchase" cards |
| `newShopperPrice` | Price is a new-shopper offer | boolean | yes | `true` | Regular buyers may pay more |
| `rating` | Average rating, 0–5 | number | yes | `4.9` | `null` = no rating on the card (not 0) |
| `ordersCount` | Units sold as a number | number | yes | `5000` | `"5,000+ sold"` → 5000 |
| `ordersText` | Units sold as shown | string | yes | `"5,000+ sold"` | |
| `shippingText` | Delivery note | string | yes | `"Delivery: Oct 20 - 25"` | Not an exact shipping cost |
| `imageUrl`, `images` | Main image, all card images | string, array | yes / empty | image URLs | |
| `badges` | Tags on the card | array | yes | `["Extra 2% off with coins"]` | |
| `sponsored` | Ad placement | boolean | yes | `false` | |
| `searchQuery`, `searchPage`, `searchPosition` | Query, results page, position | string, number, number | no | `"usb c cable"`, `1`, `1` | Position counts ads too |
| `shipTo` | Ship-to country used | string | no | `"US"` | |

Review fields (reviews mode):

| Field | Meaning | Type | Can be empty? | Example / enum | Source / notes |
| --- | --- | --- | --- | --- | --- |
| `reviewId` | Review ID | string | on `no_reviews` | `"30100374977938306"` | |
| `rating` | Stars, 1–5 | number | on `no_reviews` | `5` | |
| `text` | Review text, original language | string | yes | `"carga rapida, de color naranja…"` | `null` = stars only |
| `translatedText` | English translation by AliExpress | string | yes | `"Fast charging, deep orange color…"` | |
| `country` | Reviewer country | string | yes | `"ES"` | |
| `date`, `dateText` | Review date | string | yes | `"2026-02-05"`, `"05 Feb 2026"` | |
| `reviewerName` | Masked nickname | string | yes | `"J***e"` | `null` for anonymous reviews; no avatars |
| `variant` | Variant bought | string | yes | `"Color:Orange Length:3m"` | |
| `shippingMethod` | Shipping method used | string | yes | `"AliExpress Saver Shipping"` | |
| `images` | Review photos | array | empty | image URLs | |
| `helpfulCount` | Helpful votes | number | yes | `0` | |
| `additionalText` | Follow-up review | string | yes | `null` | |
| `productUrl`, `productRating`, `productReviewsCount` | Product link, rating, total reviews | string, number, number | rating yes | `4.5`, `80` | `productReviewsCount` = 0 on `no_reviews` |
| `input` | Your input entry | string | no | `"1005004047407131"` | |

#### Output entities and surfaces

| Situation | Dataset/API/KVS/live view | Result shape | User action |
| --- | --- | --- | --- |
| Normal item | Dataset, views Products / Reviews | one row per product or review, `status: complete` | Open, export or use the fields |
| Product without reviews | Dataset | one row `status: no_reviews`, `productReviewsCount: 0` | Check the product ID |
| Keyword without matches | `RUN_SUMMARY.queriesWithoutResults` | no rows for that query, run `complete` | Try other words |
| Wrong link or ID | `RUN_SUMMARY.invalidInputs` | input and reason, no row | Fix the link |
| Partial row | Dataset | `status: partial`, `error` says what is missing | Use other fields |
| AliExpress blocks or fails | Run `FAILED`, `RUN_SUMMARY.stopReason: SOURCE_ERROR` | rows saved before the failure stay | Run again later |

#### Output example

Search mode, from the prefilled input (one row, `images` trimmed):

```json
{
  "status": "complete",
  "productId": "1005013255649235",
  "title": "240W 10A Cables Super Fast Charging Type C To Type C Silicone Cable For Samsung iPhone 17Pro Xiaomi 17 Quick Charging Cable New",
  "url": "https://www.aliexpress.com/item/1005013255649235.html",
  "price": 3.49,
  "originalPrice": 6.96,
  "discountPercent": 49,
  "currency": "USD",
  "priceText": "US $3.49",
  "newShopperPrice": true,
  "rating": 4.9,
  "ordersCount": 5000,
  "ordersText": "5,000+ sold",
  "shippingText": "Delivery: Oct 20 - 25",
  "imageUrl": "https://ae-pic-a1.aliexpress-media.com/kf/S17ff1b936cd2428dab3deb72259dbc02M.png",
  "images": ["https://ae-pic-a1.aliexpress-media.com/kf/S17ff1b936cd2428dab3deb72259dbc02M.png"],
  "badges": ["Delivery: Oct 20 - 25", "Extra 2% off with coins"],
  "sponsored": false,
  "searchQuery": "usb c cable",
  "searchPage": 1,
  "searchPosition": 1,
  "shipTo": "US",
  "error": null,
  "source": "aliexpress",
  "fetchedAt": "2026-10-15T06:31:22.607Z"
}
```

Reviews mode (one row, `shipTo: DE`):

```json
{
  "status": "complete",
  "reviewId": "30100374977938306",
  "rating": 5,
  "text": "carga rapida, de color naranja intenso y 3 metro de largo, muy contenta con la compra. muyyyyyyy bonito el color",
  "translatedText": "Fast charging, deep orange color and 3 meters long, very happy with the purchase. The color is veryyyyyyy beautiful.",
  "country": "ES",
  "date": "2026-02-05",
  "dateText": "05 Feb 2026",
  "reviewerName": null,
  "variant": "Color:Orange Length:3m",
  "shippingMethod": "AliExpress Saver Shipping",
  "images": ["https://ae-pic-a1.aliexpress-media.com/kf/A88fc48570d4945c68897097c903b64c56.jpg"],
  "helpfulCount": 0,
  "additionalText": null,
  "productId": "1005004047407131",
  "productUrl": "https://www.aliexpress.com/item/1005004047407131.html",
  "productRating": 4.5,
  "productReviewsCount": 80,
  "input": "1005004047407131",
  "error": null,
  "source": "aliexpress",
  "fetchedAt": "2026-10-15T06:29:35.570Z"
}
```

`null` means AliExpress did not show this value; it is not 0. A rating of `null` means "no rating yet", not "0 stars".

### Pricing and limits

#### Pricing unit

Pay per event. You pay for:

- **Actor start** — $0.0015 per run (Apify counts one start per GB of memory, at least one; the default 512 MB is one);
- **search-result** — each saved product row;
- **review** — each saved review row, and one `no_reviews` row for a product that has no reviews (a definite answer).

| Event | Free | Bronze | Silver | Gold |
| --- | ---: | ---: | ---: | ---: |
| Actor start | $0.0015 | $0.0015 | $0.0015 | $0.0015 |
| search-result | $0.0012 | $0.00114 | $0.00108 | $0.00102 |
| review | $0.0005 | $0.000475 | $0.00045 | $0.000425 |

Platform usage (compute, proxy) is included. A keyword with no matches, wrong links and failed requests are not charged; you pay only the start fee for such a run. If a run fails, you pay only for the rows it saved. The run stops when it reaches your maximum charge and marks the summary `CHARGE_LIMIT`.

#### Cost examples (Free plan)

| Scenario | Input scope | Rows | Charge | Stop/cap behavior |
| --- | --- | ---: | ---: | --- |
| Prefill | 1 keyword, 10 products | 10 | $0.0135 | about 4 s |
| Normal search | 3 keywords × 50 products | 150 | $0.1815 | |
| Large search | 1 keyword × 1000 products | 1000 | $1.2015 | about 50 s |
| Reviews | 2 products × 100 reviews | 200 | $0.1015 | fewer if a product has fewer reviews |
| Nothing found | 1 keyword with no products | 0 | $0.0015 | start fee only |

#### Limits

- Up to 20 keywords per run, 1,000 products per keyword; up to 200 products and 1,000 reviews per product in reviews mode.
- Measured: 1,000 products in 47 seconds; 6 keywords × 1,000 products in about 22 minutes (with proxy after a block); 3 × 1,000 reviews in under 2 minutes.
- Default run timeout is 1 hour. The Actor stops on its own before the timeout and keeps saved rows (`stopReason: TIMEOUT`).

### API, export and integrations

- **API:** start the Actor with the [Apify API](https://docs.apify.com/api/v2) and read the Dataset items as JSON, CSV or Excel.
- **Export:** the Output tab exports JSON, CSV, Excel, XML and RSS.
- **Scheduling:** run the same keywords daily with [Apify Schedules](https://docs.apify.com/platform/schedules) and compare `price` by `productId` and `fetchedAt`.
- **Webhooks / no-code:** send results to Google Sheets, Make or Zapier through [Apify integrations](https://docs.apify.com/platform/integrations).

#### Use with AI agents (MCP)

- MCP server with only this Actor: `https://mcp.apify.com?tools=cliqtomedia/aliexpress-scraper`
- Smallest input:

```json
{ "searchQueries": ["usb c cable"], "maxItems": 10 }
```

- Key output fields: `title`, `price`, `originalPrice`, `currency`, `ordersCount`, `rating`, `url`; for reviews `rating`, `translatedText`, `country`.
- 10 products take about 4 seconds and cost $0.0135. Keep `maxItems` and `maxReviews` small for quick answers.

### Troubleshooting

#### Rows have `newShopperPrice: true`

Symptom: the price looks lower than on your account.
Likely reason: AliExpress shows new-shopper offers to visitors who are not logged in.
Check: the `newShopperPrice` field.
Action: filter on `newShopperPrice: false` if you need regular prices.

#### Fewer products than `maxItems`

Symptom: a keyword returns fewer rows.
Likely reason: AliExpress has fewer results, or it repeats the same products on later pages (the Actor skips repeats).
Check: `RUN_SUMMARY.counts.duplicatesSkipped` and the log.
Action: use broader keywords.

#### A product link was skipped

Symptom: no rows for a link.
Likely reason: the link is aliexpress.ru, a short share link or not a product page.
Check: `RUN_SUMMARY.invalidInputs`.
Action: open the link in a browser and copy the `www.aliexpress.com/item/<ID>.html` address or the numeric ID.

#### The run failed with `SOURCE_ERROR`

Symptom: run status `FAILED`, summary `stopReason: SOURCE_ERROR`.
Likely reason: AliExpress blocked the requests or did not answer after several tries.
Check: rows saved before the failure are in the Dataset.
Action: run again later. This is a failure, not an empty result.

#### Prices differ from my browser

Likely reason: your browser uses another country, currency, language or a logged-in account. Set `shipTo` and `currency` to the same values.

### FAQ

#### Do I need an AliExpress account, cookies or API key?

No. The Actor reads public pages without a login.

#### Can I get the store name, shipping cost or variants?

Not in this Actor. Search cards have no store name or exact shipping cost; you get the delivery note `shippingText`. Reviews show the variant each buyer bought.

#### What does a `null` value mean?

AliExpress did not show this value for this product or review. It is not 0. For example, `rating: null` means the product has no rating yet.

#### Are the results complete and fresh?

The rows show what AliExpress shows at `fetchedAt`. AliExpress changes the order, prices and offers often and may show different results to different visitors. The Actor does not promise every product for a keyword.

### Related Actors

- [Google Autocomplete Scraper](https://apify.com/cliqtomedia/google-autocomplete-scraper) — find product keywords to use as `searchQueries`.
- [Historical FX Rates Converter](https://apify.com/cliqtomedia/historical-fx-rates-converter) — convert prices to one currency for a given date.
- [Website JSON-LD Structured Data Scraper](https://apify.com/cliqtomedia/website-jsonld-structured-data-scraper) — read product prices from other online stores.

### Support

For bugs, questions or feature requests, open the **Issues** tab of this Actor. Add the run ID, your input (keywords can be shortened) and the `error` or `RUN_SUMMARY` message. Never send tokens, cookies or passwords.

# Changelog

This Actor's version history is a separate document: https://apify.com/cliqtomedia/aliexpress-scraper/changelog.md

# Actor input Schema

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

Search: product cards from AliExpress search results. Reviews: buyer reviews of the products below.

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

Keywords as you would type them on AliExpress, e.g. "usb c cable" or "phone case iphone 16". Up to 20 queries. Used in Search mode.

## `productUrls` (type: `array`):

AliExpress product pages such as https://www.aliexpress.com/item/1005006727707575.html (aliexpress.com and aliexpress.us links work) or bare numeric product IDs. Up to 200. Short share links (a.aliexpress.com) and aliexpress.ru are not supported. Used in Reviews mode.

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

Two-letter country code AliExpress ships to, e.g. US, GB, DE, FR, BR. Prices, discounts and delivery notes in Search mode depend on it.

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

Currency for prices.

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

Search mode: most products per search query (1–1000; AliExpress shows 60 per results page). Default 50.

## `maxReviews` (type: `integer`):

Reviews mode: most reviews per product (1–1000), in AliExpress's default order.

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

Not needed in most cases: the Actor switches to Apify Proxy on its own if AliExpress blocks direct requests. Residential proxy is not supported.

## Actor input object example

```json
{
  "mode": "search",
  "searchQueries": [
    "usb c cable"
  ],
  "shipTo": "US",
  "currency": "USD",
  "maxItems": 10,
  "maxReviews": 20
}
```

# Actor output Schema

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

Search results: price, discount, rating, orders, delivery note, images.

## `reviews` (type: `string`):

Reviews mode: one row per review.

## `runSummary` (type: `string`):

Status, stop reason, counts and queries without results.

# 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",
    "searchQueries": [
        "usb c cable"
    ],
    "shipTo": "US",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("cliqtomedia/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",
    "searchQueries": ["usb c cable"],
    "shipTo": "US",
    "maxItems": 10,
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "search",
  "searchQueries": [
    "usb c cable"
  ],
  "shipTo": "US",
  "maxItems": 10
}' |
apify call cliqtomedia/aliexpress-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,cliqtomedia/aliexpress-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/PXfL43vBzOu2FxFf0/builds/ebdcY26XQenbHYM8u/openapi.json
