Taobao Search API

POST

API health

24h health
71%
24h average time
11.90 s
  • Healthy / normal
  • Available
  • Limited
  • Mostly down
Available

Search Taobao and Tmall listings by keyword for price, units sold, rating, shop, ship-from location and coupon or discount details. Default and relevance sorts allow up to 20 results, while popular, price_desc and tmall_only cap a request at 10; stock, authenticity and delivery are not confirmed.

Taobao Search finds Taobao and Tmall listings by keyword and returns each product's title, price and currency, units sold, rating, ship-from location, shop name, main image and stock. Use it to see what sells in a category and at what price, for product research, competitor price tracking and category studies.

Narrow by price with min_price and max_price, order with sort (relevance, popularity or price from high to low), and keep only Tmall listings with tmall_only. tmall_only takes a boolean true or false; a string is rejected before anything is charged. Before comparing rating values, check rating_scale on the same row, since the maximum differs between platforms.

Price $1.39 per 1,000 requests ($0.001389 per call). Failed calls and empty results 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 Taobao Search endpoint (taobao/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 taobao and action to search, and put the parameters inside params.
- Required parameters:
  - keyword: Specifies the Taobao or Tmall product search term for the search action. It does not perform an exact search by store name.
- Optional parameters:
  - max_price: Sets the maximum item price filter for the search action in combination with min_price. It does not control SKU inventory limits.
  - min_price: Sets the minimum item price filter for the search action. It is not a review score filter or an API fee parameter, and it does not apply to shop, product_detail, reviews, or questions.
  - sort: For product search, use relevance (default), popular, or price_desc. Default and relevance searches allow up to 20 results; popular and price_desc allow up to 10. (allowed: popular / price_desc / relevance)
  - tmall_only: Filters product search to Tmall-only items when set to the boolean true and limits the request to 10 results. Pass a JSON boolean only; strings such as "false" and requests above this limit are rejected before charging.
  - limit: The most rows to return in this call, an integer from 1 to 20. 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: id, url, title, price, currency, sold_count (Units sold), rating, rating_scale, location, shop_name (Shop name), image_url, stock (Stock); 30 fields in total, full list at https://api.everyinfra.com/api/v1/social/catalog?platform=taobao.
- Example request body:
{
  "platform": "taobao",
  "action": "search",
  "params": {
    "keyword": "便携咖啡秤"
  }
}
- 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.
platformbodystringYestaobaoPlatform identifier, fixed value.
actionbodystringYessearchCapability identifier, fixed value.
keywordbody.paramsNot declaredYes-Specifies the Taobao or Tmall product search term for the search action. It does not perform an exact search by store name.
max_pricebody.paramsNot declaredNo-Sets the maximum item price filter for the search action in combination with min_price. It does not control SKU inventory limits.
min_pricebody.paramsNot declaredNo-Sets the minimum item price filter for the search action. It is not a review score filter or an API fee parameter, and it does not apply to shop, product_detail, reviews, or questions.
sortbody.paramsenumNo-For product search, use relevance (default), popular, or price_desc. Default and relevance searches allow up to 20 results; popular and price_desc allow up to 10. Requests above the applicable limit are rejected before charging, and price_asc is not supported. Reviews and questions do not accept sort, and shop does not expose this sort parameter.Allowed valuespopularprice_descrelevance
tmall_onlybody.paramsNot declaredNo-Filters product search to Tmall-only items when set to the boolean true and limits the request to 10 results. Pass a JSON boolean only; strings such as "false" and requests above this limit are rejected before charging.
limitbody.paramsinteger (1–20)No20The most rows to return in this call, an integer from 1 to 20. 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": "taobao",
  "action": "search",
  "params": {
    "keyword": "便携咖啡秤"
  }
}'

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

Response example

Field preview

There is no real sample for these example parameters yet: this shows the response shape and fields from the contract, with … as placeholders. It is not the result of a real call.

json
{
  "id": "req_…",
  "platform": "taobao",
  "action": "search",
  "results": [
    {
      "id": …,
      "url": …,
      "title": …,
      "price": …,
      "currency": …,
      "sold_count": …,
      "rating": …,
      "rating_scale": …,
      "location": …,
      "shop_name": …,
      "image_url": …,
      "stock": …,
      "shop_id": …,
      "sold_text": …,
      "original_price": …,
      "coupon_price": …,
      "discount_type": …,
      "is_tmall": …,
      "brand": …,
      "category_id": …,
      "seller_credit_level": …,
      "seller_positive_rate": …,
      "shop_score_description": …,
      "shop_score_service": …,
      "shop_score_delivery": …,
      "subtitle": …,
      "search_rank": …,
      "free_shipping": …,
      "selling_points": …,
      "review_tags": …,
      "platform": …
    }
  ],
  "count": …,
  "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
idThe record's unique ID on the platform. Unique only within one platform; IDs can repeat across platforms.
urlLink to the record on the platform.
titleTitle. null when the platform has no titles (for example text-only posts).
pricePrice as a number without a currency symbol; see currency.
currencyCurrency code of the price (for example CNY, USD). If price is present but currency is null, do not assume a currency.
sold_countUnits sold.
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.
locationLocation description passed through as is; the format varies by platform.
shop_nameShop name.
image_urlImage link. Capabilities with several images may return an image_urls array.
stockStock.
shop_idShop ID.
sold_textSales figure as shown (search), for example 100k+; figures with + or 10k units are rounded displays, not exact sales.
original_priceOriginal price.
coupon_pricePrice after coupon: lower than price when a coupon applies, absent otherwise.
discount_typeDiscount or campaign type as written (for example flash sale).
is_tmallWhether the store is a Tmall store, as opposed to a regular Taobao shop; the two have different entry requirements and buyer guarantees.
brandBrand.
category_idCategory ID.
seller_credit_levelSeller credit level (a number; higher is better).
seller_positive_rateSeller positive-feedback rate (search), as a percentage: 100 means 100%.
shop_score_descriptionShop rating for item-as-described, on a 5-point scale.
shop_score_serviceShop rating for service, on a 5-point scale.
shop_score_deliveryShop rating for delivery, on a 5-point scale.
subtitleProduct subtitle (search), a short selling-point line.
search_rankPosition in this search result (search), starting at 1.
free_shippingWhether shipping is free.
selling_pointsSelling-point tags.
review_tagsReview tags, each with tag (the label) and count (how often it was mentioned; may be missing).
platformSource platform identifier, the same as platform in the request (for example xiaohongshu, tiktok).

FAQ

Which orders does sort support?

relevance (the default), popular and price_desc, which lists the most expensive first; there is no cheapest-first order today. Sorting by popularity or price returns at most 10 results per call, so split broad searches into narrower keywords or price bands.

How do the price filters work?

min_price and max_price bound the product price, and you can pass either one alone. They apply to product search only, not to ratings or call costs. price comes back without a currency symbol; read the currency from currency.

Can I search Tmall only?

Yes: set tmall_only to the boolean true (the default is false). It must be a boolean, since the string 'false' is rejected before anything is charged, and with it on each call returns at most 10 results.

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).