TikTok Shop Scraper - Products, Sales, Reviews & Seller Data avatar

TikTok Shop Scraper - Products, Sales, Reviews & Seller Data

Pricing

from $6.15 / 1,000 results

Go to Apify Store
TikTok Shop Scraper - Products, Sales, Reviews & Seller Data

TikTok Shop Scraper - Products, Sales, Reviews & Seller Data

TikTok Shop product scraper and data API. By product ID or URL across 13 marketplaces: units sold, ratings with star breakdown, buyer reviews, seller profile and legal business details, per-SKU variants with live stock, shipping, specs, images and video. Filter and sort. Export JSON, CSV, Excel.

Pricing

from $6.15 / 1,000 results

Rating

5.0

(1)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

1

Bookmarked

10

Total users

4

Monthly active users

5 days ago

Last modified

Share

TikTok Shop Product Details Scraper

TikTok Shop Scraper

Here is one real record from a live run (trimmed) with the optional AI product summary add-on enabled:

{
"productId": "1730123606468825995",
"title": "Huloo Sleep Baby Playpen Mat - 1.3\" Thick Elasti-Foam Nursery Development Mat",
"region": "US",
"url": "https://shop.tiktok.com/us/pdp/huloo-sleep.../1730123606468825995",
"price": null,
"priceMasked": true,
"discount": "50%",
"discountPercent": 50,
"currency": "USD",
"soldCount": 24749,
"rating": 4.8,
"reviewCount": 2569,
"ratingBreakdown": { "oneStar": 58, "twoStar": 19, "threeStar": 54, "fourStar": 140, "fiveStar": 2298 },
"reviews": [
{ "rating": 5, "text": "Highly recommended for children and adults alike...", "reviewerName": "Z**a", "verifiedPurchase": true, "country": "US" }
],
"promotions": ["Flash sale", "Free shipping"],
"inStock": true,
"availableQuantity": 2326,
"category": "Baby & Maternity > Baby Furniture > Decoration > Rugs & Carpets",
"shopName": "Huloo Sleep",
"shopId": "7496011205704125323",
"shopRating": 4.8,
"shopFollowers": "2.2K+",
"shopSoldCount": "39.4K",
"shopReviewCount": 3067,
"shopProductCount": 4,
"shopSubScores": [ { "type": "productQuality", "percentage": 100 }, { "type": "service", "percentage": 94 } ],
"sellerBusinessName": "Hangzhouwucui Technology Co., Ltd",
"sellerBusinessAddress": "1640 S Holly St, Denver, Colorado, 80224, United States",
"shippingInfo": { "deliveryName": "Standard", "freeShipping": true, "shippingFee": 0, "deliveryMinDays": 4, "deliveryMaxDays": 7 },
"variants": "[36 SKUs with option, live stock and per-SKU image]",
"specifications": "[product attributes]",
"images": "[8 image URLs]",
"video": { "id": "v12d52...", "duration": 33.3, "coverUrl": "https://...", "url": "https://...mp4" },
"aiSummary": "A thick, non-toxic foam baby play mat with a water-repellent, non-slip surface.",
"aiPros": ["Soft, 1.3in thick foam", "Free standard shipping", "Verified 4.8 rating from 2,569 reviews"],
"aiCons": ["Larger sizes ship in 4-7 days"],
"error": null
}

The most complete TikTok Shop product data extractor available. Give it a product ID or URL and a marketplace, and it returns everything TikTok Shop exposes on a product page: units sold, average rating with a full 1-to-5 star breakdown, a sample of real buyer reviews (with text, rating and verified-purchase flag), live per-SKU stock and variants, the discount and promotions, shipping and delivery days, the complete seller profile including its legal business name and address, specifications, images, and the product video, across 13 marketplaces, plus filters and sorting to keep only the products you want.

Price note: TikTok currently masks the numeric price on its logged-out web product pages, so price and originalPrice are returned as null with priceMasked: true when TikTok withholds them (the real discount percentage, units sold, ratings, reviews, stock and seller data are always returned in full). When TikTok does expose the price, this actor returns it. See the FAQ.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

This is a TikTok Shop scraper and TikTok Shop product data API for e-commerce and social commerce research. You give it one or more TikTok Shop product IDs or full product URLs and a marketplace region, and it reads each product's public detail payload and writes one normalized record per product to the run's dataset.

Each record includes the title, units sold, average rating with a full 1-to-5 star breakdown, review count, a sample of real buyer reviews (text, rating, verified-purchase and incentivized flags, country, photos), the discount and promotion labels (for example Flash sale, Free shipping), live stock and per-SKU variants with per-SKU images, product options, specifications, the category path, shipping and delivery days, the complete seller profile (name, rating, sub-scores, followers, units sold, review count, product and video counts, and the seller's legal business name and address), images, and the product video. When TikTok exposes the numeric price it is included, along with an estimated lifetime revenue figure; when TikTok masks it, price is null and priceMasked is true. Prices and currency come from the product's home marketplace. Missing source values are returned as null.

Optional input filters (minimum and maximum price, minimum rating, minimum units sold, in stock only, category contains, and a sort order) are applied to the real records after they are read, so only the products that match are returned and charged.

TikTok Shop applies a security check on some marketplace edges. When an edge is challenging, the actor returns a single record with a populated error field instead of a product, and it is not charged. Retry, or read a marketplace edge that is not currently challenging.

How we compare

All figures below are the competitors' own listing figures at the time of writing; check their pages for current numbers.

scrapers_lat (this actor)webdatalabs/tiktok-shop-scrapernovi/tiktok-shop-scraperexcavator/tiktok-shop-scraper
Marketplaces13 (US, GB, FR, DE, ES, IT, IE, ID, TH, VN, MY, PH, SG)8region codeUS only
Per-SKU variants + live stockYesProduct mode onlyNoNo
Units sold + estimated revenueYesYesNoNo
Rating star breakdown (1-5)YesNoNoNo
Buyer reviews with textYes (embedded sample)Yes (product mode)NoNo
Shipping + delivery daysYesNoNoNo
Seller legal business name + addressYesNoNoNo
Full seller profile (sub-scores, followers, reviews, product/video counts)YesPartialPartialNo
Specifications + optionsYesNoNoNo
Product video (cover + playable URL)YesNoNoNo
Promotions (flash sale, free shipping)YesNoNoNo
Input filters + sorting on resultsYes (price, rating, sold, stock, category, sort)maxResults onlykeyword + sortnone
Keyword search / category browseNoYesYes (search)No
No charge on block or failureYesNot statedNot statedNot stated
BillingPay per resultPay per result$38 per month rental$30 per month rental

Why switch to this actor: you get more marketplaces, per-SKU live stock, a full rating star breakdown, a sample of real buyer reviews, shipping and delivery days, the seller's legal business name and address, specifications, promotions, the product video, and result filters that no other TikTok Shop product scraper combines, on pay-per-result billing with no monthly rental, and you are never charged when a page is blocked.

Where a competitor is a better fit, honestly: if you need to discover products from a keyword or browse a category or seller storefront (rather than start from product IDs or URLs), webdatalabs and novi cover those discovery surfaces and this actor does not. webdatalabs returns a larger volume of individual review bodies and is a touch cheaper per result; this actor returns the page's embedded review sample plus the full star breakdown. novi has more historical installs but its recent successful-run rate is low. This actor is the choice when you already have the product IDs or URLs and want the most complete, reliable per-product detail.

Use cases

  • Product and price research: pull live prices, discounts, and per-SKU stock to size an assortment or set your own pricing.
  • Competitor monitoring: track a rival's TikTok Shop catalog, prices, ratings, units sold, and estimated revenue over time.
  • Dropshipping and product sourcing: filter by minimum units sold, minimum rating, and price range to surface proven winners before you list them.
  • Influencer and social commerce analysis: read seller profiles (followers, review count, product and video counts) to vet TikTok Shop sellers and creators.
  • Trend discovery: sort a list of product URLs by units sold or estimated revenue to spot what is moving in a category.
  • E-commerce data pipelines: feed structured TikTok Shop product data into a dashboard, warehouse, or model as JSON, CSV, or Excel.

Quickstart

Open the actor, paste this into the input, and press Run.

{
"productIds": ["1731465583417136117"],
"region": "US",
"minRating": 4,
"sortBy": "soldDesc",
"maxProducts": 3
}

You can paste full product URLs too (the ID is extracted automatically). Free Apify plans are capped at 10 products per run.

Input reference

FieldTypeRequiredDefaultDescription
productIdsstring[]yes["1729480569078716908"]TikTok Shop product IDs or full product URLs. The ID is the long numeric value in a product URL such as tiktok.com/view/product/1729480569078716908. Full URLs are accepted and the ID is extracted automatically.
productUrlsstring[]no(none)Alias for productIds, provided as a separate list of full product URLs. Merged with productIds.
regionenumnoFRMarketplace to read prices and availability from: FR, GB, US, DE, ES, IT, IE, ID, TH, VN, MY, PH, SG. Prices and currency come from the product's home marketplace.
maxProductsintegerno(all)Maximum number of products to collect. Free Apify plans are capped at 10 per run.
minPricenumberno(none)Keep only products at or above this price (marketplace currency).
maxPricenumberno(none)Keep only products at or below this price.
minRatingnumberno(none)Keep only products with an average rating at or above this value (0 to 5).
minSoldintegerno(none)Keep only products with at least this many units sold.
inStockOnlybooleannofalseDrop products that are out of stock.
categorystringno(none)Keep only products whose category path contains this text (case-insensitive).
sortByenumnononeOrder of returned products: none, priceAsc, priceDesc, ratingDesc, soldDesc, reviewsDesc, revenueDesc.
aiSummarybooleannofalseOptional paid add-on. Adds an AI buyer summary with pros and cons (aiSummary, aiPros, aiCons) to each product. Billed only when a summary is produced. Not available on the free plan.

Output reference

One dataset item per product. Types: string, number, integer, boolean, string[], object, object[], or null when the source value is absent.

FieldTypeDescription
productIdstringTikTok Shop product ID (unique per product).
titlestringProduct title.
regionstringMarketplace the product was read from.
urlstringProduct page URL.
imageUrlstringPrimary product image URL.
imagesstring[]All product image URLs.
pricenumberCurrent price in the marketplace currency, or null when TikTok masks it (see priceMasked).
originalPricenumberOriginal (pre-discount) price, or null.
priceMaskedbooleantrue when TikTok withheld the numeric price on the web page. Other fields remain fully populated.
discountstringDiscount label, for example a percentage, or null.
discountPercentnumberDiscount as a number (for example 50), or null. Returned even when the price is masked.
currencystringISO currency code, for example USD, GBP.
currencySymbolstringCurrency symbol, for example $.
ratingnumberAverage product rating.
reviewCountintegerTotal number of reviews.
ratingBreakdownobjectCount of reviews at each star level: oneStar through fiveStar.
reviewsobject[]Sample of buyer reviews embedded on the page: rating, text, reviewerName, verifiedPurchase, incentivized, country, skuSpecification, images, reviewedAt.
reviewsHasMorebooleantrue when the product has more reviews than the embedded sample.
promotionsstring[]Promotion labels on the listing, for example Flash sale, Free shipping.
soldCountintegerUnits sold.
estimatedRevenuenumberEstimated lifetime revenue (price multiplied by units sold); null when the price is masked.
inStockbooleantrue when the product is purchasable, null when unknown.
availableQuantityintegerTotal available quantity across variants.
categorystringCategory path joined into a single string.
categoryPathstring[]Category path as a list.
descriptionstringProduct description.
specificationsobject[]Product attributes; each entry has a name and value.
optionsobject[]Sale properties / option groups (for example size, color).
variantsobject[]Per-SKU variants with price, original price, availability, and stock.
variants[].imagestringPer-SKU image URL, or null.
variants[].isPreOrderbooleantrue when the SKU is pre-order, or null.
shippingInfoobjectDelivery name, free-shipping flag, shipping fee, currency, and min/max delivery days, or null.
mainVideostringPlayable URL of the main product video, or null.
videoobjectMain product video object: id, duration, coverUrl, url, width, height, or null.
shopNamestringSeller/shop name.
shopIdstringSeller/shop ID.
shopUrlstringSeller/shop page URL.
shopLogostringSeller/shop logo URL.
shopRatingnumberSeller rating.
shopSubScoresobject[]Seller sub-scores as percentages: productQuality, shipping, service.
sellerBusinessNamestringSeller's registered legal business name, when published, else null.
sellerBusinessAddressstringSeller's registered business address, when published, else null.
shopSoldCountstringSeller total units sold (formatted, for example 1.9M).
shopGlobalSoldCountstringSeller total units sold across all markets (formatted).
shopFollowersstringSeller follower count (formatted).
shopReviewCountintegerSeller total review count.
shopProductCountintegerNumber of products on sale in the seller's store.
shopVideoCountintegerNumber of videos on the seller's store.
aiSummarystringAI buyer summary (only with the aiSummary add-on), else null.
aiProsstring[]AI-distilled product pros (only with the aiSummary add-on), else null.
aiConsstring[]AI-distilled product cons (only with the aiSummary add-on), else null.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success. On a blocked or failed attempt, a record with a populated error field is written instead (not charged).

Example output record

A real success record from a live run (trimmed for length; the full record includes every field in the Output reference):

{
"productId": "1730123606468825995",
"title": "Huloo Sleep Baby Playpen Mat - 1.3\" Thick Elasti-Foam Nursery Development Mat",
"region": "US",
"price": null,
"priceMasked": true,
"discount": "50%",
"discountPercent": 50,
"currency": "USD",
"rating": 4.8,
"reviewCount": 2569,
"ratingBreakdown": { "oneStar": 58, "twoStar": 19, "threeStar": 54, "fourStar": 140, "fiveStar": 2298 },
"soldCount": 24749,
"inStock": true,
"availableQuantity": 2326,
"shopName": "Huloo Sleep",
"shopRating": 4.8,
"sellerBusinessName": "Hangzhouwucui Technology Co., Ltd",
"promotions": ["Flash sale", "Free shipping"],
"shippingInfo": { "deliveryName": "Standard", "freeShipping": true, "deliveryMinDays": 4, "deliveryMaxDays": 7 },
"error": null
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~tiktok-shop-product-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"productIds":["1731465583417136117"],"region":"US","sortBy":"soldDesc"}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~tiktok-shop-product-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"productIds":["https://www.tiktok.com/view/product/1731465583417136117"],"region":"GB"}'

Apify CLI:

apify call scrapers_lat/tiktok-shop-product-scraper \
--input '{"productIds":["1731465583417136117"],"region":"US"}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"

<DATASET_ID> is returned as defaultDatasetId in the run object. clean=true drops empty and internal fields.

Billing and limits

This actor uses pay-per-event billing. See the pricing tab for current prices.

EventWhen it is charged
apify-actor-startOnce per run, for every user, at run start. Covers the fixed residential-proxy compute cost of a run.
resultOnce per product record successfully returned and passing your filters. The primary event.
ai_summaryOnce per product when the optional AI summary add-on (aiSummary) produces a usable buyer summary. Opt-in, default off, and disabled for free-plan users.
  • No charge on failure or block. If a product cannot be read (including a TikTok security check), or is filtered out by your input filters, the actor does not charge a result for it. Blocked attempts are written with a populated error field. The AI add-on is charged only when a summary is actually produced.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 product records per run, and paid add-ons (including aiSummary) are disabled for free-plan users. Upgrade for higher maxProducts and add-ons.

FAQ and troubleshooting

Is there a TikTok Shop API for product data? TikTok does not offer a public product API for arbitrary listings. This actor is a TikTok Shop product data API you can call over HTTP or the Apify SDK: pass product IDs or URLs, receive structured JSON, CSV, or Excel with units sold, ratings and star breakdown, buyer reviews, variants, live stock, shipping, seller data, and price when TikTok exposes it.

Why is price null / what is priceMasked? TikTok currently masks the numeric price on its logged-out web product pages (it shows the price only inside the app or to signed-in shoppers). When that happens this actor returns price and originalPrice as null and sets priceMasked to true, rather than guessing a wrong number. Everything else on the page is real and returned in full: the discount percentage, units sold, ratings and the 1-to-5 star breakdown, buyer reviews, live stock and per-SKU variants, shipping, promotions, and the full seller profile. When TikTok does expose the price, this actor returns it and computes estimatedRevenue. This is TikTok's own posture, so it can change over time and can differ by marketplace.

Can it search TikTok Shop by keyword or browse a category or shop? No. This actor works from product IDs or URLs and returns the most complete per-product detail. If you need keyword search, category browse, or seller-storefront discovery, that is a different surface (see the comparison above).

Why did I get temporarily blocked by the site, please retry? TikTok Shop applies a security check (slide captcha) on some marketplace edges. This is a real, honest signal, not a fabricated record, and it is not charged. Retry the run, or read a marketplace edge (region) that is not currently challenging.

Which marketplaces are most reliable? US and GB edges typically clear more often than FR. The security check is intermittent, so retries help.

Where do I find a product ID? It is the long numeric ID in a product URL, for example tiktok.com/view/product/1731465583417136117. You can paste the whole URL and the ID is extracted automatically.

How is estimated revenue calculated? estimatedRevenue is the current price multiplied by the reported units sold. It is an estimate for comparison, not audited sales.

Why are price and currency different from my region? Prices and currency come from the product's home marketplace, set by region. Choose the marketplace you want the price from.

Is this an official TikTok tool? No. This actor is independent and has no affiliation with TikTok or ByteDance. It reads only publicly available product pages. Use it in accordance with the TikTok terms of service.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with TikTok or ByteDance. Accesses only publicly available product data. Use in accordance with the TikTok terms of service.