TikTok Shop Scraper — Products & Categories avatar

TikTok Shop Scraper — Products & Categories

Pricing

from $12.00 / 1,000 products

Go to Apify Store
TikTok Shop Scraper — Products & Categories

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

bootforge

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

6.2 hours

Issues response

2 days ago

Last modified

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:

FieldSearch-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_urls1 thumbnailfull 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_ratebest-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

FieldDescription
search_termsKeywords to search (US only — other markets 404 the search URL)
product_urlsDirect PDP URLs: https://shop.tiktok.com/{region}/pdp/{id} — any region
regionOne of: US, GB, VN, TH, PH, MY, SG, JP, MX, BR. Must match your proxy's exit country
max_resultsCap per search term (default 100, max 1000). Ignored for product_urls (always 1 each)
scrape_product_detailsAdd full PDP enrichment for search results (description, detail images, full breadcrumb)
proxyApify residential by default; raw URLs supported (BrightData / Oxylabs / SmartProxy)
browser_endpointOptional: WSS URL for a remote anti-detect browser (BrightData, BrowserBase)

ℹ️ Match your proxy country to region. TikTok blocks with code:10000 if 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)

EventUSD
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:10000 block.
  • 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/fr returns code:10000 even 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.

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.