Taobao Product details API
API health
- 24h health
- 86%
- 24h average time
- 13.43 s
- Healthy / normal
- Available
- Limited
- Mostly down
Last 24 hours
Last 30 days
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
| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
Authorization | header | string | Yes | - | Bearer followed by your API key. Create it in the console; never put it in a URL or a code repository. |
platform | body | string | Yes | taobao | Platform identifier, fixed value. |
action | body | string | Yes | product_detail | Capability identifier, fixed value. |
url | body.params | Not declared | Yes | - | 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
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
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.
{
"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.
| Field | Meaning |
|---|---|
id | The record's unique ID on the platform. Unique only within one platform; IDs can repeat across platforms. |
url | Link to the record on the platform. |
title | Title. null when the platform has no titles (for example text-only posts). |
brand | Brand. |
price | Price as a number without a currency symbol; see currency. |
original_price | Original price. |
currency | Currency code of the price (for example CNY, USD). If price is present but currency is null, do not assume a currency. |
stock | Stock. |
sold_count | Units sold. |
category_id | Category ID. |
location | Location description passed through as is; the format varies by platform. |
is_tmall | Whether the store is a Tmall store, as opposed to a regular Taobao shop; the two have different entry requirements and buyer guarantees. |
shop_name | Shop name. |
shop_id | Shop ID. |
shipping_fee | Shipping fee. |
ems_fee | EMS shipping fee. |
express_fee | Express delivery fee. |
skus | Every variant (SKU) of the listing. Each entry can carry id, name, price, original_price, coupon_price, stock, props_ids and image_url. |
sku_count | Number of SKUs. |
spec_values | Full table of variant values, including combinations not on sale; id identifies the value and text is its label. |
props_images | Images for variant values: id matches spec_values and props_ids, and image_url is that variant's display image. |
attributes | Product attributes as {name, value} rows, such as brand, model and place of origin. |
main_image_url | Main (first) image. |
description_images | Long images in the description area, in page order. |
description_html | Raw HTML of the description area, mostly image tags. |
video_url | Direct link to the main-image video; absent when there is no video. |
coupon_price | Price after coupon: lower than price when a coupon applies, absent otherwise. |
price_usd | Reference price in US dollars, as converted in the returned data. |
total_price | Total price as returned; often absent. |
suggestive_price | Suggested retail price; often absent. |
has_discount | Whether a discount applies. |
is_promotion | Whether the product is on promotion. |
promo_type | Promotion type. |
is_virtual | Whether the product is virtual (not a physical good). |
brand_id | Brand ID. |
root_category_id | Root category ID. |
category_path | Category path (breadcrumb). |
weight | Product weight as returned; often 0 or absent. |
size | Product dimensions; often absent. |
favorite_count | Number of times the product was added to favorites. |
fans_count | Follower count as returned; often absent. |
min_order_quantity | Minimum order quantity. |
shipping_to | Delivery area note; often absent. |
listed_at | Listing time (ISO 8601); the field is absent when the data has none. |
modified_at | Last modified time (ISO 8601); the field is absent when the data has none. |
delist_at | Delisting time (ISO 8601); the field is absent when the data has none. |
images | Image links: product photos on product_detail, the buyer's photos on reviews (absent when the review has none). |
category_name | Leaf category name (product_detail). |
description | Summary or description, usually shorter than text. |
keywords | Keywords from the product page (product_detail). |
titleOriginal | Keeps the platform's own meaning |
has_cn_title | Keeps the platform's own meaning |
shop_score_description | Shop rating for item-as-described, on a 5-point scale. |
shop_score_service | Shop rating for service, on a 5-point scale. |
shop_score_delivery | Shop rating for delivery, on a 5-point scale. |
free_shipping | Whether shipping is free. |
promotion_price | Promotional price (product_detail; often missing). |
discount_price | Discounted price (product_detail; often missing). |
discount_type | Discount or campaign type as written (for example flash sale). |
price_note | Price note as written (product_detail). |
has_price_range | Whether the price is a range because variants cost different amounts (product_detail). |
payment_methods | Accepted payment methods (product_detail). |
seller_id | Seller ID. |
seller_credit_level | Seller credit level (a number; higher is better). |
seller_type | Seller type code (product_detail). |
seller_type_label | Seller type name (product_detail), for example Tmall or business shop. |
selling_points | Selling-point tags. |
shop_logo_url | Shop logo link (product_detail). |
shop_url | Shop link (product_detail). |
shop_item_count | Number of items on sale in the shop (product_detail). |
shop_new_item_count | Number of new items in the shop (product_detail). |
shop_opened_at | When the shop opened, as written (product_detail). |
review_tags | Review tags, each with tag (the label) and count (how often it was mentioned; may be missing). |
review_count | Number of reviews, for product and business capabilities. null means not disclosed, not 0. |
positive_rate | Product positive-review rate (product_detail), as a percentage; often missing. |
seven_day_return | Whether seven-day no-reason returns are supported (product_detail). |
platform | Source 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