Search returns a listing card. Product detail is the page behind that card. You pass the product_id from GET /v1/aliexpress/search. The response has the title, the current price, stock, rating, images, the store, shipping, and a description_token for the description call.
lang defaults to en_US when you omit it.
👉 To access this endpoint, you must obtain an API key: https://steadyapi.com/register
Authentication
Every call uses a Bearer token from your SteadyAPI dashboard.
Documentation:
https://docs.steadyapi.com/#authenticating-requests
headers = {
'Authorization': 'Bearer YOUR_API_KEY'
}
Where this fits
Search is GET /v1/aliexpress/search. Take product_id from a hit and call this endpoint as productId. Buyer comments are GET /v1/aliexpress/product/reviews with the same product id. The long description is GET /v1/aliexpress/product/description, and that route requires token set to description_token from this response. A search card does not include that token.
One product
Endpoint: GET /v1/aliexpress/product/detail
Documentation:
https://docs.steadyapi.com/#aliexpress-GETapi-v1-aliexpress-product-detail
Parameters
productId— required product idlang— optional language code, defaulten_US
productId picks the product. lang picks the language of the text. It does not change the id. There is no page parameter and no currency parameter. Price and currency come back with the product.
Python
import requests
url = "https://api.steadyapi.com/v1/aliexpress/product/detail"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
params = {"productId": hit["product_id"], "lang": "en_US"}
response = requests.get(url, headers=headers, params=params)
response.raise_for_status()
product = response.json().get("body", {})
print(product.get("title"))
print(product.get("price"), product.get("currency"), product.get("quantity"))
print(product.get("rating"), product.get("reviews_count"))
print(product.get("store_name"))
Annotated sample
{
"product_id": "3256807406540115",
"title": "(1/2/3 Pack) 3-Head Solar Outdoor Light, Motion Sensor Security Light",
"price": "$5.45",
"original_price": "$64.37",
"currency": "USD",
"quantity": 1632,
"rating": "4.8",
"reviews_count": 7,
"sold": "63 sold",
"store_name": "Iseyyox Store",
"main_image": "https://ae-pic-a1.aliexpress-media.com/kf/S77d138cdd40f4c5fb71c5822871a8a01X.jpg"
}
Store product_id and description_token. price and original_price are display strings. quantity is the stock count. rating and reviews_count are the summary, not the review text. main_image is the primary photo. images is the rest of the gallery. specifications and variations are lists. Shipping is under shipping.from, shipping.to, shipping.fee, and shipping.delivery_time. Store fields also appear as store_id, seller_id, and store_info.
Practical use
Keep description_token only if you will call the description endpoint. That call’s parameter name is token, and the value has to be this token. A raw product id is rejected there.
reviews_count is a number on the product. The comments themselves are the reviews endpoint, which pages with page and can filter with filter=image. Do not expect those comments inside this body.
price is a string such as $5.45, not a float. Parse it if you need to sort. sold is also a display string, for example 63 sold.
👉 Get your API key and open a product: https://steadyapi.com/register