TikTok Shop Scraper & Analytics | 2$/1k avatar

TikTok Shop Scraper & Analytics | 2$/1k

Pricing

from $2.00 / 1,000 results

Go to Apify Store
TikTok Shop Scraper & Analytics | 2$/1k

TikTok Shop Scraper & Analytics | 2$/1k

Scrape TikTok Shop at scale — products, sellers, reviews, search results and more. Clean JSON output, $2 per 1k results.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Ilya

Ilya

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

2 hours ago

Last modified

Share

TikTok Shop Scraper

The most complete TikTok Shop scraper on Apify. Extract products, reviews, store analytics, seller details, category listings, and creator profiles — all from a single Actor.

Unlike other TikTok Shop scrapers that only cover search or basic product data, this Actor provides 6 scrape modes in one tool with full pagination, detailed seller metrics, GMV estimation, and granular review filtering.

Pricing Plans

This Actor is available in two pricing options — they are identical in functionality, the only difference is the payment model:

Choose whichever fits your workflow best.

Features

  • Product Search — search by keyword with sorting (relevance, best sellers, price)
  • Product Details — full product page: variants, pricing, images, videos, specs, brand, shipping, and complete seller info
  • Product Reviews — paginated reviews with filtering by star rating, verified purchases, media
  • Store Analytics — store info, all products, followers, ratings, sub-scores, and estimated GMV
  • Category Products — scrape entire category pages with pagination
  • Creator Profiles — TikTok creator stats: followers, likes, videos, commerce status
  • Parallel Processing — up to 20 queries processed concurrently
  • Auto-retry — 3 retries with exponential backoff (2s, 5s, 10s) on connection errors

Proxy Requirements

Residential US proxy is required. TikTok Shop aggressively blocks datacenter IPs and non-US traffic.

Use one of these options:

  • Apify Residential Proxy (recommended) — select RESIDENTIAL group with US country
  • Custom Proxy — provide your own residential US proxy URL

Important: Residential proxies must support rotating IPs on demand. The Actor gets a fresh IP for each query (session). All requests within one query share the same IP to maintain TikTok's cookie-to-IP binding. Different queries run with different IPs.

  • Apify Residential — each query gets a new session ID via new_url(), which means a new IP automatically.
  • Custom proxy — must be a rotating residential proxy (most providers like IPRoyal, Smartproxy, BrightData rotate IP per connection by default through their gateway URL). Static/sticky proxies will get blocked quickly.

Datacenter proxies will not work — the Actor will reject them with an error.

Captcha Notice

TikTok Shop may occasionally show a captcha challenge, especially under heavy load or with overused proxy IPs. If this happens:

  1. Simply re-run the Actor — a new proxy session usually bypasses it
  2. Check the logs for Captcha detected messages
  3. If captcha persists, try running with fewer concurrent queries

Input

FieldTypeDefaultDescription
scrapeTypestringsearchRequired. One of: search, product, category, store, creator, reviews
queriesstring[]Required. List of inputs matching the selected scrape type (see below)
maxItemsinteger50Max items per query. 0 = unlimited
sortBystringrelevanceSearch sort: relevance, best_sellers, price_asc, price_desc
includeReviewsbooleanfalseFetch full reviews for product type
maxReviewsinteger30Max reviews per product. 0 = all
reviewsSortBystringrecommendedReviews sort: recommended, recent
reviewsFilterTypestringallReviews filter: all, verified, with_media
reviewsStarRatinginteger0Filter by star rating: 0 = all, 1-5 = specific
proxyConfigurationobjectResidential USApify Residential (US) or custom proxy URL

What to put in queries for each scrapeType

Scrape TypeInput FormatExample
searchKeywordsiphone case
productProduct URLhttps://shop.tiktok.com/us/pdp/product-name/1234567890
categoryCategory URLhttps://shop.tiktok.com/us/c/beauty-personal-care/601450
storeStore URLhttps://shop.tiktok.com/us/store/shop-name/1234567890
creatorUsername (without @)hydrojug
reviewsProduct URLhttps://shop.tiktok.com/us/pdp/product-name/1234567890

Product URLs from www.tiktok.com/shop/pdp/... are also supported and auto-converted.

Output Examples

Search / Category (product_card)

Returns an array of product cards. Each card is a lightweight summary.

{
"type": "product_card",
"productId": "1729595536444134138",
"title": "HydroJug Sport 32oz Portable Water Bottle",
"productUrl": "https://shop.tiktok.com/us/pdp/hydrojug-sport-32oz/1729595536444134138",
"currentPrice": "24.99",
"originalPrice": "29.99",
"discountPercent": "-17%",
"salesVolume": 5200,
"rating": 4.8,
"reviewCount": "342",
"sellerName": "HydroJug",
"imageUrls": ["https://..."],
"tags": ["Best Seller", "Free Shipping"],
"searchRank": 1,
"query": "iphone case"
}

searchRank is only present when products are ranked (search/category results). Product cards from store listings don't have this field.

Product Details

Single object with full product data and embedded seller info. No reviews field by default — only appears when includeReviews: true.

{
"type": "product",
"productId": "1729595536444134138",
"title": "HydroJug Sport 32oz Portable Water Bottle",
"description": "...",
"productUrl": "https://shop.tiktok.com/us/pdp/...",
"category": "Home & Kitchen > Water Bottles",
"tags": ["Best Seller"],
"imageUrls": ["https://..."],
"videoUrls": ["https://..."],
"currentPrice": "24.99",
"maxPrice": "34.99",
"originalPrice": "29.99",
"discountPercent": "-17%",
"variants": [
{
"variantId": "...",
"name": "Blue",
"price": "24.99",
"originalPrice": "29.99",
"discountPercent": "-17%",
"stockStatus": "in_stock",
"stockQuantity": 150,
"imageUrl": "https://..."
}
],
"salesVolume": "5.2K",
"soldLast30Days": "320",
"globalSold": "12500",
"exactSoldCount": "5200",
"firstLiveTime": "1700000000",
"productStatus": 1,
"saleRegion": "US",
"brand": { "brandId": "...", "brandName": "HydroJug" },
"sellingPoints": ["Free shipping on orders over $20"],
"specifications": { "Material": "BPA-Free Plastic", "Capacity": "32oz" },
"rating": 4.8,
"reviewCount": "342",
"sellerName": "HydroJug",
"sellerId": "7494949101118720784",
"globalSellerId": "7494949101118720784",
"sellerLocation": "US",
"shopUrl": "https://shop.tiktok.com/us/store/hydrojug/...",
"shopLogo": "https://...",
"shopRating": "4.9",
"shopFollowers": "194625",
"shopFormatFollowers": "194.6K+",
"shopVideoCount": 120,
"shopTotalSold": 16096,
"shopFormatSold": "16.1K",
"shopReviewCount": 1561,
"shopOnSaleProducts": 81,
"experienceScores": { "Positive feedback": "96%", "Ships within 48h": "70%" },
"experienceScorePercentile": 73,
"storeSubScores": {
"Product Quality": { "score": 0.95, "percentage": "95" },
"Logistics Speed": { "score": 0.70, "percentage": "70" },
"Service Quality": { "score": 0.96, "percentage": "96" }
},
"shopTier": 0,
"sellerType": 2,
"shopIdentityLabel": "OFFICIAL SHOP",
"shopDescription": "Shop HydroJug on TikTok Shop!...",
"shippingInfo": { "fulfilledBy": "TikTok Fulfillment", "freeShipping": true },
"query": "https://shop.tiktok.com/us/pdp/..."
}

When includeReviews: true, three additional fields are added to the product object:

{
"...all product fields above...",
"reviews": [
{
"reviewId": "...",
"productId": "...",
"skuId": "...",
"reviewerId": "...",
"reviewerName": "J**n",
"reviewerAvatarUrl": "https://...",
"rating": 5,
"text": "Great quality bottle!",
"date": "1733286815251",
"isVerifiedPurchase": true,
"isIncentivizedReview": false,
"imageUrls": [],
"displayImageUrl": null,
"variant": "Blue",
"country": "US",
"productName": "HydroJug Sport 32oz..."
}
],
"ratingsBreakdown": {
"totalCount": 342,
"overallScore": 4.8,
"stars": { "1": 5, "2": 3, "3": 12, "4": 45, "5": 277 }
},
"totalReviews": 342
}

Store

Single object containing store info, estimated GMV, and all products nested inside.

{
"type": "store",
"sellerId": "7494949101118720784",
"globalSellerId": "7494949101118720784",
"shopName": "HydroJug",
"creatorName": "hydrojug",
"shopUrl": "https://shop.tiktok.com/us/store/hydrojug/...",
"shopLogo": "https://...",
"backgroundImage": "https://...",
"region": "US",
"shopRating": "4.9",
"worstRating": "1",
"bestRating": "5",
"soldCount": 16096,
"formatSoldCount": "16.1K",
"globalSoldCount": 16096,
"reviewCount": 1561,
"onSaleProductCount": 81,
"followersCount": 194625,
"formatFollowersCount": "194.6K+",
"videoCount": 120,
"storeSubScores": {
"Product Quality": { "score": 0.95, "percentage": "95", "highlight": true },
"Logistics Speed": { "score": 0.70, "percentage": "70", "highlight": false },
"Service Quality": { "score": 0.96, "percentage": "96", "highlight": true }
},
"identityLabel": "OFFICIAL SHOP",
"description": "Shop HydroJug on TikTok Shop!...",
"estimatedGmv": {
"totalEstimatedGmv": 285420.50,
"totalSoldCount": 16096,
"productCount": 81,
"products": [
{ "productId": "...", "title": "...", "price": 24.99, "soldCount": 5200, "estimatedGmv": 129948.00 }
]
},
"products": [
{
"type": "product_card",
"productId": "...",
"title": "...",
"productUrl": "https://...",
"imageUrls": ["https://..."],
"currentPrice": "24.99",
"originalPrice": "29.99",
"discountPercent": "-17%",
"salesVolume": 5200,
"rating": 4.8,
"reviewCount": "342",
"sellerName": "HydroJug",
"tags": ["Best Seller"]
}
],
"query": "https://shop.tiktok.com/us/store/hydrojug/..."
}

Reviews (standalone)

When using scrapeType: "reviews", returns a reviews object with ratings breakdown.

{
"type": "reviews",
"productId": "1729595536444134138",
"totalReviews": 342,
"ratingsBreakdown": {
"totalCount": 342,
"overallScore": 4.8,
"stars": { "1": 5, "2": 3, "3": 12, "4": 45, "5": 277 }
},
"reviewCount": 30,
"reviews": [
{
"reviewId": "...",
"productId": "...",
"skuId": "...",
"reviewerId": "...",
"reviewerName": "J**n",
"reviewerAvatarUrl": "https://...",
"rating": 5,
"text": "Great quality bottle!",
"date": "1733286815251",
"isVerifiedPurchase": true,
"isIncentivizedReview": false,
"imageUrls": [],
"displayImageUrl": null,
"variant": "Blue",
"country": "US",
"productName": "HydroJug Sport 32oz..."
}
],
"query": "https://shop.tiktok.com/us/pdp/..."
}

Creator Profile

{
"type": "creator",
"userId": "...",
"username": "hydrojug",
"nickname": "HydroJug",
"avatarUrl": "https://...",
"region": "US",
"language": "en",
"bio": "Stay Hydrated",
"bioLink": "https://hydrojug.com",
"isVerified": true,
"isOrganization": false,
"isSeller": true,
"isCommerceUser": true,
"commerceCategory": "Health & Wellness",
"accountCreatedAt": 1600000000,
"followerCount": 1200000,
"followingCount": 150,
"likeCount": 45000000,
"videoCount": 660,
"friendCount": 50,
"profileUrl": "https://www.tiktok.com/@hydrojug",
"query": "hydrojug"
}

Use Cases

  • Product Research — find trending products, compare prices, analyze competition
  • Seller Analytics — evaluate store performance, GMV estimation, seller scores
  • Review Analysis — sentiment analysis, product feedback monitoring, review quality
  • Market Intelligence — track categories, pricing trends, bestsellers
  • Creator Discovery — find TikTok Shop creators and influencers for partnerships

Technical Details

  • Built with Python 3.12 + curl_cffi (browser TLS fingerprint impersonation)
  • No headless browser needed — fast and lightweight
  • Extracts SSR data from TikTok's server-rendered HTML
  • Browser-like navigation headers (Sec-Fetch, Referer) to bypass captcha on PDP pages
  • Session cookie warmup via lightweight init page before scraping
  • Pagination via TikTok's internal POST APIs with cursor-based navigation
  • Multi-layer price extraction (promotion → min_price → base price fallback)
  • 120-second request timeout with 5 retries per request
  • Session-level retry (up to 3 new sessions/IPs) on captcha detection

Limitations

  • US region only (for now) — TikTok Shop is primarily available in the US
  • Captcha — may appear on some proxy IPs; the Actor auto-retries with a new session/IP (up to 3 times)
  • Dynamic pricing — TikTok shows different prices per session (promo codes, A/B tests). The scraper returns the server-side price for your proxy session
  • Rate limits — heavy concurrent usage may trigger temporary blocks

Actively Maintained

This Actor is under active development. Planned improvements:

  • Additional regions support (UK, SEA)
  • More data fields as TikTok Shop API evolves

If you need a specific feature, custom data field, or integration — feel free to reach out.

Contact

Email: afrcanec@gmail.com

Have questions, feature requests, or need a custom scraping solution? I respond quickly and I'm happy to help. If something doesn't work or you need additional data fields — just write me, I'll add it.