TikTok Shop Product Scraper avatar

TikTok Shop Product Scraper

Pricing

from $13.00 / 1,000 products

Go to Apify Store
TikTok Shop Product Scraper

TikTok Shop Product Scraper

Scrape TikTok Shop products by keyword, category URL or product URL across 10 storefronts. Every row carries title, price, original_price, discount_percent, seller_name, rating, sold_count and the full category_path. Export JSON, CSV or Excel, or pull it from the API.

Pricing

from $13.00 / 1,000 products

Rating

0.0

(0)

Developer

herus13

herus13

Maintained by Community

Actor stats

1

Bookmarked

381

Total users

103

Monthly active users

3 days ago

Last modified

Share

TikTok Shop Product Scraper extracts product data from TikTok Shop by keyword search, category URL or direct product URL, across 7 storefronts — US, VN, TH, PH, MY, SG and ID (Indonesia, via Tokopedia). Every row carries price, original price, discount, seller, rating, sold count and the full category breadcrumb.

中文说明

TikTok Shop 商品数据抓取工具,按关键词、类目页链接或商品链接采集,覆盖美国、越南、泰国、菲律宾、马来西亚、新加坡、印度尼西亚(Tokopedia)七个站点。英国、墨西哥、日本、巴西站点暂时停止支持,之后可能恢复。

每条数据包含标题 title、售价 price、原价 original_price、折扣 discount_percent、店铺 seller_name、评分 rating、销量 sold_count 和完整类目路径 category_path。开启 scrape_product_details 后还会返回商品详情、完整图集、规格与库存。

运行自带住宅代理,无需自行配置代理。在 Apify Console 填好输入点击 Start 即可运行,也可以通过 Apify API 提交同样的 JSON。结果支持导出为 JSON、CSV 或 Excel。

What you get

One dataset row per product. Export as JSON, CSV or Excel.

{
"product_id": "1729851384162063155",
"title": "Wireless Bluetooth Earbuds — Noise-Cancelling",
"price": 18.81,
"original_price": 31.36,
"discount_percent": 40.0,
"currency": "$",
"seller_name": "SPRISE",
"rating": 3.3,
"sold_count": 88,
"product_url": "https://shop.tiktok.com/us/pdp/.../1729851384162063155",
"_meta": {"author": "https://apify.com/herus13", "status": "ok", "message": null}
}

_meta is run metadata, not scraped data. A target that fails appears as a row with only _meta (status failed, the reason in message); those rows are never charged.

Rows also carry seller_id, review_count, main_image, image_urls, category_path (a list of {id, name} root to leaf), region and scraped_at. Turn on scrape_product_details, or pass product_urls, and each row adds the product description, the full image gallery, variants, stock_total and the seller's followers, rating and response rate.

Which regions support which features

Not every storefront exposes every surface on the web. This is what each region supports:

RegionsKeyword searchCategory URLsProduct URLs + detailsReviews
US, VN, TH, PH, MY, SG✅✅✅✅
ID Indonesia✅✅ top-level /p/{slug} pages✅✅
GB, MX, JP❌ not supported on these storefronts✅✅✅

Checked store by store on 2026-09-29 and re-verified 2026-10-03. Indonesia's TikTok Shop is Tokopedia; this actor reads it natively, so keyword search, category browse, product details and reviews all work there. For Indonesian category URLs, use a top-level category page such as https://www.tokopedia.com/p/kecantikan; sub-category pages return nothing yet. UK, Mexico and Japan have no keyword search on the web storefront regardless of input — use category_urls or product_urls there instead.

Brazil (BR) is temporarily unavailable: its storefront requires a TikTok login past the anti-bot check. It stays in the Region list marked "(unavailable)". Choosing it, or passing a URL such as shop.tiktok.com/br/..., ends the run immediately with the message "TikTok Shop Brazil is not supported right now"; nothing is scraped and you pay only the actor start fee. France has no public web storefront.

What it costs

EventFreeBronzeSilverGold+
product (product-detail)$0.018$0.01633$0.01467$0.013
result (product-search-result)$0.008$0.00733$0.00667$0.006
Actor Start (apify-actor-start)$0.002$0.002$0.002$0.002

You pay per product, not per minute: $0.008 for a product from search or a category, $0.018 for a product with the full detail set. A thousand search results is about $8.00, and the residential proxy is included in that price. Higher Apify subscription tiers pay the lower per-product rates shown above.

Input

FieldTypeRequiredDefaultWhat it does
search_termsarrayno—Keywords to search on TikTok Shop. Each term returns every matching product up to max_results, with price, seller, rating and sold count. Works on every supported storefront. Examples: wireless earbuds, silk pillowcase. Provide at least one of search_terms, category_urls or product_urls; leave empty to scrape only from the other two.
product_urlsarrayno—Direct product page URLs, one per entry: https://shop.tiktok.com/{region}/pdp/{product_id}, or the app's share link https://www.tiktok.com/view/product/{product_id} (read on the region storefront). For ID (Tokopedia): https://www.tokopedia.com/{shop}/{product-slug}. Each URL returns one product with the full detail set: description, images, variants and category breadcrumb. Leave empty to scrape only from search_terms and category_urls.
category_urlsarrayno—Category browse URLs, one per entry. Most regions: https://shop.tiktok.com/{region}/c/{slug}/{id} (e.g. https://shop.tiktok.com/us/c/beauty-personal-care/601450). For ID (Tokopedia): https://www.tokopedia.com/p/{slug} (e.g. https://www.tokopedia.com/p/handphone-tablet). Each URL returns every product in that category up to max_results. Leave empty to scrape only from search_terms and product_urls.
regionstringno"US"TikTok Shop storefront to scrape: decides the catalogue, listing language and currency. Default US. Supported: US, VN, TH, PH, MY, SG, ID (Tokopedia — search, category, detail and reviews), GB, MX, JP (no keyword search on these three; use category_urls or product_urls). BR is unavailable: choosing it ends the run at once, charging only the start fee.
max_resultsintegerno100Most products returned per search term and per category URL. Default 100, minimum 1, maximum 1000. product_urls returns one product each and ignores this cap. A keyword feed usually runs out after 50-200 products, so a wider crawl means more search terms rather than a higher cap.
scrape_product_detailsbooleannofalseAdd the full detail set to every product found by a search term or a category URL: product description, full image gallery, variants, stock and the complete category breadcrumb root to leaf. Default false, which returns the listing fields only. Each enriched product is charged as a product detail instead of a search result. Products given in product_urls always carry the detail set, so this setting does not change them.
browser_endpointstringno—WebSocket URL of a remote browser service you already pay for, used instead of the one this actor ships with. One URL, shaped wss://user:password@host:9222. Leave empty to use the browser included in the price of the run.
proxyUrlsarrayno—Leave empty: the run uses the residential proxy this actor ships with, included in the price of the run. To route the run through your own provider instead, add one gateway URL per entry, for example http://user:pass@host:port — works with any provider that issues URLs. When set, the run uses these first and switches to the included proxy if they stop working, so a broken proxy never fails the run.

How to run it

  1. Open the actor on Apify Console.
  2. Enter one or more search terms, or paste category URLs or product URLs. A product URL can be the share link the TikTok app copies (https://www.tiktok.com/view/product/<id>); it is read on the storefront chosen in region.
  3. Pick the region, then Run. Export JSON, CSV or Excel from the dataset.
{
"search_terms": ["wireless earbuds"],
"category_urls": ["https://shop.tiktok.com/us/c/beauty-personal-care/601450"],
"region": "US",
"max_results": 100,
"scrape_product_details": true
}

Minimal input:

{
"search_terms": ["wireless earbuds"]
}

Available as the MCP tool herus13--tiktok-shop-scraper on mcp.apify.com and through the Apify API; send the same JSON.

Why this scraper

  • Three ways in, every market — keyword search, category URLs and direct product URLs all work on all 7 storefronts, so a Vietnamese or Thai catalogue is as reachable as the US one.
  • Fields that arrive filled — seller IDs, original prices, discount percentages and category IDs come back populated rather than "Unknown", which is what makes discount depth and share-of-shelf computable.
  • Detail on demand — pay the listing rate for a wide sweep, then enrich only the products worth the description, gallery and full breadcrumb.
  • Nothing to set up — no account, no cookies, no proxy configuration; a residential proxy is included in the price of the run.

Use cases

  • Competitor price tracking — Title, price, original price and discount per product across seven storefronts give the discount depth a competitor is actually running, not the headline promotion.
  • TikTok Shop product databases — Seller, rating, sold count, images and the full category breadcrumb make a catalogue that supports both browsing and analysis.
  • Trend and demand spotting — Sold count against rating shows which products are genuinely moving versus which are merely well listed — the distinction that matters when deciding what to stock.
  • Share-of-shelf analysis — Category breadcrumbs let products roll up into a category hierarchy, so you can measure how much of a category one seller holds.
  • Product research for sourcing — Pull a whole category, sort by sold count, and read the variants and stock of the winners before committing to an order.

FAQ

Which TikTok Shop markets are covered? Seven storefronts: US, VN, TH, PH, MY, SG, and Indonesia (ID), whose TikTok Shop runs on Tokopedia. The UK, Mexico, Japan and Brazil are temporarily unavailable and may return. France has no public web storefront.

What is the category_path format? A list of {id, name} objects ordered root to leaf. id is stable and joins across regions; name is the localized display string. Listing-only rows carry the route's category, and the detail set fills the full breadcrumb.

Can I scrape TikTok Shop reviews? Aggregate rating and review_count ship today. Individual review text is planned for a later version.

Is a proxy included? A residential proxy is included in the price of the run. To use your own, paste gateway URLs into Your own proxy URLs.

What happens if my input is wrong? The run stops before it scrapes anything, so no results are charged. Its status and log name each field that is wrong and say what to change — fix the input and run again.

Is scraping TikTok Shop legal? This actor collects only publicly available product data. You are responsible for complying with TikTok's terms and applicable laws. Do not collect personal data without a lawful basis.

Southeast Asia marketplace data — Singapore, Malaysia, Vietnam, Thailand, Philippines, Indonesia:

Building a wider pipeline? Pair this actor with: