Taobao Product details API

POST

API health

24h health
86%
24h average time
13.43 s
  • Healthy / normal
  • Available
  • Limited
  • Mostly down
Available

Get the full record of one Taobao or Tmall product, from brand, prices and stock to every SKU, attributes, images, shipping fees and shop scores. Pass a numeric item ID, a product link or share text holding exactly one product link; bare share codes and expired links are rejected.

Taobao Product details reads the full public record of one Taobao or Tmall product: title, brand, price and original price, the coupon price, stock and units sold, every SKU with its own price and stock, product attributes, the main image and long description images, plus the shop and shipping fees. Use it to take a competitor's listing apart, track prices and promotions, compare offers or fill in a product catalog.

url takes a numeric product ID, a product link or share text that contains exactly one product link; bare Taobao share codes and expired links are rejected. When reading prices, note that coupon_price appears only when a coupon applies and that each entry in skus can carry its own price. is_tmall separates Tmall stores from regular Taobao shops, which come with different requirements and guarantees.

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 Product details endpoint (taobao/product_detail).

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 product_detail, and put the parameters inside params.
- Required parameters:
  - url: For product_detail, reviews, or questions, use a numeric item ID, a Taobao/Tmall product URL, or a share message containing exactly one product URL.
- Returns one object. Main fields: id, url, title, brand (Brand), price, original_price (Original price), currency, stock (Stock), sold_count (Units sold), category_id (Category ID), location, is_tmall (Whether the store is a Tmall store, as…); 76 fields in total, full list at https://api.everyinfra.com/api/v1/social/catalog?platform=taobao.
- Example request body:
{
  "platform": "taobao",
  "action": "product_detail",
  "params": {
    "url": "https://item.taobao.com/item.htm?id=744983869996"
  }
}
- 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.
actionbodystringYesproduct_detailCapability identifier, fixed value.
urlbody.paramsNot declaredYes-For product_detail, reviews, or questions, use a numeric item ID, a Taobao/Tmall product URL, or a share message containing exactly one product URL. e.tb.cn and m.tb.cn links work only when they can be safely resolved to a product page. TaoPassword-only tokens, expired links, and non-product pages are rejected.

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": "product_detail",
  "params": {
    "url": "https://item.taobao.com/item.htm?id=744983869996"
  }
}'

[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": "product_detail",
  "results": {
    "id": …,
    "url": …,
    "title": …,
    "brand": …,
    "price": …,
    "original_price": …,
    "currency": …,
    "stock": …,
    "sold_count": …,
    "category_id": …,
    "location": …,
    "is_tmall": …,
    "shop_name": …,
    "shop_id": …,
    "shipping_fee": …,
    "ems_fee": …,
    "express_fee": …,
    "skus": …,
    "sku_count": …,
    "spec_values": …,
    "props_images": …,
    "attributes": …,
    "main_image_url": …,
    "description_images": …,
    "description_html": …,
    "video_url": …,
    "coupon_price": …,
    "price_usd": …,
    "total_price": …,
    "suggestive_price": …,
    "has_discount": …,
    "is_promotion": …,
    "promo_type": …,
    "is_virtual": …,
    "brand_id": …,
    "root_category_id": …,
    "category_path": …,
    "weight": …,
    "size": …,
    "favorite_count": …,
    "fans_count": …,
    "min_order_quantity": …,
    "shipping_to": …,
    "listed_at": …,
    "modified_at": …,
    "delist_at": …,
    "images": …,
    "category_name": …,
    "description": …,
    "keywords": …,
    "titleOriginal": …,
    "has_cn_title": …,
    "shop_score_description": …,
    "shop_score_service": …,
    "shop_score_delivery": …,
    "free_shipping": …,
    "promotion_price": …,
    "discount_price": …,
    "discount_type": …,
    "price_note": …,
    "has_price_range": …,
    "payment_methods": …,
    "seller_id": …,
    "seller_credit_level": …,
    "seller_type": …,
    "seller_type_label": …,
    "selling_points": …,
    "shop_logo_url": …,
    "shop_url": …,
    "shop_item_count": …,
    "shop_new_item_count": …,
    "shop_opened_at": …,
    "review_tags": …,
    "review_count": …,
    "positive_rate": …,
    "seven_day_return": …,
    "platform": …
  },
  "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).
brandBrand.
pricePrice as a number without a currency symbol; see currency.
original_priceOriginal price.
currencyCurrency code of the price (for example CNY, USD). If price is present but currency is null, do not assume a currency.
stockStock.
sold_countUnits sold.
category_idCategory ID.
locationLocation description passed through as is; the format varies by platform.
is_tmallWhether the store is a Tmall store, as opposed to a regular Taobao shop; the two have different entry requirements and buyer guarantees.
shop_nameShop name.
shop_idShop ID.
shipping_feeShipping fee.
ems_feeEMS shipping fee.
express_feeExpress delivery fee.
skusEvery variant (SKU) of the listing. Each entry can carry id, name, price, original_price, coupon_price, stock, props_ids and image_url.
sku_countNumber of SKUs.
spec_valuesFull table of variant values, including combinations not on sale; id identifies the value and text is its label.
props_imagesImages for variant values: id matches spec_values and props_ids, and image_url is that variant's display image.
attributesProduct attributes as {name, value} rows, such as brand, model and place of origin.
main_image_urlMain (first) image.
description_imagesLong images in the description area, in page order.
description_htmlRaw HTML of the description area, mostly image tags.
video_urlDirect link to the main-image video; absent when there is no video.
coupon_pricePrice after coupon: lower than price when a coupon applies, absent otherwise.
price_usdReference price in US dollars, as converted in the returned data.
total_priceTotal price as returned; often absent.
suggestive_priceSuggested retail price; often absent.
has_discountWhether a discount applies.
is_promotionWhether the product is on promotion.
promo_typePromotion type.
is_virtualWhether the product is virtual (not a physical good).
brand_idBrand ID.
root_category_idRoot category ID.
category_pathCategory path (breadcrumb).
weightProduct weight as returned; often 0 or absent.
sizeProduct dimensions; often absent.
favorite_countNumber of times the product was added to favorites.
fans_countFollower count as returned; often absent.
min_order_quantityMinimum order quantity.
shipping_toDelivery area note; often absent.
listed_atListing time (ISO 8601); the field is absent when the data has none.
modified_atLast modified time (ISO 8601); the field is absent when the data has none.
delist_atDelisting time (ISO 8601); the field is absent when the data has none.
imagesImage links: product photos on product_detail, the buyer's photos on reviews (absent when the review has none).
category_nameLeaf category name (product_detail).
descriptionSummary or description, usually shorter than text.
keywordsKeywords from the product page (product_detail).
titleOriginalKeeps the platform's own meaning
has_cn_titleKeeps the platform's own meaning
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.
free_shippingWhether shipping is free.
promotion_pricePromotional price (product_detail; often missing).
discount_priceDiscounted price (product_detail; often missing).
discount_typeDiscount or campaign type as written (for example flash sale).
price_notePrice note as written (product_detail).
has_price_rangeWhether the price is a range because variants cost different amounts (product_detail).
payment_methodsAccepted payment methods (product_detail).
seller_idSeller ID.
seller_credit_levelSeller credit level (a number; higher is better).
seller_typeSeller type code (product_detail).
seller_type_labelSeller type name (product_detail), for example Tmall or business shop.
selling_pointsSelling-point tags.
shop_logo_urlShop logo link (product_detail).
shop_urlShop link (product_detail).
shop_item_countNumber of items on sale in the shop (product_detail).
shop_new_item_countNumber of new items in the shop (product_detail).
shop_opened_atWhen the shop opened, as written (product_detail).
review_tagsReview tags, each with tag (the label) and count (how often it was mentioned; may be missing).
review_countNumber of reviews, for product and business capabilities. null means not disclosed, not 0.
positive_rateProduct positive-review rate (product_detail), as a percentage; often missing.
seven_day_returnWhether seven-day no-reason returns are supported (product_detail).
platformSource platform identifier, the same as platform in the request (for example xiaohongshu, tiktok).

FAQ

What can I pass as url?

A numeric product ID, a Taobao or Tmall product link, or share text that contains exactly one product link. Short links from e.tb.cn and m.tb.cn are accepted only when they resolve safely to a product page. Bare share codes, expired links and shop or search pages are rejected.

How do I read prices for products with several variants?

skus lists every variant, and each can carry its own price, original price, coupon price and stock, while price is the product-level figure. Record prices per variant when you compare or monitor them; spec_values adds every variant value, including combinations not on sale.

Are prices in yuan, and is there a US dollar figure?

price, original_price and coupon_price are plain numbers without a currency symbol, so read the currency from currency instead of assuming it. price_usd is a reference price in US dollars, as converted in the returned data; use it for rough comparisons, not as the amount you will pay.

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

Official references

Used only to check objects and terms. They do not imply authorization or endorsement of EveryInfra by the platform.

  • Taobao: Product ID and SKU Terminology ↗

    Taobao defines the product ID as the digits following id= in a product link, while an SKU describes specific attribute combinations such as color and size. Product IDs and SKUs must not be used interchangeably.

    Checked 2026-09-04