SocialToAIStart freeConsole
POST/v1/call/tiktok.product_detailPreview

TikTok Shop product detail API

Only on TikTok.

The TikTok Shop product detail API returns a TikTok Shop product in the United States by its ID: title, description, pictures, rating, reviews, units sold, shop; its price comes from the product search. One call costs 2 credits ($0.004 to $0.0067 depending on the pack); failed calls are free. Call it over HTTP or from your AI client over MCP. Last tested 2026-10-17.

100 credits on sign-up, no card needed
2 creditsper call
One objectreturned per call
2026-10-17last tested
948 Bsample response, 1 item

Last updated:

Preview: this interface is not marked stable yet, so its parameters and fields may still change. It is charged like any other call, and a failed call is not charged.

Request and response

curl https://api.socialtoai.com/v1/call/tiktok.product_detail \  -H "Authorization: Bearer $SOCIALTOAI_KEY" \  -H "Content-Type: application/json" \  -d '{    "id": "1732488007561286228"  }'
import osimport requestsresponse = requests.post(    "https://api.socialtoai.com/v1/call/tiktok.product_detail",    headers={"Authorization": f"Bearer {os.environ['SOCIALTOAI_KEY']}"},    json={        "id": "1732488007561286228",    },)print(response.json())
# Connected over MCP? Ask in plain words.Use the TikTok Shop product detail interface (tiktok.product_detail) with id: 1732488007561286228.# Your AI calls the call tool with:{  "id": "1732488007561286228"}
Sign in to run2 creditsOpens in the Playground with these parameters after you sign in. It never runs by itself.
200 OK948 B2 credits
{  "op": "tiktok.product_detail",  "platform": "tiktok",  "status": "ok",  "items": [    {      "platform": "tiktok",      "id": "…",      "ref": "…",      "approx": [],      "type": "entry",      "entry_type": "product",      "title": "…",      "url": "https://example.com/…",      "rank": null,      "heat": null,      "fields": {        "description": "…",        "price": null,        "original_price": null,        "currency": null,        "images": ["https://example.com/…", "https://example.com/…"],        "rating": 4.1,        "sold": 233,        "reviews_count": 18,        "shop": {          "id": "…",          "name": "…"        }      }    }  ],  "unavailable": ["fields.price", "fields.original_price", "fields.currency"],  "cost_credits": 2}
entry_type
product
description
…
price
null
original_price
null
currency
null
rating
4.1
sold
233

Names and text were removed from the sample; the numbers are as recorded.

Sample dataFull response

1 parameter.
All required.

Send them as a JSON body with POST. Your key goes in the Authorization header, never in the URL.

NameTypeRequiredDefaultDescription
idstringRequired—Product ID, a string of digits (the last segment of the product's link)

Where to get what you send.

id

Product ID, a string of digits (the last segment of the product's link) (e.g. 1732488007561286228)

Every item these return carries its ref; send it as it is:

The fields of each item.
What TikTok cannot give is marked.

FieldTypeMeaning
items[].titlestringThe entry's title or name.
items[].urlstringA link that opens it; null where the platform's list has none.
items[].rankintegerPosition on a board, from 1.
items[].heatintegerThe platform's heat score.
items[].fields.descriptionstringThe product description.
items[].fields.pricestringalways nullThe current price, as a decimal string in fields.currency.
items[].fields.original_pricestringalways nullThe price before discount.
items[].fields.currencystringalways nullThe currency of the prices.
items[].fields.imagesstring[]Image addresses.
items[].fields.ratingnumberThe rating.
items[].fields.soldintegerUnits sold.
items[].fields.reviews_countintegerHow many reviews it has.
items[].fields.shop.idstringThe shop's ID.
items[].fields.shop.namestringThe shop's name.
nullFields TikTok cannot give

Read null as “TikTok did not give this”, not as zero. These are always null on this call:

  • fields.priceThe current price, as a decimal string in fields.currency.
  • fields.original_priceThe price before discount.
  • fields.currencyThe currency of the prices.

Every item also has platform, id, ref, approx and type; the response around the items is the same on every call. Response format

What to expect.

One call returns one object, with no pages, for 2 credits.

1 call per second per key, 5 after a purchase; going over is not charged. Rate limits

A failed call costs 0 credits and is never retried on its own. Error codes

Once connected over MCP, these questions use it.

  1. Get a TikTok Shop product in the United States by its ID: 1732488007561286228.
    call {"op":"tiktok.product_detail","id":"1732488007561286228"}
    2 credits
  2. Search the products of TikTok Shop in the United States by terms: yoga mat, then for the first 3: get a TikTok Shop product in the United States by its ID.
    call {"op":"tiktok.product_search","query":"yoga mat"}call {"op":"tiktok.product_detail","id":"<ref>"} × 3
    8 credits

The interface of the same name on other platforms.

All platforms and prices
POST/v1/call/tiktok.product_detail{ "id": "1732488007561286228" }2 creditsper call
Change the op in the path. The response around the items keeps the same shape.

Questions.
Short answers.

Everything on TikTok
Do I need a TikTok account or TikTok's own API access?
No. You only need a SocialToAI key. The call returns content and account information publicly visible on TikTok; you never sign in to TikTok or apply for anything there.
What does “Preview” mean here?
Preview: this interface is not marked stable yet, so its parameters and fields may still change. It is charged like any other call, and a failed call is not charged.

Your AI is one URL away
from all of social media.

100 credits on sign-up, no card needed