TikTok Shop Scraper avatar

TikTok Shop Scraper

Pricing

from $4.50 / 1,000 results

Go to Apify Store
TikTok Shop Scraper

TikTok Shop Scraper

Scrape TikTok Shop products across 10 markets: US, UK, Mexico, Malaysia, Philippines, Singapore, Thailand, Vietnam, Japan and Indonesia. Search by keyword, browse any category, or paste product URLs. Get live local prices, discounts, ratings, reviews, variants, stock, sales and seller data.

Pricing

from $4.50 / 1,000 results

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

1

Bookmarked

54

Total users

5

Monthly active users

17 days ago

Last modified

Share

Every TikTok Shop product, structured and ready for analysis: prices, variants, ratings, reviews, sellers, and shipping. Search the catalog by keyword, browse a category, or scrape by product URL across 10 markets, and get clean JSON in minutes instead of copying tabs for hours.

How it works

How it works

Paste TikTok Shop product URLs, type keywords, or drop in a category link, and run the Actor. You get structured records back with over 40 fields per product: price, variants, ratings, reviews, seller stats, and shipping. No login, no API key, no setup. Export to JSON, CSV, or Excel, or pull straight from the API.

โœจ Why teams choose this over other TikTok Shop scrapers

Spending hours copying product data from TikTok Shop tabs? Running scrapers that fail on half the products you feed them? Paying for a product scraper, then a second one for search, then a third for reviews?

  • ๐ŸŽฏ Search and detail in one Actor. Find products by keyword and scrape them in full depth without stitching two tools together. Most competitors sell search and detail as separate Actors. This one does both in a single run.
  • ๐Ÿ“ฆ Over 40 fields per product. Price, discounted price, discount percentage, price range, currency, rating, rating count, sales count, stock, every variant with its own price and stock, specifications, shipping, delivery windows, seller, shop stats, images, and videos. The fields other scrapers skip are often the ones you need most.
  • โญ Reviews and rating distribution included. Pull real reviews with reviewer name, star rating, verified-purchase and incentivized flags, review images, and country, plus the full 1-to-5 star distribution. Most scrapers stop at the average rating.
  • โœ… Reliable on hard products, not just easy ones. Feed it a list and get results back for the whole list, including products that other scrapers silently drop. Consistent output whether you run one product or hundreds.
  • ๐Ÿช Full seller and shop context. Every record carries the shop name, shop URL, shop rating, follower count, catalog size, and seller location, so you can rank sellers, not just products.
  • ๐Ÿ”“ No account, no cookies, no headaches. The Actor reads publicly visible product and search data. Nothing to log in to, nothing to configure, nothing to maintain.
  • ๐Ÿ“… Live prices on every run. Prices, discounts, stock, and sales counts come from the live catalog each time you run, not a stale snapshot, so price tracking and margin math stay accurate.

๐ŸŽฏ What you can do with TikTok Shop data

TeamWhat they build
Ecommerce & DropshippingFind winning products by sold count, rating, and review volume, and spot demand before a category saturates
Brand & RetailTrack your own listings and competitors' prices, variants, discounts, and stock across TikTok Shop
Market ResearchCompare pricing, demand, and assortment across categories with structured product datasets
Data & AnalyticsFeed 40+ fields per product into BI dashboards, pricing models, and trend forecasts
Affiliate & CreatorDiscover high-converting products with strong ratings and reviews that are worth promoting
Sourcing & WholesaleRank shops by catalog size, follower count, and rating to shortlist reliable suppliers
Reputation & CXPull reviews with verified-purchase flags and star distribution to read what buyers actually say

๐Ÿ“ฅ Input parameters

Give the Actor product URLs, keywords, category links, or any mix of the three. Everything else is optional.

FieldTypeDescription
productUrlsarray of stringsTikTok Shop product URLs to scrape in full detail (price, variants, reviews, shipping, seller).
searchKeywordsarray of stringsKeywords to search the TikTok Shop catalog (US market). Returns matching products with title, price, rating, and sold count that you can then scrape in detail.
categoryUrlsarray of stringsTikTok Shop category page URLs (works in every supported market). Returns the category's products with live prices. Browse to a category on shop.tiktok.com and paste its URL.
regionstringTikTok Shop market: United States, United Kingdom, Mexico, Malaysia, Philippines, Singapore, Thailand, Vietnam, Japan, or Indonesia. Auto-detected from the URL when present.
maxItemsintegerMaximum number of products returned per category or keyword input. 0 means no limit.
debugModebooleanLog extra diagnostics for troubleshooting. Leave off for normal runs.

You can run product URLs, search keywords, and category URLs together in a single run. The output is one clean dataset combining all of them.

๐Ÿ“Š Output data

Product detail record (scraped from a product URL):

{
"product_name": "Hydrating Vitamin C Face Serum 30ml",
"product_id": "1729398472265994690",
"product_url": "https://shop.tiktok.com/view/product/1729398472265994690",
"price": 12.99,
"discounted_price": 9.74,
"discount_percentage": 25,
"price_min": 9.74,
"price_max": 18.50,
"currency": "USD",
"rating": 4.82,
"rating_count": 2431,
"sales_count": 15600,
"in_stock": true,
"total_stock": 842,
"variant_count": 3,
"variants": [
{ "sku_id": "17293...", "name": "30ml Single", "price": 9.74, "stock": 300, "in_stock": true },
{ "sku_id": "17294...", "name": "30ml Twin Pack", "price": 17.50, "stock": 220, "in_stock": true }
],
"specifications": { "Volume": "30ml", "Skin Type": "All" },
"category": "Beauty & Personal Care",
"shipping_fee": 0,
"free_shipping": true,
"delivery_min_days": 3,
"delivery_max_days": 7,
"reviews_total": 2431,
"rating_distribution": { "5": 2010, "4": 300, "3": 80, "2": 25, "1": 16 },
"reviews": [
{
"review_id": "74920...",
"rating": 5,
"text": "Skin feels amazing after two weeks.",
"reviewer_name": "a***a",
"verified_purchase": true,
"incentivized": false,
"images": ["https://..."],
"country": "US"
}
],
"shop_name": "GlowLab Official",
"shop_url": "https://shop.tiktok.com/...",
"shop_id": "7495...",
"average_rating": 4.79,
"shop_rating_count": 51230,
"follower_count": 128400,
"total_products": 96,
"seller_location": "US",
"images": ["https://...", "https://..."],
"videos": [{ "id": "73...", "cover_url": "https://...", "duration": 18.4 }],
"region": "us",
"timestamp": "2026-07-01T09:14:22Z"
}

Search result record (returned from a keyword):

{
"product_id": "1729398472265994690",
"title": "Hydrating Vitamin C Face Serum 30ml",
"product_url": "https://shop.tiktok.com/view/product/1729398472265994690",
"price": 9.74,
"original_price": 12.99,
"discount": "25% off",
"currency": "USD",
"rating": 4.82,
"review_count": 2431,
"sold_count": 15600,
"image": "https://...",
"seller_id": "7495...",
"seller_name": "GlowLab Official",
"keyword": "face serum",
"region": "us",
"timestamp": "2026-07-01T09:14:22Z"
}

Category results use the same shape, with keyword set to the category.

๐Ÿ—‚๏ธ Data fields

Product identity

FieldTypeDescription
product_namestringProduct title
product_idstringTikTok Shop product ID
product_urlstringCanonical product URL
categorystringPrimary category
categoriesarrayFull category path
descriptionstringProduct description

Pricing

FieldTypeDescription
pricenumberList price
discounted_pricenumberCurrent price after discount
discount_percentagenumberDiscount as a percentage
price_min / price_maxnumberPrice range across variants
currencystringCurrency code

Ratings & reviews

FieldTypeDescription
ratingnumberAverage star rating
rating_countnumberNumber of ratings
reviews_totalnumberTotal reviews
rating_distributionobjectCount of 1 to 5 star ratings
reviewsarrayReview objects: rating, text, reviewer, verified-purchase flag, incentivized flag, images, country, time

Variants & stock

FieldTypeDescription
in_stockbooleanWhether the product is buyable
total_stocknumberTotal units across variants
variant_countnumberNumber of variants
variantsarrayEach SKU: name, price, stock, in-stock flag
specificationsobjectAttribute name and value pairs

Shipping

FieldTypeDescription
shipping_feenumberShipping cost
free_shippingbooleanFree shipping flag
delivery_min_days / delivery_max_daysnumberDelivery window

Seller & shop

FieldTypeDescription
shop_namestringShop name
shop_urlstringShop page URL
shop_idstringShop ID
average_ratingnumberShop average rating
shop_rating_countnumberNumber of shop ratings
follower_countnumberShop followers
total_productsnumberProducts in the shop
seller_locationstringSeller country

Media & meta

FieldTypeDescription
imagesarrayProduct image URLs
videosarrayProduct videos: cover, duration
image_urlstringPrimary image
sales_countnumberUnits sold
regionstringMarket code
timestampstringWhen the record was scraped

Search results carry product_id, title, product_url, price, original_price, discount, currency, rating, review_count, sold_count, image, seller_id, seller_name, keyword, and region.

๐Ÿš€ Examples

Scrape a single product in full detail

{
"productUrls": ["https://shop.tiktok.com/view/product/1729398472265994690"]
}

Find products by keyword

{
"searchKeywords": ["face serum"],
"region": "us"
}

Scrape a batch of products at once

{
"productUrls": [
"https://shop.tiktok.com/view/product/1729398472265994690",
"https://shop.tiktok.com/view/product/1731795774080652206",
"https://shop.tiktok.com/view/product/1732399179294806251"
]
}

Scrape every product in a category

{
"categoryUrls": ["https://shop.tiktok.com/us/c/moisturizers-mists/601615"],
"region": "us"
}

Scrape a United Kingdom category

{
"categoryUrls": ["https://shop.tiktok.com/gb/c/bras/601262"],
"region": "gb"
}

Scrape a category in any other market

{
"categoryUrls": ["https://shop.tiktok.com/th/c/bras/601262"],
"region": "th",
"maxItems": 40
}

Search for trending products

{
"searchKeywords": ["wireless earbuds", "phone case"],
"region": "us"
}

Combine search and detail in one run

{
"searchKeywords": ["led strip lights"],
"productUrls": ["https://shop.tiktok.com/view/product/1729398472265994690"],
"region": "us"
}

๐Ÿค– Copy to your AI assistant

Paste this block into Claude, ChatGPT, or Cursor to give it full context about this scraper:

You have access to the TikTok Shop Scraper on Apify: SilentFlow/tiktok-shop-scraper
Input schema:
- productUrls (array of strings): TikTok Shop product URLs to scrape in full detail.
- searchKeywords (array of strings): keywords to search the TikTok Shop catalog (US market).
- categoryUrls (array of strings): TikTok Shop category page URLs to scrape (works in every supported market).
- region (string, default "us"): the TikTok Shop market: us, gb, mx, my, ph, sg, th, vn, jp, or id.
- maxItems (integer, default 0): maximum number of products returned per category or keyword input. 0 means no limit.
- debugMode (boolean, default false): extra diagnostics.
Provide productUrls, searchKeywords, categoryUrls, or any combination.
Output per product (40+ fields): product_name, product_id, product_url, price,
discounted_price, discount_percentage, price_min, price_max, currency, rating,
rating_count, sales_count, in_stock, total_stock, variant_count, variants[],
specifications{}, category, categories[], shipping_fee, free_shipping,
delivery_min_days, delivery_max_days, reviews_total, rating_distribution{},
reviews[] (rating, text, reviewer_name, verified_purchase, incentivized, images, country),
shop_name, shop_url, shop_id, average_rating, shop_rating_count, follower_count,
total_products, seller_location, images[], videos[], region, timestamp.
Output per search result (17 fields): product_id, title, product_url, price,
original_price, discount, currency, rating, review_count, sold_count, image,
seller_id, seller_name, keyword, region, timestamp.
Pay per result. Proxies included. Use apify-client for Python or JavaScript.

๐Ÿ’ป Integrations

Find winning products with Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("SilentFlow/tiktok-shop-scraper").call(run_input={
"searchKeywords": ["face serum", "led strip lights", "phone case"],
"region": "us",
})
winners = []
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item.get("sold_count", 0) > 5000 and item.get("rating", 0) >= 4.5:
winners.append(item)
winners.sort(key=lambda p: p["sold_count"], reverse=True)
for p in winners[:20]:
print(p["sold_count"], p["rating"], p["title"], p["product_url"])

Monitor competitor prices with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('SilentFlow/tiktok-shop-scraper').call({
productUrls: [
'https://shop.tiktok.com/view/product/1729398472265994690',
'https://shop.tiktok.com/view/product/1731795774080652206',
],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const p of items) {
console.log(`${p.product_name}: ${p.discounted_price} ${p.currency} (${p.discount_percentage}% off, stock ${p.total_stock})`);
}

Export straight to CSV

import csv
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("SilentFlow/tiktok-shop-scraper").call(run_input={
"searchKeywords": ["wireless earbuds"], "region": "us",
})
rows = list(client.dataset(run["defaultDatasetId"]).iterate_items())
with open("tiktok_shop.csv", "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=["title", "price", "rating", "sold_count", "product_url"])
writer.writeheader()
for r in rows:
writer.writerow({k: r.get(k) for k in writer.fieldnames})

๐Ÿ“ˆ Performance

MetricDetail
SetupNone. Paste URLs or keywords and run.
Products per runNo fixed limit. Scrape one product or hundreds in a single run.
Fields per productOver 40, plus every variant, review, and video as its own object.
Search resultsDozens of products per keyword with price, rating, and sold count.
Category resultsEvery product of a category page with live prices.
ReliabilityConsistent output across the full input list, including hard products.
FreshnessLive data, read at the moment of the run.

๐Ÿ’พ Data export

Every run writes to a dataset you can export in one click as JSON, CSV, Excel, XML, HTML table, or RSS. You can also pull results programmatically from the dataset API:

https://api.apify.com/v2/datasets/{DATASET_ID}/items?format=csv&token=YOUR_TOKEN

Swap format=csv for json, xlsx, or xml to fit your pipeline. Results are ready for Google Sheets, Airtable, a database, or a BI tool.

๐Ÿ’ก Tips for best results

  • Start with search, then scrape in detail. Run a keyword search to surface product IDs and sold counts, then feed the URLs of the best performers back in for full detail with reviews.
  • Rank by sold count, not just rating. A 5-star product with 20 sales tells you less than a 4.6-star product with 15,000 sales. sold_count is the strongest demand signal.
  • Match the region to the URL. A United States product URL returns United States pricing and reviews. Set region to the market you actually care about.
  • Browse a category for market-wide discovery. Category URLs work in every supported market, so you can map the same niche across countries and compare local prices side by side. Keyword search is United States only.
  • Use rating distribution to read sentiment fast. A product with 90 percent 5-star reviews behaves very differently from one averaging 4.5 with a long 1-star tail. The rating_distribution field shows this at a glance.
  • Batch your URLs. Send many product URLs in one run instead of one run per product. It is faster and keeps your data in a single dataset.

โ“ FAQ

What exactly does this scraper extract? Full product detail (price, discount, variants, stock, specifications, shipping, delivery, seller, and shop stats), product reviews with star distribution, and keyword search and category results with price, rating, and sold count.

How do I choose between search, categories, and product URLs? Use searchKeywords to discover products by keyword (US), categoryUrls to map a whole category (any supported market), and productUrls when you already know the products and want full detail with reviews. You can use any of them in one run.

Do I need a TikTok or TikTok Shop account? No. The scraper reads publicly visible product and search data. No login, no API key, no cookies to manage.

How fresh is the data? It is read live at the moment of the run. Each record includes a timestamp so you know exactly when it was captured.

Can I scrape more than one keyword, category, or product at a time? Yes. searchKeywords, categoryUrls, and productUrls all accept lists, and you can combine them. There is no fixed limit on how many you pass.

Which markets are supported? Ten markets: the United States, United Kingdom, Mexico, Malaysia, Philippines, Singapore, Thailand, Vietnam, Japan, and Indonesia. Category browsing works in all of them. In the United States you can also search by keyword, and the United States and United Kingdom return the deepest product detail. In the newest markets, discovery runs through category URLs, and each record carries the live local price, rating, sales count, seller, and product URL.

Do United Kingdom results include prices? Category results include a live price for every product. A United Kingdom product detail page occasionally shows no price at all; when that happens the run's status message lists the product, and the category it belongs to carries the price, so run the two together.

Do reviews come with every product? Product detail runs include reviews and the full rating distribution when the product page exposes them. Search results carry the review count and rating, not the individual reviews.

Why are some optional fields missing on a given product? TikTok Shop does not fill every field for every listing. Fields like videos, specifications, or seller_location appear only when the product page provides them, so they are omitted rather than returned empty.

What format is the output? Structured JSON, exportable to CSV, Excel, XML, HTML, or RSS, and available through the dataset API.

This Actor extracts publicly available data from TikTok Shop. It does not bypass any login, paywall, or CAPTCHA. Users are responsible for complying with TikTok Shop's terms of service and applicable laws in their jurisdiction. The data returned is informational; verify accuracy for regulated use cases.

๐Ÿ“ฌ Support

Need something this scraper doesn't do yet? We ship features fast.

  • Feature requests go straight to our backlog
  • Enterprise needs? We do custom integrations and high-volume plans
  • Pricing questions? Check the Monetization tab on the actor page

Response time: usually under 24 hours.

Check out our other scrapers: silentflow on Apify