Tiktiok Shop Product Reviews avatar

Tiktiok Shop Product Reviews

Pricing

from $2.50 / 1,000 reviews

Go to Apify Store
Tiktiok Shop Product Reviews

Tiktiok Shop Product Reviews

Scrapes every review from any TikTok Shop product page: rating, text, photos, variant, reviewer name/country, verified & incentivized flags. Includes product title, price, per-SKU stock, sold count, category, rating breakdown, shop stats. Sort by newest or filter by star rating

Pricing

from $2.50 / 1,000 reviews

Rating

0.0

(0)

Developer

Reviewly

Reviewly

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Share

TikTok Shop Product Reviews Scraper

Export every review from any TikTok Shop product in seconds — full text, star rating, photos, dates and buyer details — plus the product's live price, stock and seller stats.

Paste a product link. Get a clean, structured dataset. No browser automation, no login, no API keys.

  • Fast — 971 reviews in under 10 seconds, 3,360 reviews in 16 seconds
  • 🎯 Complete — collects the entire review history, not the first page
  • 💰 Real prices — the sale price, original price and discount TikTok hides from scrapers
  • 📸 Rich data — review photos, verified-purchase flags, purchased variant, buyer country
  • 📊 Ready to use — export to Excel, CSV, JSON or Google Sheets in one click

📌 What this Actor does

This Apify Actor scrapes TikTok Shop product reviews at scale. You give it one or more TikTok Shop product URLs; it returns one clean record per product with every review nested inside.

It solves a real problem: TikTok Shop shows you a handful of reviews at a time behind an infinite scroll, and offers no export. Copying thousands of reviews by hand is impossible. This web scraping tool turns any product page into a spreadsheet in seconds.

Who it's for

You are…You use it to…
E-commerce seller / brandMonitor your own reviews and your competitors', catch quality complaints early
Product researcher / dropshipperValidate winning products before you buy inventory
Market researcher / analystMine thousands of real customer opinions for a category
Marketing / agency teamPull social proof, testimonials and UGC photos for campaigns
Developer / data teamFeed a clean review feed into dashboards, LLMs or sentiment models

✨ Key features

  • Every review, not a sample. Pages through the full history until there is nothing left — thousands of reviews per product.
  • The real price. TikTok deliberately masks prices from non-browser clients (you get "*" instead of 7.84). This Actor fetches the genuine sale price, original price, discount percentage, per-variant prices and live stock.
  • Review photos included. Direct image URLs for every customer photo.
  • Filter by star rating. Pull only 1-star reviews to find product problems, or only 5-star for testimonials.
  • Sort by newest. Ideal for scheduled runs that track new reviews over time.
  • Full product context. Title, description, images, SKUs, sold count, category path and the seller's shop rating, follower count and total sales.
  • Accepts any link format. Full tiktok.com/shop/pdp/... URLs, shop.tiktok.com regional URLs, or just the bare product ID.
  • Honest reporting. A partial flag tells you when a run couldn't reach everything — you never get a truncated export silently labelled complete.
  • Multiple products per run. Queue a whole competitor catalogue in one go.

🧠 Why this Actor is different

Most TikTok Shop scrapers drive a headless browser, which is slow, expensive and fragile. This one talks to TikTok's own data endpoints directly.

1. It's genuinely fast and cheap. No Chrome instance means low memory and low compute cost. A 3,370-review product finishes in about 16 seconds.

2. It gets the real price. TikTok serves fake, masked prices to automated clients — "*" for 7.84, "2*" for 20.00. Naive scrapers parse "2*" as $2 for a $20 product and quietly poison your dataset. This Actor retrieves the true price from a separate endpoint and refuses to guess when a value is masked.

3. It doesn't stop early. TikTok's API intermittently answers with an empty-but-successful-looking response. Treating that as "no more reviews" truncates big products at around 1,000 reviews while reporting success. This Actor detects and retries it — which is how it reliably reaches 3,360 reviews where a naive implementation stops at 995.

4. The numbers check out. On a 971-review product, the star ratings collected match TikTok's own published breakdown exactly (62 × 1★, 33 × 2★, 58 × 3★, 120 × 4★, 698 × 5★). Nothing is missing, nothing is duplicated.

5. It's transparent about limits. See the FAQ for what TikTok itself does not expose. No overclaiming.


⚙️ Input configuration

Minimal example

{
"startUrls": [
{ "url": "https://www.tiktok.com/shop/pdp/cat-nail-clipper/1731578642912612516" }
]
}

Full example

{
"startUrls": [
{ "url": "https://www.tiktok.com/shop/pdp/cat-nail-clipper/1731578642912612516" },
{ "url": "https://shop.tiktok.com/us/pdp/catnip-chew-toy/1731791261654290596" },
{ "url": "1731466511483113636" }
],
"maxReviews": 0,
"sortBy": "newest",
"ratingFilter": "all",
"includePrice": true,
"pageSize": 500,
"requestDelayMs": 0,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

Fields

FieldTypeDefaultDescription
startUrlsarrayrequiredTikTok Shop product pages. Accepts www.tiktok.com/shop/pdp/<slug>/<id>, shop.tiktok.com/<region>/pdp/<slug>/<id>, or a bare product ID like 1731578642912612516. The slug is ignored — only the trailing ID matters.
maxReviewsinteger0Stop after this many reviews per product. 0 collects everything.
sortByselectrelevancerelevance matches what the product page shows. newest returns the most recent first.
ratingFilterselectallCollect only 1, 2, 3, 4 or 5 star reviews.
includePricebooleantrueFetch the real price, per-variant prices and live stock (one extra request per product).
pageSizeinteger500Reviews per request, up to 1500.
requestDelayMsinteger0Pause between requests.
proxyConfigurationproxyResidential, USProxy settings — see tips below.
debugbooleanfalseVerbose logging for troubleshooting.

💡 Tips for best results

  • Match the proxy country to the storefront. A /us/ product needs a US proxy. TikTok redirects mismatched regions to its homepage, and the Actor will report that the product wasn't found.
  • Use sortBy: "newest" for scheduled runs. Combine with maxReviews: 100 to cheaply capture only what's new since yesterday.
  • Use ratingFilter: "1" for product research. Negative reviews are where the actionable insight lives — and it's far cheaper than pulling everything.
  • Leave pageSize at 500. It's the sweet spot between fewer requests and manageable response sizes.
  • Turn off includePrice if you only want review text — it saves one request per product.

📤 Output format

One record per product, with all reviews nested inside. This keeps product context and reviews together, so you don't need a join.

Sample output

{
"productId": "1731791261654290596",
"productUrl": "https://shop.tiktok.com/us/pdp/x/1731791261654290596",
"region": "us",
"title": "Potaroma Interactive Catnip Chew Toy with [6000mg A+ Organic Catnip]…",
"description": "100% Organic Catnip Inside — Relieves Stress, Triggers Instinct…",
"images": ["https://p16-oec-general-useast5.ttcdn-us.com/…webp"],
"price": 12.59,
"originalPrice": 16.99,
"currency": "USD",
"discountPercent": 26,
"skus": [
{
"skuId": "1731791107165294756",
"name": "ACCU-Potaroma-JMBZ",
"specification": "Default",
"price": 12.59,
"originalPrice": 16.99,
"stock": 5431
}
],
"soldCount": 35121,
"rating": 4.6,
"reviewCount": 3370,
"ratingBreakdown": { "1": 135, "2": 83, "3": 160, "4": 254, "5": 2738 },
"categories": ["Pet Supplies", "Dog & Cat Accessories", "Cat Toys", "Catnip Toys"],
"shopId": "7495813075786500260",
"shopName": "Potaroma LLC",
"shopUrl": "https://shop.tiktok.com/us/store/potaroma-llc/7495813075786500260",
"shopRating": 4.4,
"shopFollowers": 12240,
"shopSoldCount": 182114,
"shopProductCount": 60,
"reviewsAvailable": 3370,
"reviewsCollected": 3360,
"partial": false,
"scrapedAt": "2026-08-12T12:21:15.040Z",
"reviews": [
{
"reviewId": "7578995850673604366",
"rating": 5,
"text": "My cats absolutely went crazy for these. They could smell it through the mail…",
"date": "2025-12-01T20:55:16.901Z",
"reviewerName": "K**0",
"reviewerId": "7048016581158585350",
"reviewerAvatar": "https://p16-common-sign.tiktokcdn-us.com/…jpg",
"images": ["https://p16-oec-general-useast5.ttcdn-us.com/…webp"],
"skuId": "1731791107165294756",
"skuSpecification": "Default",
"country": "US",
"verifiedPurchase": true,
"incentivized": false
}
]
}

Product fields

FieldDescription
productId, productUrl, regionProduct identity and storefront
title, descriptionProduct name and full description text
images, videosProduct media URLs
price, originalPrice, currency, discountPercentCurrent pricing
skus[]Each variant: skuId, name, specification, price, originalPrice, stock
soldCountUnits sold
rating, reviewCountAverage star rating and TikTok's total review count
ratingBreakdownReview count per star, 1 through 5
categoriesCategory path, root to leaf
shopId, shopName, shopUrl, shopLogoSeller identity
shopRating, shopFollowers, shopSoldCount, shopProductCountSeller reputation
reviewsAvailableHow many reviews this query could reach
reviewsCollectedHow many were actually collected
partialtrue if the run stopped short of everything available
scrapedAtISO timestamp of the run

Review fields

FieldDescription
reviewIdUnique review identifier
rating1–5 stars
textThe review text
dateISO 8601 timestamp
reviewerNameBuyer's display name (TikTok masks these — see FAQ)
reviewerId, reviewerAvatarBuyer ID and profile picture
images[]Customer photo URLs
skuId, skuSpecificationWhich variant was purchased
countryBuyer's country code
verifiedPurchaseConfirmed buyer
incentivizedReview given in exchange for a free or discounted product

▶️ How to use

On the Apify platform (no code)

  1. Open the Actor and click Try for free.
  2. Paste your TikTok Shop product URLs into Start URLs — one per line, or click Add for each.
  3. (Optional) Set Max reviews per product, pick a star rating filter, or switch sorting to Newest first.
  4. Click Start.
  5. When it finishes, open the Dataset tab and click Export → choose Excel, CSV, JSON or Google Sheets.

That's it — no configuration needed for a first run.

Where to find a product URL

Open any TikTok Shop product, copy the address bar. It looks like:

https://www.tiktok.com/shop/pdp/cat-nail-clipper-by-potaroma/1731578642912612516

The long number at the end is the product ID — you can paste just that if you prefer.

Run it on a schedule

Use Apify Schedules to run daily or weekly. Set sortBy: "newest" and maxReviews: 100 to capture new reviews cheaply, then build a monitoring dashboard or an alert on negative sentiment.

Call it from code

curl -X POST "https://api.apify.com/v2/acts/YOUR~tiktok-shop-product-reviews-scraper/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "startUrls": [{ "url": "1731578642912612516" }] }'

The Actor also works with the official Apify clients for JavaScript and Python.


📈 Use cases

1. Competitor review mining. Pull every review from your top 10 competitors' bestsellers, filter to 1- and 2-star, and build a list of the exact complaints their customers have. Then fix those things in your own product listing and ad copy.

2. Product validation before you buy stock. Before committing to inventory, export the full review history of a trending product. Check whether the 4.6★ average is built on 3,000 genuine reviews or padded with incentivized ones — the incentivized and verifiedPurchase flags make this a one-column filter.

3. Automated review monitoring. Schedule a daily run sorted by newest. Push new 1- and 2-star reviews to Slack or email so your support team responds within hours, not weeks.

4. Social proof and UGC harvesting. Filter to 5-star reviews with photos and you have a ready-made library of customer testimonials and user-generated images for ads, landing pages and email campaigns.

5. Category-level market research. Run the Actor across dozens of products in a niche, then feed the combined review text to an LLM or sentiment model. Surface what buyers in that category actually care about — sizing, durability, shipping speed — backed by thousands of real data points.


🛠️ Advanced tips

Performance. The default pageSize: 500 returns roughly 1,000 reviews per two requests. Raising it to 1,500 cuts request count on very large products; lowering it makes each response smaller on a slow connection. Most products complete in a handful of requests either way.

Proxies. Residential proxies with the country matched to the storefront are the most reliable setting, and the default. Datacenter proxies also work — no rate limiting was observed in testing (40 consecutive requests all succeeded) — so try them if you want to reduce cost on large runs.

Scaling to many products. Add all URLs to a single run rather than starting one run per product — the HTTP and proxy session is reused across products, and you pay Apify's per-run startup once instead of many times. Each product is written to the dataset as soon as it finishes, so an interrupted or migrated run keeps everything already collected.

Cost control. Set maxReviews when you only need a representative sample, and turn includePrice off when you don't need pricing. Both cut work per product.

Non-US storefronts. Set apifyProxyCountry to match the region in your URL. A UK product URL with a US proxy will not resolve.


❓ FAQ and troubleshooting

Why are reviewer names masked, like J** o**n? That's how TikTok publishes them. The platform masks buyer names on its own website for privacy, and there is no unmasked version available to anyone — including this Actor.

The Actor collected 3,360 reviews but the product says 3,370. Is something missing? No. TikTok's headline count includes a small number of reviews it filters out of its own pages — hidden, removed or moderated entries. You are getting everything the platform actually serves. The reviewsCollected and reviewsAvailable fields make the difference explicit, and partial stays false because nothing was lost on our side.

A run finished with partial: true. What now? Something stopped the sweep early — usually a temporary network or proxy problem. Simply re-run it; the Actor retries aggressively, so a repeat run almost always completes. If it persists, enable a residential proxy and raise requestDelayMs to 500.

I got "Could not load product…". What's wrong? Two common causes: (1) the product ID doesn't exist or was delisted, or (2) your proxy country doesn't match the product's storefront region. Open the URL in your own browser to confirm it still works, then set apifyProxyCountry to that storefront's country.

Why is price empty? Either includePrice was set to false, or TikTok didn't return pricing for that product on that run. The Actor deliberately reports null rather than guessing — TikTok serves deliberately corrupted price strings to automated clients, and a guessed number would be wrong, not merely missing.

Prices changed between two runs of the same product. Why? TikTok personalizes promotions per session, so the price reflects what a shopper in that session would see. Treat it as a live observation rather than a fixed catalogue price.

Can it scrape a whole shop or a search results page? Not yet — this Actor takes product URLs. You can pass as many as you like in one run. Contact me if shop-wide or keyword-based scraping would be useful to you.

Does it need my TikTok login? No. It only reads publicly visible data. No account, cookies or API keys required.

Is this legal? The Actor collects only publicly available information. You are responsible for how you use the data — check TikTok's terms and your local regulations, particularly around personal data, before using it commercially.


📞 Support

Questions, bug reports or feature requests are welcome.

  • 📧 Email:
  • 🐛 Issues: use the Issues tab on this Actor's Apify page
  • 💡 Feature requests: tell me what you need — shop-wide scraping, extra fields and new marketplaces are all on the table

Include your run ID when reporting a problem, and enable the debug input before re-running. That gives me everything I need to diagnose it quickly.


TikTok Shop scraper · TikTok Shop reviews API · TikTok product data extraction · e-commerce review scraping · TikTok Shop product scraper · customer review export · Apify actor · web scraping · product research tool · competitor analysis · UGC scraping


Engineering notes on how this Actor bypasses TikTok's request signing, price cloaking and transient-failure traps: docs/how-it-works.md.