AliExpress Search API

POST

API health

24h health
100%
24h average time
42.51 s
  • Healthy / normal
  • Available
  • Limited
  • Mostly down
Healthy

Browse AliExpress listings for a product keyword, comparing price with the original price, discount, orders, rating, ship-from location and seller. Filters cover minimum price, minimum star rating and sort order; the figures describe each listing, not demand or margin.

AliExpress Search looks up products by keyword and lists, for each, its product ID, title, link, price and struck-through price with the currency, discount, rating, order and review counts, ship-from location, seller name, top-rated seller badge, free shipping flag, category and tags. Dropshipping stores and product researchers use it to size up a niche, compare offers for the same item and shortlist products to vet in detail.

On AliExpress, orders_count, the cumulative number of orders, is a firmer trust signal than rating. Filter with min_price, read in the currency the results use, and min_rating, a 0 to 5 star threshold; order with sort, where popular puts the most-ordered products first. Check ships_from against where your buyers are before you compare prices. An empty tags array means the product has no tags, not that data is missing.

Price $1.39 per 1,000 requests ($0.001389 per call). Failed calls and empty results are not charged. Every 50 rows you ask for count as one call: limit sets the charge, and blocks that come back with no rows are not charged. Synchronous. For slow jobs add "mode": "async" to the body, take the job_id and poll.

AI prompt

Paste this into your AI assistant. It already holds this endpoint's parameters, response fields and an example request, so the assistant can ask what you need and then write the scraper.

Please help me write a data collection script with the EveryInfra AliExpress Search endpoint (aliexpress/search).

Endpoint contract:
- Request: POST https://api.everyinfra.com/api/v1/social with the header Authorization: Bearer <API key>. Read the key from the EVERYINFRA_API_KEY environment variable and never hard-code it.
- In the request body, set platform to aliexpress and action to search, and put the parameters inside params.
- Required parameters:
  - keyword: Specifies the product search query (for example, wireless earbuds) to return listing collections. Pass search keywords instead of seller IDs; access product details, variants, and reviews using item URLs.
- Optional parameters:
  - min_price: Sets the minimum item price numeric threshold for search queries to exclude lower-priced items. This is an item price filter rather than a discount percentage or API request budget.
  - min_rating: Filters item searches by minimum star rating using a numeric scale from 0 to 5 (such as 4.5).
  - sort: Sorts action results using allowed values. For search, options include relevance (default), popular, price_asc, price_desc, and top_rated (supporting legacy values default, orders, rating). (allowed: popular / price_asc / price_desc / relevance / top_rated)
  - limit: The most rows to return in this call, an integer from 1 to 200. The default applies when you leave it out, and a call can return fewer rows. Larger values return 422 before any charge. (default: 20)
- Returns a list of records. Main fields of each record: product_id, title, url, price, original_price, currency, discount, rating, rating_scale, orders_count, review_count, image_url; 22 fields in total, full list at https://api.everyinfra.com/api/v1/social/catalog?platform=aliexpress.
- Example request body:
{
  "platform": "aliexpress",
  "action": "search",
  "params": {
    "keyword": "wireless keyboard"
  }
}
- Price: $1.39 per 1,000 requests; failed and empty results are not charged.
- For dozens or hundreds of targets, add "mode": "async" to the body: you get a job_id at once and poll GET https://api.everyinfra.com/api/v1/jobs/{job_id} for the result.
- On 422, fix the request using the suggested parameter names and allowed values in the error; on 429 or 503, wait for Retry-After and try again.

Before writing code, ask me which targets I need, how many, which fields, and what output format I want; then confirm the plan and the rough cost with me.

Request parameters

NameInTypeRequiredDefaultDescription
AuthorizationheaderstringYes-Bearer followed by your API key. Create it in the console; never put it in a URL or a code repository.
platformbodystringYesaliexpressPlatform identifier, fixed value.
actionbodystringYessearchCapability identifier, fixed value.
keywordbody.paramsNot declaredYes-Specifies the product search query (for example, wireless earbuds) to return listing collections. Pass search keywords instead of seller IDs; access product details, variants, and reviews using item URLs.
min_pricebody.paramsNot declaredNo-Sets the minimum item price numeric threshold for search queries to exclude lower-priced items. This is an item price filter rather than a discount percentage or API request budget; result currencies depend on search metadata.
min_ratingbody.paramsNot declaredNo-Filters item searches by minimum star rating using a numeric scale from 0 to 5 (such as 4.5). This parameter evaluates overall product rating rather than review counts, positive feedback percentages, or individual review scores.
sortbody.paramsenumNo-Sorts action results using allowed values. For search, options include relevance (default), popular, price_asc, price_desc, and top_rated (supporting legacy values default, orders, rating). For reviews, options are relevance (default) and newest, which sorts by review submission date rather than product listing date. ratings takes no sort.Allowed valuespopularprice_ascprice_descrelevancetop_rated
limitbody.paramsinteger (1–200)No20The most rows to return in this call, an integer from 1 to 200. The default applies when you leave it out, and a call can return fewer rows. Larger values return 422 before any charge.

Code samples

bash
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "platform": "aliexpress",
  "action": "search",
  "params": {
    "keyword": "wireless keyboard"
  }
}'

[OpenAPI definition (JSON)]Samples read the key from the EVERYINFRA_API_KEY environment variable; copied code never contains your key.

Response example

Real response

Captured September 26, 2026 at 08:56 (UTC) by calling this API with the parameters in the code sample above. results and count are that call's real response with personal information (names, handles, avatars, profile links, contact details) removed; the list keeps the first 2. id, billing and quota differ on every call, so only their shape is shown.

json
{
  "id": "req_…",
  "platform": "aliexpress",
  "action": "search",
  "results": [
    {
      "product_id": "(已隐去)",
      "title": "ATTACK SHARK M75 Kabellose Membran-Gaming-Tastatur mit Knopf und OLED-Display, Bluetooth/2,4 GHz, Regenbogen-Hintergrundbeleuchtung, PBT-Tastenkappen mit Farbverlauf",
      "url": "https://www.aliexpress.com/item/1005009141716642.html",
      "price": 35.79,
      "currency": "EUR",
      "rating": 4.4,
      "orders_count": 178,
      "image_url": "https://ae-pic-a1.aliexpress-media.com/kf/Sea136b941dbf41f7b21b564e9c895f1af.jpg",
      "ships_from": "US",
      "is_top_rated": false,
      "platform": "aliexpress",
      "tags": [
        "Bester Preis in ähnlichen Angeboten"
      ],
      "rating_scale": 5
    },
    {
      "product_id": "(已隐去)",
      "title": "ZIYOU LANG M96 – kabellose Gaming-Tastatur mit Display und Drehregler, Bluetooth-/2,4-GHz-Membrantastatur mit leisem Betrieb, 3000-mAh-Akku, wiederaufladbar.",
      "url": "https://www.aliexpress.com/item/1005009663809101.html",
      "price": 32.59,
      "currency": "EUR",
      "discount": "-8%",
      "rating": 4.9,
      "orders_count": 1413,
      "image_url": "https://ae-pic-a1.aliexpress-media.com/kf/S18528a11d40e45f7b8c6f26057ab5768e.jpg",
      "ships_from": "DE",
      "is_top_rated": true,
      "platform": "aliexpress",
      "tags": [
        "Niedrigster Preis seit 30 Tagen: 35,73€",
        "Kostenloser Versand",
        "Bester Preis in ähnlichen Angeboten"
      ],
      "rating_scale": 5
    }
  ],
  "count": 20,
  "billing": {
    "charged": …,
    "charged_usd": …,
    "balance_after_usd": …,
    …
  },
  "quota": { … }
}

Response fields

Business data is in results. The table lists the fields a record can contain; values the platform does not show are never made up.

FieldMeaning
product_idKeeps the platform's own meaning
titleTitle. null when the platform has no titles (for example text-only posts).
urlLink to the record on the platform.
pricePrice as a number without a currency symbol; see currency.
original_priceKeeps the platform's own meaning
currencyCurrency code of the price (for example CNY, USD). If price is present but currency is null, do not assume a currency.
discountKeeps the platform's own meaning
ratingRating. The scale varies by platform: rating_scale on the same row gives the maximum (usually 5; Booking, Douban, iQIYI and NAVER use 10). Convert with rating_scale before comparing across platforms, or the comparison can come out backwards.
rating_scaleMaximum of rating in the same row: 5 for five-star scales, 10 for ten-point scales. Present only when the row has a rating.
orders_countKeeps the platform's own meaning
review_countNumber of reviews, for product and business capabilities. null means not disclosed, not 0.
image_urlImage link. Capabilities with several images may return an image_urls array.
ships_fromKeeps the platform's own meaning
seller_nameKeeps the platform's own meaning
categoryCategory name in the platform's own taxonomy, not normalized across platforms.
is_top_ratedKeeps the platform's own meaning
free_shippingKeeps the platform's own meaning
imagesImage links: on product capabilities the product gallery in page order, on reviews the buyer's photos.
search_rankPosition in this search result (search).
seller_ratingSeller rating (search).
seller_urlSeller store link (search).
platformSource platform identifier, the same as platform in the request (for example xiaohongshu, tiktok).
tagsArray of tags. An empty array, not null, when there are none.

FAQ

How do I find products buyers trust?

Combine orders_count with rating: cumulative orders are the firmer signal on AliExpress, and a high rating on few orders proves little. is_top_rated marks sellers AliExpress certifies as top rated, and review_count shows how many buyers wrote reviews. Shortlist products that hold up on all of these before you open their details.

What does min_rating filter?

The product's star rating, on a scale from 0 to 5: 4.5 keeps products rated 4.5 and above. It is not a review count or a positive-feedback percentage, and it does not filter individual reviews by their stars. To read what buyers wrote about a product, use AliExpress Reviews with the product's link.

How do I go deeper on a search result?

Pass the result's url to AliExpress Product details for the description, variants, shipping options and store, or pass product_id alone, since Product details also accepts the numeric ID. The same link works with AliExpress Reviews for buyer reviews and with AliExpress Variants for every option of the product.

Errors and billing

401
Missing or invalid key. Authentication runs before parameter checks, so unauthenticated requests never see the parameter schema.
422
Wrong parameter name or value. The error lists the parameters and allowed values this capability accepts and the closest match; it happens before any charge.
402
Insufficient balance. Top up first.
429
The account's per-minute request limit was reached (all of its API keys count together; a key's own lower limit applies first). Wait for Retry-After and try again; a rate package in the console raises the limit.
503
Could not complete right now. Any charge for the call goes back to your balance automatically, and the billing receipt in the response states the actual outcome, including when it is not yet known. Do not resend blindly.
200 empty
The request completed without data and is not charged (billing.reason = empty_result_refunded).