AliExpress API: Search products
Searches AliExpress listings by product words, shipping destination, price range and sort order. Unpriced promotional cards are omitted; free shipping is marked only when the listing explicitly says so.
Unofficial. Not affiliated with or endorsed by AliExpress.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Sort optional
sort Listing order, such as price_low_to_high.
best_match (default)
One of
best_match,orders,price_low_to_high,price_high_to_low.- Query, required
query Words to search for, such as phone case.
phone case
- Ship to optional
ship_to Destination country name or two-letter code, such as Canada or CA.
United States (default)
- Max Price optional
max_price Highest listed price, such as 30.
Not set
Number 0 or more.
- Min Price optional
min_price Lowest listed price, such as 5.
Not set
Number 0 or more.
- Max Results optional
max_results Maximum number of products to return, such as 20.
20 (default)
Whole number from 1 to 60.
Input as JSON
{ "query": "phone case"}Output
{ "products": [ { "price": 1.09, "photo_link": "https://ae-pic-a1.aliexpress-media.com/kf/Sf7615706d428464fab2b660ceeccc18aE.jpg" , "product_id": "3256806647441095", "store_name": "SZDBR Store", "number_sold": "50,000+ sold", "star_rating": 4.7, "product_link": "https://www.aliexpress.com/item/3256806647441095.html" , "product_name": "Magnetic Luxury Matte Translucent Armor Shockproof Case For iPhone 16 15 14 13 12 17 18Pro Max For Magsafe Wireless Charge Cover", "currency_code": "USD", "free_shipping": false, "original_price": 3.01 }, { "price": 0.33, "photo_link": "https://ae-pic-a1.aliexpress-media.com/kf/S6f0638ad548548fb92bb7f3a1d486687g.jpg" , "product_id": "3256808722668670", "store_name": null, "number_sold": "100K+ sold", "star_rating": 4.9, "product_link": "https://www.aliexpress.com/item/3256808722668670.html" , "product_name": "Luxury Magnetic Matte Translucent Armor Shockproof Case For iPhone 11 12 13 14 15 16 For Magsafe Wireless Charge Cover", "currency_code": "USD", "free_shipping": false, "original_price": 5.92 }, { "price": 1.09, "photo_link": "https://ae-pic-a1.aliexpress-media.com/kf/Sb92b8f6e6fe94093a6f3989ba70457f24.jpg" , "product_id": "3256811990811737", "store_name": "Shop1105233629 Store", "number_sold": "1,000+ sold", "star_rating": 4.9, "product_link": "https://www.aliexpress.com/item/3256811990811737.html" , "product_name": "Transparent Original Magnetic Phone Case for iPhone 17 16 15 14 Plus 13 12 mini 11 Pro XS Max XR for Magsafe Acrylic Clear Cover", "currency_code": "USD", "free_shipping": false, "original_price": 11.9 } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"aliexpress.com/search_products","input":{"query":"phone case"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "aliexpress.com/search_products" , "input": { "query": "phone case" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "aliexpress.com/search_products" , "input": { "query": "phone case" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run aliexpress.com/search_products# with {"query":"phone case"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "query" ], "properties": { "sort": { "enum": [ "best_match", "orders", "price_low_to_high", "price_high_to_low" ], "type": "string", "default": "best_match", "description": "Listing order, such as price_low_to_high." }, "query": { "type": "string", "description": "Words to search for, such as phone case." }, "ship_to": { "type": "string", "default": "United States", "description": "Destination country name or two-letter code, such as Canada or CA." }, "max_price": { "type": "number", "minimum": 0, "description": "Highest listed price, such as 30." }, "min_price": { "type": "number", "minimum": 0, "description": "Lowest listed price, such as 5." }, "max_results": { "type": "integer", "default": 20, "maximum": 60, "minimum": 1, "description": "Maximum number of products to return, such as 20.", "x-fous-developer": true } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "products" ], "properties": { "products": { "type": "array", "items": { "type": "object", "required": [ "product_name", "price", "currency_code", "original_price", "number_sold", "star_rating", "free_shipping", "store_name", "photo_link", "product_link", "product_id" ], "properties": { "price": { "type": "number" }, "photo_link": { "type": [ "string", "null" ] }, "product_id": { "type": "string", "x-fous-developer": true }, "store_name": { "type": [ "string", "null" ] }, "number_sold": { "type": [ "string", "null" ] }, "star_rating": { "type": [ "number", "null" ] }, "product_link": { "type": "string" }, "product_name": { "type": "string" }, "currency_code": { "type": "string" }, "free_shipping": { "type": "boolean", "description": "Whether the search listing explicitly shows free shipping." }, "original_price": { "type": [ "number", "null" ] } }, "additionalProperties": false } } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
aliexpress.com/search_products- Returns
- product name, price, currency, original price, number sold, star rating, free shipping, store, photo, link, product ID
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method aliexpress.com/search_products with the inputs above.
Ask your agent
- Find me USB-C charging cables on AliExpress under $8 that ship to Canada, cheapest first
- Show the best-selling mechanical keyboard keycap sets between $15 and $40 shipping to Germany
- I need silicone baking mats priced $3 to $12, delivered to Australia — list up to 30 options with ratings and number sold
- What are the most expensive LED strip lights shipping to the UK? Give me the top 10 with store names and links
- Search aliexpress.com for women's linen summer dresses under 25 dollars shipping to US, sorted by most orders, and tell me which have free shipping
See more
All AliExpress methodsGet one AliExpress product’s prices, variants, reviews, shipping to a chosen country, seller and specifications from its link or the best-selling name match. Sold counts may be rounded, and shipping options are those shown for the displayed variant.
aliexpress.com/get_productFinds wholesale Alibaba offers for a product, with prices, minimum orders and supplier details. Reads up to 20 public listing pages; minimum-order filtering compares the displayed number without converting packaging units.
alibaba.com/search_productsSearches Macy's products in the site's order with optional USD price bounds, sale-only results and sorting. Prices for products with a range use the lowest shown price.
macys.com/search_productsSearches Amazon products in a chosen country store, with price range, sort, Prime and page options. Returns the listings and prices shown to an anonymous shopper in the store's currency.
amazon.com/search_productsSearches Flipkart products by keyword, with an optional price range and sort order. Returns current listings in site order.
flipkart.com/search_productsSearch Chewy products by words, pet type, and sort order. Returns up to 72 products in Chewy's order, including listed and first-order Autoship prices when shown.
chewy.com/search_productsSearches IKEA products in a chosen country and returns current prices, details, photos and reviews in IKEA's result order.
ikea.com/search_productsSearches Newegg US for computer parts and electronics, with optional USD price range, seller restriction and sorting. Returns products in the order shown on the results page.
newegg.com/search_products