SocialToAIStart freeConsole
POST/v1/call/tiktok.product_reviewsPreview

TikTok Shop product reviews API

Only on TikTok.

The TikTok Shop product reviews API returns the first 10 buyers' reviews of a TikTok Shop product in the United States by the product's ID: text, rating, time, variant bought, pictures. 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
Up to 10 itemsfirst page only
2026-10-17last tested
856 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_reviews \  -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_reviews",    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 reviews interface (tiktok.product_reviews) 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 OK856 B2 credits
{  "op": "tiktok.product_reviews",  "platform": "tiktok",  "status": "ok",  "items": [    {      "platform": "tiktok",      "id": "…",      "ref": null,      "approx": [],      "type": "entry",      "entry_type": "review",      "title": null,      "url": null,      "rank": null,      "heat": null,      "fields": {        "product_id": "…",        "text": "…",        "rating": 5,        "published_at": "2025-11-08T18:07:48.019Z",        "author": {          "label": "anonymous_1"        },        "images": ["https://example.com/…"],        "variant": "…"      }    }  ],  "unavailable": [],  "page": {    "has_more": false  },  "cost_credits": 2}
entry_type
review
product_id
…
text
…
rating
5
published_at
2025-11-08T18:07:48.019Z
variant
…

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

Sample data1 of the 10 items recorded

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)
First page only: up to 10 items, with no cursor parameter and no next page.

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.product_idstringThe product the review is about.
items[].fields.textstringThe review itself.
items[].fields.ratingnumberThe rating given.
items[].fields.published_atstringWhen it was posted, ISO 8601 in UTC.
items[].fields.author.labelstringAn anonymous label, stable within one response. Whoever wrote it is never named.
items[].fields.imagesstring[]Image addresses.
items[].fields.variantstringThe variant that was bought.
nullFields TikTok cannot give

TikTok gives every field of this call. Where one item lacks a value, that field is null.

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 the first page only, up to 10 items, with no cursor, for 2 credits.
A call that runs and finds nothing is a successful call: status is "empty", items is empty, and it costs 2 credits.
On this call TikTok cannot tell a video that does not exist from one with no data: both come back as empty, and both are charged.

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 the first 10 buyers' reviews of a TikTok Shop product in the United States by the product's ID: 1732488007561286228.
    call {"op":"tiktok.product_reviews","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 the first 10 buyers' reviews of a TikTok Shop product in the United States by the product's ID.
    call {"op":"tiktok.product_search","query":"yoga mat"}call {"op":"tiktok.product_reviews","id":"<ref>"} × 3
    8 credits

The interface of the same name on other platforms.

All platforms and prices
POST/v1/call/tiktok.product_reviews{ "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.
Can I get the next page?
No. On TikTok this interface gives its first page only (up to 10 items): the response carries no cursor, and page.has_more is always false.
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