AliExpress Products Scraper avatar

AliExpress Products Scraper

Pricing

from $1.05 / 1,000 results

Go to Apify Store
AliExpress Products Scraper

AliExpress Products Scraper

Product listings from AliExpress search and category pages: title, sale and original price, star rating, orders sold, images and badges. Locale-pinned so language and currency stay fixed, with cross-page de-duplication.

Pricing

from $1.05 / 1,000 results

Rating

0.0

(0)

Developer

Ibnu Adzim

Ibnu Adzim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Product listings from AliExpress search and category pages — title, sale and original price, star rating, orders sold, images and promo badges.

HTTP only, no browser, no login. Locale is pinned, so language and currency stay fixed no matter which country your proxy exits from.

Input

{
"mode": "search",
"keywords": ["mechanical keyboard", "usb c hub"],
"locale": "US",
"sortBy": "orders",
"maxPages": 3,
"maxItems": 200
}

Or point it at listing URLs you already have:

{
"mode": "urls",
"listingUrls": ["https://www.aliexpress.com/w/wholesale-headphones.html"],
"locale": "DE"
}

What you get

recordTypeOne perCarries
SEARCH_SUMMARYkeyword / URLpages fetched, rows fetched vs returned, duplicates dropped, upstream's total per page, why paging stopped, how many products had no price
PRODUCTproductid, URL, title, prices, rating, orders, images, badges — plus the full raw upstream object
ERRORfailed inputwhy
{
"recordType": "PRODUCT",
"productId": "3256809308143808",
"productUrl": "https://www.aliexpress.com/item/3256809308143808.html",
"title": "AJAZZ NK61 Wired Mechanical Keyboard 61 Keys 60% Compact...",
"currencyCode": "USD", "salePrice": 14.18, "originalPrice": 48.25,
"starRating": 4.9,
"ordersText": "10,000+ sold", "ordersMin": 10000,
"sellingPoints": ["New shoppers save $34.07", "Lowest price in 90 days"],
"imageUrls": ["https://ae-pic-a1.aliexpress-media.com/kf/....jpg", "..."],
"raw": { "...": "upstream's object, untouched" }
}

Known limits — read these before you rely on the output

Listings only. Product detail pages are not supported. /item/… pages and per-buyer review text sit behind Alibaba's Baxia WAF with no HTTP-only path (10+ endpoints were probed). A detail URL is refused with an explanation rather than half-working.

The same search returns different products each time. Page 1 was fetched twice, back to back, identical URL and session: 28 of 60 products matched — 32 differed. That is upstream ranking churn, not this actor. Consequences: products are de-duplicated by id across pages automatically (duplicatesDropped tells you how many), and two runs with identical input will legitimately differ. If you need a stable set, run wider (more pages) rather than repeating.

upstreamTotalResultsByPage is reported, not trusted. AliExpress's own result count for one query moved between 62,054 and 5,713 / 5,727 / 5,730 within a single session. It is passed through per page so you can see the wobble, and is never used to compute completeness or page counts.

Some genuine products ship with no price. Upstream sends prices: null on a real minority of listing cards — same itemType, real id, real title, ratings and images all present. Measured 27 of 60 on "phone case", 0 of 60 on "mechanical keyboard": it varies by query. Those rows keep salePrice: null; nothing is defaulted to 0. The rate per query is in the summary's productsWithoutPrice.

Orders are a band, not a count. Upstream publishes "10,000+ sold", never an exact figure. ordersMin is the parsed lower bound and ordersText keeps the original string. Do not treat ordersMin as a sales total.

Locale changes results, not just labels. With no locale pinned, AliExpress decides from the exit IP — an Indonesian exit returned Indonesian titles and IDR prices, and a different ranking (a straw handbag was the top hit for "laptop"; with US it was an actual MSI laptop). This actor always pins the locale cookie, so your proxy country does not leak into your data.

Seller/store data is gone. AliExpress removed per-item store fields from this payload in 2026 — store is null on every row. That is upstream, not a parsing gap, so no store column is offered.

Technical

Server-rendered listing pages; the payload is a JSON object on window._dida_config_._init_data_. 60 products per page.

The WAF here (Alibaba Baxia/Aliyun) answers with HTTP 200 and a challenge body, never a 4xx — so every response is body-scanned for challenge markers before being treated as content, and a challenge rotates both TLS profile and exit IP. No challenge was encountered on the listing surface during testing.

robots.txt checked: no ClaudeBot/anthropic-ai group, no blanket disallow, /w/ not disallowed.

Full recon trail is in CRAWLING_METHOD.md.