TikTok Shop Scraper — Products & Categories
Pricing
from $13.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 $13.00 / 1,000 products
Rating
0.0
(0)
Developer
bootforge
Maintained by CommunityActor stats
1
Bookmarked
202
Total users
54
Monthly active users
7 minutes ago
Last modified
Categories
Share
TikTok Shop Product Scraper
The TikTok Shop Product Scraper is an Apify actor that extracts product data from TikTok Shop by keyword search, category URL, or direct product URL — each in any supported region. It returns title, price, original price, discount, seller, rating, sold count, images, and the full category breadcrumb — across 10 web storefronts (US, GB, VN, TH, PH, MY, SG, JP, MX, BR). It solves the slide CAPTCHA on its own, with no third-party CAPTCHA service.
Use it to track competitor pricing, build a TikTok Shop product database, monitor discounts and stock, or feed an e-commerce dataset — exported to JSON, CSV, or Excel. Its Southeast Asia coverage is Singapore, Malaysia, Vietnam, Thailand and the Philippines; Indonesia's TikTok Shop redirects to Tokopedia and is not supported.
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"}
What it costs
$0.008 per product from search or category, or $0.018 per product with full detail-page data. 1,000 shallow results ≈ $8.00, including the ~$0.004 start fee on the default 2 GB.
Example input
{"search_terms": ["wireless earbuds"],"region": "US","max_results": 100}
Typical run
100 search results in roughly 3–8 minutes — every page goes through a real browser and a slide CAPTCHA. Runs on Apify's servers, residential proxy included, no setup.
Category-level scraping is built in. Paste a category URL (
https://shop.tiktok.com/{region}/c/{slug}/{id}) to pull every product in that category — read straight from TikTok Shop's own product API as structured data, so no scrolling and no page-scraping. Works in every supported region, as does keyword search.
Table of contents
- What the TikTok Shop scraper does
- Use cases
- How to scrape TikTok Shop products
- TikTok Shop scraper input
- Run it at scale
- TikTok Shop product data output
- How much it costs
- Recommended proxies for TikTok Shop
- Why this TikTok Shop scraper
- Markets not supported
- FAQ
- Rate this actor
- Related actors
What the TikTok Shop scraper does
- 🔎 Keyword search (any region) — search TikTok Shop by term and collect every matching product, read straight from TikTok Shop's own search API (no browser, no CAPTCHA).
- 🔗 Direct product URLs (any region) — scrape specific PDPs in VN, TH, PH, and the rest.
- 🧩 Built-in CAPTCHA solver — a pure-OpenCV slide-puzzle solver with humanized mouse motion; no external CAPTCHA service.
- 🌍 10 storefronts — US, GB, VN, TH, PH, MY, SG, JP, MX, BR; the proxy exit IP is aligned to your region automatically.
- 🏷️ Rich fields from search — seller IDs, original prices, discount %, and category IDs come straight from the page's server-rendered JSON, not left as "Unknown".
- 📦 Optional PDP enrichment — full description, image gallery, variants, stock, and the complete category breadcrumb.
Use cases
Competitor price tracking — Title, price, original price, and discount per product across ten storefronts (US, GB, VN, TH, PH, MY, SG, JP, MX, BR) gives 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. Keyword search, category URLs and direct product URLs all work in any supported region.
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.
E-commerce datasets — Category breadcrumbs let products roll up into a category hierarchy for share-of-shelf analysis. The slide CAPTCHA is solved in-actor, so no third-party CAPTCHA service is needed for a scheduled run.
How to scrape TikTok Shop products
- Click Try for free and open the actor.
- Enter one or more
search_termsor pasteproduct_urls(any supported region). - Choose your
region(US, GB, VN, TH, PH, MY, SG, JP, MX, BR). - Optional: enable
scrape_product_detailsfor full PDP enrichment. - Click Start and watch results stream into the dataset.
- Export the data as JSON, CSV, or Excel, or pull it from the Apify API.
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"}
TikTok Shop scraper input
| Field | Description |
|---|---|
search_terms | Keywords to search. US only — TikTok Shop has no web search in other markets (the /{region}/s route 404s). Passing search_terms for a non-US region ends the run immediately and cleanly (status: succeeded, no data, no charge) with a message telling you to use product_urls instead — it's treated as an input mistake, not an actor error. |
product_urls | Direct PDP URLs: https://shop.tiktok.com/{region}/pdp/{id} — any region (the way to scrape TH, VN, PH, etc.). |
category_urls | Category browse URLs: https://shop.tiktok.com/{region}/c/{slug}/{id} — any region. Yields every product in the category from TikTok Shop's product API (price, rating, sold count, seller, variants), no scrolling. The max_results cap applies per category URL. |
region | One of: US, GB, VN, TH, PH, MY, SG, JP, MX, BR. The bundled proxy exit is aligned to this region automatically. |
max_results | Cap per search term or per category URL (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). |
browser_endpoint | Optional: WSS URL for a remote anti-detect browser (Bright Data, Browserbase). |
Run it at scale
Set the size of a run. max_results caps products per search term — default 100, hard cap 1,000. TikTok's search page usually exhausts at 200–500 cards regardless of how high you set it, so a wide crawl means more search terms, not a bigger cap. product_urls always returns one product each and ignores max_results.
Schedule it. Open the actor's Schedules tab in the Apify Console and add a cron expression — 0 */6 * * * re-checks prices every six hours. Each scheduled run appends to its own dataset.
Call it from your own code.
curl -X POST "https://api.apify.com/v2/acts/herus13~tiktok-shop-scraper/runs?token=<YOUR_TOKEN>" \-H "Content-Type: application/json" \-d '{"search_terms":["wireless earbuds"],"region":"US","max_results":100}'
Make — use Apify's Make app to start a run and read the dataset in a scenario. Zapier — the Apify Zapier integration does the same in a Zap. Both are listed at apify.com/integrations.
The free plan's monthly credit is enough to trial the actor; continuous or scheduled runs need a paid plan — see apify.com/pricing.
TikTok Shop product data output
Each product is one dataset row — a sample is under What you get. Rows also carry seller_id, review_count, main_image, category_path (a list of {id, name} root → leaf), region and scraped_at.
Enable scrape_product_details (or pass product_urls directly) for full description, detail-page images, and the complete multi-level category breadcrumb. Product pages are read over plain HTTP on the run's one warm session, so enrichment no longer opens a browser per product. What enrichment adds:
| 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 null) |
When to enable enrichment: turn it on when you need the description, full image gallery, or full breadcrumb. Otherwise shallow ($0.008) already carries price, seller, sold count, and rating from the search server render.
How much it costs
This actor uses pay-per-event pricing — you pay for what you scrape, not for time.
| Event | USD |
|---|---|
| Actor start (per GB memory) | $0.002 |
| Shallow product (search or category result) | $0.008 |
Detailed product (PDP enrichment / product_urls) | $0.018 |
A product is charged once: either as a search/category result or, when enriched, as a detailed product — never both. Prices above are the standard (Free-plan) rate; higher Apify subscription tiers get an automatic discount — up to ~25% off per product at the Business tier.
| Typical run (default 2 GB) | Cost |
|---|---|
| 100 products from search or category (shallow) | ~$0.80 |
| 1,000 products from search or category (shallow) | ~$8.00 |
| 1,000 products with PDP enrichment | ~$18.00 |
100 products via product_urls (always detailed) | ~$1.80 |
Every product is captured by a real anti-detect browser session, and every CAPTCHA is solved (~5–25 s of compute). There is no pure-HTTP shortcut for TikTok Shop — the CAPTCHA gate makes a browser mandatory.
Pricing in context: the most-reviewed competing TikTok Shop actor (4.5★, 651 users) charges $15 per 1,000 products and does not handle the CAPTCHA. Alternatives priced at $2–4 per 1,000 are rated under 2★. This actor solves the CAPTCHA and bills per result.
Recommended proxies for TikTok Shop
No proxy setup is required — the actor ships with its own residential proxy and aligns the exit IP to your selected region, then matches the browser's locale, timezone, and geolocation so TikTok doesn't block with code:10000. The Proxy provider field lets you override it (including your own URLs via Custom); leaving it untouched keeps the bundled one.
That bundled proxy runs on DataImpulse residential IPs — pay-as-you-go, per-country targeting, no monthly minimum, which is why TikTok Shop's geo-gated storefronts resolve cleanly. If you run your own scrapers (inside or outside Apify) and need reliable residential proxies for TikTok, e-commerce, or social sites, you can get DataImpulse here:
👉 Get DataImpulse residential proxies (referral link)
To route through your own DataImpulse account or another provider, set Proxy provider to Custom and paste your gateway URLs into Custom proxy URLs. A remote anti-detect browser is still configured via
browser_endpoint.
Why this TikTok Shop scraper
- Working CAPTCHA solver — pure-OpenCV slide-puzzle with humanized mouse trajectories. No third-party CAPTCHA service.
- Server-render-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 — a pre-flight IP probe sets browser locale, timezone, and geolocation to match the proxy's exit country, dodging TikTok's
code:10000block. - Graceful fallback — if the bundled browser gets gated, plug in a Bright Data Scraping Browser WSS URL via
browser_endpoint. - Open source — the underlying
tiktok-shop-scraperPython package ships a Typer CLI and a FastAPI server; the Apify wrapper is a thin layer.
Markets not supported
- FR — mobile-app only since March 2025; no public web Shop.
shop.tiktok.com/frreturnscode:10000even with a French IP. - ID — TikTok ID Shop redirects to
shop-id.tokopedia.com(Tokopedia merger). A different scraper is required.
FAQ
Why is TikTok Shop search US-only? Only shop.tiktok.com/us/s?q=... works as a web search URL. Every other region 404s the /s endpoint — verified live from a clean in-country residential session with the CAPTCHA solved. It's TikTok's design, not a block. For non-US regions, scrape by product_urls directly.
I passed search_terms for TH/VN and the run ended with no data — did it fail? No. The run is marked succeeded. Keyword search doesn't exist outside the US, so instead of erroring (which would look like an actor fault) the run stops immediately with a status message telling you to use product_urls. Nothing is charged.
What is the category_path format? A list of {id, name} objects ordered root → leaf. id is stable for cross-region joins; name is the localized display string. Search-only results carry just the route's category; PDP enrichment fills the full breadcrumb.
Can I scrape TikTok Shop reviews? Aggregate rating and sold_count ship today. Individual review text is planned for a later version.
Which proxies work best for TikTok Shop? Residential proxies with per-country targeting. The actor bundles DataImpulse residential IPs by default, so no setup is needed.
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.
Rate this actor ⭐
If this scraper did what you needed, please leave a review on its Store page — reviews are how other buyers find it. If something broke or a field came back empty, open an issue on the Issues tab and we will look at it.
Related actors
Southeast Asia marketplace data — Singapore, Malaysia, Vietnam, Thailand, Philippines, Indonesia:
- TikTok Shop Scraper — sells one TikTok Shop product row (this actor).
- Lazada Scraper — sells one product row per Lazada search result.
- Shopee Shop Scraper — sells one official-shop row from Shopee's shop directory.
- Shopee Category Lister — sells one country's full Shopee category tree.
- Amazon Scraper — sells one product row, including Amazon Singapore.
Building a full data pipeline? Pair this actor with our other scrapers — same proxy config format, same Pydantic-validated output, all open source.
- LinkedIn Profile Scraper — scrape LinkedIn profiles via your
li_atcookie: structured fields, full experience history, optional email/phone enrichment. - Google Maps Business & Contact Scraper — scrape Google Maps businesses with emails, phone numbers, reviews, images, and social links.
- LinkedIn Jobs Scraper — scrape LinkedIn job listings with company enrichment, salary, and recruiter info. No login required.