Blog / API guides

AliExpress Product API: Search, Reviews and Shipping

AliExpress's own Open Platform is built for affiliates, sellers and dropshippers, each with their own app keys and approval. To read AliExpress product data as JSON without that, the Perceptlayer AliExpress API chains four GET endpoints: search (required query, page, sort), product (product_id), product-reviews (product_id, page, page_size, filter) and product-shipping (product_id, country). Each successful call costs 1 credit.

What does AliExpress's own API cover?

AliExpress's Open Platform is organised around who is calling. Its getting-started guide has separate tracks for affiliate developers, sellers' apps and dropshipping developers, and seller apps must be authorised by the seller before they call any API (AliExpress Open Platform, 2026). The affiliate programme accepts publishers with an online presence and traffic (AliExpress Portals, 2026).

That's the right route if you promote AliExpress products for commission or run a store on it. If you need to read product listings, reviews and shipping options for research, price monitoring or an agent, without joining a programme, the AliExpress API returns them as JSON with one key. Data is collected from publicly available sources and returned as found at the time of the call.

Which AliExpress endpoints are there?

Nine GET endpoints in three groups: finding products, reading one product, and reading a store. Every one costs 1 credit per successful call. Most parameters are required, so a call missing one fails with invalid_parameters (422) and costs nothing. The table lists each endpoint with its required inputs.

Endpoint Returns Required
/v1/aliexpress/autocomplete Search suggestions query (up to 100 characters)
/v1/aliexpress/search A page of products query, page, sort
/v1/aliexpress/product One product product_id
/v1/aliexpress/product-description Its description description_ref
/v1/aliexpress/product-reviews A page of reviews product_id, page, page_size, filter
/v1/aliexpress/product-shipping Shipping options product_id, country
/v1/aliexpress/store A store seller_id, store_id
/v1/aliexpress/store-benefits Store benefits seller_id, store_id
/v1/aliexpress/store-products A store's products seller_id, store_id

The chain this guide follows is search, then product, then reviews and shipping. The product description is a separate call because it takes a description_ref rather than the product ID; read that reference from the product response.

How do you search AliExpress products?

Call GET /v1/aliexpress/search with all three required parameters: the query, the page number and a sort. Add min_price and max_price to bound the price, ship_from to restrict where items ship from, and filters[] for the site's own filters. This request asks for the first page of phone cases, sorted by number of orders:

curl "https://api.perceptlayer.com/v1/aliexpress/search?query=phone+case&page=1&sort=orders" \
  -H "X-API-Key: $API_KEY"

Keys go in the X-API-Key header and start with sk_live_. Get a free API key, and see the authentication docs for the details.

Parameter Type Required Notes
query string yes Up to 200 characters
page integer yes Start at 1
sort string yes default, orders, price_asc or price_desc
min_price, max_price number no Price bounds
ship_from string no Where the item ships from
filters[] list of strings no The site's search filters

autocomplete is a quick way to find the wording buyers use: send a partial term as query and it returns AliExpress's suggestions, which make better search queries than guesses.

What does a search response contain?

Our recorded search for query=wireless earbuds&page=1&sort=orders returns total_results 16,557 with page_size 60, and a results array. This is the first result, trimmed with …:

{
  "success": true,
  "data": {
    "query": "wireless earbuds",
    "sort": "orders",
    "page": 1,
    "page_size": 60,
    "total_results": 16557,
    "has_more": true,
    "results": [
      {
        "product_id": "3256812408115438",
        "title": "HTC NE79 TWS Bluetooth 6.0 Earbuds AI Translation 135 Languages ENC Noise Cancelling HiFi Stereo Headphones with LED Display",
        "url": "https://www.aliexpress.com/item/3256812408115438.html",
        "price": { "amount": 4.35, "currency": "USD", "formatted": "US $4.35" },
        "original_price": { "amount": 17.31, "currency": "USD", "formatted": "US $17.31" },
        "discount_percent": 74,
        "rating": 4.9,
        "sold_count": 17921,
        "sold_text": "10,000+ sold",
        "selling_points": ["Fastest delivery in 6 days"],
        "is_sponsored": false,
        …
      },
      …
    ]
  }
}

product_id is what the product, reviews and shipping endpoints take. price.amount is the price shown, and original_price with discount_percent shows the advertised discount: 4.35 against 17.31 here. sold_count is a number while sold_text is the rounded label, so use the number for ranking. is_sponsored marks paid placement; filter on it before you treat order rank as popularity.

How do you get a product's reviews?

Call GET /v1/aliexpress/product-reviews with the product_id and the three paging and filter parameters, all required. page and page_size control the paging, and filter picks which reviews: all, local, image (reviews with photos) or additional. Nothing is documented about the largest page_size the endpoint accepts, so test it in the playground before you pick one.

curl "https://api.perceptlayer.com/v1/aliexpress/product-reviews?product_id=$PRODUCT_ID&page=1&page_size=20&filter=all" \
  -H "X-API-Key: $API_KEY"
Parameter Type Notes
product_id string, required From the search results
page integer, required Start at 1
page_size integer, required Reviews per page
filter string, required all, local, image or additional

The image filter is useful when you want reviews that show the item, for example to check that a product matches its listing photos. Reviews are written by people, so drop reviewer names and anything else that identifies them unless you have a reason and a lawful basis to keep it.

This Python loop pulls a fixed number of review pages for a list of products and saves each page as it arrives, so one failure doesn't lose the rest:

import json
import os
import requests

BASE = "https://api.perceptlayer.com/v1/aliexpress"
HEADERS = {"X-API-Key": os.environ["API_KEY"]}
PRODUCT_IDS = ["3256812408115438"]  # product_id values from search
PAGES = 3

spent = 0
for pid in PRODUCT_IDS:
    for page in range(1, PAGES + 1):
        r = requests.get(f"{BASE}/product-reviews", headers=HEADERS, timeout=60,
                         params={"product_id": pid, "page": page, "page_size": 20, "filter": "all"})
        if r.status_code != 200:
            print(pid, page, r.json()["error"]["code"])
            break
        spent += int(r.headers["X-Credits-Used"])
        with open(f"reviews-{pid}-{page}.json", "w") as f:
            json.dump(r.json(), f)
print("credits used:", spent)

We haven't run this loop live for this article, and the reviews response isn't recorded, so it saves pages as returned. The loop moves to the next product on the first error, and a failed call adds nothing to spent because it costs nothing. The errors docs list the codes you might see.

How do you check shipping to a country?

Call GET /v1/aliexpress/product-shipping with the product_id and the destination country. Shipping options and costs on AliExpress depend on where the buyer is, so a price comparison that ignores shipping compares the wrong numbers. One call returns the options for one product to one country.

curl "https://api.perceptlayer.com/v1/aliexpress/product-shipping?product_id=$PRODUCT_ID&country=US" \
  -H "X-API-Key: $API_KEY"

The country parameter is a string with no documented format beyond that, so confirm the code style the endpoint expects in the playground first. If you sell into several markets, multiply: 50 products checked for 4 countries is 200 calls.

What does a 100-product review pull cost?

Each endpoint is 1 credit per successful call, so the cost is the number of calls. Take 100 products from search results: the search pages to find them, 100 product calls, 3 pages of reviews each and one shipping check each to a single country. The recorded search returned page_size 60, so 100 products take 2 search pages.

Step Calls Credits
search, 2 pages of 60 2 2
product for 100 products 100 100
product-reviews, 3 pages × 100 products 300 300
product-shipping, 1 country × 100 products 100 100
Total 502 502

That's 502 credits, inside the 1,000 free credits a month. Repeat it weekly to track new reviews and it's 502 × 4 = 2,008 credits a month, within the Starter pack's 10,000. To cut it, skip product for products you already have and fetch only page 1 of reviews on later runs. Failed calls cost nothing; the credits docs explain the balance, and pricing has what packs cost.

For comparing AliExpress prices with other marketplaces, the Walmart product search guide and the Google Shopping guide cover two more sources. To try this one, run a search in the playground on the AliExpress API page.

APIs in this post

Frequently asked questions

How much does the AliExpress API cost?

All 9 endpoints cost 1 credit per successful call, and failed calls cost nothing. Reviews for 100 products at 3 pages each, with product details, 2 search pages and a shipping check, come to 502 credits. Every verified account gets 1,000 free credits a month, and the pricing page has what credit packs cost.

Do I need an AliExpress affiliate or seller account?

No. One Perceptlayer key works for AliExpress and every other API in the catalogue, with no programme to join. If you want to earn commission on links, join the AliExpress affiliate programme and use its API, since this one only reads product data and doesn't generate affiliate links.

Why does my search call fail with invalid_parameters?

Search requires query, page and sort together, and sort must be default, orders, price_asc or price_desc. Leaving out page or sort, or sending another sort value, fails with invalid_parameters (422) and a message naming the parameter. The failed call costs nothing.

Can I get reviews with photos only?

Yes. Set filter=image on product-reviews. The other values are all, local and additional. The filter is required, so every reviews call names one. Paging works the same way for every filter, with page and page_size both required.

Are the prices and shipping costs live?

They're what AliExpress showed at the time of the call, for the country you asked about in the case of shipping. Prices and shipping change, so store the time of each call with the data. For a price tracker, re-check the products you watch on a schedule rather than relying on an old pull.

  1. Google Shopping API: Product Prices and Offers as JSON

    One GET to /v1/google-shopping/search returns product titles, sellers, prices and ratings as JSON. Parameters, a response and the cost of 500 products a day.

  2. Mercado Libre API: Category Prices and Reviews as JSON

    Pull Mercado Libre best sellers and offers by category as JSON: price, previous price, shipping and reviews, at 1 credit per call.

  3. Idealo API: Compare Product Prices Across Shops as JSON

    Search idealo.de by keyword, then pass a product_id to the offers endpoint. Endpoints, parameters, a real search response and the cost at 1 credit per call.

Start with 1,000 free credits

No password to set. We email you a sign-in link, and your key works on every API.

No credit card. 1,000 free credits a month.