# AliExpress Scraper — Search, SKU Prices & Reviews (`sian.agency/aliexpress-product-details`) Actor

Scrape AliExpress search results, SKU price matrices, buyer reviews, shipping costs per country and store catalogs by item ID, seller ID or keyword. Built for dropshipping research, AliExpress price tracking and supplier vetting. Pay per result from $0.002, no browser, no login.

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

## Pricing

from $1.50 / 1,000 search results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

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

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

## How to integrate an Actor?

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

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

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

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

# README

## AliExpress Scraper — Search, SKU Prices & Reviews 🛍️

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Taobao Tmall](https://img.shields.io/badge/Store-Taobao%20Tmall-FF4F00)](https://apify.com/sian.agency/taobao-tmall-product-scraper?fpr=sian) [![JD.com](https://img.shields.io/badge/Store-JD.com-E3101E)](https://apify.com/sian.agency/jd-com-product-scraper?fpr=sian) [![TikTok Shop](https://img.shields.io/badge/Store-TikTok%20Shop-25F4EE)](https://apify.com/sian.agency/tiktok-shop-scraper?fpr=sian)

#### Search, variant prices, reviews, shipping and store catalogs in one actor

##### For dropshippers, repricers and sourcing teams working with AliExpress

***

### 📋 Overview

This actor pulls AliExpress data in five ways: keyword search, the price and stock of every variant, buyer reviews, shipping quotes and store catalogs. You pick one operation per run and get one row per product, review or shipping option.

**What you get:**

- ✅ **Five operations in one input form**: search, SKU prices, reviews, shipping and store products
- ⚡ **Variant-level prices**: each SKU with its own price, sale price and stock count, plus the price range across all variants
- 🎯 **Sourcing fields**: the sale price on every product and the list price where AliExpress shows one, units sold, rating, stock per variant and the shipping cost to your country
- 💎 **Review filters**: star rating, photo reviews, reviews with follow-ups, local reviews, newest first, with buyer country and an English translation
- 🌍 **Your market**: prices in 11 currencies and shipping quotes to 28 countries
- 💰 **Pay per row**: a small run-start fee, then one charge per row with data. Rows that come back empty or with an error add no row charge

### 🔎 What is the AliExpress Scraper — and when should you use it?

The **AliExpress Scraper** turns AliExpress search results, SKU prices and reviews into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

**Use it when you need:** search results with price, sale price, units sold, rating and product URL. The SKU operation returns every variant with its own price, sale price and stock. Reviews come one row each with stars, text, photos and buyer country. Shipping quotes give carrier, fee and delivery date for the country you pick, and the store operation returns a seller's catalog.

**Use something else when:** the products sit on a different marketplace. Use [Taobao & Tmall Product Scraper](https://apify.com/sian.agency/taobao-tmall-product-scraper?fpr=sian) for Taobao and Tmall product detail, shop catalogs, reviews and buyer Q\&A. Use [JD.com Product Scraper](https://apify.com/sian.agency/jd-com-product-scraper?fpr=sian) for JD.com product data from China's largest first-party retailer. Use [TikTok Shop Scraper](https://apify.com/sian.agency/tiktok-shop-scraper?fpr=sian) for TikTok Shop products, prices and sellers. One operation per run: search first to collect product IDs, then run SKU prices, reviews or shipping against those IDs.

### 🤖 Use with AI agents

Already connected to the [Apify MCP server](https://mcp.apify.com)? Just ask for this Actor by name: sian.agency/aliexpress-product-details

**Agentic payments:** Availability of [x402](https://www.x402.org/) and [Skyfire](https://www.skyfire.xyz/) depends on this Actor's current Store eligibility. Check the published listing for supported payment methods. Billing is the same either way: a small fee when the run starts, then per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

```text
I want AliExpress product, variant, review, shipping or store-catalog data using the Apify Actor `sian.agency/aliexpress-product-details`.

Use it when I need: search results with price, sale price, units sold, rating and product URL. The SKU operation returns every variant with its own price, sale price and stock. Reviews come one row each with stars, text, photos and buyer country. Shipping quotes give carrier, fee and delivery date for the country you pick, and the store operation returns a seller's catalog.

Don't use it when: the products sit on a different marketplace — use taobao-tmall-product-scraper or jd-com-product-scraper or tiktok-shop-scraper instead.

How to call it: pick one `operation` per run. `searchProducts` takes a `keyword` plus optional `sort`, `minPrice` and `maxPrice`. `skuPrices`, `productReviews` and `shippingEstimate` take an `itemId` (the number or the full product URL). `storeProducts` takes a `sellerId` (from a SKU Prices row) and a `storeId` (the number in the store's URL). `currency` and `shipFromRegion` set the price context, `shipToCountry` the shipping destination, and `maxPages` caps search, reviews and store products.

Start with this input:
{
  "operation": "searchProducts",
  "keyword": "bluetooth earbuds",
  "sort": "salesDesc",
  "minPrice": 5,
  "maxPrice": 40,
  "currency": "USD",
  "maxPages": 1
}

Ask me which keyword, product ID or seller to look up, and which currency and destination country the prices should use, then run the Actor and summarise the results as a table.
```

**Things you can ask your agent for:**

- *Find the best-selling bluetooth earbuds between $5 and $40 and rank them by units sold.*
- *Pull every variant price and stock level for this AliExpress listing in euros.*
- *Get the one-star reviews for this product and summarise what buyers complain about.*

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at [apify.com/sian.agency/aliexpress-product-details.md](https://apify.com/sian.agency/aliexpress-product-details.md).

***

### ✨ Features

- 🔎 **Keyword search**: about 20 products per page with title, price, sale price, units sold and rating, sorted by best match, sales or price, with an optional price range
- 💰 **SKU prices**: every variant with skuId, options, price, sale price and stock, in the currency you choose
- ⭐ **Reviews**: paginated, filtered by stars or photos, with buyer country, the variant they bought and a translation
- 🚚 **Shipping quotes**: carrier, fee, delivery window, estimated delivery date and tracking for one destination country and quantity
- 🛍️ **Store products**: a seller's catalog with price, sale price and rating per product
- 📄 **Run report**: every run saves an HTML report with row counts, charges and a fix for anything that failed

***

### 🎬 Quick Start

Press **Start** with the prefilled input to search for "bluetooth earbuds", or call the API:

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

***

### 🚀 Getting Started

#### Step 1: Pick an operation

`searchProducts`, `skuPrices`, `productReviews`, `shippingEstimate` or `storeProducts`.

#### Step 2: Fill in the one field it needs

A keyword for search. A product ID or product URL for SKU prices, reviews and shipping. A seller ID plus a store ID for store products: the seller ID is on every SKU Prices row, and the store ID is the number in the store's URL.

#### Step 3: Run and export

Download the dataset as JSON, CSV or Excel, or open the **Overview** view in the Output tab.

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| operation | string | Yes | searchProducts (default), skuPrices, productReviews, shippingEstimate, storeProducts |
| keyword | string | searchProducts | What to search for |
| itemId | string | skuPrices, productReviews, shippingEstimate | Product ID (`3256812550576374`) or the full product URL |
| sellerId | string | storeProducts | Numeric seller ID, shown on SKU Prices rows |
| storeId | string | storeProducts | Numeric store ID: the number in the store's URL |
| maxPages | integer | No | Pages for search, reviews and store products (default 5, max 50) |
| sort | enum | No | default, salesDesc, priceAsc, priceDesc |
| minPrice / maxPrice | number | No | Price range for search |
| currency | enum | No | USD (default), EUR, GBP, CAD, AUD, BRL, MXN, PLN, TRY, JPY, KRW |
| shipFromRegion | enum | No | Market used for prices and availability (default US; use UK for the United Kingdom) |
| reviewFilter | enum | No | allReviews, hasImage, hasAdditional, isLocal, fiveStar … oneStar |
| reviewSort | enum | No | default, latest |
| shipToCountry | enum | No | Destination for shipping quotes (default US) |
| quantity | integer | No | Units for the shipping quote (default 1) |

**Example: search**

```json
{
  "operation": "searchProducts",
  "keyword": "bluetooth earbuds",
  "sort": "salesDesc",
  "maxPages": 2
}
```

**Example: variant prices in euros**

```json
{
  "operation": "skuPrices",
  "itemId": "https://www.aliexpress.com/item/3256812550576374.html",
  "currency": "EUR",
  "shipFromRegion": "DE"
}
```

***

### 📤 Output

Each row carries the fields for its operation, plus `_operation`, `status` and `_fetchedAt`. Empty fields are left out.

| Field | Type | Description |
|-------|------|-------------|
| itemId | string | AliExpress product ID |
| productTitle | string | Product title |
| promotionPrice / price | number | Sale price, and the list price where AliExpress shows one (lowest variant when prices vary). Search rows carry the sale price only |
| priceRange / promotionPriceRange | string | Price span across variants, e.g. `28.65 - 31.84` |
| sales | integer | Units sold |
| averageStarRate | number | Average rating, 0 to 5 |
| skuVariants | array | Every variant: skuId, options, price, sale price, stock |
| reviewStars / reviewContent / reviewTranslated | integer / string | Review rating, original text, English translation |
| buyerCountry | string | Reviewer's country code |
| shippingCompany / shippingFee / estimateDeliveryDate | string / number / string | Carrier, cost and expected delivery date |
| sellerId / storeId | string | Seller and store IDs for the store-products operation |
| productUrl / imageUrl | string | Product page and main image |

**Example row (search):**

```json
{
  "itemId": "1005009001831273",
  "productTitle": "Pretty Pink Sakura Flower Phone Case for Oppo Realme C55",
  "promotionPrice": 2.55,
  "currency": "EUR",
  "sales": 6,
  "productUrl": "https://www.aliexpress.com/item/1005009001831273.html",
  "status": "success",
  "_operation": "searchProducts",
  "_page": 1
}
```

***

### 💼 Use Cases & Examples

#### 1. Product research for a dropshipping store

**Input:** `{"operation":"searchProducts","keyword":"pet hair remover","sort":"salesDesc","maxPages":3}`
**Output:** up to 60 products ordered by units sold, with prices and ratings.
**Use:** shortlist items with steady sales and good ratings, then pull their variant prices.

#### 2. Variant price and stock monitoring

**Input:** `{"operation":"skuPrices","itemId":"3256812550576374"}`
**Output:** one row with every variant's skuId, options, price, sale price and stock.
**Use:** schedule it daily and alert when a variant sells out or its sale price changes.

#### 3. Reading complaints before you source

**Input:** `{"operation":"productReviews","itemId":"3256812550576374","reviewFilter":"oneStar","maxPages":5}`
**Output:** one-star reviews with text, translation, photos, buyer country and the variant bought.
**Use:** catch sizing and quality problems before you order stock.

#### 4. Checking a supplier's range

**Input:** `{"operation":"storeProducts","sellerId":"6000413074","storeId":"1104026059"}`
**Output:** the seller's catalog with price, sale price, units sold and rating per product.
**Use:** see what else a supplier sells before you commit to one of their products.

#### 5. Landed cost to a specific country

**Input:** `{"operation":"shippingEstimate","itemId":"3256812550576374","shipToCountry":"US","quantity":2}`
**Output:** each shipping option with carrier, fee, delivery window and estimated delivery date.
**Use:** add the variant price and the shipping fee to get your real cost per unit.

***

### 🔗 Integration Examples

#### JavaScript/Node.js

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

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

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

#### Python

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

run = client.actor('sian.agency/aliexpress-product-details').call(
    run_input={'operation': 'searchProducts', 'keyword': 'bluetooth earbuds', 'maxPages': 1}
)

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

#### cURL

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

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

1. **Trigger**: a schedule (say, a daily price check) or a webhook
2. **HTTP Request**: start the actor with the operation and input you need
3. **Process**: keep rows where `status` is `success`
4. **Action**: write them to Google Sheets, a database or your repricing tool

***

### 📊 Performance & Pricing

#### Free plan

- All five operations
- Up to 25 rows per run, enough to check the data before you scale up

#### Paid plans

- No row cap; `maxPages` sets how far a run goes
- A small fee when the run starts, then you pay per successful row. Empty results and error rows add no row charge.
- Search results, reviews and store products are priced per row; SKU prices are priced per product; shipping quotes per shipping option

🔗 [See current prices](https://apify.com/sian.agency/aliexpress-product-details?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: Where do I find the itemId?**
A: It is the number in the product URL (`aliexpress.com/item/3256812550576374.html`). You can also paste the whole URL. Search results return the ID on every row.

**Q: Where do I get the sellerId and storeId?**
A: Run `skuPrices` on any product from that seller: the row carries its `sellerId`. The `storeId` is the number in the seller's store URL (`aliexpress.com/store/1104026059`).

**Q: Can I get only reviews with photos?**
A: Yes. Set `reviewFilter` to `hasImage`.

**Q: Which currencies and countries work?**
A: The ones in the input dropdowns: 11 currencies and 28 countries. Use `UK` for the United Kingdom.

**Q: How many products does a search page hold?**
A: About 20. With `maxPages` at 50 a run can return around 1,000 products.

**Q: Why did a product return "not found"?**
A: The product may have been removed, or it isn't sold in the market you picked. Try `shipFromRegion` US. If AliExpress is briefly unavailable, the row says so; run it again a few minutes later.

**Q: Is this legal?**
A: The actor collects publicly listed product data. See the [legal section](#️-is-it-legal-to-scrape-data).

***

### 🐛 Troubleshooting

**Search returns no products**

- Check the keyword spelling or try a broader term
- Widen or remove the price range

**Store products returns unrelated items**

- Take the `sellerId` from a SKU Prices row and the `storeId` from that seller's own store URL (`aliexpress.com/store/<storeId>`). Any other pairing can return a different store's catalog

**Shipping returns "does not ship"**

- The product doesn't ship to that country. Try another `shipToCountry`.

**The run stopped at 25 rows**

- That is the free plan limit. A paid Apify plan removes it.

***

### ⚠️ Trademark Disclaimer

AliExpress is a registered trademark of Alibaba Group. This actor is an independent tool developed by SIÁN Agency and is not affiliated with, endorsed by, or sponsored by Alibaba Group or AliExpress. Product data belongs to its respective owners.

***

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

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

***

### 🤝 Support

- Report a problem in the actor's [Issues tab](https://apify.com/sian.agency/aliexpress-product-details/issues?fpr=sian)
- More tools in the [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian)
- 📧 <apify@sian-agency.online>

***

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

# Changelog

This Actor's version history is a separate document: https://apify.com/sian.agency/aliexpress-product-details/changelog.md

# Actor input Schema

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

🔍 One operation per run:

- **Search Products**: keyword search, 20 products per page
- **SKU Prices**: every variant with price, promo and stock
- **Product Reviews**: buyer reviews with star and photo filters
- **Shipping Estimate**: carriers, fees and delivery dates
- **Store Products**: a store's catalog

💡 Search first, then reuse `itemId`.

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

🔎 **Required for Search Products.** What you would type into the AliExpress search bar, e.g. `bluetooth earbuds`.

About 20 products per page, each with title, price, sale price, units sold, rating and image.

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

🆔 **Required for SKU Prices, Product Reviews and Shipping Estimate.** An AliExpress product ID or the full product URL.

- From a URL: `https://www.aliexpress.com/item/3256812550576374.html` → `3256812550576374`
- From a Search Products row: the `itemId` field

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

👤 **Required for Store Products.** The numeric seller ID — the `sellerId` field of a SKU Prices row.

## `storeId` (type: `string`):

🏪 **Required for Store Products, together with Seller ID.** The number in the store's URL (`aliexpress.com/store/1104026059` → `1104026059`). It must be that seller's store: any other pairing can return a different store's catalog.

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

📄 **Search Products, Product Reviews, Store Products.** Pages to fetch, 20 rows per page, up to 50. Other operations ignore it.

🆓 Free Apify plans get 25 rows per run.

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

↕️ **Search Products and Store Products.** Order of the listing.

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

💵 **Search Products.** Lowest price to include, in the currency you pick below.

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

💎 **Search Products.** Highest price to include, in the currency you pick below.

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

💱 Currency for every price in the results.

## `shipFromRegion` (type: `string`):

🗺️ The AliExpress market to read prices and availability from (Search, SKU Prices, Reviews, Store Products).

## `reviewFilter` (type: `string`):

⭐ **Product Reviews.** Which reviews to return: all, with photos, with follow-up feedback, from buyers in your region, or one star rating.

## `reviewSort` (type: `string`):

📅 **Product Reviews.** Default order or newest first.

## `shipToCountry` (type: `string`):

🌍 **Shipping Estimate.** Destination country for the shipping quote.

## `quantity` (type: `integer`):

📦 **Shipping Estimate.** How many units to quote shipping for.

## Actor input object example

```json
{
  "operation": "searchProducts",
  "keyword": "bluetooth earbuds",
  "itemId": "3256812550576374",
  "sellerId": "6000413074",
  "storeId": "1104026059",
  "maxPages": 5,
  "sort": "default",
  "currency": "USD",
  "shipFromRegion": "US",
  "reviewFilter": "allReviews",
  "reviewSort": "default",
  "shipToCountry": "US",
  "quantity": 1
}
```

# Actor output Schema

## `aliexpress` (type: `string`):

One row per product, SKU, review or shipping option, depending on the operation you ran.

## `report` (type: `string`):

HTML summary of the run: rows returned, anything that needs a fix, and what you were charged.

# 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 = {
    "operation": "searchProducts",
    "keyword": "bluetooth earbuds",
    "itemId": "3256812550576374",
    "sellerId": "6000413074",
    "storeId": "1104026059",
    "maxPages": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/aliexpress-product-details").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 = {
    "operation": "searchProducts",
    "keyword": "bluetooth earbuds",
    "itemId": "3256812550576374",
    "sellerId": "6000413074",
    "storeId": "1104026059",
    "maxPages": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/aliexpress-product-details").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 '{
  "operation": "searchProducts",
  "keyword": "bluetooth earbuds",
  "itemId": "3256812550576374",
  "sellerId": "6000413074",
  "storeId": "1104026059",
  "maxPages": 5
}' |
apify call sian.agency/aliexpress-product-details --silent --output-dataset

```

## MCP server setup

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

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/5gnC9dvLeF4ajvEC8/builds/jHlgEwEwSiTeEihwC/openapi.json
