logo
languageENdown
menu

TikTok Shop Product Reviews

Submit a TikTok Shop US product ID or SPU and a review cap, then receive public reviews with ratings, SKU details, and reviewer info

Overview

Public TikTok Shop US reviews capture how buyers describe fit, quality, and the SKU they actually purchased. This Data App turns the public review area of one US listing into a consistent set of records covering review text, ratings, SKU details, reviewer identity, and collection timestamps.

The result is built for repeatable reputation analysis instead of scrolling a product page. Each review keeps its original wording and stays linked to the Product ID, SPU ID, and SKU spec, so praise and complaints can be compared across sizes and collection runs with the same fields.

Data notes

The data covers publicly visible TikTok Shop US reviews for one Product ID / SPU at collection time. Results arrive in collection-time order, and each normal record is identified by its Comment ID. Non-US marketplaces, private feedback, order records, and buyer contact details are outside the coverage.

Rating, Product rating, SKU spec, User name, and flags such as Anonymous or Edited are snapshots and may change after collection. Avatar list, Image list, and Like count are retained as source text where the source supplies them that way. Published at, Collected at, Created at, and Updated at keep the source timestamps without inferring a timezone. Query product and No data retain the collection outcome when a product has no public review result.

What the results look like

Each normal record represents one publicly visible review of the selected TikTok Shop US product.

Comment IDReview textRatingUser nameSKU specPublished at
7634602945472333582So I bought the zoom regular shoes last year, but they are too soft too spongy when you’re just walking around these are just right! Wide toe box Support you need support soft where you need it soft! I owned just about every air max and this is the best I’ve felt on my feet! Can’t say enough5Os HsUS M 132026-05-01T01:18:51
7646028688848471821Best Nike out5b**dUS M 112026-05-31T20:16:30
7661519510674917133Great shoe great quality. I love it.5S**4US M 102026-07-12T14:08:54

Additional values include Product ID, SPU ID, SKU ID, Avatar list, Image list, and No data.

Use cases

  • Split reviews by Rating, then read Review text to locate low-score issues.
  • Group Review text by SKU spec to separate size-specific experience.
  • Compare User name with Anonymous and Review text when judging how much weight to give a review.
  • Count Comment ID by Published at to see how the mix of feedback changed over time.

Scope and boundaries

Each job accepts 1 TikTok Shop product ID or SPU and collects at most 4500 public reviews. Coverage is limited to the US marketplace. Fetch protection covers 225 pages / 4500 records.

  • Good for
  • When you need public review text, ratings, and publish times for one TikTok Shop US product
  • When you need SKU details, reviewer names, and collection timestamps for reputation analysis
  • Do not use for
  • When you need TikTok Shop reviews from a marketplace other than the US
  • When you need real-time monitoring of newly posted reviews instead of one collection snapshot
  • When you need orders, buyer contact details, or other non-public shop data

Failure handling

Failure and retry behavior declared by the author. We recommend including it in your system prompt when integrating.

  1. 1If no reviews are returned, verify the product ID or SPU and use No data to distinguish an empty listing from a failed job
  2. 2A partial success still returns the reviews that were completed; submit a new collection after failure or expiry
  3. 3If authentication fails, a task context does not match, or the job times out, check the credential in the execution environment and submit a new collection instead of reusing the old job

Input

Parameters required to call this App, generated from the input.schema in manifest.json.

FieldBusiness nameTypeRequiredDefaultEnum / ConstraintsExampleDescription
product_itemProduct ID / SPUstringYes——1732075599219691674The TikTok Shop product ID or SPU whose public US reviews will be collected. Enter one identifier, 1 to 512 characters.
crawl_countMaximum reviews to collectstringYes——10The maximum number of public reviews to collect, from 1 to 4500. The result will not exceed this number and may be lower if the product has fewer reviews.

Output

Field structure of a single record, generated from the output.schema in manifest.json.

FieldBusiness nameTypeExampleDescription
avatar_url_listAvatar liststring["https://p16-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/7b7cc85e68a43794946269620078f2ac~tplv-tiktokx-cropcenter:100:100.jpg?dr=9640&refresh_token=b3f5fbe0&x-expires=1789545600&x-signature=jtdzYiVEWHbBH%2FlrOMkcxiRjLfU%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=5f8d3399&idc=useast5"]Reviewer avatar URLs retained as source text, often a JSON list string.
biz_idBusiness IDstring1732075599219691674Business identifier associated with this review.
comment_idComment IDstring7634602945472333582Unique identifier of this product review.
comment_source_nameSource namestring—Name of the review source when the source supplies it.
comment_source_typeSource typestring—Type of the review source when the source supplies it.
comment_textReview textstringSo I bought the zoom regular shoes last year, but they are too soft too spongy when you’re just walking around these are just right! Wide toe box Support you need support soft where you need it soft! I owned just about every air max and this is the best I’ve felt on my feet! Can’t say enoughPublic review body written by the buyer.
comment_time_textReview time textstring—Review time as display text when the source supplies it.
comment_typeReview typestring1Review type code returned as source text.
comment_urlReview URLstring—Link to this review when the source supplies it.
crawl_timeCollected atstring2026-09-14T16:19:49Collection timestamp returned by the source, without an inferred timezone.
created_atCreated atstring1789373989528Record created timestamp retained as source text.
image_url_listImage liststring[]Review image URLs retained as source text, often a JSON list string.
is_anonymousAnonymousbooleanfalseWhether the reviewer is marked anonymous.
is_diggedLikedbooleanfalseWhether this review is marked as liked.
is_ownerSeller reviewbooleanfalseWhether this review is marked as posted by the seller.
is_updatedEditedbooleanfalseWhether this review is marked as edited.
item_idItem IDstring1732075599219691674Item identifier associated with this review.
like_countLike countstring—Like count for this review, retained as source text.
parent_comment_idParent comment IDstring—Parent review identifier when this row is a reply.
product_idProduct IDstring1732075599219691674Product identifier associated with this review.
product_ratingProduct ratingstring5Product rating value returned with this review, as source text.
publish_timePublished atstring2026-05-01T01:18:51Review publish timestamp returned by the source, without an inferred timezone.
rating_scoreRatingstring5Star rating attached to this review, as source text.
ratings_urlRatings URLstring—Link to the ratings page when the source supplies it.
sku_idSKU IDstring1732075635013226650SKU identifier the reviewer purchased.
sku_specificationSKU specstringUS M 13SKU specification text such as size.
spu_idSPU IDstring1732075599219691674SPU identifier associated with this review.
task_itemQuery productstring1732075599219691674Product ID or SPU this collection row is associated with.
no_dataNo databooleanfalseWhether this row is a no-result marker instead of a normal review.
updated_atUpdated atstring1789373989851Record updated timestamp retained as source text.
user_idUser IDstring7435352589535626286Reviewer user identifier.
user_nameUser namestringO**s H**sReviewer display name, which may be masked.
user_profile_urlProfile URLstring—Reviewer profile link when the source supplies it.

Record schema

Output is returned record by record. detail.output.idFieldHint

output.schema
{
  "type": "object",
  "properties": {
    "avatar_url_list": {
      "type": "string",
      "title": "Avatar list",
      "description": "Reviewer avatar URLs retained as source text, often a JSON list string.",
      "prefill": "[\"https://p16-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/7b7cc85e68a43794946269620078f2ac~tplv-tiktokx-cropcenter:100:100.jpg?dr=9640&refresh_token=b3f5fbe0&x-expires=1789545600&x-signature=jtdzYiVEWHbBH%2FlrOMkcxiRjLfU%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=5f8d3399&idc=useast5\"]"
    },
    "biz_id": {
      "type": "string",
      "title": "Business ID",
      "description": "Business identifier associated with this review.",
      "prefill": "1732075599219691674"
    },
    "comment_id": {
      "type": "string",
      "title": "Comment ID",
      "description": "Unique identifier of this product review.",
      "prefill": "7634602945472333582"
    },
    "comment_source_name": {
      "type": "string",
      "title": "Source name",
      "description": "Name of the review source when the source supplies it."
    },
    "comment_source_type": {
      "type": "string",
      "title": "Source type",
      "description": "Type of the review source when the source supplies it."
    },
    "comment_text": {
      "type": "string",
      "title": "Review text",
      "description": "Public review body written by the buyer.",
      "prefill": "So I bought the zoom regular shoes last year, but they are too soft too spongy when you’re just walking around these are just right! Wide toe box Support you need support soft where you need it soft! I owned just about every air max and this is the best I’ve felt on my feet! Can’t say enough"
    },
    "comment_time_text": {
      "type": "string",
      "title": "Review time text",
      "description": "Review time as display text when the source supplies it."
    },
    "comment_type": {
      "type": "string",
      "title": "Review type",
      "description": "Review type code returned as source text.",
      "prefill": "1"
    },
    "comment_url": {
      "type": "string",
      "title": "Review URL",
      "description": "Link to this review when the source supplies it."
    },
    "crawl_time": {
      "type": "string",
      "title": "Collected at",
      "description": "Collection timestamp returned by the source, without an inferred timezone.",
      "prefill": "2026-09-14T16:19:49"
    },
    "created_at": {
      "type": "string",
      "title": "Created at",
      "description": "Record created timestamp retained as source text.",
      "prefill": "1789373989528"
    },
    "image_url_list": {
      "type": "string",
      "title": "Image list",
      "description": "Review image URLs retained as source text, often a JSON list string.",
      "prefill": "[]"
    },
    "is_anonymous": {
      "type": "boolean",
      "title": "Anonymous",
      "description": "Whether the reviewer is marked anonymous.",
      "prefill": false
    },
    "is_digged": {
      "type": "boolean",
      "title": "Liked",
      "description": "Whether this review is marked as liked.",
      "prefill": false
    },
    "is_owner": {
      "type": "boolean",
      "title": "Seller review",
      "description": "Whether this review is marked as posted by the seller.",
      "prefill": false
    },
    "is_updated": {
      "type": "boolean",
      "title": "Edited",
      "description": "Whether this review is marked as edited.",
      "prefill": false
    },
    "item_id": {
      "type": "string",
      "title": "Item ID",
      "description": "Item identifier associated with this review.",
      "prefill": "1732075599219691674"
    },
    "like_count": {
      "type": "string",
      "title": "Like count",
      "description": "Like count for this review, retained as source text."
    },
    "parent_comment_id": {
      "type": "string",
      "title": "Parent comment ID",
      "description": "Parent review identifier when this row is a reply."
    },
    "product_id": {
      "type": "string",
      "title": "Product ID",
      "description": "Product identifier associated with this review.",
      "prefill": "1732075599219691674"
    },
    "product_rating": {
      "type": "string",
      "title": "Product rating",
      "description": "Product rating value returned with this review, as source text.",
      "prefill": "5"
    },
    "publish_time": {
      "type": "string",
      "title": "Published at",
      "description": "Review publish timestamp returned by the source, without an inferred timezone.",
      "prefill": "2026-05-01T01:18:51"
    },
    "rating_score": {
      "type": "string",
      "title": "Rating",
      "description": "Star rating attached to this review, as source text.",
      "prefill": "5"
    },
    "ratings_url": {
      "type": "string",
      "title": "Ratings URL",
      "description": "Link to the ratings page when the source supplies it."
    },
    "sku_id": {
      "type": "string",
      "title": "SKU ID",
      "description": "SKU identifier the reviewer purchased.",
      "prefill": "1732075635013226650"
    },
    "sku_specification": {
      "type": "string",
      "title": "SKU spec",
      "description": "SKU specification text such as size.",
      "prefill": "US M 13"
    },
    "spu_id": {
      "type": "string",
      "title": "SPU ID",
      "description": "SPU identifier associated with this review.",
      "prefill": "1732075599219691674"
    },
    "task_item": {
      "type": "string",
      "title": "Query product",
      "description": "Product ID or SPU this collection row is associated with.",
      "prefill": "1732075599219691674"
    },
    "no_data": {
      "type": "boolean",
      "title": "No data",
      "description": "Whether this row is a no-result marker instead of a normal review.",
      "prefill": false
    },
    "updated_at": {
      "type": "string",
      "title": "Updated at",
      "description": "Record updated timestamp retained as source text.",
      "prefill": "1789373989851"
    },
    "user_id": {
      "type": "string",
      "title": "User ID",
      "description": "Reviewer user identifier.",
      "prefill": "7435352589535626286"
    },
    "user_name": {
      "type": "string",
      "title": "User name",
      "description": "Reviewer display name, which may be masked.",
      "prefill": "O**s H**s"
    },
    "user_profile_url": {
      "type": "string",
      "title": "Profile URL",
      "description": "Reviewer profile link when the source supplies it."
    }
  },
  "required": [],
  "additionalProperties": false
}

Integration

This App can be integrated via MCP, API, SDK, or file export. All channels share the same capabilities and pricing. Every request authenticates with the Authorization: Bearer header using an API key (long-lived, created in the Data Hub Console); MCP clients can also sign in with OAuth, no key required. More options such as CLI and Skill are on the way.

With the MCP (Model Context Protocol), you can call this App directly from AI clients like Claude and Cursor. Pick your client and auth mode, then copy the config below.

Client config

Replace the value after Bearer with your long-lived API key. Works in any client, CI, or headless environment.

mcpServers config
{
  "mcpServers": {
    "super_ig__tiktok-shop-comment": {
      "type": "http",
      "url": "https://mcp-v2.octoparse.com?pin=super_ig/tiktok-shop-comment",
      "headers": { "Authorization": "Bearer <YOUR_API_KEY>" }
    }
  }
}

Let AI set it up for you

Don't want to edit configs by hand? Copy the install prompt and paste it into any AI client. It will complete the setup its own way. (The prompt asks the AI to request your API key from you, so credentials never end up in chat history or shared configs.)

detail.access.mcp.composeHint

Pricing

per 30 reviews

Charged by the number of records successfully returned. Failed runs are not charged. Billed in units of 30 record; any partial unit is rounded up to 30 record.

$0.005/ 30 record
Per task submitted

Charged once per submitted run, regardless of how many records are returned.

$0.0001/ run

Multiple billing events accumulate independently. See each item for details. Failed runs are not charged.

View credits

Try it now

Fill in the parameters and run. Results come from a real call.

Example
Parameters are validated against input.schema before submission
Please fill in the required parameters first
From $0.005 / 30 record