Tiktok Shop Product Scraper avatar

Tiktok Shop Product Scraper

Pricing

from $3.20 / 1,000 product results

Go to Apify Store
Tiktok Shop Product Scraper

Tiktok Shop Product Scraper

Extract TikTok Shop products, prices, discounts, sold counts, ratings, variants, seller info, shipping, and review signals from product URLs, keywords, categories, and seller pages.

Pricing

from $3.20 / 1,000 product results

Rating

0.0

(0)

Developer

Delowar Munna

Delowar Munna

Maintained by Community

Actor stats

0

Bookmarked

16

Total users

13

Monthly active users

8 days ago

Last modified

Share

Extract TikTok product content, engagement metrics, creator data, pricing signals, and commerce intelligence from keyword search, product URLs, categories, and seller pages.

TikTok Shop Product Scraper

What does this actor do?

TikTok Shop Product Scraper is an Apify Actor that extracts public TikTok product and commerce data for ecommerce intelligence, product research, competitor monitoring, and automation workflows.

It discovers products and creators across TikTok through four modes:

  • Keyword search mode — Search TikTok by keyword and return video/content items with full engagement metrics, creator data, and commerce signals
  • Product URL mode — Scrape direct TikTok Shop product URLs for pricing, variants, and product details
  • Category mode — Scrape products from TikTok Shop category pages
  • Seller/store mode — Scrape product listings from public seller/store pages

Modes are auto-detected from provided inputs. You can combine multiple modes in a single run.

Why use this actor?

  • Engagement-first intelligence — views, likes, shares, saves, and discovery scores as first-class signals
  • Creator & seller profiling — follower counts, video counts, and trust scoring for every result
  • Multiple discovery modes — combine keywords, product URLs, categories, and sellers in one run
  • Source lineage — every row shows which mode, keyword, or country produced it
  • Analysis buckets — automatic shortlist/review/skip classification with human-readable reasons
  • Flat, analytics-ready output — consistent schema across all modes, ready for CSV, JSON, Sheets, or AI workflows
  • Run summaries — aggregated stats with top hashtags, sellers, brands, and engagement averages
  • Honest data mapping — video engagement stays in engagement fields, never misrepresented as product reviews or sales

Output overview

TikTok Shop Product Scraper - Output Overview Table View

Input

ParameterTypeDefaultDescription
productUrlsstring[][]Direct TikTok product URLs
keywordsstring[][]Search keywords
categoriesstring[][]Category names
sellerUrlsstring[][]Seller/store URLs
countriesstring[][]Country codes (US, AU, GB, etc.)
maxResultsinteger100Max results per query (1-5000)
minPricenumberMinimum price filter
maxPricenumberMaximum price filter
minRatingnumberMinimum rating filter (0-5)
minSoldCountintegerMinimum sold count filter
sortBystring"default"Sort: relevance, popular, newest, price_asc, price_desc
includeSellerFieldsbooleantrueInclude seller/creator fields
includeVariantFieldsbooleantrueInclude variant details
includeShippingFieldsbooleantrueInclude shipping info
includeReviewSummarybooleantrueInclude review summary signals
deduplicateProductsbooleantrueRemove duplicates across modes
includeSummarybooleantrueAdd run-level summary record
stopOnErrorbooleanfalseEmit error records on failure
debugModebooleanfalseVerbose logging
proxyConfigurationobjectProxy settings (residential recommended)

Search for trending products by keyword across a specific country. This is the most common use case — discovers TikTok video content related to the keywords with full engagement metrics and creator data.

{
"keywords": ["portable blender", "wireless earbuds"],
"countries": ["US"],
"maxResults": 30,
"includeSellerFields": true,
"includeVariantFields": true,
"includeShippingFields": true,
"includeReviewSummary": true,
"deduplicateProducts": true,
"includeSummary": true,
"proxyConfiguration": { "useApifyProxy": true }
}

Sample input: keyword search with filters and sorting

Narrow down results with price, rating, and sold count filters. Sort by popularity to surface the most viewed content first. Filters apply only when the underlying data is available — for keyword search, engagement-based sorting works best.

{
"keywords": ["phone cases"],
"countries": ["US", "AU"],
"maxResults": 100,
"minRating": 4.0,
"sortBy": "popular",
"includeSellerFields": true,
"includeVariantFields": true,
"includeShippingFields": true,
"includeReviewSummary": true,
"deduplicateProducts": true,
"includeSummary": true,
"debugMode": false,
"proxyConfiguration": { "useApifyProxy": true }
}

Sample input: mixed mode

Combine keywords and direct product URLs in a single run. The actor auto-detects which modes to use based on the inputs you provide.

{
"productUrls": [
"https://www.tiktok.com/@username/video/1234567890"
],
"keywords": ["skincare routine"],
"categories": ["Beauty"],
"countries": ["US"],
"maxResults": 50,
"includeSellerFields": true,
"includeVariantFields": true,
"includeShippingFields": true,
"includeReviewSummary": true,
"deduplicateProducts": true,
"includeSummary": true,
"proxyConfiguration": { "useApifyProxy": true }
}

Output

The actor outputs a flat, normalized dataset where each row represents one TikTok video/content item or product listing. Results are organized into four dataset views:

  • Products — overview with title, engagement metrics, price, seller, analysis bucket
  • Pricing — price-focused: list price, sale price, discount, variants, price tier
  • Sellers — seller/creator-focused: name, followers, video count, trust level
  • Analysis — analysis: bucket, reason, research candidate status, all tier labels

Products view — sample output

{
"productTitle": "Banana strawberry smoothie 🍓🍌 #freshjuice #smoothie #milkshake #portableblender #foryoupage",
"productUrl": "https://www.tiktok.com/@juiceitportable/video/7565255438732758285",
"productCategory": "freshjuice",
"brandName": null,
"salePrice": null,
"listPrice": null,
"discountPercent": null,
"soldCount": null,
"ratingAverage": null,
"reviewCount": null,
"playCount": 50800000,
"likeCount": 987600,
"engagementRate": 2.28,
"discoveryScore": 92,
"sellerName": "juiceit",
"analysisBucket": "review",
"sourceMode": "keyword",
"position": 1,
"scrapedAt": "2026-03-24T12:21:28.215Z"
}

Pricing view — sample output

{
"productTitle": "Banana strawberry smoothie 🍓🍌 #freshjuice #smoothie #milkshake #portableblender #foryoupage",
"productUrl": "https://www.tiktok.com/@juiceitportable/video/7565255438732758285",
"currency": "USD",
"listPrice": null,
"salePrice": null,
"discountAmount": null,
"discountPercent": null,
"priceRangeMin": null,
"priceRangeMax": null,
"isDiscounted": false,
"pricePositionBucket": null,
"hasVariants": false,
"variantCount": 0,
"soldCount": null
}

Sellers view — sample output

{
"productTitle": "making my fav smoothie with @ninjakitchen new Blast portable blender 🤍🌸#sponsoredbyninja #ninjablast #lifeatfullblast",
"sellerName": "kaeli mae",
"sellerId": "6776020666518717445",
"sellerUrl": "https://www.tiktok.com/@kaelimaee",
"sellerRating": null,
"sellerFollowerCount": 13800000,
"sellerProductCount": 1800,
"storeName": "kaeli mae",
"sellerTrustBucket": "strong",
"salePrice": null,
"ratingAverage": null,
"soldCount": null,
"sourceMode": "keyword"
}

Analysis view — sample output

{
"productTitle": "making my fav smoothie with @ninjakitchen new Blast portable blender 🤍🌸#sponsoredbyninja #ninjablast #lifeatfullblast",
"productUrl": "https://www.tiktok.com/@kaelimaee/video/7216473088492457258",
"analysisBucket": "shortlist",
"analysisReason": "Seller depth (1800 products), Viral views (4.5M), Strong engagement (5.24%), Large following (13.8M), High likes (215.1K), Strong shares (4.6K)",
"isResearchCandidate": true,
"isDiscounted": false,
"pricePositionBucket": null,
"ratingQualityBucket": "none",
"sellerTrustBucket": "strong",
"popularityLabel": "viral",
"salePrice": null,
"ratingAverage": null,
"soldCount": null,
"playCount": 4500000,
"engagementRate": 5.24,
"discoveryScore": 81,
"sellerName": "kaeli mae",
"isAd": true,
"isCommerce": false,
"hasShopLink": false,
"hashtags": ["sponsoredbyninja", "ninjablast", "lifeatfullblast"]
}

Run summary record

Each run appends a summary record with aggregated statistics:

{
"recordType": "summary",
"totalProducts": 29,
"totalAfterDedup": 29,
"productsBySourceMode": { "keyword": 29 },
"productsByCategory": { "freshjuice": 4, "juice": 1, "miniblender": 2, "ninja": 2 },
"productsByCountry": { "unspecified": 29 },
"averageSalePrice": null,
"averageDiscountPercent": null,
"averageRating": null,
"averagePlayCount": 4889554.34,
"averageEngagementRate": 2.59,
"averageDiscoveryScore": 58.48,
"topSellers": [
{ "name": "juiceit", "count": 3 },
{ "name": "AlexFinds", "count": 2 },
{ "name": "Stellar Vault", "count": 2 }
],
"topBrands": [
{ "name": "Temu", "count": 1 },
{ "name": "kaeli mae", "count": 1 }
],
"topHashtags": [
{ "tag": "portableblender", "count": 15 },
{ "tag": "freshjuice", "count": 7 },
{ "tag": "smoothie", "count": 7 },
{ "tag": "miniblender", "count": 5 }
],
"productsByAnalysisBucket": { "review": 28, "shortlist": 1 },
"runStatus": "completed",
"startedAt": "2026-03-24T12:21:20.112Z",
"finishedAt": "2026-03-24T12:21:28.893Z",
"durationSeconds": 9
}

Output field reference

Source lineage

How was this result discovered?

sourceMode, sourceInputType, sourceKeywords, sourceCategories, sourceSellerUrls, sourceCountries, scrapedAt

Product / content identity

productId, productUrl, productTitle, productDescription, productCategory, brandName, imageUrls, videoUrls

Pricing

Available primarily from product pages or embedded commerce data. Typically null for keyword search video items.

currency, listPrice, salePrice, discountAmount, discountPercent, priceRangeMin, priceRangeMax

Commercial signals

Product-specific metrics. Available from product detail pages, typically null for keyword search.

soldCount, ratingAverage, ratingCount, reviewCount, wishlistCount, popularityLabel

Engagement metrics

The primary signal for keyword search results. These are TikTok video engagement metrics.

playCount, likeCount, shareCount, commentCount, saveCount, repostCount, engagementTotal, engagementRate, discoveryScore

Content metadata

hashtags, isAd, isCommerce, hasShopLink, createTime

Variants (when includeVariantFields is true)

variantCount, variantSummary, variantOptions, hasVariants

Shipping (when includeShippingFields is true)

shippingInfo, shippingFee, shippingType, estimatedDelivery, shipsFrom

Seller / creator (when includeSellerFields is true)

For keyword search, these map to TikTok creator/author data. For product URLs or seller mode, these map to store/seller data.

sellerName, sellerId, sellerUrl, sellerRating, sellerFollowerCount, sellerProductCount, storeName

Review summary (when includeReviewSummary is true)

Only populated from actual review data. Video comments and hashtags are never proxied as reviews.

reviewCount, reviewRatingAverage, reviewSummaryText, topReviewKeywords, hasReviewSignal

Analysis (derived heuristics)

analysisBucket, analysisReason, isResearchCandidate, isDiscounted, pricePositionBucket, ratingQualityBucket, sellerTrustBucket

Run metadata

position, isPartial, errorType, errorMessage

Analysis buckets explained

The actor classifies each result into one of three analysis buckets using a dual-path heuristic:

Product-metric path (when sold count and ratings are available):

  • shortlist — High rating (4.3+), strong sales (500+), plus discount or trusted seller
  • review — Moderate rating (3.5+) and reasonable sales (100+)
  • skip — Insufficient product signals

Engagement-proxy path (for video items without product metrics):

  • shortlist — Strong engagement (5%+) with large following (10K+) and high views (100K+)
  • review — Moderate engagement (2%+) with decent following, or viral views
  • skip — Low engagement or insufficient data

The analysisReason field provides a human-readable explanation for every classification.

Discovery score

A weighted engagement score on a 0-100 scale (log-scaled):

  • Shares weighted 3x (strongest intent signal)
  • Saves weighted 2x (purchase consideration signal)
  • Comments weighted 1.5x (engagement depth)
  • Likes weighted 1x (baseline interest)

Use cases

  • Product research — find trending products by keyword and evaluate via engagement signals (views, likes, shares, saves)
  • Creator intelligence — identify which creators promote products in a niche and compare their following and engagement rates
  • Competitor monitoring — track competitor product content on TikTok over time
  • Dropshipping research — identify high-engagement products with strong viral potential
  • Category intelligence — analyze market interest and creator activity for a product category
  • Pricing & discount monitoring — collect pricing signals from product pages and embedded commerce data
  • Reporting & AI workflows — export structured data for dashboards, analysis pipelines, and automation

Proxy configuration

Residential proxies are recommended for reliable TikTok scraping:

{
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Important notes

  • All data comes from public TikTok surfaces only
  • Keyword search returns video/content items, not product catalog listings — engagement metrics are the primary signal
  • Pricing, sold count, and review fields are typically null for keyword search results — these populate from product detail pages with embedded commerce data
  • Video comments are not proxied as product reviews; video saves are not proxied as wishlist counts
  • Creator follower and video counts map to seller fields for schema consistency
  • Analysis fields and bucket classifications are derived heuristics, not TikTok-provided data
  • Field availability varies between product URL, keyword, category, and seller modes
  • Pricing accuracy reflects what is publicly displayed at scrape time

Limitations

  • TikTok page layouts and APIs may change without notice
  • Keyword search primarily returns video content with engagement data; product-specific fields (pricing, variants, ratings, sold count) require product detail pages or embedded commerce data
  • Not all results expose variant, shipping, or seller detail fields
  • Category and seller modes depend on publicly available page structures
  • Rate limiting may affect large runs — use residential proxies for best results
  • Country-specific availability varies by TikTok's regional rollout