TikTok Shop Product Scraper
Pricing
from $5.00 / 1,000 product founds
TikTok Shop Product Scraper
All-in-one TikTok Shop scraper. Auto-detects search keyword, product URL, shop URL, or category slug. Returns price, variants, seller, sold count, ratings, reviews. MCP-ready. $0.005/product, $0.001/review.
Pricing
from $5.00 / 1,000 product founds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
TikTok Shop Product Scraper — Prices, Variants, Reviews (US)
Scrape TikTok Shop product pages by URL and get back full product details: price, currency, variants with SKU-level stock, seller info, sold count, images, and (optionally) reviews. Built on PlaywrightCrawler + Apify Residential US proxy, returning ~25 fields per product. MCP-ready output for AI agents.
v0.1 scope: product URL → product record. Search keyword, shop catalog, and category browsing modes are on the v0.2 roadmap (they require additional anti-bot bypass —
www.tiktok.com/shop/s/...andwww.tiktok.com/shop/store/...are heavily challenged).
What you get per product
| Field | Example |
|---|---|
productId | 1731936406579351560 |
productUrl | https://shop.tiktok.com/view/product/1731936406579351560 |
title | POP MART SKULLPANDA × Wednesday Plush |
price | 45.99 |
currency | USD |
soldCount | 10144 |
images[] | 5+ full-resolution image URLs |
variants[] | [{skuId, label: "Single", stock: 24}] |
shopId / shopName / shopUrl | 7495316114727995400 / POPMART US SHOP / store URL |
_warnings | empty [] on clean records |
scrapedAt | ISO 8601 timestamp |
Optional review records (when includeReviews: true):
| Field | Example |
|---|---|
reviewId, reviewerName, reviewRating, reviewText, reviewDate, reviewMediaUrls[] | Full review data including photos |
When to use
- Track competitor prices on TikTok Shop products you care about (run on a schedule, diff datasets).
- Pull review intelligence for sentiment analysis or AI summaries.
- Catalog a known list of products for inventory monitoring or affiliate verification.
- AI-agent shopping research — call from Claude / ChatGPT via MCP.
When NOT to use
- For TikTok user profiles, videos, comments, hashtags — use tiktok-profile-scraper, tiktok-video-comments-scraper, tiktok-trending-hashtags-scraper, or tiktok-ads-scraper.
- For TikTok Shop search by keyword or browsing a seller's full catalog — coming in v0.2. For now you must supply specific product URLs.
- For Amazon, Etsy, Shopify, eBay — see the matching all-in-one scrapers in the same store.
- This release supports US only. Multi-region (UK, MY, ID, VN, TH, SG, PH) is on the v0.2 roadmap.
Pricing
Pay-per-event + Pay-per-usage (both enabled — pick whichever fits your job).
| Event | Price |
|---|---|
apify-actor-start | $0.00005 |
product-found | $0.005 per product |
review-extracted | $0.001 per review (only when includeReviews: true) |
Typical cost:
- 10 product URLs (no reviews): ~$0.05
- 10 product URLs + 30 reviews each: ~$0.35
- 100 product URLs + 30 reviews each: ~$3.50
Compare to single-purpose competitors at $0.025/product for the same data — we deliver the same scope at 80% lower cost.
Inputs
{"productUrls": ["https://shop.tiktok.com/view/product/1731936406579351560","https://shop.tiktok.com/view/product/1729123456789012345"],"includeReviews": false,"maxReviewsPerProduct": 30}
Output
Mixed dataset with a _type discriminator (product, review, _summary). Use the Products view in the Output tab for the standard product table, or Reviews for review records.
MCP / AI agent usage
The actor is MCP-ready. Tool name: apify--tiktok-shop-scraper. Drop it in any Claude / ChatGPT / Cursor MCP client via mcp.apify.com.
{"productUrls": ["https://shop.tiktok.com/view/product/1731936406579351560"],"includeReviews": true,"maxReviewsPerProduct": 10}
Output is flat-keyed and capped to ~500 tokens per item so the agent has room to reason over many products.
Code samples
Node.js (Apify SDK):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('khadinakbar/tiktok-shop-scraper').call({productUrls: ['https://shop.tiktok.com/view/product/1731936406579351560'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.filter((i) => i._type === 'product'));
Python:
from apify_client import ApifyClientclient = ApifyClient(token=os.environ['APIFY_TOKEN'])run = client.actor('khadinakbar/tiktok-shop-scraper').call(run_input={'productUrls': ['https://shop.tiktok.com/view/product/1731936406579351560'],'includeReviews': True,'maxReviewsPerProduct': 30,})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
curl (REST API):
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~tiktok-shop-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{ "productUrls": ["https://shop.tiktok.com/view/product/1731936406579351560"] }'
Reliability
- Apify Residential proxy (US) required — TikTok Shop blocks datacenter IPs.
- Playwright + fingerprint masking — needed because TikTok masks prices in static HTML (
$5*placeholders) until the JS renders. - Session pool with persistent cookies — same identity across requests.
- Auto-retire on 403/429 + anti-bot challenge detection — failed sessions are dropped and rotated.
- Up to 4 retries with exponential backoff per request.
- Graceful degradation: missing fields return
nullwith a_warningsentry; the run continues.
How prices are extracted
TikTok Shop hides real prices in the server-rendered HTML — they show as masked placeholders like $5* until JavaScript fetches and merges live pricing. This actor:
- Lets the page fully render via Playwright (waits for hydration + network idle).
- Sniffs XHR responses for unmasked price JSON.
- Falls back to a DOM scan that ignores any element containing
*(TikTok's mask character) plus shipping / coupon / cashback labels. - Picks the largest, most prominent price element on the page as the canonical product price.
This is the same approach the top-rated competitor uses, which is why their actor charges $0.025 per product. Ours costs $0.005.
Roadmap
- v0.2 — Search + shop catalog (Camoufox stealth bypass for
www.tiktok.com/shop/s/and/shop/store/paths) - v0.2 — Category browsing
- v0.3 — UK + Southeast Asia regions (MY, ID, VN, TH, SG, PH)
- v0.4 — Affiliate creator data (
creators[]per product) - v0.5 — Standby MCP variant for sub-second tool calls
FAQ
Does this require a TikTok login? No. Public TikTok Shop product pages only.
Why doesn't search work in v0.1? TikTok protects www.tiktok.com/shop/s/... (search), /shop/store/... (shop), and /shop/c/... (category) paths with aggressive anti-bot challenges. Bypassing them reliably needs Camoufox stealth mode, planned for v0.2. Product detail pages on shop.tiktok.com/view/product/... work cleanly today.
Can I scrape variants and stock? Yes — variants[] per product includes skuId, label (e.g., "Red / XL"), and stock (real-time available quantity from sku_quantity).
Can I get historical data? No — this scrapes the live state of the page. For change detection, run the actor on a schedule and diff datasets.
Some fields are null. Why? TikTok renders different fields for different products (e.g., not all products have shopRating exposed publicly). Missing fields surface in the _warnings array. Critical fields (title, price) are always required to drop a row.
Legal
This actor scrapes publicly available product information from TikTok Shop. It does not bypass authentication, scrape private data, or collect personal contact info beyond publicly displayed seller / reviewer names. You are responsible for compliance with TikTok's Terms of Service and applicable data-protection laws (GDPR, CCPA) in your jurisdiction.