πŸ›οΈ TikTok Shop Data Scraper avatar

πŸ›οΈ TikTok Shop Data Scraper

Pricing

from $4.99 / 1,000 results

Go to Apify Store
πŸ›οΈ TikTok Shop Data Scraper

πŸ›οΈ TikTok Shop Data Scraper

πŸ›οΈ TikTok Shop Data Scraper (tiktok-shop-data-scraper) extracts product listings, pricing, ratings, and seller details from TikTok Shop. πŸš€ Perfect for market research, competitive analysis, and ecommerce insights. ⚑ Fast, reliable, and SEO-ready.

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

Scraper Engine

Scraper Engine

Maintained by Community

Actor stats

0

Bookmarked

32

Total users

12

Monthly active users

6 days ago

Last modified

Share

TikTok Shop Product Scraper β€” Prices, Ratings and Top Creators

TikTok Shop Product Scraper pulls structured product data straight from TikTok Shop by keyword, category link, seller store link, or direct product URL β€” price, rating, review count, seller info, sold count and the affiliate creators driving each product's video traffic, delivered as clean JSON with no HTML to parse. Every field is read directly from TikTok Shop's own page data, not scraped off rendered text. Start a run from the Actor page and results begin landing in your dataset within seconds.


πŸ›οΈ What is TikTok Shop Product Scraper?

TikTok Shop Product Scraper is an Apify Actor that collects product listings from TikTok Shop's US storefront and returns them as typed JSON records β€” price, rating, seller, sold count, affiliate-creator stats and (optionally) reviews. It runs entirely against TikTok Shop's public web surface: no TikTok account, login, or cookie session is used anywhere in the code. It's built for e-commerce sellers, dropshippers, affiliate marketers, and developers or AI agents that need TikTok Shop catalog data as structured input rather than raw HTML.


πŸ” What TikTok Shop product data is publicly available to scrape?

Anyone visiting shop.tiktok.com from a US IP can see a product's title, price, rating, seller and sold count without logging in or buying anything β€” that's exactly what this Actor collects.

Data categoryPublicly availableGated behind
Title, price, images, discountβœ… Yesβ€”
Rating and review countβœ… Yesβ€”
Sold countβœ… Yesβ€”
Seller ID and shop nameβœ… Yesβ€”
Affiliate creator / video statsβœ… Yes (via the product's public "related videos" feed)β€”
Individual review text and reviewer name⚠️ PartialTikTok Shop only exposes a public review feed for some products; others expose none
Exact per-SKU stock count❌ NoOnly an in-stock/out-of-stock signal can be inferred, not the exact unit count
Buyer messaging, order history, checkout❌ NoRequires a TikTok account and an actual purchase

TikTok Shop Product Scraper only returns publicly visible data β€” what any visitor sees without logging in. Nothing behind a buyer account or seller dashboard.


πŸ“¦ What data can I extract with TikTok Shop Product Scraper?

Each run returns one JSON record per product, covering identity fields, pricing and rating metrics, and nested creator/review data.

Identity and listing fields

FieldDescription
product_idTikTok Shop's numeric product ID
titleProduct title
urlCanonical product page URL (https://shop.tiktok.com/us/pdp/{product_id})
image_urlFirst product image URL
seller_idSeller/shop numeric ID
seller_nameSeller/shop display name
source"product_page" for a full detail-page fetch, "listing_card" for the degraded fallback (see Output below)
scraped_atISO-8601 timestamp of when the record was collected

Price, rating and stock fields

FieldDescription
priceCurrent sale price as a number
price_formattedSale price as TikTok Shop formats it for display
currencyCurrency name (USD when not otherwise specified)
original_pricePre-discount price β€” only present when the product is discounted
discountDiscount label (e.g. "17%") β€” only present when the product is discounted
ratingOverall product rating
review_countTotal review count reported by TikTok Shop
sold_countUnits sold, as reported by TikTok Shop
is_sold_outtrue/false derived from real per-SKU stock data, or null when TikTok Shop exposes no stock signal at all β€” never guessed

Affiliate creator and review data

FieldDescription
creator_countNumber of distinct creators found promoting the product in its related-video feed
has_creator_datatrue when creator_count > 0
total_creator_videosTotal related videos aggregated across all creators
top_creatorsArray of the top 5 creators by video count (ties by total likes) β€” only present when creator_count > 0; each entry has nickname, video_count, total_plays, total_likes, is_affiliate
reviews_fetchedNumber of reviews actually returned for this product (0 if includeReviews is off or none were accessible)
reviews_accessibletrue if TikTok Shop exposed any reviews for this product at all
reviewsArray of review objects β€” only present when reviews were fetched; each has review_id, rating, text, reviewer_name, review_time (Unix seconds), is_verified_purchase, sku_specification, country, images

πŸ€– Add-on: need additional TikTok data?

If you also need creator profiles, video metadata, hashtag or comment data outside of TikTok Shop, pair this Actor with TikTok Data Scraper for general TikTok profile/video/comment extraction, or TikTok Trending Creator Insights Scraper if you specifically want the platform's trending-creator board rather than a product's own affiliate creators.


πŸ› οΈ Why not build this yourself?

TikTok Shop has no public catalog-search API for pulling arbitrary sellers' product listings β€” its Partner/Seller Center API is scoped to an authorized seller managing their own shop, not to reading a competitor's or category's product data. Building this from scratch means reverse-engineering an undocumented internal JSON API (product_list, page_data, and the __MODERN_ROUTER_DATA__ blob embedded in the product page HTML), handling a region lock that only serves real data to US exit IPs, and maintaining a proxy escalation strategy as TikTok Shop's anti-bot posture changes. This Actor already does that: it resolves the page-data structure defensively (by shape, not a hardcoded key) so a route rename doesn't silently break extraction, and it ships a proxy ladder (direct β†’ Datacenter β†’ Residential) with retries built in.


▢️ How to use TikTok Shop Product Scraper

  1. Open TikTok Shop Product Scraper on the Apify Store and click Try for free (or open it directly in the Apify Console).
  2. Add one or more search keywords (e.g. shoes), and/or paste TikTok Shop URLs β€” product, category, or seller-store links are all auto-detected.
  3. Set maxProducts, optionally turn on includeReviews, and pick a sortBySoldCount mode if you want a best-sellers-first order.
  4. Click Start. Products are pushed to the dataset live as each one finishes β€” you don't wait for the whole run to see the first results.
  5. Open the Output tab and export as JSON, CSV, or Excel, or pull results via the API.

Scaling to bulk product extraction

There's no separate "bulk mode" β€” searchKeywords and urls are both arrays, so a single run can combine multiple keywords, category links, seller-store links, and direct product links at once. Every keyword and URL runs as its own discovery pass, and duplicate product IDs found across sources are removed automatically within the run. maxProducts (10–100,000) caps how many products each individual keyword, category, or seller store contributes, not the run as a whole β€” three keywords each capped at 1,000 can return up to 3,000 unique products in one run.


πŸ’‘ What can you do with TikTok Shop product data?

  • πŸ›’ Dropshippers and sellers sourcing products use price, sold_count, and is_sold_out to spot fast-moving, still-in-stock items before listing them elsewhere.
  • πŸ“ˆ Market researchers tracking category trends use sold_count and rating across a sortBySoldCount: "highest_first" run to find category best-sellers without manual browsing.
  • 🀝 Affiliate and brand marketers use top_creators (video_count, total_plays, total_likes, is_affiliate) to identify which creators are already driving sales for a product and worth approaching for a partnership.
  • ⭐ Customer-experience teams monitoring a seller's own catalog use reviews, rating, and review_count to flag products with a slipping rating before it shows up in support tickets.
  • πŸ€– AI agents and RAG pipelines pass the typed JSON output directly into a vector store or agent tool β€” title, price_formatted, and reviews[].text give an LLM ready-to-use product and sentiment context without any HTML parsing step.

🚦 How does TikTok Shop Product Scraper handle rate limits and blocking?

Every request goes through a proxy escalation ladder: it tries a direct connection first, escalates to a Datacenter (US) proxy if that gets blocked or degraded, and finally to a sticky Residential (US) session β€” once it reaches Residential it stays there for the rest of the run instead of bouncing back down. Each request is retried up to maxRetries times (1–10, default 5) with an increasing backoff, and a response is treated as a failure (triggering escalation) whenever it returns HTTP 403/429/5xx or looks like a soft block β€” e.g. a page missing its expected data marker. maxConcurrency (1–20, default 20) caps how many requests run in parallel, and requestDelay (0–2,000 ms) adds a pause between them if you want to go gentler than the default.

⚠️ TikTok Shop only serves real product data to US exit IPs, and its product-detail route can occasionally stay blocked for a specific product even through a Residential proxy. When that happens and the product was originally found via a keyword, category, or store search, the Actor falls back to the real (if less complete) data already captured during discovery rather than dropping the row β€” see source: "listing_card" in Output below. A bare product URL with no prior listing data is skipped and logged, not silently omitted.


⬇️ Input

No parameter is required β€” the Actor simply does nothing (with a logged warning) if both searchKeywords and urls are empty.

ParameterRequiredTypeDescriptionExample value
searchKeywordsNoarrayKeywords to search TikTok Shop for (e.g. 'shoes', 'phone case', 'skincare'). Each keyword runs its own search.["shoes", "phone case"]
urlsNoarrayPaste TikTok Shop URLs to scrape β€” the type is auto-detected: Product (/pdp/), Category (/c/), or Seller/Store (/store/).["https://shop.tiktok.com/us/pdp/1732119583850205647"]
maxProductsNointegerMaximum number of products to fetch per search keyword / category / seller (10–100000).50
includeReviewsNobooleanFetch product reviews too. Note: not every product exposes accessible reviews.true
maxReviewsNointegerMaximum number of reviews to fetch per product (1–100).10
sortBySoldCountNostring, enum: none, highest_first, lowest_firstOrder products by units sold. 'Highest first' surfaces best-sellers; 'Lowest first' surfaces fewer-sold items."highest_first"
maxRetriesNointegerMaximum retry attempts per request before giving up (1–10).5
requestDelayNointegerDelay between requests in milliseconds. Lower = faster, but may trigger rate limits (0–2000).0
maxConcurrencyNointegerMaximum concurrent requests. Higher = faster but uses more resources (1–20).20
timeoutNointegerPer-request timeout in seconds. Increase if using slow proxies (10–300).60
proxyConfigurationNoobjectBy default the scraper connects directly (no proxy) and automatically escalates to a Datacenter proxy and then a Residential (US) proxy for maximum reliability. For the most reliable results, select Residential proxies in the US.{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}

Example input

{
"searchKeywords": ["shoes"],
"urls": ["https://shop.tiktok.com/us/store/seller/7123456789012345678"],
"maxProducts": 50,
"includeReviews": true,
"maxReviews": 10,
"sortBySoldCount": "highest_first",
"maxRetries": 5,
"requestDelay": 0,
"maxConcurrency": 20,
"timeout": 60,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

⬆️ Output

Results are typed, normalized JSON with a consistent field set across runs, viewable in three dataset views (Products, Top Creators, Reviews) and exportable as JSON, CSV, Excel, or XML from the Apify Console or API.

Example output

{
"product_id": "1732119583850205647",
"title": "Women's Low-Top Sports Shoes - Breathable Mesh",
"url": "https://shop.tiktok.com/us/pdp/1732119583850205647",
"price": 36.27,
"price_formatted": "$36.27",
"currency": "USD",
"original_price": 43.69,
"discount": "17%",
"rating": 4.7,
"review_count": 207,
"seller_id": "8652615273335460303",
"seller_name": "Juyu Footwear",
"image_url": "https://p16-oec-va.ibyteimg.com/tos-maliva-i-o3syd03w52-us/example~tplv-o3syd03w52-origin-webp.webp",
"sold_count": 2743,
"is_sold_out": false,
"creator_count": 16,
"has_creator_data": true,
"total_creator_videos": 20,
"top_creators": [
{
"nickname": "Vincent",
"video_count": 2,
"total_plays": 336691,
"total_likes": 1275,
"is_affiliate": true
}
],
"reviews_fetched": 3,
"reviews_accessible": true,
"reviews": [
{
"review_id": "7345612398765432101",
"rating": 5,
"text": "Great fit, true to size, arrived fast.",
"reviewer_name": "A**a S**t",
"review_time": 1780350129,
"is_verified_purchase": true,
"sku_specification": "Black, EU41",
"country": "US",
"images": []
}
],
"scraped_at": "2026-06-17T16:44:25.875921",
"source": "product_page"
}

source: "listing_card" records carry only product_id, title, url, price, price_formatted, currency, rating, review_count, seller_id, seller_name, image_url, sold_count, scraped_at and source, with is_sold_out set to null and the creator/review fields zeroed out β€” this happens only when the product-detail page couldn't be reached but the product was already seen in a keyword/category/store listing.


βš™οΈ How does it work?

The Actor makes direct HTTP requests to TikTok Shop's own web endpoints using a Chrome-impersonating HTTP client (curl_cffi) β€” it does not run a headless browser. Product discovery calls the same internal product_list JSON endpoint the TikTok Shop web app uses for search, category, and store pages; product detail comes from the JSON blob TikTok Shop embeds in the server-rendered product page HTML, plus a follow-up call to the same page_data endpoint the web app uses to lazy-load the related-videos feed for creator stats. Every request routes through the proxy ladder described above, and only data visible on the public product/category/store page is ever collected β€” no login, cookies, or purchase step is involved. The output field set stays the same regardless of TikTok Shop's page layout, because the parser locates data by its structure inside the page config rather than by a fixed HTML selector.


πŸ”Œ Integrations

TikTok Shop Product Scraper runs on Apify, so it works with anything that can call the Apify API or an Apify Actor.

Calling TikTok Shop Product Scraper programmatically

from apify_client import ApifyClient
client = ApifyClient("<APIFY_API_TOKEN>")
run = client.actor("tiktok-shop-data-scraper").call(run_input={
"searchKeywords": ["shoes"],
"maxProducts": 50,
"includeReviews": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["price_formatted"])

Works in Go, Ruby, Node.js, cURL β€” any language that can make an HTTP request to the Apify API.

No-code tools (n8n, Make, LangChain)

In n8n, use the Apify node (or an HTTP Request node against the Actor's run-sync-get-dataset-items endpoint) to trigger a run and pull results into your workflow. In Make, the Apify app's "Run an Actor" module does the same. For LangChain or other agent frameworks, wrap the Apify API call in a custom tool so an agent can request TikTok Shop product data on demand.


Scraping publicly visible product listings β€” the same title, price, rating, and seller info any shopper sees without logging in β€” is generally lawful in most jurisdictions. TikTok Shop Product Scraper only returns data that's publicly visible on the product, category, or seller-store page. This is business/product data (prices, listings, seller and sales figures), not personal data, so GDPR and CCPA don't apply to the core product record β€” TikTok Shop's Terms of Service and database/content-rights considerations are the relevant framework instead. The one exception: with includeReviews enabled, review records include a reviewer_name already shown publicly by TikTok Shop (often partially masked by TikTok itself) β€” treat that field with care if you store it in bulk. Consult legal counsel if your use case involves bulk storage of personal data or commercial redistribution of scraped content.


❓ Frequently asked questions

What TikTok Shop product fields does TikTok Shop Product Scraper return?

The core fields are title, price, rating, sold_count, and seller_name, plus nested creator (top_creators) and review (reviews) data when requested. See What data can I extract for the full field list.

Does TikTok Shop Product Scraper require a TikTok account or login?

No. The Actor makes unauthenticated HTTP requests to TikTok Shop's public web endpoints β€” no TikTok account, login, or cookie session is used anywhere in its code.

How many products can I extract in one run?

maxProducts accepts 10 to 100,000 per search keyword, category, or seller store β€” and it's a per-source cap, not a run-wide one, so combining several keywords or URLs in one run multiplies the total.

What happens if a product is delisted or the detail page is temporarily blocked?

If a product came from a keyword/category/store search and its detail page can't be reached, the Actor falls back to the real title/price/rating/sold-count/seller/image data already captured during discovery (source: "listing_card") instead of dropping the row. ⚠️ SKU-level stock, creator stats, and reviews aren't available from a listing card, so those fields come back empty/null on that row. A bare product URL with no prior listing data and an unreachable detail page is skipped and logged, not returned as a blank row.

Can I scrape multiple TikTok Shop products at once?

Yes. Both searchKeywords and urls accept arrays, so one run can mix multiple keywords with multiple product, category, and seller-store URLs β€” all discovered products are deduplicated by product_id within the run.

Does TikTok Shop Product Scraper work with Claude, ChatGPT, and other AI agent tools?

It has no dedicated MCP server, but it's callable as a standard HTTP endpoint through the Apify API by any agent framework that can make an HTTP request β€” including custom tools in Claude or ChatGPT-based agents.

What makes this different from a generic TikTok Shop crawler?

Three things grounded in how it's built: it aggregates affiliate-creator video stats (top_creators) per product rather than just listing basic fields; it never drops a product to a blocked detail page β€” it degrades to real listing data instead (source: "listing_card") and tells you which rows are which; and its parser locates page data by structure rather than a hardcoded key, so a TikTok Shop layout change is less likely to silently break the output schema.

Does TikTok Shop Product Scraper return data in a format LLMs can use directly?

Yes. Output is typed, normalized JSON with consistent field names across runs β€” no HTML parsing or CSS selectors needed. Pass it directly to an LLM, index it into a vector store, or feed it to an agent tool.

What happens when TikTok Shop changes its layout or anti-bot system?

The Actor is maintained, and its parser is written to resolve page data by structure (looking for the object that holds a page_config) rather than a fixed key or selector, so it tolerates some layout change without breaking. No specific fix turnaround time is promised.

Can I use it without managing proxies or browser infrastructure?

Yes. The Actor handles proxy selection and escalation itself (direct β†’ Datacenter β†’ Residential via Apify Proxy) and makes plain HTTP requests with a Chrome-impersonating client β€” there's no headless browser to configure or maintain on your end.

Which fields work best for AI training data and RAG indexing?

For RAG, index title, price_formatted, and reviews[].text as the high-information text fields. For structured training data, price, rating, sold_count, and review_count return as consistent typed primitives (numbers/booleans) across every record.


ScraperWhat it extracts
TikTok Data ScraperGeneral TikTok profiles, videos, followers, comments & replies, hashtags, music, and playlists
TikTok Trending Creator Insights ScraperThe TikTok trending-creator board for a chosen country β€” handle, follower count, lifetime likes, latest videos

πŸ’¬ Your feedback

Found a bug or missing a field? Open an issue on this Actor's Issues tab in the Apify Console β€” reports get triaged and the output schema is kept stable across fixes.