TikTok Shop Scraper โ Products & Categories
Pricing
from $12.00 / 1,000 products
TikTok Shop Scraper โ Products & Categories
Scrape TikTok Shop products from any category page or product URL. Auto-solves the slide captcha. Supports 12 storefronts (VN, US, UK, ID, MY, TH, PH, SG, GB, JP, MX, BR) โ region follows your proxy's exit IP. Returns title, price, rating, sold count, image, URL.
Pricing
from $12.00 / 1,000 products
Rating
0.0
(0)
Developer
Actor stats
0
Bookmarked
13
Total users
5
Monthly active users
6.2 hours
Issues response
a day ago
Last modified
Categories
Share
TikTok Shop Product Scraper
Scrape TikTok Shop products at scale โ title, price, original price, discount, seller, rating, sold count, images, full category breadcrumbs โ by keyword search or direct product URL, across 10 storefronts (US, GB, VN, TH, PH, MY, SG, JP, MX, BR). Auto-solves the slide CAPTCHA. No external services required.
Looking to scrape every product in a category, or auto-walk a region's sitemap? Use the TikTok Shop Category Scraper actor instead. This actor is focused on product-level extraction.
Quick start
Search by keyword (US only):
{"search_terms":["wireless earbuds","silk pillowcase"],"region":"US","max_results":100,"proxy":{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"],"apifyProxyCountry":"US"}}
Or scrape specific products by URL (any region):
{"product_urls":["https://shop.tiktok.com/vn/pdp/1733366003108907003","https://shop.tiktok.com/us/pdp/wireless-bluetooth-earbuds/1729851384162063155"],"region":"VN","proxy":{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"],"apifyProxyCountry":"VN"}}
Sample output
{"product_id":"1729851384162063155","title":"Wireless Bluetooth Earbuds โ Noise-Cancelling","price":18.81,"original_price":31.36,"discount_percent":40.0,"currency":"$","seller_id":"8646942781315453747","seller_name":"SPRISE","rating":3.3,"review_count":0,"sold_count":88,"main_image":"https://p16-oec-general-useast5.ttcdn-us.com/...","product_url":"https://shop.tiktok.com/us/pdp/.../1729851384162063155","category_path":[{"id":"601450","name":"Beauty & Personal Care"}],"region":"US","scraped_at":"2026-05-03T08:22:00+00:00"}
Enable scrape_product_details (or pass product_urls directly) for full description, detail-page images, and the complete multi-level category breadcrumb. What enrichment buys you:
| Field | Search-only ($0.008) | + PDP enrichment ($0.018) |
|---|---|---|
title, price, original_price, discount_percent, currency | โ | โ (re-read from PDP, sometimes fresher) |
seller_id, seller_name | โ | โ |
rating, review_count, sold_count | โ | โ |
main_image, image_urls | 1 thumbnail | full gallery (up to 20 images) |
category_path | [] (search isn't category-scoped) | full multi-level breadcrumb root โ leaf |
description | โ | โ full product copy |
detail_images | โ | โ |
variants[], stock_total, video_urls, seller_followers/rating/response_rate | โ | best-effort (depends on PDP variant; may be None) |
TL;DR: enable enrichment when you need description, full image gallery, or full breadcrumb. Otherwise shallow ($0.008) is enough โ price/seller/sold/rating are already populated from the search SSR.
Inputs
| Field | Description |
|---|---|
search_terms | Keywords to search (US only โ other markets 404 the search URL) |
product_urls | Direct PDP URLs: https://shop.tiktok.com/{region}/pdp/{id} โ any region |
region | One of: US, GB, VN, TH, PH, MY, SG, JP, MX, BR. Must match your proxy's exit country |
max_results | Cap per search term (default 100, max 1000). Ignored for product_urls (always 1 each) |
scrape_product_details | Add full PDP enrichment for search results (description, detail images, full breadcrumb) |
proxy | Apify residential by default; raw URLs supported (BrightData / Oxylabs / SmartProxy) |
browser_endpoint | Optional: WSS URL for a remote anti-detect browser (BrightData, BrowserBase) |
โน๏ธ Match your proxy country to
region. TikTok blocks withcode:10000if browser locale and IP disagree. The actor probes the proxy IP and aligns Camoufox's locale + timezone + geolocation automatically โ but the proxy still has to land in a real country.
Pricing (Pay Per Event)
| Event | USD |
|---|---|
| Actor start (per GB memory) | $0.02 |
| Shallow product (search result) | $0.008 |
Detailed product (PDP enrichment / product_urls) | $0.018 |
| Typical run (default 2 GB) | Cost |
|---|---|
| 100 products from search (shallow) | ~$0.50 |
| 1,000 products from search (shallow) | ~$5 |
| 1,000 products with PDP enrichment | ~$12 |
100 products via product_urls (always detailed) | ~$1.20 |
Every product is captured by a real anti-detect browser session and every CAPTCHA is solved (~5โ25 s of compute). There is no cheaper pure-HTTP path for TikTok Shop.
Currently the cheapest pay-per-result TikTok Shop scraper on Apify Store with a working CAPTCHA solver. The most-reviewed competitor (4.5โ , 651 users) charges $15 per 1,000 products with no CAPTCHA handling. Cheaper alternatives ($2โ4 / 1,000) are rated under 2โ and broken.
Why this actor
- Working CAPTCHA solver โ pure-OpenCV slide-puzzle with humanized mouse trajectories. No third-party captcha service.
- SSR-first extraction โ pulls the structured product list from the page's
__MODERN_ROUTER_DATA__JSON, so seller IDs, original prices, discount percentages, and category IDs are all populated (not "Unknown"). - Geo-aligned fingerprint โ pre-flight IP probe sets browser locale + timezone + geolocation to match the proxy's exit country, dodging TikTok's
code:10000block. - Graceful fallback โ if the bundled browser gets gated, plug in a BrightData Scraping Browser WSS URL via
browser_endpoint.
Existing TikTok Shop actors on Apify Store are unmaintained or rated <2 โ . This one ships.
Markets not supported
- FR โ mobile-app only since March 2025; no public web Shop.
shop.tiktok.com/frreturnscode:10000even with a French VPN. - ID โ TikTok ID Shop redirects to
shop-id.tokopedia.com(Tokopedia merger). Different scraper required.
FAQ
Why is search US-only? Only shop.tiktok.com/us/s?q=... works as a web URL. Other regions 404 the search endpoint or redirect to non-shop surfaces. For non-US regions, scrape by product_urls directly.
category_path format? List of {id, name} ordered root โ leaf. id is stable for cross-region joins, name is the page's localized display string. Search-only results carry just the route's category (often single-element); PDP enrichment fills the full multi-level breadcrumb.
Reviews? v1.1. Aggregate rating and sold_count ship today.
Want to scrape categories instead? Use the TikTok Shop Category Scraper actor โ it walks category URLs and the per-region sitemap. This actor stays focused on product-level extraction (search + direct PDP).
Outside Apify? The underlying tiktok-shop-scraper Python package ships with a Typer CLI and FastAPI server (POST /scrape). The Apify wrapper is a thin layer.
Related Actors
Building a full data pipeline? Pair this actor with our other scrapers โ same proxy config format, same Pydantic-validated output, all open source.
Lead generation
- LinkedIn Profile Scraper โ Scrape LinkedIn profiles via your li_at cookie. Structured fields, full experience history, optional email/phone/contact enrichment.
- Google Maps Business & Contact Scraper โ Scrape Google Maps businesses with emails, phone numbers, reviews, images, social links. 24 fields per business.
Lead generation / Hiring
- LinkedIn Jobs Scraper โ Scrape LinkedIn job listings with 30 fields per job โ company enrichment, salary, recruiter info, full description. No login required.
