# AliExpress Keyword Search Scraper: Rank, Orders & Delivery Data (`getascraper/aliexpress-keyword-catalog-intelligence`) Actor

Search AliExpress keywords in 16 ship-to markets and get ranked product rows with sale and list price, exact orders sold, rating, delivery window, ship-from country and Choice, Brand+ and sponsored badges. Filter by price, orders and delivery, and track new products and price drops between runs.

- **URL**: https://apify.com/getascraper/aliexpress-keyword-catalog-intelligence.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.25 / 1,000 product rows

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

## 🛍️ AliExpress Keyword Search Scraper: Rank, Orders & Delivery Data

<table width="100%" style="margin-bottom:0">
<tr>
<td style="padding:24px 28px;background:#FDEBE6;border:1px solid #F7C7BB;border-top:4px solid #E62E04;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Find what sells on AliExpress before you list it</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Search any keyword and get a ready catalog: prices, exact orders sold, ratings, delivery times and badges for every product. No AliExpress login needed.</span>
</td>
</tr>
</table>
<table width="100%" style="margin-top:0">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F7C7BB;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#E62E04">🔥 Exact orders sold</span><br>
<span style="font-size:12px;color:#57534E">The real order count on every product, next to the rounded label shoppers see.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F7C7BB;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#E62E04">🚚 Delivery and shipping</span><br>
<span style="font-size:12px;color:#57534E">Free shipping, ship-from country and a delivery window for your market.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F7C7BB;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#E62E04">🏷️ Price and badges</span><br>
<span style="font-size:12px;color:#57534E">Sale and list price, discount, Choice, Brand+, Local+ and sponsored flags.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F7C7BB;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#E62E04">🔔 Changes since last run</span><br>
<span style="font-size:12px;color:#57534E">New, cheaper and climbing products on every scheduled run.</span>
</td>
</tr>
</table>

Type in one or many search phrases, choose the country you ship to, and get back the AliExpress products people actually buy, with the numbers you need to judge them. Add filters for price, rating, orders and delivery time. Schedule it to see which products are new, cheaper or climbing.

### 🔍 What does this actor do?

It reads the public AliExpress search results for each keyword and turns every product card into one clean row. You get the sale price and the list price, the discount, the star rating and the exact number of orders sold. You also get the estimated delivery window, the country the product ships from and whether shipping is free.

Each row also tells you if the product is a sponsored ad, a Choice product, a Brand+ product or a Local+ product. It adds the category, the date the product was listed and how many orders it sells per day.

Besides the product rows, every run saves a short market summary for each keyword: price range, median price, total orders, the share of free shipping and Choice products, the top sellers and how many results AliExpress lists for that phrase. Results download as JSON, CSV, Excel, or XML.

### 💡 Who uses this?

- **I am a dropshipper looking for my next product.** I search ten niche phrases, keep products with over 500 orders and a 4.6 rating, and shortlist the ones that arrive in under two weeks.
- **I am an ecommerce product researcher.** I compare how many orders per day new listings reach against older ones, so I can spot a rising product before it is crowded.
- **I am a price analyst for a retailer.** I schedule one search for my category every week and get the products that just dropped in price, with the old and new price side by side.
- **I am a sourcing manager.** I need to know who ships from a local warehouse and who ships from China, and which sellers carry the Brand+ badge, before I pick suppliers to contact.

### 🚀 How to use

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#FDEBE6;border:1px solid #F7C7BB;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#E62E04;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Enter your keywords</span><br>
<span style="font-size:12px;color:#57534E">Add one or many search phrases and pick the country you sell to.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FDEBE6;border:1px solid #F7C7BB;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#E62E04;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set your filters</span><br>
<span style="font-size:12px;color:#57534E">Narrow by price, rating, orders, delivery time, badges and shipping.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FDEBE6;border:1px solid #F7C7BB;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#E62E04;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Download or schedule</span><br>
<span style="font-size:12px;color:#57534E">Get the catalog as a spreadsheet, or repeat it weekly to see what changed.</span>
</td>
</tr>
</table>

### 📥 Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `keywords` | array of strings | No | One search phrase per row. Each phrase is searched on its own and the results are combined into one catalog. Defaults to `wireless earbuds`. |
| `sortBy` | enum | No | How AliExpress orders the results: best match, most orders, price low to high, or price high to low. Rank follows this order. |
| `maxItems` | integer | No | How many matching products to save for each keyword. Defaults to 20, up to 1,000. |
| `maxPages` | integer | No | How many result pages of up to 60 products to check per keyword. Raise it when strict filters leave few matches. Outside the United States a keyword stops early after three result pages in a row without a match. Defaults to 5. |
| `shipTo` | enum | No | The destination market that sets currency, prices, delivery estimates and the language of titles. 16 markets are available. Defaults to the United States. |
| `shipFrom` | enum | No | Keep only products dispatched from this country, as shown on the listing. Defaults to any country. |
| `freeShippingOnly` | boolean | No | Return only products AliExpress marks with free shipping. |
| `localWarehouseOnly` | boolean | No | Return only Local+ products that ship from a warehouse inside the destination country. |
| `maxDeliveryDays` | integer | No | Drop products whose estimated delivery takes longer than this many days. |
| `minPrice` | number | No | Lowest sale price to keep, in the currency of the chosen market. |
| `maxPrice` | number | No | Highest sale price to keep, in the currency of the chosen market. |
| `minRating` | number | No | Keep only products with at least this star rating, from 0 to 5. |
| `minOrders` | integer | No | Keep only products with at least this many orders sold. |
| `minDiscountPercent` | integer | No | Keep only products discounted by at least this percent from the list price. |
| `choiceOnly` | boolean | No | Return only products with the AliExpress Choice badge. |
| `onSaleOnly` | boolean | No | Return only products that are part of an AliExpress sale event. |
| `brandPlusOnly` | boolean | No | Return only products with the Brand+ top-brand badge. |
| `excludeSponsored` | boolean | No | Remove paid ad placements so only organic results remain. |
| `titleIncludes` | array of strings | No | Keep a product only if its title contains at least one of these words or phrases. |
| `titleExcludes` | array of strings | No | Drop products whose title contains any of these words or phrases, for example `case` or `cover`. |
| `dedupeAcrossKeywords` | boolean | No | Return a product once when it matches several keywords, and list its rank for each keyword. On by default. |
| `includeGallery` | boolean | No | Add every extra photo shown on the result card. The main image is always included. |
| `trackChanges` | boolean | No | Compare this run with the previous run that used the same tracking name and settings. Rows get a change type, price change, rank change and orders gained. |
| `onlyChanges` | boolean | No | With change tracking on, return only products that are new or whose price changed. |
| `monitorScope` | string | No | A label for one watch. Reuse the same name on every scheduled run you want compared. Defaults to `default`. |
| `proxyConfiguration` | object | No | Connection settings. The default suits the United States market. Other markets switch to a different connection type automatically. |

### 📊 Data table

Fields that AliExpress does not show for a product are left out of the row. Nothing is filled in with a placeholder.

| Field | Type | Description |
| --- | --- | --- |
| `productId` | string | AliExpress product ID. |
| `productUrl` | string | Link to the product page. |
| `title` | string | Product title in the language of the chosen market. |
| `keyword` | string | The search phrase that found the product. With duplicates removed, the phrase where it ranks best. |
| `rank` | integer | Position among all results for the keyword, counting paid placements. |
| `organicRank` | integer | Position among organic results only. Missing on sponsored products. |
| `page` | integer | Result page the product appeared on. |
| `isSponsored` | boolean | True for a paid ad placement. |
| `shipTo` | string | Destination market the prices are shown for. |
| `salePrice` | number | Current sale price in the currency of the market. |
| `salePriceFormatted` | string | Price exactly as AliExpress shows it. |
| `originalPrice` | number | List price before the discount, when AliExpress shows one. |
| `discountPercent` | number | Discount from the list price, in percent. |
| `currency` | string | Currency code of all prices on the row. |
| `taxRate` | number | Tax rate included in the price, when one applies. |
| `promotions` | array of strings | Offer texts on the card, such as new shopper savings, coin discounts or bulk prices. |
| `lowestPriceInDays` | integer | Shown when AliExpress says the price is the lowest in 60 or 90 days. |
| `rating` | number | Average star rating. |
| `ordersSold` | integer | Exact number of orders sold. |
| `ordersText` | string | The rounded orders label shoppers see, such as `5,000+ sold`. |
| `listedAt` | string | Date the product was first listed. |
| `daysListed` | integer | Days between listing and this run. |
| `ordersPerDay` | number | Orders sold divided by days listed. A quick demand speed measure. |
| `lifetimeOrderValue` | number | Sale price multiplied by orders sold. A rough size of what the product has sold. |
| `reviewHighlight` | string | A short buyer review highlight shown on the card, when present. |
| `freeShipping` | boolean | True when the product ships free to the chosen market. |
| `shipFromCountry` | string | Country the product is dispatched from. |
| `deliveryDaysMin` | integer | Fastest estimated delivery in days. |
| `deliveryDaysMax` | integer | Slowest estimated delivery in days. |
| `deliveryDateFrom` | string | Earliest estimated delivery date. |
| `deliveryDateTo` | string | Latest estimated delivery date. |
| `isLocalPlus` | boolean | True for Local+ products shipped from a warehouse in the destination country. |
| `isChoice` | boolean | True for products with the Choice badge. |
| `isBrandPlus` | boolean | True for products with the Brand+ top-brand badge. |
| `isTopSelling` | boolean | True when AliExpress labels the product as top selling. |
| `isBestPriceInSimilar` | boolean | True when AliExpress labels it as the best price in similar deals. |
| `isBigSale` | boolean | True when the product is part of a sale event. |
| `campaign` | string | Name of the AliExpress campaign the card belongs to, when shown. |
| `categoryId` | string | AliExpress category ID of the product. |
| `categoryPath` | array of strings | Category IDs from the top level down to the product category. |
| `storeName` | string | Store name. Shown by AliExpress on some cards only, mainly sponsored ones. |
| `sellerCompany` | string | Registered seller company, when shown with the store name. |
| `specs` | array of strings | Key specifications shown on the card, one per entry. |
| `imageUrl` | string | Main product image. |
| `imageUrls` | array of strings | All gallery images. Only present when `includeGallery` is on. |
| `keywordRanks` | object | Rank for each keyword that returned the product. Only present when several keywords matched it. |
| `changeType` | string | With change tracking on: `new`, `price_drop`, `price_increase` or `unchanged`. |
| `previousSalePrice` | number | Price on the previous run. |
| `priceChange` | number | Price now minus price on the previous run. |
| `priceChangePercent` | number | Price change as a percent of the previous price. |
| `previousRank` | integer | Rank on the previous run. |
| `rankChange` | integer | Places gained since the previous run. Positive means the product climbed. |
| `previousOrdersSold` | integer | Orders sold on the previous run. |
| `ordersSinceLastRun` | integer | New orders since the previous run. |
| `firstSeenAt` | string | When your tracking first saw the product. |
| `sourceUrl` | string | AliExpress search page the row came from. |
| `scrapedAt` | string | Time the page was read. |

Every run also saves two extra records next to the dataset: a keyword market summary with one entry per keyword, and a short run summary.

### 📤 Sample output

This row comes from a real run for `wireless earbuds`, shipping to the United States.

```json
{
    "productId": "3256809783853553",
    "productUrl": "https://www.aliexpress.com/item/3256809783853553.html",
    "title": "Baseus Eli 2i Fit Open-Ear Earphones True Wireless Bluetooth 6.0 Ear Hooks Headphones IPX5 Waterproof Sports Earbuds Bass Boost",
    "keyword": "wireless earbuds",
    "rank": 8,
    "page": 1,
    "isSponsored": true,
    "shipTo": "US",
    "salePrice": 28.59,
    "salePriceFormatted": "US $28.59",
    "originalPrice": 59.12,
    "discountPercent": 51,
    "currency": "USD",
    "promotions": [
        "Save $30.53"
    ],
    "rating": 4.7,
    "ordersSold": 7518,
    "ordersText": "5,000+ sold",
    "listedAt": "2025-09-16",
    "daysListed": 390,
    "ordersPerDay": 19.28,
    "lifetimeOrderValue": 214939.62,
    "shipFromCountry": "CN",
    "deliveryDaysMin": 6,
    "deliveryDaysMax": 12,
    "deliveryDateFrom": "2026-10-17",
    "deliveryDateTo": "2026-10-23",
    "isChoice": true,
    "isTopSelling": true,
    "isBigSale": true,
    "campaign": "Dollar Express",
    "categoryId": "63705",
    "categoryPath": [
        "44",
        "100000306",
        "63705"
    ],
    "storeName": "BASEUS Co.,Ltd. Store",
    "sellerCompany": "深圳市正百川贸易有限公司",
    "imageUrl": "https://ae-pic-a1.aliexpress-media.com/kf/S543f7b76a31e4c57b7b4c42b3296b98aC.png",
    "sourceUrl": "https://www.aliexpress.com/w/wholesale-wireless-earbuds.html?SearchText=wireless+earbuds",
    "scrapedAt": "2026-10-11T11:28:26.182Z"
}
```

### 💰 Pricing

Pricing is pay per result. You are charged for each product row saved to your dataset, and every field on the row is included in that price. Runs that find nothing cost nothing. There are no monthly subscriptions or minimum commitments, and the maximum charge you set for a run is always respected: the actor stops collecting once that limit is reached.

### ⭐ Enjoying AliExpress Keyword Search Scraper?

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:20px 24px 14px;background:#FDEBE6;border:1px solid #F7C7BB;border-left:5px solid #E62E04;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">One search just showed you which AliExpress products really sell, not just which ones look cheap.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other dropshippers and product researchers find this actor. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#E62E04;border:1px solid #F7C7BB;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/aliexpress-keyword-catalog-intelligence/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### ✨ Tips

- **Start with the orders sort.** Set `sortBy` to most orders and `minRating` to 4.5 to see proven sellers first.
- **Use strict filters with more pages.** Filters like `minOrders` are checked on each result page. If a run returns fewer products than you asked for, raise `maxPages` so more pages are checked.
- **Watch a niche every week.** Turn on `trackChanges`, keep the same `monitorScope` and schedule the run. Add `onlyChanges` to get just the new and repriced products.
- **Compare markets.** Run the same keywords with a different `shipTo` country. Prices, delivery times and the products themselves change by market.
- **Read prices as a snapshot.** AliExpress shows its current public price at the moment of the run, and offers such as new shopper deals can move it between runs.

### ❓ FAQ

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

No. The actor reads the same public search pages any visitor can open. It never asks for a login, token or cookie.

##### Which countries and currencies are supported?

Sixteen markets: the United States, Canada, the United Kingdom, Germany, France, Spain, Italy, the Netherlands, Poland, Sweden, Australia, Brazil, Saudi Arabia, Israel, Japan and South Korea. Prices come back in the local currency, and titles and order labels follow the market language.

##### How accurate are the order counts and how fresh is the data?

`ordersSold` is the exact order count AliExpress carries for each listing, while `ordersText` keeps the rounded label shoppers see. Every run reads AliExpress live, so results match what the site shows at that moment.

##### Does it return variants, reviews or seller ratings?

No. It returns what the search results show: price, orders, rating, delivery, badges, category and specs. Variants, review text and seller scores live on the product page, which this actor does not open.

##### Why did a search outside the United States stop before the last page?

When your filters are so strict that three result pages in a row have no matching product, the actor stops searching that keyword in markets outside the United States and moves on. The run summary lists these keywords under `stoppedEarlyNoMatches`. If you expected more results, loosen a filter such as minimum orders or minimum rating. Searches for the United States market always check every page you allow.

##### Is this affiliated with AliExpress?

No. This is an independent tool and is not affiliated with, endorsed by, or sponsored by AliExpress or Alibaba Group. All trademarks mentioned belong to their respective owners. The actor reads only public search pages.

### 🔗 Other actors

- [Wildberries Product Catalog Scraper: Поиск товаров Вайлдберриз](https://apify.com/getascraper/wildberries-scraper) ↗ - collects product catalogs, prices and ratings from the Wildberries marketplace.
- [Mercari US Scraper: Active & Sold Listings, Price & Seller Data](https://apify.com/getascraper/mercari-us-scraper) ↗ - gathers active and sold Mercari listings with prices and seller data.
- [Gmarket Korea Scraper: Prices in KRW, USD & BigSmile Deals](https://apify.com/getascraper/gmarket-scraper) ↗ - tracks Gmarket Korea prices and deals.
- [Bonanza Marketplace Scraper: Listings, Prices & Seller Ratings](https://apify.com/getascraper/bonanza-marketplace-scraper) ↗ - collects Bonanza listings, prices and seller ratings.
- [Chinagoods Scraper 中国小商品城: Booth Monitor](https://apify.com/getascraper/chinagoods-booth-monitor) ↗ - monitors Chinagoods wholesale market booths.

# Changelog

This Actor's version history is a separate document: https://apify.com/getascraper/aliexpress-keyword-catalog-intelligence/changelog.md

# Actor input Schema

## `keywords` (type: `array`):

One AliExpress search phrase per row. Each phrase is searched on its own and the results are combined into one catalog.

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

Order of the AliExpress results. Rank in the output follows this order.

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

How many matching products to save for each keyword. Scanning stops as soon as this many matches are found.

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

Each AliExpress results page holds up to 60 products. Raise this when you use strict filters so more pages are checked for matches.

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

The destination market. It decides the currency, prices, delivery estimates and language of titles. Markets other than the United States use residential connections.

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

Keep only products dispatched from this country, as shown on the listing. Most products ship from China or from a local warehouse in the destination country.

## `freeShippingOnly` (type: `boolean`):

Return only products that AliExpress marks with free shipping.

## `localWarehouseOnly` (type: `boolean`):

Return only products from the Local+ program, which ship from a warehouse inside the destination country.

## `maxDeliveryDays` (type: `integer`):

Drop products whose estimated delivery takes longer than this many days. Leave empty for no limit.

## `minPrice` (type: `number`):

Lowest sale price to keep, in the currency of the chosen market. Leave empty for no lower limit.

## `maxPrice` (type: `number`):

Highest sale price to keep, in the currency of the chosen market. Leave empty for no upper limit.

## `minRating` (type: `number`):

Keep only products with at least this star rating (0 to 5). Products without a rating are dropped when this is set.

## `minOrders` (type: `integer`):

Keep only products with at least this many orders sold. This is a strong signal of proven demand.

## `minDiscountPercent` (type: `integer`):

Keep only products discounted by at least this percent from their list price.

## `choiceOnly` (type: `boolean`):

Return only products with the Choice badge.

## `onSaleOnly` (type: `boolean`):

Return only products that are part of an AliExpress sale event.

## `brandPlusOnly` (type: `boolean`):

Return only products with the Brand+ top-brand badge.

## `excludeSponsored` (type: `boolean`):

Remove paid ad placements so only organic results remain.

## `titleIncludes` (type: `array`):

Keep a product only if its title contains at least one of these words or phrases. Leave empty to keep all.

## `titleExcludes` (type: `array`):

Drop products whose title contains any of these words or phrases, for example case or cover.

## `dedupeAcrossKeywords` (type: `boolean`):

When the same product matches several keywords, return it once and list its rank for each keyword.

## `includeGallery` (type: `boolean`):

Add the extra product photos shown on each result card. The main image is always included.

## `trackChanges` (type: `boolean`):

Compare this run with the previous run of the same scope. Each row gets a change type, price change, rank change and orders gained.

## `onlyChanges` (type: `boolean`):

With change tracking on, keep only products that are new or whose price changed. Everything else is skipped.

## `monitorScope` (type: `string`):

A label for this watch. Use the same name on every scheduled run you want compared, and a different name for a separate watch.

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

Connection used to reach AliExpress. The default works for the United States market. Other markets switch to residential connections automatically.

## Actor input object example

```json
{
  "keywords": [
    "wireless earbuds"
  ],
  "sortBy": "default",
  "maxItems": 20,
  "maxPages": 5,
  "shipTo": "US",
  "shipFrom": "any",
  "freeShippingOnly": false,
  "localWarehouseOnly": false,
  "choiceOnly": false,
  "onSaleOnly": false,
  "brandPlusOnly": false,
  "excludeSponsored": false,
  "titleIncludes": [],
  "titleExcludes": [],
  "dedupeAcrossKeywords": true,
  "includeGallery": false,
  "trackChanges": false,
  "onlyChanges": false,
  "monitorScope": "default",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "BUYPROXIES94952"
    ]
  }
}
```

# Actor output Schema

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

No description

## `keywordSummary` (type: `string`):

No description

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

No description

# 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 = {
    "keywords": [
        "wireless earbuds"
    ],
    "sortBy": "default",
    "maxItems": 20,
    "maxPages": 5,
    "shipTo": "US",
    "shipFrom": "any",
    "freeShippingOnly": false,
    "localWarehouseOnly": false,
    "choiceOnly": false,
    "onSaleOnly": false,
    "brandPlusOnly": false,
    "excludeSponsored": false,
    "titleIncludes": [],
    "titleExcludes": [],
    "dedupeAcrossKeywords": true,
    "includeGallery": false,
    "trackChanges": false,
    "onlyChanges": false,
    "monitorScope": "default",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "BUYPROXIES94952"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/aliexpress-keyword-catalog-intelligence").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 = {
    "keywords": ["wireless earbuds"],
    "sortBy": "default",
    "maxItems": 20,
    "maxPages": 5,
    "shipTo": "US",
    "shipFrom": "any",
    "freeShippingOnly": False,
    "localWarehouseOnly": False,
    "choiceOnly": False,
    "onSaleOnly": False,
    "brandPlusOnly": False,
    "excludeSponsored": False,
    "titleIncludes": [],
    "titleExcludes": [],
    "dedupeAcrossKeywords": True,
    "includeGallery": False,
    "trackChanges": False,
    "onlyChanges": False,
    "monitorScope": "default",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["BUYPROXIES94952"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/aliexpress-keyword-catalog-intelligence").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 '{
  "keywords": [
    "wireless earbuds"
  ],
  "sortBy": "default",
  "maxItems": 20,
  "maxPages": 5,
  "shipTo": "US",
  "shipFrom": "any",
  "freeShippingOnly": false,
  "localWarehouseOnly": false,
  "choiceOnly": false,
  "onSaleOnly": false,
  "brandPlusOnly": false,
  "excludeSponsored": false,
  "titleIncludes": [],
  "titleExcludes": [],
  "dedupeAcrossKeywords": true,
  "includeGallery": false,
  "trackChanges": false,
  "onlyChanges": false,
  "monitorScope": "default",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "BUYPROXIES94952"
    ]
  }
}' |
apify call getascraper/aliexpress-keyword-catalog-intelligence --silent --output-dataset

```

## MCP server setup

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

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/ItM5fqJI3QLXUzInF/builds/eRGPWqTgpqDtERKKD/openapi.json
