TikTok Shop Reviews Pro ⭐️ avatar

TikTok Shop Reviews Pro ⭐️

Pricing

from $1.29 / 1,000 reviews

Go to Apify Store
TikTok Shop Reviews Pro ⭐️

TikTok Shop Reviews Pro ⭐️

Extract TikTok Shop product reviews from product URLs, product IDs, or search-discovered products. Collect rating, review text, reviewer metadata, media flags, and product context for ecommerce intelligence.

Pricing

from $1.29 / 1,000 reviews

Rating

5.0

(1)

Developer

DeepMine

DeepMine

Maintained by Community

Actor stats

1

Bookmarked

121

Total users

10

Monthly active users

2.3 days

Issues response

2 days ago

Last modified

Share

TikTok Shop Reviews Pro – Review Scraper & Data API

Get every public review of a TikTok Shop product, not just the 3 previews. Give product URLs, product IDs or search keywords and get one row per review: star rating, review text, variant, reviewer, verified-purchase flag, date and review photos. Each run also gives a product table (star rating, 5-to-1 star breakdown, review count) and a list of the reviews with photos.

⭐ Rating📝 Review🎨 Variant👤 Reviewer✔️ Verified📅 Date📦 Product
5I really like the lip oil, def getraspberry dripe**r✓2026-09-24r.e.m beauty drip lip oil
3Really good and easy to put together highly recomm…Black White+With massage+Bonded LeatherS**R✓2026-09-07Bellemave gaming chair
2It’s alright but I ordered white and got an off br…White**✓2026-09-22Sweetcrispy office chair

What you get
Reviews per productThe newest reviews in TikTok's order, up to your maxReviewsPerProduct (default 100). Set it high for the full history.
Tested coverage (Sept 26, 2026)214 of 214, 408 of 410, 417 of 418, 1,049 of 1,051 and 3 of 4 reviews on five US products. The few missing reviews are counted by TikTok but not published to anyone.
Very large productsTikTok's public review list can be shorter than the count on the page. Example: a product showing 4,621 reviews had a list that ended at 3,702, and we collected all 3,702. On the biggest products TikTok also limits how deep anyone can page. The 🛍️ Products table always shows the count TikTok displays next to the number delivered.
MarketUnited States TikTok Shop
If TikTok blocks a productNever reported as a product without reviews, and never filled with preview data. If TikTok refuses every product, the run fails. If it refuses some, the run succeeds with a warning, and the 🛍️ Products table marks them Failed or Incomplete with the reason.

Use it for product research, competitor analysis, brand monitoring, sentiment analysis and conversion optimization, or as a TikTok Shop reviews dataset for BI dashboards, AI pipelines and customer-feedback analysis.

What's new in version 3 (September 2026)

Earlier versions often returned only the 3 preview reviews TikTok embeds in the product page, because TikTok's review API started requiring signed requests. Version 3 signs every review request the way TikTok's own website does and pages through the full review list.

  • Full review history per product instead of 3 previews.
  • Modern product links (shop.tiktok.com/us/pdp/<name>/<id>) work, as do www.tiktok.com/shop/pdp/... links, older /view/product/<id> links and plain product IDs.
  • Clean rows: every row has the same fields in reading order (rating, text, variant, reviewer, date...), empty values are null, and the Console table shows product images, stars, review snippets and photos. Two more tables come with every run: 🛍️ Products and 📸 Photo Reviews.
  • Newest first, without holes: with a limit you get the newest N reviews in order. If TikTok refuses an early page and a retry can't get it, the product is marked incomplete instead of skipping ahead to older reviews.
  • Honest run status: a run where TikTok refused every product fails. Otherwise refused and incomplete products are named in the log and in the 🛍️ Products table.
  • Predictable cost and time: retries per product are capped in requests and in seconds, so a product TikTok refuses can't run up proxy time or hold up the run. It gets what it can in about 20 seconds (longer for large limits), then is marked incomplete. You only pay for review rows.
  • Fast: products are collected 5 at a time, and the log ends with one line per product (reviews, status, seconds).
  • Old input fields that no longer do anything are accepted and ignored.
  • Lower price: from $1.99 per 1,000 reviews on the Starter plan (was $8), with no start fee.
  • Restart-safe: if Apify restarts a run, reviews it already delivered are skipped and never charged twice, and the run never goes past your maximum cost. A restarted run that can't read back what it already delivered stops with a clear error instead of collecting again.

Note for existing users: maxReviewsPerProduct now really is the number of reviews you get per product, and you pay per review. A saved task that says 50 now returns up to 50 reviews per product where the old version usually returned 3, so its row count and cost go up. Lower maxReviewsPerProduct, or set maxResults for a run-wide cap, if you want less. Leaving the field out now means 100 reviews per product (it was 50).

Field names changed. Rows now use short camelCase names (review_text is now text, review_date is reviewedAt, and so on; the full list is under Output). If an integration reads the old names, set outputFormat to v2 to get rows with the version 2 names and layout (details under Old field names).

Why TikTok Shop review data matters

Most teams don't just need product listings. They need review intelligence:

  • What are buyers praising?
  • What are buyers complaining about?
  • Which products are gaining positive momentum?
  • Which competitors are collecting low-star feedback?
  • Which variants get media-rich reviews?
  • Scrape TikTok Shop product reviews at scale
  • Export TikTok Shop review data for analysis
  • Build product-review and star-rating datasets
  • Monitor customer sentiment and recurring complaints
  • Compare competing TikTok Shop products and sellers
  • Feed review intelligence into dashboards, databases and AI workflows

Who should use this

  • Ecommerce operators managing multiple product lines
  • Marketplace analysts tracking competitor quality signals
  • Growth teams optimizing offer, pricing and messaging
  • Agencies running TikTok Shop research for clients
  • Data teams building recurring marketplace dashboards
  • AI teams training review classification and trend models

Input

Give at least one of these:

FieldUse it when
productUrlsYou have product links.
productIdsYou store product IDs (the long number at the end of a product URL). Keep them as text.
queriesYou want the Actor to find products by keyword first.

Main limits: maxReviewsPerProduct (default 100), maxProductsTotal (default 50), maxProductsPerQuery (default 50), maxPagesPerQuery (default 5) and an optional run-wide maxResults. sortBy picks most recent first (default) or TikTok's recommended order.

Example input

The form comes filled with these three products (each has 200 to 900+ reviews). With the default of 100 reviews per product, the run returns 300 reviews, newest first, in about 15 seconds.

{
"productUrls": [
"https://shop.tiktok.com/us/pdp/compact-office-chair-pu-leather-height-adjustable-360-swivel/1731016350288417305",
"https://shop.tiktok.com/us/pdp/drip-lip-oil-by-r-e-m-beauty-coconut-oil-infused-moisturizing-gloss/1729440509592047995",
"https://shop.tiktok.com/us/pdp/ergonomic-gaming-chair-by-bellemave-swivel-high-back-adjustable-recliner/1729513286476075339"
]
}

Keyword search finds products the way TikTok's own search lists them, which is often newer listings with only a handful of reviews. If you already know the products you care about, give their URLs.

Output

Every run gives you three tables (Apify datasets) and a run report:

TableRowsConsole view columns
⭐ All Reviews (default dataset, billed)One per review📊 Overview: 🖼️ Product, ⭐ Rating, 📝 Review, 🎨 Variant, 👤 Reviewer, ✔️ Verified, 📸 Photo, 📅 Date, 🔗 TikTok Shop, 🏅 Rank. 📝 Full Reviews: rating, full text, variant, date, reviewer, product.
🛍️ Products (free)One per product, in input order🖼️ Product, 📦 Name, ⭐ Rating, 💬 Reviews, 📥 Collected, ⭐ 5 to 1 Stars, 🚦 Status, 💡 Note, 🔗 TikTok Shop
📸 Photo Reviews (free)The delivered reviews that have photos📸 Photo, ⭐ Rating, 📝 Review, 🎨 Variant, 👤 Reviewer, 📅 Date, 🖼️ All Photos, 🖼️ Product, 🔗 TikTok Shop

A review row (real, collected September 27, 2026):

{
"productImage": "https://p16-oec-general-useast5.ttcdn-us.com/tos-useast5-i-omjb5zjo8w-tx/483c1c7ba8eb40aeb4a686a98d513814~tplv-fhlh96nyum-crop-webp:800:800.webp",
"productName": "r.e.m beauty by Ariana Grande essential drip lip oil - conditioning, hydrating, non-sticky, nourishing, silky shine, made with coconut-oil",
"rating": 5,
"text": "It's so cute & shiny! It's not thick which I love 🥰",
"textSnippet": "It's so cute & shiny! It's not thick which I love…",
"variant": "raspberry drip",
"reviewerName": "𝓗**𝓻 ** **",
"isVerifiedPurchase": true,
"isIncentivized": false,
"photo": "https://p19-oec-general-useast5.ttcdn-us.com/tos-useast5-i-omjb5zjo8w-tx/b45df12c5ad34a8982bcf6088ae9bf69~tplv-fhlh96nyum-crop-webp:300:300.webp",
"photos": ["https://p19-oec-general-useast5.ttcdn-us.com/tos-useast5-i-omjb5zjo8w-tx/b45df12c5ad34a8982bcf6088ae9bf69~tplv-fhlh96nyum-crop-webp:300:300.webp"],
"reviewedAt": "2025-01-03T20:28:49Z",
"rank": 74,
"productUrl": "https://shop.tiktok.com/us/pdp/drip-lip-oil-by-r-e-m-beauty-coconut-oil-infused-moisturizing-gloss/1729440509592047995",
"seller": "r.e.m. beauty",
"brand": null,
"queries": null,
"reviewId": "7455788866717828910",
"reviewerId": "6724768910614594566",
"productId": "1729440509592047995",
"scrapedAt": "2026-09-27T18:58:22Z"
}

Review fields (in row order)

  • productImage: the product's main image.
  • productName: product title as TikTok Shop shows it.
  • rating: stars the reviewer gave, 1 to 5.
  • text: full review text; null for star-only reviews (about a third of reviews).
  • textSnippet: first 50 characters of the text.
  • variant: the variant bought (color, size...); null for single-variant products and reviews TikTok shows without one.
  • reviewerName: reviewer name, masked by TikTok (C**h).
  • isVerifiedPurchase, isIncentivized: TikTok's badges.
  • photo, photos: the first review photo and all of them (300 × 300 previews from TikTok's image CDN); null when the review has none.
  • reviewedAt: when the review was posted, UTC.
  • rank: position in TikTok's order for the product (1 = newest, or top recommended).
  • productUrl: the product page.
  • seller, brand: shop name, and the brand when the product page names one.
  • queries: every search keyword that found the product (a product found by two keywords is collected once and lists both); null for URL and ID input.
  • reviewId, reviewerId, productId: TikTok's IDs, as text.
  • scrapedAt: when the row was collected, UTC.
  • rawReview: TikTok's original review object, only with includeRawReview.

Every row has every field; a value TikTok doesn't have is null. Rows of one product come in TikTok's order; with several products in parallel, the products' rows can be interleaved, so sort by productId and rank if you need them grouped.

Product fields

productImage, productName, rating (average stars), reviews (the count TikTok shows), reviewsCollected (delivered this run), fiveStar to oneStar (TikTok's count per star), status (Complete, Reached your max, Stopped early, Incomplete, Failed or Not collected), note (why, in words: "Newest 100 of 924", "TikTok kept showing its captcha"), productUrl, seller, brand, queries, productId, scrapedAt.

Old field names (outputFormat: v2)

Rows from version 2 used snake_case names. They map like this: product_id → productId, product_name → productName, seller → seller, brand_name → brand, product_url and source_url → productUrl, review_rank → rank, review_id → reviewId, rating → rating, review_text → text, review_date → reviewedAt, reviewer_name → reviewerName, reviewer_id → reviewerId, is_verified_purchase → isVerifiedPurchase, is_incentivized_review → isIncentivized, variant → variant, first_image_url → photo, image_urls → photos, query → queries (now a list of every keyword that found the product), scraped_at → scrapedAt, raw_review → rawReview. Dropped because TikTok never fills them or they repeat another field: reviewer_country (always US on the US shop), likes_count, video_count, first_video_url, video_urls, has_media, image_count, raw_product_context.

Set outputFormat to v2 to get rows with the version 2 names and layout, built by version 2's rules: the same snake_case keys in the same (alphabetical) order, empty values left out (or null with compactNullFields off), empty photo and video lists kept as [], one query string, and includeRawProduct as before. The two extra tables are not written, and the Console table views are built for the new names, so read v2 rows through the API or the JSON/CSV export. What still differs from version 2's rows: they are full reviews instead of the 3 previews, so review_rank counts in TikTok's full list; review_date, reviewer_id, reviewer_country and variant are now filled (version 2 defined them but its parser never found them; variant is TikTok's text, Default for single-variant products); seller is always the shop name (version 2 sometimes wrote an internal object there); and product links for ID input have the shop.tiktok.com/us/pdp/product/<id> form.

Run report (OUTPUT)

Every run also saves a report in the key-value store under OUTPUT for integrations: for each product the advertised review count (expectedTotal), reviews delivered, status (complete, limited by your settings, partial or failed) and the reason code. refusedProducts and incompleteProducts list the products worth a rerun. costLimitedProducts lists products left unread because reading them would have cost more than the run's reviews earn. Residential retries and further products go on for as long as the reviews pay for them, and a product stopped this way gets another try once more reviews have come in, so this happens only on runs whose products keep coming back with no reviews (empty, or refused by TikTok on every IP). Keywords left unsearched for the same reason are in searchSummary with status skipped. The run's status line gives the same summary.

Pricing

Apify planPrice per 1,000 reviews
Free$2.49
Starter$1.99
Scale$1.69
Business$1.29

No start fee: a run costs only the reviews it delivers. You pay per review row in the ⭐ All Reviews table. The 🛍️ Products and 📸 Photo Reviews tables and the run report are free, and products without reviews or refused by TikTok cost nothing. maxReviewsPerProduct caps the cost per product.

Free plan

The free Apify plan gets the same full run as paid plans. A run stops at the number of reviews your maximum cost per run pays for.

Practical workflows

Review sentiment intelligence

  1. Pull reviews by category keyword.
  2. Compare products in the 🛍️ Products table (rating, star breakdown, review count).
  3. Tag text by theme (comfort, quality, shipping, sizing...).
  4. Track complaint themes and low-rating spikes over time.

Competitor weakness discovery

  1. Collect reviews for the top competing products.
  2. Filter low ratings.
  3. Find repeated pain points and answer them in your own listing.

Product quality monitoring

  1. Schedule recurring runs with sortBy: most_recent and a modest maxReviewsPerProduct.
  2. Compare rating and text over time, and the product's star breakdown between runs.
  3. Catch problems before conversion drops.

Variant insights

  1. Group reviews by variant.
  2. Compare ratings per variant.
  3. Promote winning variants and fix weak ones.

FAQ

Do I get all reviews or only a sample?

All reviews TikTok publishes for the product, up to your maxReviewsPerProduct. Set it to 10000 or more for full histories. TikTok's displayed count sometimes includes a few reviews it doesn't publish; those can't be collected by anyone.

What happens when TikTok blocks a request?

The Actor reads through Apify's datacenter proxy and retries on fresh IPs, first datacenter, then US residential for what TikTok keeps refusing there (paid by the Actor, not by you), with a cap on retries and on time per product (about 20 seconds when TikTok keeps refusing, plus one residential retry), so one stubborn product never holds up the rest. The Actor reads each product through TikTok Shop's own product data request instead of loading the product page (about a third of the bytes, and no "Security Check" captcha page); when TikTok refuses that request, it asks again on another IP. If a product still can't be read, the log warns and the 🛍️ Products table marks it Failed or Incomplete with the reason in words (OUTPUT has the reason code, e.g. product_unavailable when TikTok didn't return the product, challenge when a search page kept showing the captcha). The run fails only when TikTok refused every product. Enable allowPartialResults to let even those runs succeed.

Which markets are supported?

The United States TikTok Shop.

Does it use a browser or my account?

No. It reads TikTok's public review API anonymously. No login, no cookies from you.

Can I use this for TikTok Shop competitor research?

Yes. Mix product URLs and keywords in one run.

Can I export this to my own dashboard?

Yes. Export to CSV, Excel or JSON, or pull the dataset through the Apify API into Google Sheets, BigQuery, Snowflake, PostgreSQL or Python.

Calling it via API?

Use deepmine/tiktok-shop-reviews-pro (was sentry/tiktok-shop-reviews-pro before September 3, 2026), or the Actor ID eOx7btKVgiegLYrmO, which never changed.

Compliance and responsible use

Use this Actor in accordance with applicable laws, data privacy requirements and platform terms. You are responsible for lawful, ethical and policy-compliant use in your jurisdiction.