AliExpress
AliExpress through the normalized schema — the same operations, parameters and response shape as every other marketplace.
AliExpress has two surfaces. This page is the normalized one — the same SearchResult and Product
that Amazon, eBay, Shopify and Walmart return, so one parser reads all five.
| endpoint | returns | price | |
|---|---|---|---|
| search | GET|POST /v1/aliexpress/search | SearchResult | $0.001 |
| browse | GET|POST /v1/aliexpress/browse | SearchResult | $0.001 |
| categories | GET|POST /v1/aliexpress/categories | CategoryList | $0.001 |
| image-search | POST /v1/aliexpress/image-search | SearchResult | $0.001 |
| product | GET|POST /v1/aliexpress/product | Product | $0.001 |
The older endpoints — /aliexpress/keyword-search, /aliexpress/product-details,
/aliexpress/image-search — still answer, unchanged, but they are deprecated, have no v1 URL, and
sunset on 20 October 2026. They are no longer documented: start here instead. If you are migrating
off them, Versioning has the rename table.
/v1/aliexpress/image-search and /aliexpress/image-search are different endpoints. The versioned
one is the normalized visual search documented below. The unversioned one is the older dialect, whose
response shape is AliExpress's own — same segment, different body. Outside v1 the normalized visual
search keeps its old name, /aliexpress/visual-search, because the canonical segment was already taken
there; inside v1 the dialect is simply not present, so the canonical name is free.
Things specific to AliExpress
Variants are not separately fetchable. A size or colour is a SKU inside one product, so
variant.productId is absent — one call gives you the whole variation matrix, with per-SKU prices and
stock.
A price filter matches any variant. AliExpress products often span a price range, and a filter
matches a product if any of its variants falls in the band — while the card reports the lowest ("from")
price. So a priceMin=40 request can return a row displaying $28 whose $50 variant matched. About
90–95% of returned rows land inside the band; filter the returned price yourself if you need a hard
bound.
No reviews operation. A product carries an aggregate rating (rating.average and rating.count)
but no review rows.