TikTok Shop Scraper — Products & Categories avatar

TikTok Shop Scraper — Products & Categories

Pricing

from $18.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 $18.00 / 1,000 products

Rating

0.0

(0)

Developer

bootforge

bootforge

Maintained by Community

Actor stats

1

Bookmarked

59

Total users

34

Monthly active users

6.2 hours

Issues response

4 hours ago

Last modified

Share

TikTok Shop Product Scraper

The TikTok Shop Product Scraper is an Apify actor that extracts product data from TikTok Shop by keyword search (US) or direct product URL (any 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.

Need category-level scraping? To pull every product in a category or auto-walk a region's sitemap, use the separate TikTok Shop Category Scraper. This actor is focused on product-level extraction (search + direct PDP).

Table of contents

What the TikTok Shop scraper does

  • 🔎 Keyword search (US) — search TikTok Shop by term and collect every matching product.
  • 🔗 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.

How to scrape TikTok Shop products

  1. Click Try for free and open the actor.
  2. Enter one or more search_terms (US) or paste product_urls (any region).
  3. Choose your region (US, GB, VN, TH, PH, MY, SG, JP, MX, BR).
  4. Optional: enable scrape_product_details for full PDP enrichment.
  5. Click Start and watch results stream into the dataset.
  6. Export the data as JSON, CSV, or Excel, or pull it from the Apify API.

Search by keyword (US only):

{
"search_terms": ["wireless earbuds", "silk pillowcase"],
"region": "US",
"max_results": 100
}

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

FieldDescription
search_termsKeywords 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_urlsDirect PDP URLs: https://shop.tiktok.com/{region}/pdp/{id}any region (the way to scrape TH, VN, PH, etc.).
regionOne of: US, GB, VN, TH, PH, MY, SG, JP, MX, BR. The bundled proxy exit is aligned to this region automatically.
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).
browser_endpointOptional: WSS URL for a remote anti-detect browser (Bright Data, Browserbase).

TikTok Shop product data output

Each product is one dataset row. Sample:

{
"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 adds:

FieldSearch-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_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 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.

EventUSD
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 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.

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.

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)

Advanced users can override the bundled proxy via the API with a raw_urls / provider object — for example to route through your own DataImpulse account or a remote anti-detect browser (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:10000 block.
  • 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-scraper Python 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/fr returns code:10000 even 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 the TikTok Shop scraper saved you time, please leave a review on its Apify Store page — ratings help other people find it and tell us what to build next. Hit a bug or missing field? Open an issue or contact us through the actor's Issues tab and we'll fix it fast — recency and reliability are what keep this actor ranking.

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_at cookie: 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.