TikTok Shop Scraper - Products, Prices & Sales (Cheap)
Pricing
from $0.80 / 1,000 results
TikTok Shop Scraper - Products, Prices & Sales (Cheap)
Scrape TikTok Shop US products by keyword: prices, discounts, units sold, ratings, reviews, shops and creator videos. Optional product pages add stock levels, variants, specs and reviews.
Pricing
from $0.80 / 1,000 results
Rating
0.0
(0)
Developer
Yusuf Barış
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
11 days ago
Last modified
Categories
Share
TikTok Shop Scraper - Products, Prices, Sales & Stock
Scrape TikTok Shop US product data by keyword: prices, discounts, units sold, ratings, reviews, shops and the creator videos driving sales. Turn on product details to also get stock levels per variant, specifications, categories, shipping and top reviews.
No login, no cookies, no browser. Fast, low cost, and built to finish every run successfully.
What can you do with it?
- Find winning products: sort any keyword by best selling and see what actually moves on TikTok Shop right now.
- Track prices and discounts: schedule runs and compare price, discount and flash-sale labels over time.
- Estimate demand: units sold, review counts and creator video views show which products are taking off.
- Research competitors: see every shop selling in a niche with its followers, rating and total sales.
- Check stock levels: per-variant stock helps you spot supply gaps and sell-out risks.
- Feed your own tools: push clean JSON into a database, spreadsheet, BI dashboard, or an AI agent.
Popular with dropshippers, Amazon and Shopify sellers, cross-border e-commerce teams, agencies, brand-monitoring tools and analysts in the US, Europe and Asia.
Features
| Feature | Details |
|---|---|
| Keyword search | Any common product term, one per line. Close matches are found automatically when an exact phrase has no TikTok page. |
| Depth | Typically 100-250 products per keyword. Add related keywords to go much wider. |
| Best sellers first | Sort by units sold, price, rating or review count across everything reachable for the keyword. |
| Filters | Minimum/maximum price, minimum units sold, minimum rating. |
| Product details (optional) | Description, category path, all images, specifications, variants, per-variant price and stock, shipping, shop statistics, top reviews. |
| Single products | Paste a product page URL to get full details for that product. |
| Deduplication | Each product is returned once, even when several keywords find it. |
| Reliable | Automatic retries with fresh IPs. The run always ends successfully and saves everything it collected. |
Input
| Field | Type | Description |
|---|---|---|
searchQueries | array | Product keywords, e.g. lip gloss, phone case, air fryer. |
startUrls | array | Optional TikTok Shop keyword pages (https://shop.tiktok.com/us/k/phone-case) or product pages (.../pdp/.../1729407202568147235). |
maxResultsPerQuery | integer | Products per keyword. Default 100. |
maxItems | integer | Total products across all keywords. Default 1000. |
expandRelatedKeywords | boolean | Also scrape TikTok's related searches to reach more products. |
maxRelatedKeywords | integer | Related keywords to add for each of your keywords. Default 5. |
scrapeProductDetails | boolean | Open each product page for stock, variants, specs, shipping, shop stats and reviews. |
sortBy | string | relevance, soldDesc, priceAsc, priceDesc, ratingDesc, reviewsDesc. |
minPrice, maxPrice | number | Price range in USD. |
minSoldCount | integer | Minimum units sold. |
minRating | number | Minimum rating (0-5). |
deduplicate | boolean | Return each product once. Default true. |
Example input
{"searchQueries": ["lip gloss", "wireless earbuds"],"maxResultsPerQuery": 100,"sortBy": "soldDesc","minRating": 4,"scrapeProductDetails": false}
Output
Each product is one dataset item. Download it as JSON, CSV, Excel, XML or HTML, or read it through the API.
{"productId": "1732388535932916327","title": "6-Count Cosmetic Moisturizing Lip Oil & Lipgloss Set - Daily Glossy Lip Treatment","url": "https://shop.tiktok.com/us/pdp/moisturizing-clear-lip-gloss-set-6-count-student-friendly/1732388535932916327","imageUrl": "https://p16-oec-general-useast5.ttcdn-us.com/...webp","price": 12.99,"originalPrice": 20.99,"discountPercent": 38,"currency": "USD","soldCount": 82,"rating": 4.8,"reviewCount": 25,"brand": null,"shopId": "7494591973747295847","shopName": "Kore Mart US","promotionLabels": ["Limited time deal", "Free shipping"],"skus": [{ "skuId": "1732388538776523367", "price": 12.99 }],"video": null,"position": 1,"searchQuery": "lip gloss","market": "US","scrapedAt": "2026-10-13T09:26:17Z"}
Core fields (always included)
| Field | Description |
|---|---|
productId, title, url, imageUrl | Identity and links. |
price, originalPrice, discountPercent, currency | Current price, price before discount, discount in percent. |
soldCount, rating, reviewCount | Sales and review signals. |
brand, shopId, shopName, shopLogoUrl | Brand and seller. |
promotionLabels | Badges such as Flash sale, Free shipping, Limited time deal. |
skus | Variants with price. |
video | Linked creator video: id, views, likes, duration, publish date, cover (when available). |
position, searchQuery, matchedKeyword, market, scrapedAt | Where and when the product was found. |
Extra fields with scrapeProductDetails
| Field | Description |
|---|---|
description, categoryPath, categories | Full description and category hierarchy. |
images, headerVideoUrl | All product images and the main product video. |
specifications, variants | Attributes (material, ingredients, size...) and options such as color. |
skus[].stock, totalStock, inStock | Stock per variant and totals. |
shipping | Shipping fee, free-shipping threshold, delivery estimate, ships-from. |
shopUrl, shopFollowers, shopRating, shopSoldCount, shopProductCount | Shop statistics. |
topReviews, totalReviewCount | Most relevant reviews with rating, text, variant, photos and date (reviewer identities are not collected). |
detailsScraped | true when the product page was read successfully. |
The run also stores a RUN_SUMMARY record with results per keyword, request counts and download size.
How to use
- Open the Actor and enter one or more search keywords (with no input at all, the Actor runs a 30-product demo search).
- Choose how many products you want, and optionally sort and filter.
- Click Start. A 100-product keyword usually finishes in well under a minute.
- Open the Products overview tab or export the dataset.
Run it from code
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('codetr/tiktok-shop-product-scraper-cheap').call({searchQueries: ['air fryer'],maxResultsPerQuery: 100,sortBy: 'soldDesc',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.slice(0, 5));
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('codetr/tiktok-shop-product-scraper-cheap').call(run_input={'searchQueries': ['air fryer'],'maxResultsPerQuery': 100,'sortBy': 'soldDesc',})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item['title'], item['price'], item['soldCount'])
cURL
curl -X POST "https://api.apify.com/v2/acts/codetr~tiktok-shop-product-scraper-cheap/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQueries":["air fryer"],"maxResultsPerQuery":50}'
You can also schedule runs, send results to Google Sheets, Make, Zapier or n8n, call the Actor from an AI agent through the Apify MCP server, and connect webhooks.
Pricing
The Actor uses pay per event: you pay for each product returned. Product detail pages are billed as a separate small event, and only when scrapeProductDetails is enabled. Current rates are shown on the Actor's pricing tab. Set maximum cost per run in the run options to cap your spend; the Actor stops cleanly when the limit is reached.
Tips and limits
- Marketplace: data comes from the TikTok Shop United States marketplace; prices are in USD.
- Depth per keyword: TikTok exposes roughly 100-250 products for a keyword. To cover a whole niche, use several keywords or enable related keywords.
- Best keywords: use common product terms. Very specific or unusual phrases may have no TikTok Shop page. The Actor then tries TikTok's own suggestions and logs a clear message if nothing is found.
- Sorting is applied to everything reachable for each keyword (up to about 300 products), so Best selling first returns real top sellers.
- Units sold is the figure TikTok Shop displays for the product at scraping time.
- Image links are signed by TikTok and can expire after some time; download images you need to keep.
FAQ
Do I need a TikTok account or cookies? No. The Actor reads publicly visible TikTok Shop pages.
Can it scrape other countries (UK, EU, Southeast Asia)? Not currently. The public keyword pages this Actor relies on are available for the US marketplace only.
What happens if TikTok blocks a request? Requests are retried automatically from fresh IPs. If a keyword still cannot be fetched, the Actor logs it, continues with the others, and finishes successfully with everything collected so far.
Why did I get fewer products than I asked for?
Either the keyword has fewer products on TikTok Shop, your filters removed some, or duplicates were removed. The RUN_SUMMARY record shows the details per keyword.
Does it collect personal data? No. Reviews are returned without reviewer names or IDs. Shop and product information is business data that TikTok Shop shows publicly.
Is scraping legal? The Actor collects publicly available information. You are responsible for using the data in line with applicable laws and TikTok's terms. This Actor is not affiliated with or endorsed by TikTok or ByteDance.
Feedback and support
Found a bug or need an extra field? Open an issue on the Actor's Issues tab. Fast replies, and field requests are welcome.