TikTok Shop Product Scraper avatar

TikTok Shop Product Scraper

Pricing

from $5.00 / 1,000 product founds

Go to Apify Store
TikTok Shop Product Scraper

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

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a day ago

Last modified

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/... and www.tiktok.com/shop/store/... are heavily challenged).

What you get per product

FieldExample
productId1731936406579351560
productUrlhttps://shop.tiktok.com/view/product/1731936406579351560
titlePOP MART SKULLPANDA × Wednesday Plush
price45.99
currencyUSD
soldCount10144
images[]5+ full-resolution image URLs
variants[][{skuId, label: "Single", stock: 24}]
shopId / shopName / shopUrl7495316114727995400 / POPMART US SHOP / store URL
_warningsempty [] on clean records
scrapedAtISO 8601 timestamp

Optional review records (when includeReviews: true):

FieldExample
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

Pricing

Pay-per-event + Pay-per-usage (both enabled — pick whichever fits your job).

EventPrice
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 ApifyClient
client = 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 null with a _warnings entry; 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:

  1. Lets the page fully render via Playwright (waits for hydration + network idle).
  2. Sniffs XHR responses for unmasked price JSON.
  3. Falls back to a DOM scan that ignores any element containing * (TikTok's mask character) plus shipping / coupon / cashback labels.
  4. 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.

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.