TikTok Shop Trending Products — Sold Count, SKU | $1.99/1K
Pricing
from $1.93 / 1,000 shop products
TikTok Shop Trending Products — Sold Count, SKU | $1.99/1K
Extract product and shop records from TikTok Shop. Get prices, sold counts, ratings, reviews, variants, images, stock, and shop fields. Run with keywords, product or shop URLs/IDs; no TikTok login. Pricing: $0.00199 per product event on Free.
Pricing
from $1.93 / 1,000 shop products
Rating
0.0
(0)
Developer
Vitalii Bondarev
Maintained by CommunityActor stats
0
Bookmarked
251
Total users
70
Monthly active users
2 days ago
Last modified
Categories
Features
Share
TikTok Shop Scraper
This Actor extracts product and shop data from TikTok Shop product pages, seller storefronts, and category pages. It uses Apify Residential Proxy; no TikTok login or external proxy account is needed.
- Compare products and storefronts by region, price ranges, discounts, and sales metrics.
- Monitor prices, availability, stock fields, and canonical URLs across repeat runs.
- Collect category, direct product, or storefront records for market research.
- Combine keyword, product, and shop inputs in one run.
What you get
| Field family | Fields | Type | What it contains |
|---|---|---|---|
| Record type | type | string (product or shop) | Record kind |
| Product identity | product_id, title, description, category, brand, shop_id, shop_name, seller_region, product_url | string; several fields can be null | Product, shop, region, and link |
| Pricing | price, original_price, price_min, price_max, rating | number; original_price can be null | Prices and rating |
| Currency | currency | string | Currency; never null |
| Demand and stock | discount_pct, sold_count, review_count, stock_count | integer; null when unavailable | Discount, sales, reviews, stock |
| Availability | is_in_stock | boolean or null | Availability |
| SKU data | sku_variants | array of objects with name, price, stock; values can be null | Variant pricing and stock; null without variants |
| Media | image_urls, video_urls | array of strings; null when none | Product media |
| Delivery | shipping | object with optional fee, origin, delivery; null when none | Shipping details |
| Parse quality | parse_confidence | number from 0 to 1 | Parsing score |
| Warnings | warnings | array of strings | Warning codes |
| Shop profile | follower_count, product_count | integer | Followers and listed products |
| Shop profile details | region, shop_url, logo_url | string | Shop details |
| Run metadata | scraped_at | ISO 8601 string | Dataset timestamp |
A field is null when the source does not provide it. Keyword records always have description, video_urls, shipping, stock_count, and is_in_stock as null; sku_variants[].stock is also always null. Shop rows can have shop_id and shop_url filled from the input. Shop mode returns one shop record followed by its listed products.
Sample output
This shortened real product record omits category, price_min, price_max, discount_pct, shop_id, sku_variants, image_urls, video_urls, shipping, stock_count, is_in_stock and scraped_at. It came from a keyword search using the thoi-trang category.
keyword_fallback:
{"type": "product","product_id": "1729484235456352758","title": "CHICME Women's Ribbed Racerback Built-in Bra Tank Top - Sleeveless, Short, Casual, Minimalist, Skinny, Padded Everyday Basic Going Out Top","description": null,"brand": "CHICME","price": 12.99,"original_price": 17.99,"currency": "USD","sold_count": 289832,"rating": 4.4,"review_count": 17358,"shop_name": "chicme","seller_region": "US","product_url": "https://shop.tiktok.com/us/pdp/tank-top-by-chicme-with-built-in-bra-and-ribbed-fabric-for-comfort/1729484235456352758","parse_confidence": 1,"warnings": ["keyword_fallback:thoi-trang"]}
Pricing
This Actor uses Pay Per Event pricing. The shop-product event represents one TikTok Shop product with sold count, SKU, price, and rating. Products are billed individually; shop profile rows are free. Platform usage is included in the event prices; this Actor does not use the Pay per event + usage option.
| Plan | shop-product event price |
|---|---|
| Free | $0.00199 per product |
| Bronze | $0.0019701 per product |
| Silver | $0.0019502 per product |
| Gold | $0.0019303 per product |
| Platinum | $0.0019104 per product |
| Diamond | $0.0018905 per product |
maxResults controls the maximum products returned across a run. Shop records do not count toward that limit. Default 50, range 1–10000. On the Free plan, a run returns at most 5 products and takes 1 keyword, 1 product, and 1 shop; larger values are lowered.
Free-plan example: a Free run of 5 products = 5 × $0.00199. The Apify Free plan includes $5 of monthly platform usage credit.
Paid-plan examples: 1,000 results on Bronze = 1,000 × $0.0019701 = $1.9701; 10,000 results on Bronze = 10,000 × $0.0019701 = $19.701.
How to use
- Choose keyword collection with
keywords, product collection withproductUrlsorproductIds, storefront collection withshopUrlsorshopIds, or a combination. - Enter terms, product URLs or IDs, and storefront URLs or IDs in their corresponding lists. Processing order is keywords, products, then shops;
maxResultsis shared. - Set
maxResultswithin the supported range. - Use Apify Residential Proxy: TikTok blocks datacenter IPs. Set
countryCodefor product and shop inputs; keyword inputs always use a US exit and ignorecountryCode. Without Apify Proxy or proxy URLs, Residential US is used. - Run the Actor and review prices, sold counts, ratings, variants, images, links,
parse_confidence, andwarnings. - Repeat runs through Apify Schedules, starting daily for product listings or price monitoring.
Example input:
{"keywords": ["phone case"],"maxResults": 50,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"countryCode": "US"}}
Export the dataset as JSON or CSV, or read it through the Apify dataset API.
Input parameters
| Parameter | What it does | Default |
|---|---|---|
keywords | Product terms read from category pages through a US exit; countryCode is ignored. Broader matches carry keyword_fallback: | No default |
productUrls | TikTok Shop product URLs; reads embedded product JSON. IDs need at least 6 digits; other values go to issues. | No default |
productIds | Bare TikTok Shop product IDs. IDs need at least 6 digits; other values go to issues. | No default |
shopUrls | TikTok Shop storefront URLs; returns the shop record and listed products. IDs need at least 6 digits; other values go to issues. | No default |
shopIds | Bare TikTok Shop seller or shop IDs. IDs need at least 6 digits; other values go to issues. | No default |
maxResults | Maximum products across the run; shop records do not count. Default 50, range 1–10000. | 50 |
proxyConfiguration | Residential Proxy configuration. Product and shop inputs use its country; keyword inputs use a US exit and ignore countryCode. If omitted, Residential US is used. | Apify Proxy enabled, RESIDENTIAL, US |
disableUsageStats | Set to true to turn off the run summary in Usage statistics. | false |
Each product or shop input gets at most 3 fetch attempts in total. Attempts start in the selected country, or US if none is set. A region wall or 404 moves to the next country in the order selected country, US, GB; other failures retry in the same country. A product gets up to 2 attempts per country and a shop up to 3, so US and GB may not be reached. Other storefront regions are not verified.
Limits and edge cases
| Condition | What the buyer sees | What to do |
|---|---|---|
| Free plan | Capped at 5 products and 1 keyword, 1 product, and 1 shop on non-paying accounts, including the Free plan. Larger values are lowered and noted in the run log; status does not change. | Stay within the caps or use a paid Apify plan. |
| Keyword mode | Generic terms use a US exit. Terms without Latin letters or digits are skipped. Broader-category rows carry keyword_fallback: | Use generic product terms and inspect status, warnings, and OUTPUT. |
| No input returns data | The run fails with No data returned:. OUTPUT has error: no_data_returned and per-input issues such as blocked site, unavailable item, catalogue not served, unrecognised page, failed request, or server error. Nothing is charged. | Review the reported issues. |
| Pages load but no products match | The run succeeds with an empty dataset, status No products found for this input…, and OUTPUT.warning: no_products_found. Nothing is charged. | Check the input and try a one-result run. |
| Some inputs fail | The run succeeds and lists issues in OUTPUT. | Review and rerun affected inputs. |
| Cost guard | With no products delivered, the run fails with OUTPUT.error: stopped_by_cost_guard and nothing is charged. After products are delivered, it succeeds with OUTPUT.stoppedEarly: MARGIN_GUARD; written rows remain charged. | Retry later or with fewer inputs. |
| No usable input | The run fails with OUTPUT.error: no_input. IDs need at least 6 digits; rejected inputs are listed in the detail. | Provide keywords, product URLs or IDs, or shop URLs or IDs. |
| Product challenge or shop catalogue not served | A challenged product may be skipped and listed in issues with no charge. If a shop catalogue is unavailable, the shop row is delivered, no products follow, and the input is listed in issues. | Retry later or with fewer inputs. |
| When rows are written | Product inputs are written in batches of 10, with the last batch written when the list ends or the run stops early. A shop row is written first, followed by its products; keyword products are written together. Written rows remain charged. | Inspect the dataset and issues. |
FAQ
How much does it cost to scrape TikTok Shop?
Each product costs the shop-product event price for the selected plan; the Pricing table lists all six plans. A Free run of 5 products = 5 × $0.00199, and shop profile rows are free.
Why is my TikTok Shop result empty?
TikTok Shop can be region-gated, and datacenter IPs can be blocked. Use Apify Residential Proxy. Product and shop inputs use countryCode; keyword inputs use a US exit. Keyword searches with no category can succeed with an empty dataset, with the reason in status and OUTPUT.
Why is the Actor not working for my search?
Check that values contain generic product terms, product URLs or IDs, or storefront URLs or IDs. Product URL and ID mode reads embedded product JSON. Blocks, CAPTCHA pages, and region walls can still occur.
Is it legal or allowed to use data from TikTok Shop?
The Actor collects public data from TikTok Shop. Whether a use is legal or allowed depends on TikTok Shop’s terms, applicable law, and your use case; review those requirements before using the output.
Related actors
- TikTok Ads Library Scraper (Commercial Content API) — related TikTok commercial-content data.
- TikTok Influencer Discovery — Rank Creators by Engagement — related TikTok creator and engagement data.
- Grailed Scraper — Streetwear Resale & Sold Prices — related marketplace resale and sold-price data.
Usage statistics
This Actor creates a small, content-free summary at the end of each run, used only to monitor reliability and improve this Actor. No input values, credentials or scraped data are sent.
A copy of the exact record for your run is saved as USAGE_STATS in your own Apify key-value store.
To opt out, set disableUsageStats to true in the input. Nothing is sent then.