TikTok Shop Scraper — Products & Categories avatar

TikTok Shop Scraper — Products & Categories

Pricing

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

Rating

0.0

(0)

Developer

bootforge

bootforge

Maintained by Community

Actor stats

1

Bookmarked

202

Total users

54

Monthly active users

7 minutes 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, 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

  • 🔎 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

  1. Click Try for free and open the actor.
  2. Enter one or more search_terms or paste product_urls (any supported 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.

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.).
category_urlsCategory 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.
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 or per category URL (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).

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:

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

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

Southeast Asia marketplace data — Singapore, Malaysia, Vietnam, Thailand, Philippines, Indonesia:

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.