TikTok Shop Scraper | Fast Search & Full Product Data avatar

TikTok Shop Scraper | Fast Search & Full Product Data

Pricing

from $1.22 / 1,000 product results

Go to Apify Store
TikTok Shop Scraper | Fast Search & Full Product Data

TikTok Shop Scraper | Fast Search & Full Product Data

Scrape TikTok Shop US with fast keyword search or full product details, including reviews, SKUs, stock and shipping. Collect category products from 9 more markets with local prices, currencies, sales and seller data. Includes pagination, filters, sorting and deduplication.

Pricing

from $1.22 / 1,000 product results

Rating

0.0

(0)

Developer

Kelopr_bk

Kelopr_bk

Maintained by Community

Actor stats

2

Bookmarked

216

Total users

75

Monthly active users

3.2 hours

Issues response

3 days ago

Last modified

Share

🛍️ TikTok Shop Scraper — Products, Reviews, Sales & Sellers

Find products by name, brand or keyword in TikTok Shop US and five regional stores, browse category catalogs in nine regional markets, or collect specific US products by URL or ID. Receive export-ready prices, sales, ratings, sellers, images and product links in the original currency. US Full modes also collect descriptions, variants, stock, shipping, videos and customer reviews when published by TikTok.

Know what you want? Use US Fast/Full or Regional Search and type its name. Exploring a market? Use Regional Catalog and select a category. Regional results are checked against the selected store and currency, not relabelled US products.

🚀 Start your first run

  1. Open the Actor's Input tab.
  2. Choose a Mode:
    • ⚡ Fast Search for product research, prices, sales, ratings, and sellers.
    • 🔬 Full Product Data for product-page details, SKUs, reviews, and tracking.
    • 🔗 Full by URL / ID for specified US products without keyword search.
    • 🔎 Regional Search to find products by name in Singapore, Malaysia, Thailand, Vietnam or the Philippines.
    • 🌍 Regional Catalog for local product categories and currencies.
  3. Select Store country / currency. For Fast/Full, keep United States — USD. For Regional Search, select one of the five countries marked Search / Catalog.
  4. For a search mode, fill Product name, brand or keyword(s), such as lipstick or phone case. For Regional Catalog, select a Regional category instead; leave custom category URLs empty and clear custom keywords.
  5. Set Maximum products and Pages per query / category. For 50 catalog products, use at least 4 pages. For name search, several relevant queries can broaden the selection.
  6. Click Start. Open Products to see saved rows, then export the view you need.

The default memory is 512 MB. Regional results in the default relevance order appear as they are collected. Invalid or empty input finishes safely with a correction message instead of crashing the Actor.

🎯 Choose a mode

ModeWhat it collectsRecommended use
fastUS keyword results: product cards, prices, sold count, rating, review count, sellers and imagesProduct discovery and price research
🔬 fullUS search plus descriptions, properties, SKUs, stock, shipping, business information, videos, reviews and changesProduct enrichment and review analysis
🔗 product_detailsFull data for specified US product URLs or IDs, including colors, sizes and SKU price rangesEnriching a known list of products without search
🔎 regional_searchProducts returned for your name/brand query, with matching titles and verified local prices, sales, ratings, sellers, images and URLsFinding specific products in five regional stores
🌍 regional_catalogLocal category cards: prices in the local currency, sales, ratings, review counts, sellers, images and original product URLsRegional catalog and market research

Full mode first searches and filters the products, then enriches only the rows that remain. This avoids spending time on products you do not need.

Use the input field mode to select a mode. dataLevel is an output field and does not switch the Actor to Full mode.

Enter one search phrase per keyword entry. For example, use ["graphic tee", "funny shirt"] for two searches. An entry such as "graphic tee, funny shirt" remains one literal query; the Actor does not silently split it into additional searches.

In US Fast mode, includeReviews: true does not enable review texts or switch to paid Full enrichment. The run explains this in its log and in Run summary → inputWarnings. Select Full explicitly if review texts are required.

🌍 Regional stores and currencies

StoreregionCurrencyRegional modes
SingaporeSGSGDSearch + Catalog
MalaysiaMYMYRSearch + Catalog
ThailandTHTHBSearch + Catalog
VietnamVNVNDSearch + Catalog
PhilippinesPHPHPSearch + Catalog
United KingdomGBGBPCatalog
IndonesiaIDIDRCatalog
MexicoMXMXNCatalog
JapanJPJPYCatalog

Choose one country per run. Prices are not converted; the product URL and source currency must match the selected storefront. Indonesian product links may point to TikTok Shop's shop-id.tokopedia.com storefront.

For Regional Catalog, start with Beauty & Personal Care, Home Supplies, or Womenswear & Underwear. For another category, paste its matching TikTok Shop /c/ URL into Custom regional category URLs; this replaces the preset. Titles remain in the language provided by the store.

Both regional modes return review counts, not review texts or Full enrichment. For review texts, SKUs and full product-page data, use US Full search or Full by URL/ID. Direct Full requests for other countries finish with a correction before source requests begin; they do not fall back to US products.

🔗 Full products by URL or ID

Choose mode: "product_details" and region: "US". Supply productUrls, productIds, or both. Use direct product links, not TikTok video links, shortened share links, profiles, stores or categories. Keep long IDs in quotes.

{
"mode": "product_details",
"region": "US",
"productUrls": [
{"url": "https://www.tiktok.com/view/product/1732523756312432765"}
],
"productIds": ["1732396526818529768"],
"maxItems": 10,
"includeReviews": true,
"maxReviews": 5
}

This mode does not run a keyword search. maxItems is the total saved-product limit across both input lists. Duplicate inputs are removed when dedupe is enabled. Failed or filtered products do not consume result slots, and unavailable products appear in Errors, without a paid placeholder row. See Run summary for each product's status and the stop reason.

page and maxPages are search settings and are ignored with a warning when supplied with non-default values. sortBy sorts all successfully fetched, matching inputs before the saved limit; the default relevance option saves completed records immediately. Existing Full pricing applies; direct input does not add a new fee.

Both US Full modes add colors, sizes, minVariantPrice, maxVariantPrice, minVariantOriginalPrice and maxVariantOriginalPrice. Colors and sizes come from explicitly labeled source attributes, not guesses from the title. Price bounds use available SKU prices in the product's currency. variantPricesAvailableCount and variantPriceRangeComplete show whether every returned SKU supplied a usable current price; missing prices stay unavailable and zero remains zero.

🔎 How regional name search works

Your query is sent to the selected store's search. Before saving a product, the Actor also checks its title, so unrelated recommendations are not included as matching results.

  • All search terms (all_terms, default): each term must occur in the title, in any order. Terms can match parts of words.
  • Search phrase together (phrase): the phrase must occur together in the title. This is not an exact whole-title match.
  • Matching ignores case and normalizes punctuation. It does not translate product names or infer synonyms. Local-language queries are useful: ลิป for Thai lipstick or son for Vietnamese lipstick.
  • Enter up to 50 queries, each at most 200 characters. maxItems is the total saved across them, not a separate allowance for each.

TikTok may expose only a short feed for a query. Extra pages are used only when more results are available; the Actor does not promise an exhaustive inventory. No title matches? The run explains this clearly and saves no unrelated products.

📋 Copy-paste examples

{
"mode": "fast",
"keywords": ["water bottle"],
"maxItems": 20,
"maxPages": 1
}

Search several product niches

{
"mode": "fast",
"keywords": ["neck fan", "phone case", "makeup organizer"],
"maxItems": 50,
"maxPages": 3,
"sortBy": "best_sellers",
"dedupe": true,
"maxConcurrency": 3
}

This example can save up to 50 products for each keyword, not 50 products in total.

Full product data with reviews

{
"mode": "full",
"keywords": ["portable blender"],
"maxItems": 25,
"maxPages": 2,
"includeReviews": true,
"maxReviews": 5,
"fullConcurrency": 8
}

Find named products in Singapore

{
"mode": "regional_search",
"region": "SG",
"keywords": ["lipstick", "phone case", "shampoo"],
"regionalSearchMatch": "all_terms",
"maxItems": 50,
"maxPages": 3,
"dedupe": true,
"htmlReport": true
}

This saves up to 50 products in total. Change region to MY, TH, VN or PH, using names appropriate to that store. To keep a phrase together, use "regionalSearchMatch": "phrase" with a query such as phone case. Leave regional category URLs and catalog title filters empty in this mode.

Collect 50 British products in GBP

{
"mode": "regional_catalog",
"region": "GB",
"regionalCategory": "beauty",
"keywords": [],
"maxItems": 50,
"maxPages": 6,
"dedupe": true
}

Change region to any country from the table. In Regional Catalog, maxItems is the total for the run, including when you supply multiple category URLs. A small category may contain fewer products than requested.

Use your own regional category

{
"mode": "regional_catalog",
"region": "SG",
"keywords": [],
"regionalUrls": [
{"url": "https://shop.tiktok.com/sg/c/home-supplies/600001"}
],
"maxItems": 20,
"maxPages": 2
}

Optional regionalFilterKeywords keeps titles containing at least one of your phrases. It is a filter on collected category products, not a store-wide keyword search. Restrictive filters can return fewer rows.

Monitor price, sales, and stock changes

{
"mode": "full",
"keywords": ["mini printer"],
"maxItems": 50,
"includeReviews": false,
"trackChanges": true
}

Run the same input again later or schedule it on Apify. The first run creates a baseline; change fields appear from the second run onward.

🎛️ Input reference

Essential settings

FieldDefaultMeaning
modefastfast, full, regional_search, or regional_catalog
regionUSUS for Fast/Full; five countries for Regional Search; nine for Regional Catalog
keywords["water bottle"]Product names, brands or phrases for US search and Regional Search
regionalSearchMatchall_termsRegional Search title matching: all_terms or phrase
regionalCategorybeautyRegional preset: beauty, home, or womenswear
regionalUrls[]Matching category URLs, replacing the regional preset
regionalFilterKeywords[]Optional local title filter for Regional Catalog
maxItems10Saved products per US keyword, or total per regional run; 0 removes the item cap
maxPages1Maximum pages per query/category, subject to available continuation
sortByrelevancerelevance, best_sellers, price_asc, price_desc, or rating_desc
dedupetrueRemoves repeated product IDs across all keywords and pages

maxItems: 0 does not remove the maxPages limit. Increase both values for deeper collection.

With deduplication enabled, repeated product IDs are removed before they consume a result slot. US searches continue looking for new matching products within the requested page limit. Run summary → queries reports saved products, filtered candidates, skipped duplicates, pages fetched, sourceHasMore, and the stop reason for each keyword. max_pages means the page allowance ended while the source still reported more results; max_items means the requested unique-product cap was reached. pagination_unavailable means the source stopped supplying usable continuation before the page allowance was reached.

Product filters

FieldWhat it does
minPrice / maxPriceKeeps products within the selected price range, in the storefront's currency
minRatingKeeps products at or above the selected rating when a rating is available
minSoldCountKeeps products at or above the selected sold count when it is available
freeShippingOnlyKeeps products where TikTok exposes a free-shipping label

Filtering and sorting happen after TikTok returns the search cards. A filter can therefore reduce the number of saved rows below maxItems.

In both regional modes, the default relevance order saves each completed card immediately. An explicit local sort buffers each collected query/category before saving it; multiple queries are processed in input order, not merged into a global sort. best_sellers sorts the collected sample by soldCount; it is not an exhaustive store-wide best-seller ranking.

Full mode settings

FieldDefaultMeaning
includeReviewstrueFetch public customer reviews
maxReviews5Maximum reviews per product; 0 requests all reviews TikTok exposes
reviewSortrecommendedTikTok's recommended order or recent
trackChangesfalseCompare current values with the previous saved snapshot
fullConcurrency8Product-detail requests processed in parallel, from 1 to 12
includeRawDetailfalseAdds the original detail payload for debugging; significantly increases row size

Output and performance

FieldDefaultMeaning
compactOutputtrueRemoves null values and empty arrays/objects for a cleaner dataset
htmlReporttrueCreates a visual product grid with a search box for saved titles
maxConcurrency1US keywords processed in parallel, from 1 to 10; regional queries/categories are processed in order
requestDelayMs0Optional delay between pages for the same keyword

Start with the defaults. Advanced performance settings are optional; they do not change which data a mode collects.

📦 Output

Every saved product is available in the default dataset. Full-mode rows are also placed in a separate Full dataset with additional views.

OutputWhat you will find there
ProductsClean product overview with image, price, sales, seller, and link
Prices & salesPrice, discount, sold count, rating, reviews, and shipping indicators
SellersSeller identity and products associated with each seller
Full product dataDescriptions, variants, stock, shipping, business data, videos, and review status
SKUs & variantsOne expanded row for every product variant
Customer reviewsOne expanded row for every fetched review
Price & sales changesPrice, sales velocity, and stock differences between tracked runs
ErrorsPages or details that could not be verified; these are not product results
Run summarySaved counts, issues, duration, mode, market, and direct output links
HTML reportA visual product grid with local currency and title search, saved as report; regional reports preview up to 200 products, while the dataset contains all saved rows

Export any dataset view to JSON, CSV, Excel, XML, or access it through the Apify API.

Find a product after the run

Open HTML report, then type a name into Find a product in these results. The product grid updates as you type; Clear restores all cards. This searches only the saved report preview, starts no new collection, and adds no Actor charge. To search the storefront again, change keywords in Input and start a new run. Use the dataset export to inspect results beyond the preview.

🔎 Main fields

Search product fields

  • Identity: productId, title, productUrl, countryCode, query, page.
  • Price: currentPrice, originalPrice, currency, currencySymbol.
  • Demand: soldCount, soldText, rating, reviewCount.
  • Seller: sellerId, sellerName, sellerUrl.
  • Media: imageUrl, imageUrls.
  • Discovery: searchRank, sortedRank, tags, freeShipping, sourceUrl, scrapedAt.

Both regional modes use the same columns. In Regional Catalog, query identifies the selected category and sourceUrl links to that category. In Regional Search, query is your search phrase; use productUrl to open the actual product. sourceUrl is a provenance field, not necessarily a browsable search page. Seller URLs are only supplied when the source provides one; seller IDs and names can still be available. freeShipping indicates an exposed free-shipping label, not a personalized delivery quote.

Example:

{
"type": "product_card",
"status": "ok",
"countryCode": "US",
"query": "water bottle",
"productId": "1234567890123456789",
"title": "Example insulated water bottle",
"productUrl": "https://shop.tiktok.com/us/pdp/example-product/1234567890123456789",
"currentPrice": 19.99,
"originalPrice": 24.99,
"currency": "USD",
"soldCount": 1250,
"rating": 4.8,
"reviewCount": 315,
"sellerName": "Example Store",
"imageUrl": "https://example.com/product.webp",
"freeShipping": true,
"searchRank": 1
}

All values in this example are fictional and show the output shape only.

Additional Full fields

  • Status: dataLevel, detailStatus, detailError.
  • Product: description, properties, options, categoryId, availabilityReason.
  • Variants and stock: variants, defaultSkuId, skuCount, skuInStockCount, totalStockQuantity, isSoldOut.
  • Inventory Intelligence: inventoryStatus, stockDataCoverage, stockStatusKnownCount, stockQuantityAvailableCount, stockQuantityCoverageComplete, inStockSkuPercent, outOfStockSkuCount, lowStockSkuCount, inStockVariantNames, soldOutVariantNames, inventoryValueEstimate, inventoryValueEstimateComplete.
  • Commercial metrics: discount, discountPercent, savingsAmount, priceRange, estimatedRevenue.
  • Shipping: shippingName, shippingFee, shippingCurrency, deliveryMinDays, deliveryMaxDays, fulfillable, codAvailable.
  • Seller business data: businessName, businessAddress, sellerLogoUrl.
  • Media: fullImageUrls, imageCount, videos, videoUrls, videoCount.

estimatedRevenue is a calculated estimate (currentPrice × soldCount), not verified seller revenue.

Inventory Intelligence is available only after successful US Full or US Product Details enrichment. inventoryStatus uses published SKU availability: in_stock, limited, out_of_stock, or unknown. stockDataCoverage distinguishes availability-only data from partial or complete unit quantities. inventoryValueEstimate is calculated only when every returned SKU has both a usable quantity and a same-currency price; otherwise it stays unavailable instead of presenting a partial total.

Regional Search and Regional Catalog are unchanged by Inventory Intelligence. They continue returning their existing product-card fields without extra detail requests.

Review fields

Each object in reviews[] can include:

{
"reviewId": "9876543210987654321",
"rating": 5,
"text": "Example review text.",
"createdAt": "2026-08-01T12:00:00Z",
"reviewerName": "A**e",
"reviewCountry": "US",
"verifiedPurchase": true,
"incentivizedReview": false,
"skuSpecification": "Blue / 32 oz",
"imageUrls": ["https://example.com/review-image.webp"]
}

Review summary fields include reviewsFetchedCount, reviewsAvailableCount, reviewsWithTextCount, reviewsWithMediaCount, reviewRatingBreakdown, and reviewsFetchStatus.

reviewsFetchStatus values:

  • complete — every currently exposed review was collected.
  • limited — the configured maxReviews limit was reached.
  • disabled — review collection was turned off.
  • failed — the product was saved, but its reviews could not be fetched after retries.

Change-tracking fields

From the second matching run onward, Full mode can add previousPrice, priceChange, priceChangePct, previousSoldCount, soldSinceLastScrape, soldVelocityPerDay, stockChange, firstSeenAt, and previousScrapedAt.

💳 How charging works

  • A product-result event is charged only for a product row saved to the default dataset.
  • Regional Search and Regional Catalog use the existing Product result event, with no Full or extra-review charge.
  • Full enrichment is charged only when the product-detail response succeeds.
  • The first five reviews are included with a successful Full result. Reviews above that allowance can use the separate extra-review event shown on the Actor pricing page.
  • A failed search page or rejected storefront is written to Errors, not billed as a product result.
  • Regional search candidates discarded for non-matching titles are not saved or charged as product results. Any Actor-start charge shown on the pricing page is separate.

Use maxItems, filters, and Fast mode to control the size and cost of exploratory runs before switching selected searches to Full.

⚠️ Troubleshooting

I received fewer products than requested

TikTok may expose a short feed, or title matching, filters and deduplication may remove rows. Increase maxPages when the source provides more pages. For Regional Search, try broader or local-language names and add several queries; extra pages cannot extend an exhausted feed. For Regional Catalog, try a broader category. Run summary lists each regional query/category's page count and stop reason.

Regional Search found no matching titles

Open Run summary. NO_MATCHING_PRODUCTS means none of the returned titles passed your query and filters, not that the product does not exist anywhere in the store. Try a shorter name, a local-language phrase, all_terms instead of phrase, or less restrictive filters. The Actor does not replace the empty result with unrelated recommendations.

I received only search fields in a Full test

Check that the input contains exactly "mode": "full". Do not use dataLevel, dataLevelMode, or maxReviewsPerProduct; the current input fields are mode and maxReviews.

Some cells are blank

TikTok does not publish every rating, stock quantity, shipping value, business field, or description for every product. Unavailable fields remain blank or omitted, never filled with invented values. Both regional modes contain product-card fields; additional Full fields belong to US Full mode.

A Full detail or review failed

The base product row remains available with detailStatus, reviewsFetchStatus, and an explanation. Open Errors and Run summary, then retry the affected search with the default settings.

Which countries can I select?

Use the country/mode table above: five regional stores support name search, all nine support catalogs, and Fast/Full remain US-only. Invalid combinations that reach the Actor finish successfully with status: "invalid_input" and a correction in Run summary, without product rows. Apify may reject schema-invalid values before a run starts. Legacy country_code and countryCode fields remain accepted and take priority over region.

✅ Data quality and safeguards

  • US search retains its storefront checks; every regional card must have a matching local product URL and currency before it is saved.
  • Regional pagination removes repeated product IDs and stops if the source stops returning new products.
  • Regional Search checks title matches before saving or charging a product result.
  • Duplicate product IDs can be removed across keywords and pages.
  • Incorrect or malformed input ends safely with a clear status message.
  • Failed Full enrichment is clearly marked and is never presented as successful Full data.
  • Missing source values stay missing; the Actor does not fabricate product information.

Tags: tiktok shop · tiktok shop scraper · product research · product reviews · price tracking · best sellers · ecommerce · dropshipping