# Aliexpress Scraper | Enterprise Grade (`fatihtahta/aliexpress-scraper`) Actor

Extract structured AliExpress product and review data including prices, discounts, ratings, images, and merchandising signals. Built for enterprise-grade ecommerce intelligence, sourcing analysis, pricing research, and automated catalog or analytics pipelines.

- **URL**: https://apify.com/fatihtahta/aliexpress-scraper.md
- **Developed by:** [Fatih Tahta](https://apify.com/fatihtahta) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 86 total users, 23 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 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 Scraper

**Slug:** `fatihtahta/aliexpress-scraper`

### Overview
AliExpress Scraper collects structured product data from AliExpress, including product identifiers, titles, prices, discounts, images, ratings, merchandising details, and source-page context. It supports search result pages, category pages, store catalog pages, individual product pages, and keyword-based discovery, giving you flexible ways to collect marketplace data at scale. [AliExpress](https://www.aliexpress.com) is one of the largest global ecommerce marketplaces, making it a useful source for pricing research, sourcing analysis, assortment tracking, and catalog intelligence. The actor automates repetitive collection work and returns records in a consistent structure that is easier to analyze and operationalize. This saves time, reduces manual effort, and helps teams keep datasets current with less overhead.

### Why Use This Actor
- **Market researchers and analysts:** Track pricing, discounting, ratings, and product assortment across categories for benchmark reports, trend analysis, and competitor comparisons.
- **Product and content teams:** Discover popular listings, review merchandising patterns, and gather structured product inputs for catalogs, landing pages, and editorial planning.
- **Developers and data engineers:** Send analysis-ready records into ETL pipelines, data warehouses, dashboards, and downstream APIs with minimal cleanup.
- **Lead generation and enrichment teams:** Identify relevant products, brands, and listing patterns for sourcing workflows, supplier research, and marketplace enrichment.
- **Monitoring and competitive tracking teams:** Schedule recurring runs to watch changes in price, promotions, rating signals, and listing visibility over time.

### Input Parameters
Provide any combination of URLs, queries, and filters to control what gets collected.

| Parameter | Type | Description | Default |
| --- | --- | --- | --- |
| `shipping_to` | `string` | Required shipping destination country. This controls which items are considered shippable to that market and also influences the localized pricing and currency shown in results. | `US` |
| `startUrls` | `string[]` | One or more AliExpress URLs to scrape directly. Supports search result pages, category pages, store catalog pages, and individual product pages, and you can mix these page types in the same run. | prefill `["https://www.aliexpress.com/w/wholesale-wireless-earbuds.html?SearchText=wireless%20earbuds"]` |
| `queries` | `string[]` | Search keywords such as product names, brands, model numbers, or categories. Use this when you want the actor to discover matching listings through AliExpress search. | `–` |
| `min_price` | `integer` | Minimum price for query-based searches. Useful for excluding very low-priced items. | `–` |
| `max_price` | `integer` | Maximum price for query-based searches. Useful for keeping results within a target range. | `–` |
| `sort` | `string` | Sort order for query-based searches. Allowed values: `best_match` (Best Match First), `most_ordered` (Most Ordered First), `lowest_price` (Lowest Price First), `highest_price` (Highest Price First). | `best_match` |
| `free_shipping` | `boolean` | When `true`, keeps only products marked with free shipping in query-based searches. | `false` |
| `on_sale` | `boolean` | When `true`, keeps only products marked with sale promotions in query-based searches. | `false` |
| `delivery_choice` | `boolean` | When `true`, keeps only items marked with Delivery & service choice in query-based searches. | `false` |
| `high_rated` | `boolean` | When `true`, keeps only products rated 4 stars or higher in query-based searches. | `false` |
| `premium_quality` | `boolean` | When `true`, keeps only items labeled with premium quality tags in query-based searches. | `false` |
| `enrich_data` | `boolean` | Temporarily under maintenance. Even when set to `true`, the actor currently uses the regular listing flow and saved product records do not include the `enrichment` block. | `false` |
| `limit` | `integer` | Maximum number of product listings to save for each seed. This caps discovered product listing rows only and does not cap review records or other derived outputs. Use lower values for quick validation and higher values for broader research, monitoring, or larger exports. | `50000` |

### Example Inputs

#### Example 1: Keyword discovery with quality filters
```json
{
  "shipping_to": "US",
  "queries": ["portable air purifier", "wireless earbuds"],
  "min_price": 5,
  "max_price": 50,
  "sort": "most_ordered",
  "free_shipping": true,
  "high_rated": true,
  "limit": 1000
}
````

#### Example 2: Scrape specific search and product URLs directly

```json
{
  "shipping_to": "US",
  "startUrls": [
    "https://www.aliexpress.com/w/wholesale-wireless-earbuds.html?SearchText=wireless%20earbuds",
    "https://www.aliexpress.com/item/1005009916186943.html"
  ],
  "limit": 200
}
```

#### Example 3: Budget sourcing for sale items

```json
{
  "shipping_to": "MY",
  "queries": ["phone tripod", "ring light"],
  "max_price": 25,
  "sort": "lowest_price",
  "on_sale": true,
  "delivery_choice": true,
  "limit": 5000
}
```

#### Example 4: Premium product research

```json
{
  "shipping_to": "FR",
  "queries": ["mechanical keyboard", "gaming mouse"],
  "min_price": 20,
  "sort": "best_match",
  "high_rated": true,
  "premium_quality": true,
  "limit": 3000
}
```

#### Example 5: Listing scrape with enrichment flag during maintenance

```json
{
  "shipping_to": "SG",
  "queries": ["air purifier"],
  "sort": "most_ordered",
  "enrich_data": true,
  "limit": 100
}
```

`enrich_data` is temporarily under maintenance. This example will run as a regular listing scrape until enrichment is restored.

### Output

#### 6.1 Output destination

The actor writes results to an Apify dataset as JSON records. And the dataset is designed for direct consumption by analytics tools, ETL pipelines, and downstream APIs without post-processing.

#### 6.2 Record envelope (all items)

Every dataset record includes these stable identifiers:

- **type** *(string, required)*: Record category. Product rows use `product`; review rows use `review`.
- **id** *(number, required)*: Stable AliExpress identifier for the record.
- **url** *(string, required)*: Canonical AliExpress URL for the record.

Recommended idempotency key: `type + ":" + id`

Use this key to deduplicate repeated discoveries of the same entity and to perform reliable upserts across repeated runs.

#### 6.3 Examples

##### Example: product (`type = "product"`)

```json
{
  "type": "product",
  "id": 3256809729872191,
  "url": "https://www.aliexpress.com/item/3256809729872191.html",
  "product": {
    "product_id": "3256809729872191",
    "title": "Air Purifier Smoke Odor Negative Ion Generator USB Portable Air Cleaner for Household HEPA Filter Efficient Purifying Air",
    "item_type": "productV3",
    "product_type": "natural",
    "native_card_type": "nt_srp_cell_g",
    "item_card_type": "app_us_local_card",
    "transitionary_exp_frame": false,
    "launch_time": "2025-10-20 00:00:00",
    "seo_white": "false"
  },
  "pricing": {
    "currency_code": "USD",
    "current_price": 9.33,
    "current_price_display": "US $9.33",
    "original_price_display": "US $27.66",
    "discount_percent": 66
  },
  "media": {
    "primary_image_url": "https://ae-pic-a1.aliexpress-media.com/kf/S1a6aaf58890d441e8897bf2241120e30Q.png",
    "gallery": [
      {
        "image_url": "https://ae-pic-a1.aliexpress-media.com/kf/S1a6aaf58890d441e8897bf2241120e30Q.png",
        "image_width": 350,
        "image_height": 350,
        "image_type": "0"
      },
      {
        "image_url": "https://ae-pic-a1.aliexpress-media.com/kf/S867b3362bca349e8a22fedbbf737d0ffM.png",
        "image_width": 350,
        "image_height": 350,
        "image_type": "0"
      },
      {
        "image_url": "https://ae-pic-a1.aliexpress-media.com/kf/S498451565cad4f6a8c3138647cfcc97eP.png",
        "image_width": 350,
        "image_height": 350,
        "image_type": "0"
      },
      {
        "image_url": "https://ae-pic-a1.aliexpress-media.com/kf/S9c97ad73e83a42e58f01e3bc8b4e781dl.png",
        "image_width": 350,
        "image_height": 350,
        "image_type": "0"
      },
      {
        "image_url": "https://ae-pic-a1.aliexpress-media.com/kf/S137392c7e4d74cf2ac84167f30c3c60bX.png",
        "image_width": 350,
        "image_height": 350,
        "image_type": "0"
      },
      {
        "image_url": "https://ae-pic-a1.aliexpress-media.com/kf/S66b2e4a1637d4593a8f116cccee6a5af2.png",
        "image_width": 350,
        "image_height": 350,
        "image_type": "0"
      }
    ],
    "extra_parameters": {
      "sku_images": "H4sIAAAAAAAAABXLuQ2AMAwAwI1Q/CdhDCZwHIMEFOxfAf0dcCfVvkUisQcKA7EGVh3NCrTkAjFG3sv5HCu2vslMMBMPMPnGdPKZzhS4g3mN65cvWMVG4VcAAAA="
    }
  },
  "sales": {
    "trade_description": "2,000+ sold",
    "rating": 4.9
  },
  "merchandising": {
    "featured_offer": {
      "rainbow_type": "channelProduct",
      "title": "Dollar Express",
      "url": "https://www.aliexpress.com/ssr/300000512/BundleDeals2?productIds=1005009916186943:12000050569650089&pha_manifest=ssr&_immersiveMode=true&disableNav=YES&sourceName=SEARCHProduct",
      "need_replace_url": true
    },
    "selling_points": [
      {
        "selling_point_tag_id": "m0000094",
        "position": 1,
        "tag_style_type": "default",
        "tag_content": {
          "display_tag_type": "image",
          "tag_image_url": "https://ae01.alicdn.com/kf/S1887a285b60743859ac7bdbfca5e0896Z/154x64.png",
          "tag_image_width": 154,
          "tag_image_height": 64,
          "tag_style": {
            "position": "1"
          }
        },
        "source": "choice_atm",
        "resource_code": "searchItemCard"
      },
      {
        "selling_point_tag_id": "m0000026",
        "position": 1,
        "tag_style_type": "default",
        "tag_content": {
          "display_tag_type": "image",
          "tag_image_url": "https://ae01.alicdn.com/kf/Sb6a0486896c44dd8b19b117646c39e36J/116x64.png",
          "tag_image_width": 116,
          "tag_image_height": 64,
          "tag_style": {
            "position": "1"
          }
        },
        "source": "bigSale_atm",
        "resource_code": "searchItemCard"
      },
      {
        "selling_point_tag_id": "m0000155",
        "position": 4,
        "tag_style_type": "default",
        "tag_content": {
          "display_tag_type": "image_text",
          "tag_text": "Save $18.33",
          "tag_image_url": "https://ae-pic-a1.aliexpress-media.com/kf/S9957aad5196c404bbae29db0392ef0b24/45x60.png",
          "tag_image_width": 45,
          "tag_image_height": 60,
          "tag_style": {
            "color": "#F00633",
            "is_price_power": "false",
            "position": "4"
          }
        },
        "source": "bigSale_discount",
        "resource_code": "searchItemCard"
      }
    ],
    "available_actions": [
      {
        "action_text": "Add to cart",
        "action_type": "shopCart"
      },
      {
        "action_text": "See preview",
        "action_type": "quickView"
      },
      {
        "action_text": "Similar items",
        "action_type": "similarItems"
      }
    ],
    "product_detail_url": "https://www.aliexpress.com/ssr/300000512/BundleDeals2?_immersiveMode=true&disableNav=YES&pha_manifest=ssr&productIds=1005009916186943%3A12000050569650089&sourceName=SEARCHProduct"
  },
  "platform_metadata": {
    "display_configuration": {
      "evaluation": {
        "show_single_rating": "false"
      },
      "rainbow": {
        "hide": "false"
      },
      "action": {
        "close_animation": "false"
      },
      "prices": {
        "is_price_power": "false"
      }
    }
  },
  "source_context": {
    "product_url": "https://www.aliexpress.com/item/3256809729872191.html",
    "source_page_url": "https://www.aliexpress.com/w/wholesale-Air-Purifier.html",
    "extraction_method": "embedded_json",
    "seed_id": "04d47afff27e",
    "seed_type": "url",
    "seed_value": "https://www.aliexpress.com/w/wholesale-Air-Purifier.html",
    "page_index": 1,
    "scraped_time": "2026-03-24T04:39:37.002516+00:00"
  },
  "enrichment": {
    "status": "success",
    "source": "product_detail_http_api",
    "request": {
      "api": "mtop.aliexpress.pdp.pc.query",
      "country": "US",
      "currency_code": "USD",
      "client_type": "pc",
      "product_id": "3256809729872191"
    },
    "reviews": {
      "rating": 4.9,
      "reviews_count": 124,
      "trade_description": "2,000+ sold"
    },
    "inventory": {
      "total_available_inventory": 87,
      "max_buy_count": 5
    },
    "shipping": {
      "delivery_provider_name": "AliExpress Selection Standard Shipping",
      "delivery_date": "Apr. 20",
      "ship_to": "United States"
    },
    "seller": {
      "store_name": "Example Store",
      "seller_positive_rate": 95.4
    },
    "description": {
      "pc_desc_url": "https://aeproductsourcesite.alicdn.com/product/description/pc/v2/en_US/desc.htm?productId=3256809729872191"
    }
  }
}
```

While `enrich_data` is under maintenance, records keep the current listing-only structure and the `enrichment` block is omitted even when the flag is set to `true`.

##### Example: review (`type = "review"`)

```json
{
  "type": "review",
  "product": {
    "product_id": "1005010098248212",
    "title": "EVA Kaymaz Erkek Terlikleri Ev Kalin Tabanli Terlikler Rahat Hafif Ic Mekan Dis Mekan Ev Terlikleri"
  },
  "source_context": {
    "product_url": "https://www.aliexpress.com/item/1005010098248212.html",
    "source_page_url": "https://www.aliexpress.com/w/wholesale-slippers.html?SearchText=slippers&g=y&pr=-20",
    "parent_record_type": "product"
  },
  "review_metadata": {
    "review_id": "60094373571227451",
    "current_page": 1,
    "total_pages": 42,
    "total_reviews": 828,
    "evaluation_id": 60094373571227450,
    "evaluation_id_str": "60094373571227451",
    "eval_date": "16 Dec 2025",
    "review_type": "REVIEW",
    "selected_review": true,
    "sku_id": 12000051136225964,
    "sku_info": "Color:Beige Shoe Size:42-43",
    "status": "1"
  },
  "reviewer": {
    "aigc": false,
    "anonymous": false,
    "buyer_add_fb_days": 0,
    "buyer_country": "BR",
    "buyer_eval": 100,
    "buyer_fb_type": {
      "crowd_sourcing_person_name": "AliExpress Shopper",
      "source_lang": "en",
      "type_translation_accepted": "crowdsourcing"
    },
    "buyer_head_portrait": "http://ae01.alicdn.com/kf/A48e20a0a9438487ba81da722706d96bay.jpg_220x220.jpg",
    "buyer_name": "J***r"
  },
  "review_content": {
    "buyer_feedback": "Tem uma qualidade boa, um pouco durinho mas conforme for usando vai amaciando. A cor e bonita, e combina com tudo",
    "buyer_translation_feedback": "It has good quality, a bit stiff but it will soften with use. The color is beautiful and matches everything.",
    "images": [
      "https://ae01.alicdn.com/kf/Ab1f639e717354927950631f8870d6fc2m.jpg"
    ],
    "thumbnails": [
      "http://ae01.alicdn.com/kf/Ab1f639e717354927950631f8870d6fc2m.jpg_220x220.jpg"
    ],
    "logistics": "Aliexpress Selection Standard",
    "same_purchase_suggestion": "Buy the same",
    "selected_icon": "https://ae01.alicdn.com/kf/S2df5f3fa0d8242b1a0bbb1cc92cab109P/221x221.png",
    "independent_site": false,
    "third_party": false,
    "trendyol": false,
    "up_vote_count": 5,
    "down_vote_count": 0
  }
}
```

### Field reference

#### Product fields (`type = "product"`)

- **type** *(string, required)*: Record type.
- **id** *(number, required)*: Stable AliExpress product identifier.
- **url** *(string, required)*: Canonical product URL.
- **product.product\_id** *(string, optional)*: Product identifier from the source payload.
- **product.title** *(string, optional)*: Product title.
- **product.item\_type** *(string, optional)*: Source item classification.
- **product.product\_type** *(string, optional)*: Product type label.
- **product.native\_card\_type** *(string, optional)*: Display card type.
- **product.item\_card\_type** *(string, optional)*: Item card variant.
- **product.transitionary\_exp\_frame** *(boolean, optional)*: Display-related flag.
- **product.launch\_time** *(string, optional)*: Launch timestamp when available.
- **product.seo\_white** *(string, optional)*: Source SEO flag.
- **pricing.currency\_code** *(string, optional)*: Currency code for pricing.
- **pricing.current\_price** *(number, optional)*: Current product price.
- **pricing.current\_price\_display** *(string, optional)*: Current price as displayed.
- **pricing.original\_price\_display** *(string, optional)*: Original or list price as displayed.
- **pricing.discount\_percent** *(number, optional)*: Discount percentage.
- **media.primary\_image\_url** *(string, optional)*: Primary product image URL.
- **media.gallery** *(array\[object], optional)*: Product image gallery.
- **media.gallery\[].image\_url** *(string, optional)*: Gallery image URL.
- **media.gallery\[].image\_width** *(number, optional)*: Gallery image width in pixels.
- **media.gallery\[].image\_height** *(number, optional)*: Gallery image height in pixels.
- **media.gallery\[].image\_type** *(string, optional)*: Gallery image type value.
- **media.extra\_parameters.sku\_images** *(string, optional)*: Additional image-related parameter.
- **sales.trade\_description** *(string, optional)*: Sales text, such as units sold.
- **sales.rating** *(number, optional)*: Product rating.
- **merchandising.featured\_offer.rainbow\_type** *(string, optional)*: Featured offer classification.
- **merchandising.featured\_offer.title** *(string, optional)*: Featured offer title.
- **merchandising.featured\_offer.url** *(string, optional)*: Featured offer URL.
- **merchandising.featured\_offer.need\_replace\_url** *(boolean, optional)*: Featured offer flag.
- **merchandising.selling\_points** *(array\[object], optional)*: Merchandising badges or highlights.
- **merchandising.selling\_points\[].selling\_point\_tag\_id** *(string, optional)*: Selling-point identifier.
- **merchandising.selling\_points\[].position** *(number, optional)*: Selling-point position.
- **merchandising.selling\_points\[].tag\_style\_type** *(string, optional)*: Selling-point style type.
- **merchandising.selling\_points\[].tag\_content.display\_tag\_type** *(string, optional)*: Tag content type.
- **merchandising.selling\_points\[].tag\_content.tag\_text** *(string, optional)*: Tag text when present.
- **merchandising.selling\_points\[].tag\_content.tag\_image\_url** *(string, optional)*: Tag image URL.
- **merchandising.selling\_points\[].tag\_content.tag\_image\_width** *(number, optional)*: Tag image width.
- **merchandising.selling\_points\[].tag\_content.tag\_image\_height** *(number, optional)*: Tag image height.
- **merchandising.selling\_points\[].tag\_content.tag\_style.position** *(string, optional)*: Tag display position.
- **merchandising.selling\_points\[].tag\_content.tag\_style.color** *(string, optional)*: Tag color value.
- **merchandising.selling\_points\[].tag\_content.tag\_style.is\_price\_power** *(string, optional)*: Price-power flag.
- **merchandising.selling\_points\[].source** *(string, optional)*: Selling-point source.
- **merchandising.selling\_points\[].resource\_code** *(string, optional)*: Resource code.
- **merchandising.available\_actions** *(array\[object], optional)*: Available actions shown with the listing.
- **merchandising.available\_actions\[].action\_text** *(string, optional)*: Action label.
- **merchandising.available\_actions\[].action\_type** *(string, optional)*: Action type.
- **merchandising.product\_detail\_url** *(string, optional)*: Related detail or promotional URL.
- **platform\_metadata.display\_configuration.evaluation.show\_single\_rating** *(string, optional)*: Rating display flag.
- **platform\_metadata.display\_configuration.rainbow.hide** *(string, optional)*: Rainbow visibility flag.
- **platform\_metadata.display\_configuration.action.close\_animation** *(string, optional)*: Action animation flag.
- **platform\_metadata.display\_configuration.prices.is\_price\_power** *(string, optional)*: Price display flag.
- **source\_context.product\_url** *(string, optional)*: Product URL observed during collection.
- **source\_context.source\_page\_url** *(string, optional)*: Source results or category page URL.
- **source\_context.extraction\_method** *(string, optional)*: Source extraction label.
- **source\_context.seed\_id** *(string, optional)*: Seed identifier for the discovery context.
- **source\_context.seed\_type** *(string, optional)*: Seed category, such as URL or query.
- **source\_context.seed\_value** *(string, optional)*: Original input used to discover the record.
- **source\_context.page\_index** *(number, optional)*: Page number when available.
- **source\_context.scraped\_time** *(string, optional)*: ISO timestamp for when the record was collected.
- **enrichment** *(object, optional)*: Temporarily unavailable while `enrich_data` is under maintenance. Current runs use the regular listing flow and omit this block.

#### Review fields (`type = "review"`)

- **type** *(string, required)*: Record type.
- **product** *(object, optional)*: Parent product identifiers copied onto the review row.
- **seller** *(object, optional)*: Parent seller info, including `seller_admin_seq` when available.
- **source\_context** *(object, optional)*: Parent product URL, source page URL, and `parent_record_type`.
- **review\_metadata** *(object, optional)*: Review-level identifiers and pagination fields such as `review_id`, `current_page`, `total_pages`, `total_reviews`, evaluation IDs, SKU references, status, and selection flags.
- **reviewer** *(object, optional)*: Reviewer attributes such as anonymity, country, score, display name, avatar, and buyer feedback type.
- **review\_content** *(object, optional)*: The review body and delivery-specific fields such as translated text, images, thumbnails, vote counts, logistics, and any remaining AliExpress review payload fields not classified as metadata or reviewer info.

### Data guarantees & handling

- **Best-effort extraction:** fields may vary by region, session, availability, and UI experiments.
- **Optional fields:** null-check in downstream code.
- **Deduplication:** recommend `type + ":" + id`.

### How to Run on Apify

1. Open the Actor in Apify Console.
2. Configure your input using one or more product, search, or category URLs, or enter one or more search queries.
3. Set any filters you want to apply, such as price range, sort order, shipping, sale status, or minimum rating.
4. Set the maximum number of outputs to collect.
5. Click **Start** and wait for the run to finish.
6. Download results in JSON, CSV, Excel, or other supported formats.

### Scheduling & Automation

#### Scheduling

**Automated Data Collection**

You can schedule runs to keep your dataset fresh without starting each run manually. This is useful for recurring price checks, assortment monitoring, and regular marketplace reporting.

- Navigate to **Schedules** in Apify Console
- Create a new schedule (daily, weekly, or custom cron)
- Configure input parameters
- Enable notifications for run completion
- Optional: Add webhooks for automated processing

#### Integration Options

- **Webhooks:** Trigger downstream actions when a run completes
- **Zapier:** Connect to 5,000+ apps without coding
- **Make (Integromat):** Build multi-step automation workflows
- **Google Sheets:** Export results to a spreadsheet
- **Slack/Discord:** Receive notifications and summaries
- **Email:** Send automated reports via email

### Performance

Estimated run times:

- **Small runs (< 1,000 outputs):** ~2–3 minutes
- **Medium runs (1,000–5,000 outputs):** ~5–15 minutes
- **Large runs (5,000+ outputs):** ~15–30 minutes

Execution time varies based on filters, result volume, and how much information is returned per record.

### Compliance & Ethics

#### Responsible Data Collection

This actor collects publicly available product and marketplace listing information from <https://www.aliexpress.com> for legitimate business purposes. Common use cases include ecommerce research and market analysis, pricing and assortment monitoring, and sourcing or catalog enrichment. Users are responsible for ensuring their collection and use of data complies with applicable laws, regulations, and the platform's terms. This section is informational and not legal advice.

- **Ecommerce** research and market analysis
- **Pricing and assortment monitoring**
- **Sourcing and catalog enrichment**

#### Best Practices

- Use collected data in accordance with applicable laws, regulations, and the target site's terms
- Respect individual privacy and personal information
- Use data responsibly and avoid disruptive or excessive collection
- Do not use this actor for spamming, harassment, or other harmful purposes
- Follow relevant data protection requirements where applicable (e.g., GDPR, CCPA)

### Support

If you need help, use the Issues tab or the actor page in Apify Console. Include the input you used with sensitive values redacted, the run ID, a short note describing expected versus actual behavior, and, if useful, a small output sample so the issue can be reproduced more quickly.

# Actor input Schema

## `startUrls` (type: `array`):

Paste one or more AliExpress URLs to scrape directly. Supported page types include search result pages, category pages, store catalog pages, and individual product pages. You can mix these page types in the same run when you want precise control over what gets collected.

## `queries` (type: `array`):

Enter one or more keywords to search on AliExpress, such as product names, brands, model numbers, or product categories. Use this when you do not have URLs yet and want the actor to discover relevant listings through AliExpress search and save them to your dataset.

## `min_price` (type: `integer`):

Optional lower price bound for query-based searches. Use it to exclude very low-priced items.

## `max_price` (type: `integer`):

Optional upper price bound for query-based searches. Use it to exclude products above your target range.

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

Choose how AliExpress should order search results generated from your queries. Leave the default setting when you want the marketplace's standard ranking.

## `free_shipping` (type: `boolean`):

When enabled, query-based searches keep only products marked with free shipping.

## `on_sale` (type: `boolean`):

When enabled, query-based searches keep only products with AliExpress sale promotions.

## `delivery_choice` (type: `boolean`):

When enabled, query-based searches keep only items marked with Delivery & service choice.

## `high_rated` (type: `boolean`):

When enabled, query-based searches keep only products rated 4 stars or higher.

## `premium_quality` (type: `boolean`):

When enabled, query-based searches keep only products labeled with premium quality tags.

## `shipping_to` (type: `string`):

Select the destination country for the items. AliExpress requires a shipping country, and this selection also determines the local market pricing and currency shown in results. For example, choosing France targets items shippable to France and shows prices in euro.

## `enrich_data` (type: `boolean`):

Product enrichment is temporarily under maintenance. Even if this option is enabled, the actor will use the regular listing flow and saved product records will not include the enrichment block until this feature is restored.

## `getReviews` (type: `boolean`):

When enabled, the actor also collects every review for each discovered product and saves each review as a separate dataset record with type `review`. Review records include parent product fields such as product ID, title, and product URL, and split review data into top-level `review_metadata`, `reviewer`, and `review_content` blocks for easier downstream use.

## `max_reviews` (type: `integer`):

Optional. Only applies when review collection is enabled. Limits how many review records are saved for each product individually, rather than applying one shared cap across the whole run. Leave empty to fetch all available reviews for each product.

## `limit` (type: `integer`):

Stop the run after this many product listings have been saved for each seed. This cap applies to discovered product listing records only, not to review records or other derived outputs. Choose a smaller number for quick sampling or validation, and increase it when you need broader coverage for research, monitoring, or larger datasets.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.aliexpress.com/w/wholesale-wireless-earbuds.html?SearchText=wireless%20earbuds"
  ],
  "sort": "best_match",
  "free_shipping": false,
  "on_sale": false,
  "delivery_choice": false,
  "high_rated": false,
  "premium_quality": false,
  "shipping_to": "US",
  "enrich_data": false,
  "getReviews": false,
  "limit": 100
}
```

# Actor output Schema

## `results` (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 = {
    "startUrls": [
        "https://www.aliexpress.com/w/wholesale-wireless-earbuds.html?SearchText=wireless%20earbuds"
    ],
    "limit": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("fatihtahta/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 = {
    "startUrls": ["https://www.aliexpress.com/w/wholesale-wireless-earbuds.html?SearchText=wireless%20earbuds"],
    "limit": 100,
}

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

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://www.aliexpress.com/w/wholesale-wireless-earbuds.html?SearchText=wireless%20earbuds"
  ],
  "limit": 100
}' |
apify call fatihtahta/aliexpress-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Aliexpress Scraper | Enterprise Grade",
        "description": "Extract structured AliExpress product and review data including prices, discounts, ratings, images, and merchandising signals. Built for enterprise-grade ecommerce intelligence, sourcing analysis, pricing research, and automated catalog or analytics pipelines.",
        "version": "1.0",
        "x-build-id": "pb5SDuPUpZ9iWnNje"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/fatihtahta~aliexpress-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-fatihtahta-aliexpress-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/fatihtahta~aliexpress-scraper/runs": {
            "post": {
                "operationId": "runs-sync-fatihtahta-aliexpress-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/fatihtahta~aliexpress-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-fatihtahta-aliexpress-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "Start URLs (Search results, category pages, store catalog pages, and product pages)",
                        "type": "array",
                        "description": "Paste one or more AliExpress URLs to scrape directly. Supported page types include search result pages, category pages, store catalog pages, and individual product pages. You can mix these page types in the same run when you want precise control over what gets collected.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "queries": {
                        "title": "🔎 Search query keywords",
                        "type": "array",
                        "description": "Enter one or more keywords to search on AliExpress, such as product names, brands, model numbers, or product categories. Use this when you do not have URLs yet and want the actor to discover relevant listings through AliExpress search and save them to your dataset.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "min_price": {
                        "title": "💵 Minimum price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional lower price bound for query-based searches. Use it to exclude very low-priced items."
                    },
                    "max_price": {
                        "title": "💵 Maximum price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional upper price bound for query-based searches. Use it to exclude products above your target range."
                    },
                    "sort": {
                        "title": "↔️ Sort results by",
                        "enum": [
                            "best_match",
                            "most_ordered",
                            "lowest_price",
                            "highest_price"
                        ],
                        "type": "string",
                        "description": "Choose how AliExpress should order search results generated from your queries. Leave the default setting when you want the marketplace's standard ranking.",
                        "default": "best_match"
                    },
                    "free_shipping": {
                        "title": "🚚 Only show items with free shipping",
                        "type": "boolean",
                        "description": "When enabled, query-based searches keep only products marked with free shipping.",
                        "default": false
                    },
                    "on_sale": {
                        "title": "🏷️ Only show items on sale",
                        "type": "boolean",
                        "description": "When enabled, query-based searches keep only products with AliExpress sale promotions.",
                        "default": false
                    },
                    "delivery_choice": {
                        "title": "👨‍🔧 Only show items that have Delivery & service choice",
                        "type": "boolean",
                        "description": "When enabled, query-based searches keep only items marked with Delivery & service choice.",
                        "default": false
                    },
                    "high_rated": {
                        "title": "⭐️ Only show products with 4 and above star ratings",
                        "type": "boolean",
                        "description": "When enabled, query-based searches keep only products rated 4 stars or higher.",
                        "default": false
                    },
                    "premium_quality": {
                        "title": "🔖 Only show items with premium quality tags",
                        "type": "boolean",
                        "description": "When enabled, query-based searches keep only products labeled with premium quality tags.",
                        "default": false
                    },
                    "shipping_to": {
                        "title": "Choose the country the items are shipping to",
                        "enum": [
                            "AD",
                            "AE",
                            "AF",
                            "AG",
                            "AL",
                            "AM",
                            "AO",
                            "AR",
                            "AT",
                            "AU",
                            "AZ",
                            "BA",
                            "BB",
                            "BD",
                            "BE",
                            "BF",
                            "BG",
                            "BH",
                            "BI",
                            "BJ",
                            "BN",
                            "BO",
                            "BR",
                            "BS",
                            "BT",
                            "BW",
                            "BY",
                            "BZ",
                            "CA",
                            "CD",
                            "CF",
                            "CG",
                            "CH",
                            "CI",
                            "CL",
                            "CM",
                            "CN",
                            "CO",
                            "CR",
                            "CU",
                            "CV",
                            "CY",
                            "CZ",
                            "DE",
                            "DJ",
                            "DK",
                            "DM",
                            "DO",
                            "DZ",
                            "EC",
                            "EE",
                            "EG",
                            "ER",
                            "ES",
                            "ET",
                            "FI",
                            "FJ",
                            "FR",
                            "GA",
                            "GB",
                            "GD",
                            "GE",
                            "GH",
                            "GM",
                            "GN",
                            "GQ",
                            "GR",
                            "GT",
                            "GW",
                            "GY",
                            "HK",
                            "HN",
                            "HR",
                            "HT",
                            "HU",
                            "ID",
                            "IE",
                            "IL",
                            "IN",
                            "IQ",
                            "IR",
                            "IS",
                            "IT",
                            "JM",
                            "JO",
                            "JP",
                            "KE",
                            "KG",
                            "KH",
                            "KM",
                            "KN",
                            "KR",
                            "KW",
                            "KZ",
                            "LA",
                            "LB",
                            "LC",
                            "LI",
                            "LK",
                            "LR",
                            "LS",
                            "LT",
                            "LU",
                            "LV",
                            "LY",
                            "MA",
                            "MC",
                            "MD",
                            "ME",
                            "MG",
                            "MK",
                            "ML",
                            "MM",
                            "MN",
                            "MO",
                            "MR",
                            "MT",
                            "MU",
                            "MV",
                            "MW",
                            "MX",
                            "MY",
                            "MZ",
                            "NA",
                            "NE",
                            "NG",
                            "NI",
                            "NL",
                            "NO",
                            "NP",
                            "NZ",
                            "OM",
                            "PA",
                            "PE",
                            "PG",
                            "PH",
                            "PK",
                            "PL",
                            "PR",
                            "PS",
                            "PT",
                            "PY",
                            "QA",
                            "RO",
                            "RS",
                            "RU",
                            "RW",
                            "SA",
                            "SB",
                            "SC",
                            "SD",
                            "SE",
                            "SG",
                            "SI",
                            "SK",
                            "SL",
                            "SM",
                            "SN",
                            "SO",
                            "SR",
                            "SS",
                            "ST",
                            "SV",
                            "SY",
                            "SZ",
                            "TD",
                            "TG",
                            "TH",
                            "TJ",
                            "TL",
                            "TM",
                            "TN",
                            "TO",
                            "TR",
                            "TT",
                            "TW",
                            "TZ",
                            "UA",
                            "UG",
                            "US",
                            "UY",
                            "UZ",
                            "VA",
                            "VC",
                            "VE",
                            "VN",
                            "VU",
                            "WS",
                            "XK",
                            "YE",
                            "ZA",
                            "ZM",
                            "ZW"
                        ],
                        "type": "string",
                        "description": "Select the destination country for the items. AliExpress requires a shipping country, and this selection also determines the local market pricing and currency shown in results. For example, choosing France targets items shippable to France and shows prices in euro.",
                        "default": "US"
                    },
                    "enrich_data": {
                        "title": "Product enrichment (temporarily under maintenance)",
                        "type": "boolean",
                        "description": "Product enrichment is temporarily under maintenance. Even if this option is enabled, the actor will use the regular listing flow and saved product records will not include the enrichment block until this feature is restored.",
                        "default": false
                    },
                    "getReviews": {
                        "title": "Get reviews for each saved product (saved seperately)",
                        "type": "boolean",
                        "description": "When enabled, the actor also collects every review for each discovered product and saves each review as a separate dataset record with type `review`. Review records include parent product fields such as product ID, title, and product URL, and split review data into top-level `review_metadata`, `reviewer`, and `review_content` blocks for easier downstream use.",
                        "default": false
                    },
                    "max_reviews": {
                        "title": "Maximum reviews to gather per product",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Optional. Only applies when review collection is enabled. Limits how many review records are saved for each product individually, rather than applying one shared cap across the whole run. Leave empty to fetch all available reviews for each product."
                    },
                    "limit": {
                        "title": "Maximum product listings to save (per seed)",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Stop the run after this many product listings have been saved for each seed. This cap applies to discovered product listing records only, not to review records or other derived outputs. Choose a smaller number for quick sampling or validation, and increase it when you need broader coverage for research, monitoring, or larger datasets.",
                        "default": 50000
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
