# AliExpress Category Rank Tracker: Bestseller Movers & Newcomers (`getascraper/aliexpress-category-rank-tracker`) Actor

Track AliExpress category bestsellers on a schedule and see what changed since the last run: rank change, new entrants, dropped products, price changes and orders gained per day. Up to 50 categories, 600 deep, with filters. Sponsored cards stay out of the rank. No login. Export JSON, CSV, Excel.

- **URL**: https://apify.com/getascraper/aliexpress-category-rank-tracker.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 1 total users, 0 monthly users, 93.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.63 / 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 Category Rank Tracker: Bestseller Movers & Newcomers

<table width="100%" style="margin-bottom:0">
<tr>
<td style="padding:24px 28px;background:#FEF0EC;border:1px solid #F8C9BC;border-top:4px solid #E62E04;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">See which AliExpress products are climbing, new or gone</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Rank the top products in any AliExpress category, then get rank changes, new entrants, dropped products, price changes and orders gained on every scheduled run. No 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 #F8C9BC;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#B82403">📈 Rank history built in</span><br>
<span style="font-size:12px;color:#57534E">Each run is compared with the last one, so climbers, fallers and new entrants appear on their own.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F8C9BC;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#B82403">🔥 Real order counts</span><br>
<span style="font-size:12px;color:#57534E">Exact orders, not just "10,000+ sold", plus orders gained per day between runs.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F8C9BC;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#B82403">🎯 Honest rankings</span><br>
<span style="font-size:12px;color:#57534E">Sponsored cards are marked and never take a rank, so paid placements cannot skew your list.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F8C9BC;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#B82403">🎛️ Filters for sellers</span><br>
<span style="font-size:12px;color:#57534E">Price, rating, orders, Choice, ship-from country, delivery time and new listings.</span>
</td>
</tr>
</table>

Point this tracker at any AliExpress category or search results page. It ranks the top products, then remembers the ranking so the next run shows who moved. Results download as JSON, CSV, Excel or XML.

### 🔍 What does AliExpress Category Rank Tracker do?

AliExpress shows a long list of products for every category, but it never tells you what changed since yesterday. This Actor does. Give it one or more category links, pick how to rank (most orders, best match, price, rating or newest), and choose how deep to go, up to 600 products per category.

Every row carries the price, discount, rating, exact order count, where the product ships from, delivery estimate, listing date and badges. From the second run on, each row also shows its previous rank, how many places it moved, how long it has been in the top list and what happened to its price and orders. Products that dropped out of the list get their own row.

A run summary lists the biggest climbers, fallers, order gainers and price drops for each category, so you can read the story in seconds.

### 💡 Who uses this?

- **I am a dropshipper looking for winners.** I watch the top 100 of my niche every week and catch new products that already sell before everyone else lists them.
- **I am an AliExpress seller.** I see where my products and my rivals sit in a category, and I notice price cuts the day they happen.
- **I am an e-commerce analyst.** I need weekly category movers for a report: climbers, fallers and orders gained, in a spreadsheet.
- **I run a sourcing agency.** I compare delivery times and ship-from countries of the top sellers in a category for my clients.

### 🚀 How to use

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#FEF0EC;border:1px solid #F8C9BC;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">Paste category links</span><br>
<span style="font-size:12px;color:#57534E">Open a category on aliexpress.com and copy the link. Add up to 50.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FEF0EC;border:1px solid #F8C9BC;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">Pick depth and filters</span><br>
<span style="font-size:12px;color:#57534E">Choose how to rank, how deep to go and which products to keep.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FEF0EC;border:1px solid #F8C9BC;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">Schedule it</span><br>
<span style="font-size:12px;color:#57534E">Run it daily or weekly. Every run shows what moved since the last one.</span>
</td>
</tr>
</table>

Keep the same settings between scheduled runs. Changing the ranking, depth or price range starts a fresh history unless you give the watch a name.

### 📥 Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `categoryUrls` | array of URLs | No | AliExpress category or search results links to track, one per row. Each link gets its own ranking and its own history. Add up to 50. Defaults to the phone case category. |
| `rankBy` | enum | No | What decides the rank: most orders (the steadiest choice), best match, lowest or highest price, highest rating, or newest listings. Rating and newest re-rank the top bestsellers. Defaults to most orders. |
| `minPrice` | number | No | Only rank products at or above this price. AliExpress applies it, so ranks are counted inside the price range. |
| `maxPrice` | number | No | Only rank products at or below this price. Ranks are counted inside the price range. |
| `minRating` | number | No | Keep only products rated at least this many stars (0 to 5). Unrated products are hidden when this is set. |
| `minOrders` | integer | No | Keep only products with at least this many orders in total. |
| `choiceOnly` | boolean | No | Keep only products with the AliExpress Choice badge. Defaults to off. |
| `shipFromCountries` | array of strings | No | Keep only products dispatched from these countries. Use two-letter codes such as US, ES or CN, one per row. |
| `maxDeliveryDays` | integer | No | Keep only products whose slowest estimated delivery is within this many days. |
| `newListingsDays` | integer | No | Keep only products first listed on AliExpress within this many days. Useful for spotting new products that already sell. |
| `includeSponsored` | boolean | No | Also return the paid placements. They are marked as sponsored and never get a rank. Defaults to off. |
| `trackHistory` | boolean | No | Remember each ranking and compare the next run with it. Turn this on for scheduled runs. Defaults to on. |
| `monitorScope` | string | No | An optional name for this watch. Runs that share a name share their history, even if you change the depth or price limits later. |
| `changesOnly` | boolean | No | After the first run, return only new entrants, products that moved and products whose price changed. Defaults to off. |
| `minRankMove` | integer | No | With Return changes only, the smallest number of places a product must move to count. Defaults to 1. |
| `includeDropped` | boolean | No | Add a row for each product that fell out of the previous top list. Defaults to on. |
| `maxItems` | integer | No | How deep to rank each category: the top N products, up to 600. Defaults to 25, which reads one page. |
| `proxyConfiguration` | object | No | Connection settings. The default US setting shows prices in US dollars. You rarely need to change it. |

### 📤 Data table

Fields that AliExpress does not show for a product are left out of its row instead of being filled in.

| Field | Type | Description |
| --- | --- | --- |
| `rank` | integer | Organic rank under the chosen basis. 1 is the best. Sponsored cards and dropped rows have none. |
| `position` | integer | Place on the AliExpress page sequence, sponsored cards counted. |
| `page` | integer | AliExpress results page the product was read from. |
| `productId` | string | AliExpress item ID as used in product links. History is matched on it. |
| `regionalProductId` | string | The listing-specific ID AliExpress served the card under, when it differs from productId. |
| `title` | string | Product title. |
| `productUrl` | string | Link to the product page. |
| `imageUrl` | string | Main product image. |
| `additionalImages` | array | Further images shown on the listing card. |
| `trend` | string | Movement since the last run: new, up, down, same or dropped. Empty on the first run. |
| `isNewEntrant` | boolean | True when the product was not in the previous top list. Only set once a previous run exists. |
| `previousRank` | integer | Rank in the previous run. |
| `rankChange` | integer | Places gained since the previous run. Positive means it moved up. |
| `bestRank` | integer | Best rank this product has held in this watch. |
| `firstSeenAt` | string | When this product first appeared in this watch. |
| `daysInTop` | integer | Days since the product first appeared in the top list. |
| `timesSeen` | integer | Number of runs the product has appeared in. |
| `previousScrapedAt` | string | Time of the previous run that saw the product. |
| `salePrice` | number | Current sale price in the listing currency. |
| `originalPrice` | number | Price before the discount, when AliExpress shows one. |
| `discountPercent` | integer | Discount off the original price, in percent. |
| `currency` | string | Currency code of the prices. |
| `previousPrice` | number | Sale price in the previous run. |
| `priceChange` | number | Sale price now minus sale price in the previous run. |
| `priceChangePercent` | number | Price change in percent. |
| `isNewShopperPrice` | boolean | True when the shown price is a new-shopper deal. |
| `orders` | integer | Total orders so far, as a number. |
| `ordersLabel` | string | Orders as AliExpress writes them, for example 10,000+ sold. |
| `previousOrders` | integer | Orders in the previous run. |
| `ordersGained` | integer | Orders added since the previous run. |
| `ordersGainedPerDay` | number | Orders added per day between the two runs. |
| `rating` | number | Star rating out of 5, when the product has one. |
| `shipFrom` | string | Country the product ships from. |
| `freeShipping` | boolean | True when the listing carries a Free shipping label. |
| `deliveryMinDays` | integer | Fastest estimated delivery in days. |
| `deliveryMaxDays` | integer | Slowest estimated delivery in days. |
| `deliveryEstimate` | string | Estimated delivery dates as shown on the listing. |
| `isChoice` | boolean | True when the product has the AliExpress Choice badge. |
| `isBestseller` | boolean | True when the listing shows a top selling badge. |
| `isSponsored` | boolean | True for paid placements. Sponsored cards never get a rank. |
| `badges` | array | Promotion and trust labels shown on the listing card. |
| `listedOn` | string | Date the product was first listed on AliExpress. |
| `leafCategoryId` | string | Most specific AliExpress category ID of the product. |
| `categoryIds` | array | AliExpress category IDs from broad to specific. |
| `categoryUrl` | string | The category link this row belongs to. |
| `categoryTotalResults` | integer | Number of products AliExpress reports for the category. |
| `rankBy` | string | Ranking basis used for this run. |
| `scope` | string | Name of the history this row was compared against. |
| `scrapedAt` | string | Time of this run in ISO format. |

Here is one real row from a second run, so the history fields are filled in:

```json
{
  "rank": 21,
  "position": 21,
  "page": 1,
  "productId": "1005010037226721",
  "regionalProductId": "3256809850911969",
  "title": "Original Liquid Silicone Phone Case For APPLE iPhone 11 13 12 14 15 16 Pro Max Plus 16E Cases Shockproof Protective Back Cover",
  "productUrl": "https://www.aliexpress.com/item/1005010037226721.html",
  "imageUrl": "https://ae-pic-a1.aliexpress-media.com/kf/Sd19232533c8b4f86945ef32ba8c26ef2t.jpg",
  "isNewEntrant": false,
  "previousRank": 23,
  "rankChange": 2,
  "trend": "up",
  "firstSeenAt": "2026-10-11T11:32:39.970Z",
  "daysInTop": 0,
  "bestRank": 21,
  "timesSeen": 2,
  "previousScrapedAt": "2026-10-11T11:32:39.970Z",
  "previousPrice": 0.33,
  "priceChange": 0,
  "priceChangePercent": 0,
  "previousOrders": 32441,
  "ordersGained": 0,
  "isSponsored": false,
  "salePrice": 0.33,
  "originalPrice": 4.88,
  "discountPercent": 93,
  "currency": "USD",
  "rating": 4.9,
  "orders": 32441,
  "ordersLabel": "10,000+ sold",
  "shipFrom": "CN",
  "isChoice": true,
  "deliveryMinDays": 6,
  "deliveryMaxDays": 12,
  "deliveryEstimate": "Oct 17 - 23",
  "listedOn": "2025-09-24",
  "categoryIds": [
    "202192403",
    "202228401",
    "380230"
  ],
  "leafCategoryId": "380230",
  "categoryUrl": "https://www.aliexpress.com/w/wholesale-phone-case.html?categoryBrowseId=5090301",
  "scope": "scope-b88f38e938",
  "rankBy": "orders",
  "categoryTotalResults": 105567,
  "scrapedAt": "2026-10-11T11:33:08.867Z",
  "additionalImages": [
    "https://ae-pic-a1.aliexpress-media.com/kf/S8f843c3ca88d4d5ab9ee2d76fd615d2eQ.jpg"
  ]
}
```

### 💰 Pricing

Pricing is pay per result. You pay for each product row saved to your dataset, and every row costs the same: ranked products, optional sponsored rows and rows for products that dropped out of the list all count as one result. Runs that return nothing cost nothing, there are no subscriptions, and your per-run maximum charge is always respected. When a run reaches that limit it stops, tells you so in the run status, and keeps your saved history as it was, so the next run still compares against the last complete ranking.

### ⭐ Enjoying AliExpress Category Rank Tracker?

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:20px 24px 14px;background:#FEF0EC;border:1px solid #F8C9BC;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">Know which products are rising before your competitors do.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other dropshippers and AliExpress sellers find this tracker. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#E62E04;border:1px solid #F8C9BC;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/aliexpress-category-rank-tracker/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>

### ❓ FAQ

##### Do I need an AliExpress account or login?

No. The tracker reads the same public category pages any visitor sees, so there is no account, key or cookie to set up. If AliExpress blocks a read, the Actor retries and the run summary tells you what happened. If it cannot get a real category page, the run fails instead of saving wrong data.

##### How do rank changes work between runs?

The Actor saves each ranking after every run. The next run compares the new ranking with the saved one and adds previous rank, rank change, new entrant, price change and orders gained. The first run has nothing to compare with, so those fields start from the second run. Keep the same settings, or give your watch a name, so history carries over.

##### Why is most orders the default ranking?

The most orders ranking is steady from one run to the next, so a rank change usually means something real happened. Ranks below the first page move more, because AliExpress reorders deeper pages between visits. Best match is personalized by AliExpress and can reshuffle even on page one, so expect more movement there.

##### Does it return seller names, review counts or shipping prices?

No. Category pages do not show them, and reading product pages would need a login. You get price, discount, rating, exact orders, ship-from country, delivery estimate, listing date, badges and category IDs instead.

### 🔗 Other actors

- [Wildberries Price & Rank Tracker: Мониторинг Цен Вайлдберриз](https://apify.com/getascraper/wildberries-price-tracker) ↗ - Track prices and search rank of products on Wildberries over time.
- [Trendyol Price Monitor: Fiyat Takibi (Türkiye)](https://apify.com/getascraper/trendyol-price-monitor) ↗ - Watch Trendyol prices and spot changes between runs.
- [Mercari US Scraper: Active & Sold Listings, Price & Seller Data](https://apify.com/getascraper/mercari-us-scraper) ↗ - Active and sold Mercari listings with prices and seller data.
- [Kaspi.kz Product Scraper: Prices, Kaspi Bonus, Ratings & Stock](https://apify.com/getascraper/kaspi-product-scraper) ↗ - Kaspi.kz product prices, bonuses, ratings and stock.
- [Coolblue Scraper: Live Prices, Stock, Ratings & Open-Box Deals](https://apify.com/getascraper/coolblue-scraper) ↗ - Live Coolblue prices, stock and open-box deals.

# Changelog

This Actor's version history is a separate document: https://apify.com/getascraper/aliexpress-category-rank-tracker/changelog.md

# Actor input Schema

## `categoryUrls` (type: `array`):

AliExpress category or search results pages to track, one link per row. Copy the link from your browser after opening the category on aliexpress.com. Every link gets its own ranking and its own history.

## `rankBy` (type: `string`):

The order that decides each product's rank. Most orders is the most stable choice for tracking over time. Best match follows AliExpress relevance and moves around more between visits. Rating and Newest re-rank the top products by most orders.

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

Only rank products priced at or above this amount, in the currency AliExpress shows. AliExpress applies this limit, so ranks are counted inside the price range. Leave empty for no lower limit.

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

Only rank products priced at or below this amount, in the currency AliExpress shows. Ranks are counted inside the price range. Leave empty for no upper limit.

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

Keep only products rated at or above this value (0 to 5). Products with no rating yet are hidden when this is set. Leave empty to keep everything.

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

Keep only products with at least this many orders in total. Leave empty to keep everything.

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

Keep only products with the AliExpress Choice badge.

## `shipFromCountries` (type: `array`):

Keep only products dispatched from these countries. Use two-letter codes such as US, ES or CN, one per row. Leave empty for all origins.

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

Keep only products whose slowest estimated delivery is within this many days. Products without a delivery estimate are hidden when this is set.

## `newListingsDays` (type: `integer`):

Keep only products first listed on AliExpress within this many days. Useful for spotting new products that already sell. Leave empty for all ages.

## `includeSponsored` (type: `boolean`):

Also return the paid placements AliExpress mixes into the page. They are marked as sponsored and never get a rank, so they cannot distort your rankings.

## `trackHistory` (type: `boolean`):

Remember each ranking and compare the next run with it. This adds previous rank, rank change, new entrants, price change and orders gained. Turn it on for scheduled runs.

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

An optional name for this watch, for example weekly-phone-cases. Runs that share a name share their history, even if you change the depth or price limits later. Leave empty to let the Actor pick one from your settings.

## `changesOnly` (type: `boolean`):

After the first run, return only new entrants, products that moved, and products whose price changed. The full ranking is still saved for the next comparison.

## `minRankMove` (type: `integer`):

Used with Return changes only. A product counts as moved when its rank changed by at least this many places.

## `includeDropped` (type: `boolean`):

Add a row for each product that was in the previous top list and has now fallen out of it.

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

How deep to rank each category: the top N products. A larger number reads more result pages and takes longer. 25 reads one page.

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

Proxy used to read AliExpress. The default US datacenter proxy shows prices in US dollars. Choose another country to see that country's prices and delivery estimates. If the connection is blocked, the Actor retries once through a residential proxy when your plan includes it, and the run summary says so.

## Actor input object example

```json
{
  "categoryUrls": [
    {
      "url": "https://www.aliexpress.com/w/wholesale-phone-case.html?categoryBrowseId=5090301"
    }
  ],
  "rankBy": "orders",
  "choiceOnly": false,
  "shipFromCountries": [],
  "includeSponsored": false,
  "trackHistory": true,
  "monitorScope": "",
  "changesOnly": false,
  "minRankMove": 1,
  "includeDropped": true,
  "maxItems": 25,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

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

No description

## `summary` (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 = {
    "categoryUrls": [
        {
            "url": "https://www.aliexpress.com/w/wholesale-phone-case.html?categoryBrowseId=5090301"
        }
    ],
    "rankBy": "orders",
    "choiceOnly": false,
    "shipFromCountries": [],
    "includeSponsored": false,
    "trackHistory": true,
    "monitorScope": "",
    "changesOnly": false,
    "minRankMove": 1,
    "includeDropped": true,
    "maxItems": 25,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/aliexpress-category-rank-tracker").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 = {
    "categoryUrls": [{ "url": "https://www.aliexpress.com/w/wholesale-phone-case.html?categoryBrowseId=5090301" }],
    "rankBy": "orders",
    "choiceOnly": False,
    "shipFromCountries": [],
    "includeSponsored": False,
    "trackHistory": True,
    "monitorScope": "",
    "changesOnly": False,
    "minRankMove": 1,
    "includeDropped": True,
    "maxItems": 25,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/aliexpress-category-rank-tracker").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 '{
  "categoryUrls": [
    {
      "url": "https://www.aliexpress.com/w/wholesale-phone-case.html?categoryBrowseId=5090301"
    }
  ],
  "rankBy": "orders",
  "choiceOnly": false,
  "shipFromCountries": [],
  "includeSponsored": false,
  "trackHistory": true,
  "monitorScope": "",
  "changesOnly": false,
  "minRankMove": 1,
  "includeDropped": true,
  "maxItems": 25,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyCountry": "US"
  }
}' |
apify call getascraper/aliexpress-category-rank-tracker --silent --output-dataset

```

## MCP server setup

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

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/c4Lxim66tPrVx9zGT/builds/htsiOIBLsqAZcWRhs/openapi.json
