ποΈ TikTok Shop Data Scraper & Seller Profile Scraper
Pricing
from $3.99 / 1,000 results
ποΈ TikTok Shop Data Scraper & Seller Profile Scraper
Scrape TikTok Shop data including products, prices, ratings, sales, discounts, seller details, categories, images, reviews, and product URLs. Perfect for product research, competitor monitoring, price tracking, trend analysis, and e-commerce intelligence.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
Scrapio
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
7 days ago
Last modified
Categories
Share
TikTok Shop Scraper β Extract Products, Sellers and Compliance Data
TikTok Shop Scraper & Seller Profile Scraper extracts TikTok Shop products, full seller/shop profiles, and real business-compliance data in a single run. Search by keyword, browse a category, target one seller's storefront, or paste direct product links β the URL type is auto-detected. Unlike scraping frameworks that return raw HTML, this Actor returns typed JSON: price, rating, sold count, real stock status, and top affiliate creators for every product β plus, wherever TikTok Shop has published it, the seller's registered business name and address and its promo-badge/compliance-warning history, ready for a spreadsheet, database, or pipeline without any parsing. The guide below covers every field returned and how sourcing, lead-gen, and monitoring teams deploy it.
π§ What Does TikTok Shop Scraper & Seller Profile Scraper Do?
TikTok Shop Scraper & Seller Profile Scraper collects three things from TikTok Shop's US storefront in one run: product listings, the seller/shop profile behind every product, and β when TikTok Shop has published it β the seller's real registered business name, address, and compliance-warning/promo-badge history. It also aggregates each product's top affiliate creators and can optionally pull reviews. No TikTok Shop account or login is required β the Actor reads the same public storefront pages and listing endpoints a shopper's browser calls, routed through Apify Proxy once a direct connection is blocked.
- ποΈ Discover products by keyword search, category browse, seller-store link, or direct product URL β the link type is auto-detected.
- πͺ Pull each product's full seller/shop profile: rating, followers, on-sell product count, lifetime sold count, review count, region, and shop URL.
- π§Ύ Surface the seller's real registered business name and address, exactly as published in TikTok Shop's own compliance disclosure β never guessed.
- ποΈ Mirror one deduped row per unique seller into a separate per-run
sellersdataset for a clean, aggregatable lead list. - π¦ Report real per-SKU stock status (
is_sold_out,stock_status,available_quantity) instead of a hardcoded flag. - π₯ Aggregate each product's top affiliate creators β video count, plays, likes, and affiliate flag.
- π Optionally fetch reviews with reviewer, rating, SKU, country, and images.
β‘ Features & Capabilities
The Actor's capabilities split into product discovery, seller/lead intelligence, and reliability engineering against TikTok Shop's region-locked, anti-bot storefront.
Core features
- Four discovery modes β
productKeywordssearch, a/c/category link, a/store/seller link, or a direct/pdp/product link, auto-classified from the URL. - Full product record β
product_id,title,url,price,price_formatted,currency,original_price,discount,rating,review_count,image_url,sold_count. - Real stock status β
is_sold_out,stock_status,available_quantityderived from the product's actual per-SKU stock payload;nullwhen TikTok doesn't expose it for that product, never faked. - Seller/shop profile per product β
seller_id,seller_name,seller_rating,seller_followers_count,seller_product_count,seller_sold_count,seller_review_count,seller_region,seller_url,seller_logo_url,seller_identity_label. - Business-compliance and lead data β
business_name,business_address,compliance_warnings,promo_badges, read from TikTok Shop's own compliance disclosure and promo-tag data. - Seller-scoped dataset β a deduped, per-run
<runId>-sellersdataset with one row per unique seller for a clean lead list. - Affiliate creator stats β
creator_count,has_creator_data,total_creator_videos,top_creators[](nickname, video count, plays, likes, affiliate flag). - Optional reviews β
reviews_fetched,reviews_accessible,reviews[](reviewer, rating, SKU, country, images). - Live output β every product and every newly-seen seller is pushed to its dataset the instant it's collected, not buffered until the run ends.
How TikTok Shop Scraper & Seller Profile Scraper compares to other TikTok Shop scrapers
No competing TikTok Shop scraper's live Apify Store listing was available to cite at the time of writing, so no named-competitor table is included β only this Actor's own documented behavior:
| Feature | This Actor |
|---|---|
| Output format | Typed JSON, no HTML parsing |
| Entities returned | Products, seller/shop profiles, business-compliance data, top creators, reviews |
| Seller-scoped dataset | Yes β deduped per-run sellers dataset |
| Business registration data | Yes β real business name/address when TikTok Shop publishes it |
| Stock status | Derived from the real per-SKU stock payload; null (not guessed) when absent |
| Proxy handling | 3-tier escalation: direct β Datacenter (US) β sticky Residential (US) |
| Degraded-row handling | Falls back to real listing-card data (source: "listing_card") instead of dropping the row |
If your use case is feeding structured data into an LLM or a lead database, the output-format and null-handling rows are the decision-makers β HTML parsing inside an agent loop, or a scraper that silently invents a missing field, are reliability failure modes, not features.
When another tool might suit you better
This Actor always opens each product's full detail page to get real price, stock, and creator data, whether or not you enable seller profile or business-compliance fields β those flags only control which fields get written to the row, not which requests get made. If all you need is a bare product list (title, price, rating) without any seller or business data, a lighter scraper that never opens the detail page and only reads the listing/search cards will make fewer requests per product and finish faster. Reach for this Actor when the seller and compliance fields are the point.
TikTok Shop Scraper & Seller Profile Scraper within the Scrapio data stack
This Actor covers TikTok Shop products, seller profiles, and business-compliance data. For general TikTok content β profiles, videos, followers, comments/replies, hashtags, and AI sentiment β use TikTok Data Scraper: Comments, Replies & AI Sentiment. For a cross-market sweep of trending creators independent of TikTok Shop products, use TikTok Trending Creator Insights Scraper Across Every Country.
πΌ Why do developers and data teams scrape TikTok Shop?
π’ Sourcing, dropshipping and lead-gen teams
Feed in productKeywords (e.g. shoes, phone case, skincare) or a competitor's seller-store URL. The run returns price, price_formatted, sold_count, and seller_id/seller_name on every product row, plus β with includeSellerProfile and includeBusinessCompliance on β seller_rating, seller_followers_count, seller_sold_count, business_name, and business_address. The per-run sellers dataset then hands you a deduped, exportable lead list ready for outreach, supplier vetting, or a dropshipping catalogue comparison, without hand-deduplicating repeated seller columns from the product rows yourself.
π AI training data and RAG indexing
title, reviews[].text, and promo_badges[].text are this Actor's genuine free-text fields; price, rating, sold_count, seller_followers_count, and seller_sold_count return as consistently typed numbers on every row. For RAG, index title and review text alongside seller_name and business_name so a shopping or support agent can answer "who sells this and are they a verified business" without a follow-up call. For training data, the numeric fields above are structurally consistent across every record, which suits demand-forecasting or price-prediction datasets better than free text that varies row to row.
π± Competitive and market intelligence
Run the same productKeywords or shopUrls on a schedule and diff price, discount, and sold_count to see who's discounting or trending up. Track seller_followers_count, seller_product_count, and seller_sold_count over time to watch a specific seller's growth, and diff promo_badges to catch when a competitor starts (or stops) running a promotion.
π¬ Research and academic use
The Actor returns only publicly accessible storefront data, which suits platform-economy or e-commerce research β sold-count and rating distributions across categories, or how often sellers publish business-compliance disclosures. Scope any dataset to public data only; the Actor has no way to reach anything else.
π₯ Product and SaaS development
The deduped sellers dataset and its business_name/business_address fields are a ready foundation for a supplier-directory product, a lead-enrichment API, or a price-comparison tool built on top of price/sold_count history.
π Input Parameters
No parameter is required β the Actor stops with a warning if neither productKeywords nor shopUrls (nor their legacy aliases) are set.
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
productKeywords | No | array of string | Keywords to search TikTok Shop for (e.g. shoes, phone case, skincare). Each keyword runs its own search and every seller behind the matching products is profiled. | ["shoes", "phone case"] |
shopUrls | No | array of string | TikTok Shop URLs β type auto-detected: product (/pdp/), category (/c/), or seller/store (/store/). A seller-store URL is the fastest way to profile one specific seller. | ["https://shop.tiktok.com/us/store/seller/789"] |
maxProductsPerSeller | No | integer, min 10, max 100000, prefill 10 | Maximum number of products to fetch per search keyword / category / seller. | 50 |
includeReviews | No | boolean, default false | Fetch product reviews too. Not every product exposes accessible reviews. | true |
maxReviews | No | integer, min 1, max 100, default 10 | Maximum number of reviews to fetch per product. | 20 |
sortBySoldCount | No | string enum: none, highest_first, lowest_first, default none | Order products by units sold. The Output table still fills live in discovery order β the sorted order is also saved to the run's Key-Value Store (SORTED_PRODUCT_IDS). | "highest_first" |
includeSellerProfile | No | boolean, default true | Surface each product's full seller profile β rating, followers, on-sell product count, lifetime sold count, review count, region, and shop URL β and populate the per-run sellers dataset. | true |
includeBusinessCompliance | No | boolean, default true | Include the seller's real registered business name and address, plus promo-badge and compliance-warning history, per product/seller. | true |
maxRetries | No | integer, min 1, max 10, default 5 | Maximum retry attempts per request before giving up. | 5 |
requestDelay | No | integer (ms), min 0, max 2000, default 0 | Delay between requests in milliseconds. Lower = faster, but may trigger rate limits. | 250 |
maxConcurrency | No | integer, min 1, max 20, default 20 | Maximum concurrent requests. Higher = faster but uses more resources. | 10 |
timeout | No | integer (seconds), min 10, max 300, default 60 | Per-request timeout in seconds. Increase if using slow proxies. | 60 |
searchKeywords | No | array of string | Legacy alias of productKeywords, kept for backward compatibility with the base actor's input. Used only when productKeywords is not set. | ["shoes"] |
urls | No | array of string | Legacy alias of shopUrls, kept for backward compatibility. Used only when shopUrls is not set. | [] |
maxProducts | No | integer, min 10, max 100000 | Legacy alias of maxProductsPerSeller, kept for backward compatibility. Used only when maxProductsPerSeller is not set. | 20 |
proxyConfiguration | No | object, default {"useApifyProxy": false} | By default the scraper connects directly (no proxy) and automatically escalates to a Datacenter proxy and then a Residential (US) proxy for reliability. For the most reliable results, select Residential proxies in the US. | {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]} |
Example input
{"productKeywords": ["shoes", "skincare"],"shopUrls": ["https://shop.tiktok.com/us/store/seller/7495957404327905670"],"maxProductsPerSeller": 50,"includeReviews": true,"maxReviews": 20,"sortBySoldCount": "highest_first","includeSellerProfile": true,"includeBusinessCompliance": true,"maxRetries": 5,"requestDelay": 0,"maxConcurrency": 20,"timeout": 60,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
Supported URL types and input formats
shopUrls (and its legacy alias urls) accept three link shapes, classified by path segment β pdp for a product, store for a seller, c for a category β with a bare numeric ID in the path treated as a product as a fallback:
- Product page β
https://shop.tiktok.com/us/pdp/1729496283565954438β fetches that one product. - Seller store β
https://shop.tiktok.com/us/store/seller/7495957404327905670β walks that seller's full catalog, up tomaxProductsPerSeller. - Category β
https://shop.tiktok.com/us/c/electronics/456β browses that category, using the slug as a search term.
productKeywords (and its legacy alias searchKeywords) are plain search terms β no wildcards or operators β each run as its own independent search against TikTok Shop's catalog.
π¦ Output Format
Every run produces typed, normalized JSON β no HTML, no manual parsing. Absent fields are always present in the row as null (scalars) or [] (lists), never omitted and never guessed. Rows collected via the discovery-listing fallback (see "When another tool might suit you better" above) carry source: "listing_card" instead of "product_page" so you can identify degraded rows.
Output for a product
{"product_id": "1729496283565954438","title": "Women's Low-Top Sports Shoes","url": "https://shop.tiktok.com/us/pdp/1729496283565954438","price": 36.27,"price_formatted": "36.27","currency": "USD","original_price": 43.69,"discount": "17%","rating": 4.7,"review_count": 207,"seller_id": "7495957404327905670","seller_name": "SHOEBACCA","image_url": "https://p16-oec-ttp.tiktokcdn-us.com/example.webp","sold_count": 2743,"is_sold_out": false,"stock_status": "in_stock","available_quantity": 374,"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 }],"seller_rating": 4.7,"seller_followers_count": 155600,"seller_product_count": 21188,"seller_sold_count": 490613,"seller_review_count": 76273,"seller_region": "US","seller_url": "https://shop.tiktok.com/us/store/shoebacca/7495957404327905670","seller_logo_url": "https://p16-oec-ttp.tiktokcdn-us.com/logo.webp","seller_identity_label": "OFFICIAL SHOP","business_name": "Shoebacca Ltd","business_address": "2205 E Pioneer Dr, Irving, Texas, 75061, The United States of America","compliance_warnings": [],"promo_badges": [{ "id": "40", "type": 40, "text": "Summer Sale" }],"reviews_fetched": 3,"reviews_accessible": true,"reviews": [{"review_id": "7291001234567890123","rating": 5,"text": "Fit great and shipped fast.","reviewer_name": "A**a S**t","review_time": 1780350129,"is_verified_purchase": true,"sku_specification": "Black, EU41","country": "US","images": ["https://p16-oec-ttp.tiktokcdn-us.com/review1.webp"]}],"scraped_at": "2026-08-02T16:44:25.875921","source": "product_page"}
Output for a seller
When includeSellerProfile is on, one deduped row per unique seller is also pushed β in real time, the first time that seller is seen β to a separate per-run dataset named <runId>-sellers (visible on the run's Storage tab):
{"seller_id": "7495957404327905670","seller_name": "SHOEBACCA","seller_rating": 4.7,"seller_followers_count": 155600,"seller_product_count": 21188,"seller_sold_count": 490613,"seller_review_count": 76273,"seller_region": "US","seller_url": "https://shop.tiktok.com/us/store/shoebacca/7495957404327905670","seller_logo_url": "https://p16-oec-ttp.tiktokcdn-us.com/logo.webp","seller_identity_label": "OFFICIAL SHOP","business_name": "Shoebacca Ltd","business_address": "2205 E Pioneer Dr, Irving, Texas, 75061, The United States of America","compliance_warnings": [],"promo_badges": [{ "id": "40", "type": 40, "text": "Summer Sale" }],"first_seen_product_id": "1729496283565954438","first_seen_product_url": "https://shop.tiktok.com/us/pdp/1729496283565954438","scraped_at": "2026-08-02T16:44:25.875921"}
Output for business-compliance and promo data
business_name, business_address, compliance_warnings, and promo_badges appear on both the product row and the mirrored seller row when includeBusinessCompliance is on. business_name/business_address are null when a seller has not published a compliance disclosure β never fabricated. compliance_warnings is TikTok Shop's raw warning list for that seller, passed through unmodified β commonly an empty array, since most sellers have no warnings on file:
{"business_name": "Shoebacca Ltd","business_address": "2205 E Pioneer Dr, Irving, Texas, 75061, The United States of America","compliance_warnings": [],"promo_badges": [{ "id": "40", "type": 40, "text": "Summer Sale" },{ "id": "12", "type": 12, "text": "Limited time deal" }]}
Schema stability and export options
Field names are read from product_info, shop_info, and safety_model components inside TikTok Shop's page payload; if TikTok Shop renames or removes a component, the corresponding field returns null on the affected row rather than crashing the run. Export the dataset from the Apify Console's Export button (JSON, JSONL, CSV, Excel, and the other formats the Apify dataset export supports) or read it programmatically via apify_client. Billing runs on the row_result pay-per-event charge, charged once per successfully pushed product row; the mirrored sellers dataset is populated in the same run but is not separately charged. If your Actor spend limit is hit mid-run, the Actor logs it once and keeps collecting and pushing without further charging rather than failing the run.
π‘ TikTok Shop Scraper & Seller Profile Scraper Strategy Guide
π― Strategy 1: Real-time lead-enrichment pipeline
Trigger a run whenever a new seller-store URL enters your pipeline (a lead form, a CRM field, a spreadsheet row). Call the Actor with that URL in shopUrls and includeSellerProfile/includeBusinessCompliance on. Append seller_rating, seller_followers_count, seller_sold_count, business_name, and business_address from the returned row back onto the CRM record β a supplier or partner lead now carries a verified business name and address instead of just a shop handle.
π― Strategy 2: Scheduled monitoring and alerting
Set up an Apify Schedule to re-run the same productKeywords or shopUrls weekly. Diff each run's output against the previous run on price, discount, sold_count, and promo_badges for the same product_id, and alert on the delta that matters to you β a price drop, a sold-count spike signalling a new best-seller, or a promo badge appearing on a competitor's listing.
π― Strategy 3: Bulk dataset build
Feed a large list of productKeywords or seller shopUrls and fan out parallel Actor runs (or a single run with a long keyword list) up to the Actor's own maxConcurrency ceiling of 20 concurrent requests per run. Pull each run's dataset via the API and aggregate to CSV or a database β the sellers per-run dataset gives you a pre-deduped seller table alongside the full product table, so you don't have to dedupe seller columns yourself downstream.
Strategy comparison at a glance
| Strategy | Best for | Run pattern | Output format |
|---|---|---|---|
| Real-time enrichment | Enriching one inbound lead/seller at a time | Single on-demand run per trigger | Dataset row appended to CRM record |
| Scheduled monitoring | Tracking price/sold-count/promo changes over time | Recurring Apify Schedule run | Dataset diffed against previous run |
| Bulk dataset build | Building a research or sourcing dataset | One large run or several parallel runs | Full dataset exported to CSV / database |
π΄ Related TikTok Shop Scrapers & Tools
| Scraper Name | What it extracts |
|---|---|
| TikTok Data Scraper: Comments, Replies & AI Sentiment | General TikTok profiles, videos, followers, comments/replies, hashtags, music, and playlists β with optional AI sentiment classification |
| TikTok Trending Creator Insights Scraper Across Every Country | The TikTok trending-creator board across every supported country and window, deduplicated and rolled up per market |
| Google Maps Extractor With Place ID, CID & Category Codes | Google Maps business listings and location data β useful for cross-checking a seller's registered business_address against a live map listing |
π How to integrate TikTok Shop Scraper & Seller Profile Scraper with your stack
TikTok Shop Scraper & Seller Profile Scraper works with any language or tool that can make an HTTP request β it runs on the Apify platform and is called through apify_client, the REST API, or the Apify Console.
Python
from apify_client import ApifyClientimport csvclient = ApifyClient("<YOUR_APIFY_TOKEN>")run_input = {"productKeywords": ["shoes", "phone case", "skincare"],"maxProductsPerSeller": 50,"includeSellerProfile": True,"includeBusinessCompliance": True,"proxyConfiguration": {"useApifyProxy": True, "apifyProxyGroups": ["RESIDENTIAL"]},}run = client.actor("<ACTOR_ID>").call(run_input=run_input)rows = list(client.dataset(run["defaultDatasetId"]).iterate_items())with open("tiktok_shop_products.csv", "w", newline="", encoding="utf-8") as f:fieldnames = ["product_id", "title", "price", "sold_count","seller_id", "seller_name", "business_name", "business_address"]writer = csv.DictWriter(f, fieldnames=fieldnames)writer.writeheader()for row in rows:writer.writerow({k: row.get(k) for k in fieldnames})print(f"Collected {len(rows)} product rows.")
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('<ACTOR_ID>').call({productKeywords: ['shoes'],maxProductsPerSeller: 50,includeSellerProfile: true,includeBusinessCompliance: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const item of items) {console.log(item.seller_name, item.business_name, item.sold_count);}
Async and scheduled pipelines
For large keyword/URL lists, start the run with client.actor(...).start() instead of .call() and poll the run status or the dataset item count until it finishes, rather than blocking on one long-lived request. For recurring jobs, use an Apify Schedule to re-run the same input on a cron-style interval, and attach an Apify webhook on ACTOR.RUN.SUCCEEDED to notify a downstream system the moment a run's dataset is ready β a fire-and-forget pattern for large sourcing or monitoring jobs.
π― Who Needs TikTok Shop Scraper & Seller Profile Scraper? (Use Cases & Industries)
π’ Dropshipping and sourcing teams
Pull price, sold_count, and discount across a keyword list to shortlist products, then cross-check seller_rating, seller_sold_count, and business_name/business_address on the matching seller before committing to a supplier relationship.
π B2B lead-generation teams
Turn every seller behind a keyword or category search into a lead record β seller_name, seller_followers_count, business_name, and business_address land in the deduped sellers dataset ready for a CRM import or outreach list, no per-product deduplication required.
π± Brand and competitor-intelligence teams
Track a named competitor's shopUrls store link over time for sold_count, price, discount, and promo_badges changes β see when they discount, restock, or launch a new promotion.
π¬ Researchers
Build a public-data-only dataset of product pricing, ratings, and sold-count distributions across categories, or study how consistently sellers publish TikTok Shop's own business-compliance disclosure.
π₯ Directory and SaaS builders
Use the deduped sellers dataset as the seed data for a supplier directory, a lead-enrichment API, or a price-monitoring product built on repeated price/sold_count snapshots.
βοΈ Is it legal to scrape TikTok Shop?
Scraping publicly accessible web data, including TikTok Shop product and shop pages, is generally lawful in the US β courts have held that accessing data a website makes available without a login is not a CFAA violation (hiQ Labs, Inc. v. LinkedIn Corp., 938 F.3d 985, 9th Cir. 2019). That is a separate question from TikTok Shop's own Terms of Service, which may prohibit automated access; violating a platform's ToS is a civil contract matter between you and TikTok, not a criminal one, but it is still a real risk to weigh, particularly for commercial use.
This Actor returns TikTok Shop's own business-compliance disclosure (business_name, business_address) for shops, not personal data about private individuals β those fields describe a registered business, not a person. The optional reviews[].reviewer_name field (off by default via includeReviews) is TikTok Shop's own pre-masked reviewer handle (e.g. A**a S**t in the platform's own output), not a full identity. Because of that, this is primarily a business/product-data scraper rather than a personal-data one, and heavy GDPR/CCPA framing does not apply the way it would to a scraper of individual social-media profiles.
TikTok Shop Scraper & Seller Profile Scraper returns only publicly accessible data. What you do with that data is your responsibility β consult legal counsel for commercial applications, especially any involving business-compliance or contact data.
β Frequently asked questions
Does TikTok Shop Scraper & Seller Profile Scraper work without a TikTok Shop account?
Yes. The Actor never reads or requires TikTok login credentials β it reads the same public storefront, product, and listing pages a shopper's browser loads, and needs no account of any kind.
How does it handle TikTok Shop's anti-scraping measures?
It impersonates a Chrome browser at the TLS/HTTP level (via curl_cffi), retries on a 403/429/5xx response or a degraded "soft-fail" page, and escalates through a three-tier proxy ladder β direct connection, then a Datacenter (US) proxy, then a sticky Residential (US) proxy β climbing one rung each time a request is blocked and staying on Residential for the rest of the run once it gets there.
Can I run it at scale without getting blocked?
There is no published uptime or success-rate guarantee. What is configurable and documented: maxConcurrency (1β20 concurrent requests), maxRetries (1β10 attempts per request), and requestDelay (0β2000 ms between requests) β raise the delay and lower concurrency if you are seeing more blocks, and enable Residential proxy from the start for the most reliable results on a large run.
How fresh is the data TikTok Shop Scraper & Seller Profile Scraper returns?
Live β every run fetches current data directly from TikTok Shop; nothing is cached between runs. Each row carries its own scraped_at timestamp.
Does enabling sortBySoldCount change the order of the Output table?
No β this is a real quirk worth knowing before you rely on it. The Output dataset is always pushed in live discovery order regardless of sortBySoldCount, so results appear in the order the Actor found them, not sorted. Setting sortBySoldCount to highest_first or lowest_first only writes a separate sorted snapshot (product_id + sold_count pairs) to the run's Key-Value Store under SORTED_PRODUCT_IDS. Sort the Output table's sold_count column yourself, or read that Key-Value Store entry.
Is the seller's business name and address guaranteed for every seller?
No. business_name and business_address are null whenever TikTok Shop has not published a compliance disclosure for that seller β the Actor never guesses or fabricates them. Treat a non-null value as a genuine TikTok Shop-published disclosure, and a null as simply undisclosed by that seller.
What happens if a product's detail page is blocked?
If the full product-detail fetch fails after retries but the product came from a keyword/category/store search, the Actor falls back to the real data already captured in the listing/search card (title, price, rating, sold count, seller) rather than dropping the row β that row is tagged "source": "listing_card". This variant's own seller-profile and business-compliance fields require the full detail page, so they stay null/[] on a degraded row instead of being guessed. A bare product URL with no prior listing card and a fully blocked detail page is logged and skipped.
Which TikTok Shop fields work best for AI training and RAG indexing?
title, reviews[].text, and promo_badges[].text are the highest-information free-text fields; price, rating, sold_count, seller_followers_count, and seller_sold_count are the fields with the most consistent structure across every record. All fields return as typed JSON primitives β strings, numbers, booleans, arrays β requiring no normalization before use.
Does TikTok Shop Scraper & Seller Profile Scraper work with Claude, ChatGPT, and other AI agent tools?
Yes, as an HTTP endpoint callable by any agent framework through the Apify API β there is no dedicated MCP server for this Actor. Every response is typed JSON, so an agent can consume price, seller_rating, or business_name directly without parsing HTML or free text first.
How does TikTok Shop Scraper & Seller Profile Scraper compare to other TikTok Shop scrapers?
No competing TikTok Shop scraper's live listing was available to cite as of this writing, so this Actor cannot be honestly scored against a specific named competitor here. What can be said from its own source: it is the only variant in this account's TikTok Shop family that returns a seller's real business-compliance disclosure and mirrors a deduped seller dataset alongside the product data β see the Features & Capabilities section above for the full, factual capability list.
βΉοΈ Disclaimer
TikTok Shop Scraper & Seller Profile Scraper extracts only publicly available data from TikTok Shop. This tool is intended for lawful use cases only. Users are responsible for complying with TikTok Shop's Terms of Service and applicable data protection laws in their jurisdiction.