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
bootforge
Actor stats
0
Bookmarked
3
Total users
2
Monthly active users
6.2 hours
Issues response
2 days 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.005) | + PDP enrichment ($0.012) |
|---|---|---|
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.005) 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.002 |
| Shallow product (search result) | $0.005 |
Detailed product (PDP enrichment / product_urls) | $0.012 |
| 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.