AliExpress Products Scraper avatar

AliExpress Products Scraper

Pricing

Pay per event

Go to Apify Store
AliExpress Products Scraper

AliExpress Products Scraper

Extract public AliExpress product pages and direct search cards with product ID, title, price, rating, orders, store, image, and URL. Keyless direct HTTP first; optional residential fallback makes one retry only after a block.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

7 days ago

Last modified

Categories

Share

Search AliExpress and get structured product rows back: product ID, title, current price, the price it was before the discount, discount percentage, star rating, order count, image and product URL.

No AliExpress account, no API key, no browser, no proxy of your own. Type a search term, get rows.

Price

$0.12 per 1,000 products, plus $0.001 to start a run.

That is the lowest price for AliExpress product data on Apify. The next cheapest charges $0.14 per 1,000 with a $0.005 start fee; after that the field jumps to $0.90, and the two most-installed AliExpress scrapers charge $1.50 and $2.00 per 1,000.

You are charged per product row returned. A run that finds nothing costs only the start fee, and sample and diagnostic rows are never charged.

ProductsCost
500$0.06
1,000$0.12
10,000$1.20
100,000$12.00

Prices come back in one currency

AliExpress decides display currency from wherever the request came from. Left alone, a scraper that rotates through proxies returns some rows in USD, some in CAD, some in EUR — with nothing in the row saying which, unless you check every one. This happened during development: identical searches came back in CAD and USD depending on the exit address.

This Actor pins currency and ship-to country for every request, so price means one thing across the whole dataset. Set currency to USD, EUR, GBP, CAD, AUD, BRL, RUB, JPY, KRW or INR. Verified on a real run: 150 rows requested in EUR came back 150/150 in EUR.

What a row looks like

{
"productId": "1005010018401645",
"title": "Leather Phone Case For iPhone 17 Pro Max 16 18 Pro Max 13 11 15 14 Plus 12 Shockproof Soft TPU Funda Cover",
"productUrl": "https://www.aliexpress.com/item/1005010018401645.html",
"price": 1.39,
"originalPrice": 2.96,
"discountPercent": 53,
"currency": "EUR",
"rating": 4.6,
"orders": 18096,
"ordersText": "10,000+ sold",
"imageUrl": "https://ae-pic-a1.aliexpress-media.com/kf/Sc2976671fe8c4f6b83e3de29cab49c3fH.jpg",
"isChoice": true,
"isAd": false,
"searchKeyword": "phone case",
"page": 1,
"position": 7,
"scrapedAt": "2026-08-09T07:02:11.031Z"
}

orders is the exact number AliExpress tracks internally. ordersText is the rounded badge shown on the page — "10,000+ sold" for the same product above. Both are included because the badge is what a buyer sees and the number is what you can sort on.

Field coverage

Measured over a real 150-row run:

FieldPresent
productId, title, productUrl, price, currency, imageUrl100%
orders, ordersText99%
rating97%
discountPercent39%
originalPrice29%

originalPrice and discountPercent are only present where the seller is actually running a markdown. Most listings are sold at one price, and those rows get null rather than a copy of the current price dressed up as a discount.

Input

FieldWhat it does
searchQueriesWhat to search for. One row per product found.
productUrlsOr paste AliExpress search URLs — the keyword is read out of the URL.
maxItemsTotal products across all terms. Default 40, ceiling 5,000.
currencyCurrency every price is returned in. Default USD.
countryTwo-letter ship-to country used for pricing. Default US.
requestDelayMsGap between page requests. Default 800.
{
"searchQueries": ["phone case", "wireless earbuds"],
"maxItems": 1000,
"currency": "USD",
"country": "US"
}

Run it with no input and you get one labelled sample row, uncharged, so you can see the shape before spending anything.

Limits

Read this part before you build on it.

  • No sorting. AliExpress's mobile listings serve one order — its own relevance ranking. The desktop sort parameters were tested against it and do nothing: sort=price_asc returned results identical to the default, and sortType=... returned a page with no results at all. Rather than expose a dropdown that silently changes nothing, there isn't one. Sort the dataset yourself.
  • About 20–25% of rows are paid placements. They are real listings and are marked isAd: true, so you can filter them.
  • No seller or store fields. AliExpress removed store name, seller ID and seller country from its search cards. Nothing in the response carries them, so no store column is returned rather than one that is always empty.
  • No review text or shipping cost. Both live on the product page, which this does not open.
  • orders is lifetime, not recent — it is the cumulative count AliExpress reports.
  • 20 products per page, so a 1,000-product run is 50 requests.
  • Results reshuffle between pages. Products are de-duplicated by ID as they are collected, so maxItems means unique products.

FAQ

Do I need an AliExpress account or API key? No. Everything it reads is public.

Do I need residential proxies? No, and it deliberately does not offer them. See "How it works".

How fast is it? 1,000 products in 139 seconds on the default settings.

What does it cost to scrape 1,000 AliExpress products? $0.12, plus the $0.001 start fee.

How deep can it go on one search term? Page 60 was still serving a full 20 results in testing, with no ceiling found. Depth is limited by maxItems, not by the site.

Can I get prices in my own currency? Yes — set currency and country. Every row in the run comes back in that currency.

Is isChoice the same as the AliExpress Choice badge? Yes, it flags listings in the Choice programme.

Can I export to CSV or Excel? Yes — Apify exports the dataset as JSON, CSV, Excel or XML, with a REST endpoint for the same data.

Is this affiliated with AliExpress or Alibaba? No. It reads public listing data. Check AliExpress's terms and your own local rules before using the output commercially.

How it works

www.aliexpress.com is behind Alibaba's punish gate. It serves results for a while — roughly twenty requests during testing — and then refuses every exit address and keeps refusing. Measured after that point: Apify datacenter 0 of 10, rented static-ISP addresses 0 of 3, and an ordinary home connection, all returning the same 2 KB challenge script. Switching TLS fingerprints did not help. This is why AliExpress scrapers usually cost what they cost: they answer it with headless browsers and residential bandwidth, and bill that through.

m.aliexpress.com is a different gate. On the very same address that www had just refused, the mobile host returned a full 290 KB result page, and plain datacenter addresses then served pages 1 through 60 without a single refusal. It also server-renders its results into the HTML, so there is one request per 20 products and no API to reverse-engineer.

No browser, no residential bandwidth, no Chinese IP. That is the whole reason this can be the cheapest AliExpress scraper on the platform and still make money.