Switching from AliExpress Search Scraper to AliExpress Search Scraper
AliExpress Search Scraper (arcadium/aliexpress-search) reads input written for kawsar/aliexpress-search-scraper: 5 of its 9 input fields work as they are. Field list from its public input schema (build 0.0.13, 2026-10-31); prices and run results from the public Apify API, 2026-11-02.
Their fields that work as they are
| Their field | Type | Note |
|---|---|---|
keywords | array | As is |
sort | string | As is |
minPrice | number | As is |
maxPrice | number | As is |
maxItems | integer | Read as the result cap per keyword. |
Their fields this actor does not read
minRating, minOrders, maxPages, requestTimeoutSecs. Leave them out of the input; the actor’s own options are in the guide.
Side by side: their input, our rows
Input written for kawsar/aliexpress-search-scraper, pasted unchanged:
{
"keywords": [
"wireless earbuds"
],
"sort": "orders",
"minPrice": 5,
"maxPrice": 30,
"maxItems": 100
}One row from arcadium/aliexpress-search (README example; long text shortened):
{
"rowType": "product",
"platform": "aliexpress",
"productId": "1005007097199333",
"title": "Wireless LED Night Lights Motion Sensor Lights Closet Kitchen",
"url": "https://www.aliexpress.com/item/1005007097199333.html",
"price": 0.33,
"currency": "USD",
"originalPrice": 5.36,
"discountPercent": 93,
"soldText": "100K+ sold",
"soldMin": 100000,
"soldCount": 241114,
"rating": 4.9,
"shipFrom": "CN",
"isAd": false,
"searchTerm": "lamp",
"searchRank": 1
}Output fields: rowType, statedResults, sampleSize, sort, priceBands, newUserPromoShare, discountStats, soldStats, salesConcentration, adShare, choiceShare, freeShippingShare, ratingStats, shipFromMix, deliveryMaxDaysMedian, trends, trendsStatus, generatedAt, platform, productId, title, url, price, priceMax, currency, originalPrice, discountPercent, promoPrice, promoType, soldText, soldMin, soldCount, rating, imageUrl, shipFrom, freeShipping, deliveryText, deliveryMinDays, deliveryMaxDays, isChoice, isAd, looseMatch, searchTerm, searchRank, scrapedAt, input, code, message. The rows use these names, not the other actor’s.
Price
| Actor | Pricing model | Charged per | Per 1,000, Free plan | Per 1,000, lowest plan |
|---|---|---|---|---|
| arcadium/aliexpress-search | Pay per event | Product | $2.25 | $1.50 |
| kawsar/aliexpress-search-scraper | Pay per event | result | $9.00 | $6.00 |
Live Apify prices on 2026-11-02, in USD, for each actor’s main charged event. Start fees and platform usage are not included. Units differ: compare what one charged row contains. The Store page of each actor is the current source.
Common issues: failed or timed-out runs
- AliExpress Search Scraper timed out: 8.3% of 4,058 runs timed out.
| Actor | Runs, last 30 days | Failed | Timed out |
|---|---|---|---|
| arcadium/aliexpress-search | under 50 runs | - | - |
| kawsar/aliexpress-search-scraper | 4,058 | 0.0% | 8.3% |
Apify’s public run statistics for each actor, last 30 days to 2026-11-02: FAILED and TIMED-OUT runs as a share of all runs. Shown from 50 runs. A failed run can also come from a bad input. Here an input that cannot be read comes back as a free error row with a code, and the other inputs still arrive.
How to switch
In the Apify Store
- Open arcadium/aliexpress-search and sign in to Apify.
- On the Input tab, switch the editor to JSON and paste the input you used for kawsar/aliexpress-search-scraper, without the fields listed above as not read.
- Start the run. Set a maximum cost per run in the run options if you want a hard cap.
Over the API
Change the actor ID in the URL from kawsar~aliexpress-search-scraper to arcadium~aliexpress-search; the body stays the same apart from the fields this actor does not read.
curl -X POST "https://api.apify.com/v2/acts/arcadium~aliexpress-search/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keywords":["wireless earbuds"],"sort":"orders","minPrice":5,"maxPrice":30,"maxItems":100}'
In n8n
In the Apify node, change the actor to arcadium/aliexpress-search and keep the input JSON. With an HTTP Request node:
{
"nodes": [
{
"name": "Run arcadium/aliexpress-search",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4,
"position": [
0,
0
],
"parameters": {
"method": "POST",
"url": "https://api.apify.com/v2/acts/arcadium~aliexpress-search/run-sync-get-dataset-items",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "{\"keywords\":[\"wireless earbuds\"],\"sort\":\"orders\",\"minPrice\":5,\"maxPrice\":30,\"maxItems\":100}",
"options": {
"timeout": 300000
}
}
}
],
"connections": {}
}
From an AI assistant (MCP)
Add the actor as a tool on Apify’s MCP server; an agent can pass the same input fields.
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=arcadium/aliexpress-search",
"headers": {
"Authorization": "Bearer <APIFY_TOKEN>"
}
}
}
}