TikTok Shop Reviews Scraper avatar

TikTok Shop Reviews Scraper

Pricing

from $5.00 / 1,000 results

Go to Apify Store
TikTok Shop Reviews Scraper

TikTok Shop Reviews Scraper

Collect customer reviews for a TikTok Shop product by ID or URL, filtered by star rating or media, with automatic pagination and the product's full star distribution attached to every row.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

ToolzerHub

ToolzerHub

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Collect customer reviews for any TikTok Shop product — star rating, review text, photos, and whether the buyer actually purchased — from a product ID or URL.

Every row also carries the product's full star breakdown, so one review is enough to know what you are looking at. A 4.7 average reads differently once you can see it is 5,543 five-star reviews and 242 one-star.

Input

FieldTypeDefaultWhat it does
product_idstringRequired. A product ID, or a product page URL.
regionenumUSUS, GB, SG, MY, PH, TH, VN, ID.
maxItemsinteger100Caps how many reviews are saved. 0 means no limit.
reviewFilterenumno_filterno_filter, with_media (photos or video only), verified_purchase.
reviewRatingenumallall, or 5_star1_star to collect one rating only.
{
"product_id": "1729397618688364854",
"region": "US",
"maxItems": 100,
"reviewFilter": "no_filter",
"reviewRating": "all"
}

A product page URL works anywhere the ID does — https://shop.tiktok.com/view/product/1729397618688364854 and the bare ID behave identically, regional subdomains and query strings included.

Output

One row per review.

FieldWhat it holds
review_idTikTok Shop review ID
product_idProduct the review belongs to
sku_idThe specific variant reviewed
reviewer_idAccount that left the review
reviewer_nameDisplay name, partially masked by TikTok
reviewer_avatar_urlReviewer avatar
review_rating1 to 5
review_textReview body — empty when they rated without writing
review_timeMillisecond epoch, as a string
review_imagesPhotos or video attached
display_image_urlPrimary review image
is_verified_purchaseTikTok confirmed they bought it
is_incentivized_reviewThey were rewarded for reviewing
sku_specificationWhich variant — size, colour
review_countryWhere the review came from
product_nameProduct name carried on the record
review_ratingsStar breakdown for the whole product
{
"review_id": "7668316668074886926",
"review_rating": 5,
"review_text": "Amazing 🤩",
"is_verified_purchase": true,
"is_incentivized_review": false,
"review_country": "US",
"review_ratings": {
"review_count": "6550",
"overall_score": 4.7,
"rating_result": { "1": "242", "2": "86", "3": "150", "4": "529", "5": "5543" }
}
}

What people use it for

  • Read the complaints, not the average. Set reviewRating to 1_star and you get only the reviews that say what is wrong.
  • Separate real sentiment from seeded reviews. is_incentivized_review marks reviewers who got a free sample or discount; is_verified_purchase marks confirmed buyers.
  • See the product before you sell it. with_media returns only reviews with photos, which is where you find out what actually arrives in the box.
  • Track sentiment over time. Schedule a run and diff review_ratings.rating_result between runs.

Questions

Why did I get fewer reviews than maxItems? Two reasons, and they look the same from outside. Either the product genuinely has fewer reviews, or you set a filter and it ran out of matches. A product with 6,550 reviews might have only 242 one-star ones, so reviewRating: "1_star" with maxItems: 500 stops at 242. review_ratings.rating_result tells you the ceiling for each rating before you run.

Why is review_text empty on some rows? TikTok lets buyers leave a star rating without writing anything. Those still count toward the product's rating and still appear here, with review_rating set and review_text empty. If you only want written reviews, filter on non-empty review_text after the run.

What is is_incentivized_review? TikTok's own flag for reviewers who received something in exchange — a free sample, a discount, a gift card. It is worth splitting on: incentivized reviews skew positive, so a 4.8 average made mostly of incentivized reviews is a different signal from a 4.8 built on ordinary purchases.

Does the star breakdown cost an extra request? No. review_ratings arrives with every page the upstream returns, so it is attached to each row for free. It describes the whole product, not the page — the same values appear on every row of a run.

Why is review_time a string and not a date? It comes back as a millisecond epoch string, and it is passed through unchanged rather than reformatted, so nothing is lost to a timezone guess. new Date(Number(review_time)) gives you a date.

Can I scrape reviews for several products at once? One product per run. Take product_id from any row returned by TikTok Shop Search Scraper or TikTok Shop Seller Products Scraper, then drive one run per product through the Apify API.

Other TikTok Shop Actors

ActorUse when
TikTok Shop Search ScraperYou are finding products by keyword
TikTok Shop Products ScraperYou want products plus full detail
TikTok Shop Product ScraperYou want one product's full record
TikTok Shop Seller Products ScraperYou want one shop's entire catalogue
TikTok Shop Category Products ScraperYou want a whole category, without a keyword

Support

Questions, bugs, or feature requests: contact@toolzerhub.com

Browse the rest: apify.com/toolzerhub