TikTok Shop Scraper AIO | Search, Sold Velocity & Shop Rankings avatar

TikTok Shop Scraper AIO | Search, Sold Velocity & Shop Rankings

Pricing

from $3.50 / 1,000 product (search result)s

Go to Apify Store
TikTok Shop Scraper AIO | Search, Sold Velocity & Shop Rankings

TikTok Shop Scraper AIO | Search, Sold Velocity & Shop Rankings

All-in-one TikTok Shop (US) scraper: keyword search with sold count, price, rating and the bound TikTok video; full product pages with SKUs, stock and seller compliance; plus the shops behind the results and every sort/category filter TikTok offers. Sort by best sellers or price. No API key.

Pricing

from $3.50 / 1,000 product (search result)s

Rating

0.0

(0)

Developer

Mr Zack

Mr Zack

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

4

Monthly active users

11 hours ago

Last modified

Share

TikTok Shop Scraper AIO | Products, Shops, Sold Count & Prices

Search TikTok Shop US by keyword and get every product as clean JSON — sold count, price, original price, discount %, rating, review count, shop name & seller id, brand, free-shipping / limited-time-deal labels, image, and the TikTok video bound to the listing (creator, plays, likes). Add product URLs or IDs to pull full product details: every SKU with live stock, per-SKU price, weight & dimensions, description text, all images, video count, delivery days, and the seller's registered business name & address.

No browser, no cookies, no proxies to configure. Straight from TikTok Shop's own web endpoints, fast and cheap — $5 per 1,000 products (leaders charge $4.50–15).

Who uses this

  • TikTok Shop sellers & brands — track what sells in your niche (sold count is public here, unlike Amazon), spot price drops, watch competitor stock.
  • Product researchers / dropshippers — validate a niche in one run: median price, total units sold, estimated GMV, share of listings with creator videos (free market-summary row).
  • Affiliates & creators — find products with momentum and which creators' videos are attached; isCreatorCommission flags affiliate listings.
  • Agencies & analysts — monitor shops, SKUs and stock over time by scheduling runs and feeding the dataset to Sheets/DB.

Input

FieldDescription
keywordsSearches, one per line ("air fryer").
maxResultsPerKeywordProducts per keyword (30/page, max 600). Default 60.
productUrlsshop.tiktok.com/us/pdp/…/<id>, tiktok.com/view/product/<id> or bare 19-digit ids → detail rows.
enrichDetailsFetch full details for every search result (charged per detail).
includeMarketSummaryFree aggregate row per keyword (default on).
{ "keywords": ["air fryer", "led strip lights"], "maxResultsPerKeyword": 90,
"productUrls": ["https://shop.tiktok.com/us/pdp/9qt-dual-air-fryer/1732304925049327689"] }

Output

product (one per search result):

{ "type": "product", "position": 1, "keyword": "air fryer", "productId": "1732306737130869211",
"title": "6-Quart Air Fryer with Window, 12-in-1 Square Design …", "url": "https://shop.tiktok.com/us/pdp/6-quart-air-fryer-with-window/1732306737130869211",
"price": 59.03, "originalPrice": 81.98, "discountPct": 28, "currency": "USD", "saving": 22.95,
"rating": 5, "reviewCount": 6, "soldCount": 25, "sellerId": "7496210586501679579", "shopName": "Floft", "brand": null,
"freeShipping": true, "limitedTimeDeal": true, "labels": ["Limited time deal", "Free shipping"], "skuCount": 4, "seoUpdatedAt": "2026-01-05T13:13:58.108Z",
"image": "https://p16-oec-general-useast5.ttcdn-us.com/…600.webp",
"video": { "itemId": "7648948884764462367", "authorName": "Brenda Paola", "playCount": 1500, "likeCount": 161, "durationSec": 82, "isCreatorCommission": true, "url": "https://www.tiktok.com/@_/video/7648948884764462367" } }

product-detail (one per product id):

{ "type": "product-detail", "productId": "1732306737130869211", "title": "6-Quart Air Fryer with Window …", "price": 59.03, "originalPrice": 81.98, "discountPct": 28,
"rating": 5, "reviewCount": 6, "soldCount": 25, "shopName": "Floft", "available": true, "freeShipping": true, "deliveryMinDays": 3, "deliveryMaxDays": 6,
"description": "6 Quart Air Fryer with Window: Your Versatile Kitchen Companion\n✨ Spacious 6.34QT Capacity …",
"images": ["https://p16-oec-general-useast5.ttcdn-us.com/…"], "videoCount": 1,
"skuCount": 4, "totalStock": 311, "variantDimensions": { "Color": ["pink", "black", "White", "Gray"] },
"skus": [{ "skuId": "1732306737131000283", "options": { "Color": "pink" }, "price": 59.03, "originalPrice": 81.98, "stock": 311, "inStock": true, "weightKg": 5.448, "dimensionsCm": "31x39x38" }],
"properties": { "CA prop 65: repro. chems": "No" }, "businessName": "Shenzhen Yunqi Network Technology Co Ltd", "businessAddress": "Room 502, …, Shenzhen, Guangdong, China" }

market-summary (free, per keyword): listings, priceMin, priceMedian, priceMax, avgRating, totalSoldCount, avgSoldCount, estimatedGmv, withVideoPct, freeShippingPct, topShops[].

Failed ids / blocked keywords are pushed as type: "failed" rows and are never charged.

Run it on a schedule with trackTrends: true and every product carries what actually happened since the last run:

FieldMeaning
soldCountChange, soldPerDayunits sold since last run and the observed daily velocity — not an estimate
priceChange, priceChangePctprice moves; trendSignal: "price-drop" when ≥10 % cheaper
rankChangeposition change for the same keyword (positive = climbed)
isNewListingproduct not seen in the previous run
trendSignalhot (≥50 sold/day observed), selling, flat, price-drop, price-up

Add onlyChanges: true for a watch-list: unchanged products are skipped and not charged. Add includeShopLeaderboard: true for a free per-keyword ranking of the shops that dominate the results (shop-leaderboard rows: listings, sold share, median price, rating, best position).

Example (daily schedule): { "keywords": ["air fryer", "led mask"], "maxResultsPerKeyword": 100, "trackTrends": true, "includeShopLeaderboard": true } · watch-list: { "productUrls": ["…"], "trackTrends": true, "onlyChanges": true }

Pricing (pay per event)

EventPrice
Product (search result)$0.005
Product detail$0.01
Actor start$0.001

1,000 search results ≈ $5 · 1,000 full product pages ≈ $10. Summary, failed and duplicate rows are free.

Changelog

  • 0.1.6 (2 Oct 2026) — The run header now points to trackTrends (sold velocity between scheduled runs) and, when it is on, says how many products are hot / selling / dropping in price since your last run. No field, default or price changed.
  • 0.1.5 (24 Sep 2026) — Reliability: A non-US region without a proxy in that country now ends right away as a normal run with 0 rows and a clear explanation (only the start fee), and TikTok's short Security Check waves get two patient retries. Runs close to their timeout stop early and keep everything collected. No price or field change.
  • 0.1.4 (21 Sep 2026) — Clearer failure reason for geo-fenced regions. A non-US region without a proxy in that country cannot work from Apify's US infrastructure; the run now fails with that exact explanation (and what to set) instead of a generic "US refused every request". No fields, defaults or prices changed.
  • 0.1.3 (19 Sep 2026) — Typo guard on input. Apify accepts input fields an Actor does not know without complaining, so a misspelled option used to produce a successful run with that setting silently inactive. The run log now warns for every unknown field and suggests the closest real one.
  • 0.1.2 (18 Sep 2026) — Fix: sortBy: newest silently returned relevance order (it sorted on a field the search API never provides). New field seoUpdatedAt (the only date TikTok exposes on search cards — the listing page's last update, not the original listing date; null when TikTok sends 0) and newest now orders by it, newest first, unknown dates last. No other output or price change.
  • 0.1.1 (16 Sep 2026) — Reliability: V8 heap capped at 70 % of run memory so garbage is collected before the container limit (prevents out-of-memory kills on big pages). No output change.
  • 0.3.0 (12 Sep 2026) — AIO update. trackTrends: observed changes between runs — soldCountChange, soldPerDay (real sold velocity), priceChange / priceChangePct, rankChange per keyword, isNewListing, trendSignal (hot / selling / flat / price-drop / price-up). onlyChanges: watch-list mode — unchanged products are skipped and not charged. includeShopLeaderboard: free per-keyword shop rankings (listings, sold share, median price, rating). All opt-in; defaults, fields and prices unchanged. Reviews / shop catalogues are intentionally not offered: TikTok gates them behind an interactive CAPTCHA.
  • 12 Sep 2026 — Price cut: product $0.012 → $0.005, product detail $0.02 → $0.01 (plus Store discounts for paid plans). No feature or field changes.
  • 0.0.14 (11 Sep 2026) — Fix: sortBy had no effect. The server-rendered page ignores sort and TikTok's search API currently ignores sort tokens too, so the requested order is now applied to the fetched result set (documented in the input schema). Raise maxResultsPerKeyword to sort over a larger pool.
  • 0.0.4 (11 Sep 2026) — Honest regions + proxyConfiguration. Verified that from Apify's US infrastructure only us returns products (uk/id answer with an empty page, my/th/vn/ph/sg redirect). Non-US regions now require your own in-country proxy via the new proxyConfiguration input; without it the run ends with 0 rows and a clear status message instead of a silent empty dataset.
  • 0.2.0 (9 Sep 2026) — Sort, shops and filters, plus a faster, safer engine. New sortBy (best sellers, price low/high, newest — using TikTok's own filter tokens), includeShops (free shop rows: seller id, shop name, logo, verified badge, shop URL — taken from the page the products already come from, so no extra requests and no extra charge) and includeFilters (one free search-filters row per keyword listing every category, colour, price band and rating filter with its exact token). Also region (default us; other storefronts only answer if the run's IP is allowed in that country — the log tells you when one refuses). Engine work from the same audit: a failing billing call can no longer kill a run that already has data, result de-duplication is O(n) instead of O(n²), rows are flattened before storage so a large JSON page can't pin memory, and concurrency follows the memory the run was given. Default behaviour is unchanged — a run with none of the new options set returns exactly what it did before.

Notes

  • US marketplace only (shop.tiktok.com/us). Other regions are served by different storefronts and are not covered yet — open an issue if you need one.
  • soldCount is TikTok's own lifetime counter shown on the listing; estimatedGmv in the summary = Σ soldCount × current price (rough, lower-bound-ish).
  • Sort is TikTok's default relevance. Results are de-duplicated per keyword.
  • TikTok changes its storefront often; if a field turns null where you can see it on the page, open an issue with the product id.

Found this useful? A review helps more than you'd think

If this Actor saved you time, a short review on the Reviews tab of this Store page takes 30 seconds and is the only signal other buyers have before they spend anything. If something is broken instead, open a ticket on the Issues tab — parser bugs and field requests get fixed.

Related Actors from the same account