TikTok Shop Product & Price Tracker
Pricing
from $3.50 / 1,000 results
TikTok Shop Product & Price Tracker
Tracks TikTok Shop product prices, discounts, per-SKU stock, sold counts and ratings across 8 markets. Reads the product page's own server-rendered payload — HTTP only, no login, no CAPTCHA solving. Pins the proxy exit to your chosen market so prices never silently change currency.
Pricing
from $3.50 / 1,000 results
Rating
0.0
(0)
Developer
Ibnu Adzim
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Tracks TikTok Shop listings across 8 markets — current price, list price, discount, per-SKU price and stock, units sold, rating and review count — by reading each product page's own server-rendered payload.
HTTP only. No login, no cookies, no browser, no CAPTCHA solving.
Two ways to use it
urls — track the products you care about. Give it TikTok Shop product
URLs or bare numeric IDs and run it on a schedule; each run appends a fresh
price snapshot. This is the mode you want for price monitoring.
discover — sample the catalogue. Pulls products from TikTok's own
published per-country PDP sitemap (the US index alone lists ~1.6M products).
Use it to build a watchlist, then switch to urls to track it.
Markets
US, PH, VN, MY, SG, TH, JP, and ID.
Indonesia is urls-only — TikTok Shop Indonesia runs on Tokopedia and
publishes no PDP sitemap, so there is nothing to enumerate.
The one thing to get right: the market pin
TikTok decides which market you are in from your exit IP, and it cannot be overridden by any cookie or header. Prices are denominated in that market's currency. So an un-pinned rotating proxy can hand you IDR rows and USD rows in the same dataset, with every request returning a healthy 200.
This actor defends against that for you:
- your chosen
countryis pinned onto the Apify Proxy exit automatically; - every row reports
regionServedandregionMatched, and a mismatched row is flagged with_error: REGION_MISMATCHinstead of being quietly written; - the run summary reports
currenciesSeenandcurrencyStable, and warns loudly if more than one currency shows up in a single run.
If you see REGION_MISMATCH, your proxy exited in the wrong country — the data
is not wrong, it is just a different market's prices.
Reading the price fields
TikTok's headline price is the cheapest SKU, and for multi-variant products that can be far below what most variants cost — one sampled listing ran from 114 to 27,552 in the same currency. So you get the spread, not just a number:
| Field | Meaning |
|---|---|
salePrice | current price of the cheapest SKU (what TikTok shows) |
originalPrice / discountFormatted | struck-through price and % off, as displayed |
salePriceMinAcrossSkus / salePriceMaxAcrossSkus | the real range across variants |
priceVariesBySku | true when variants are not all the same price |
singleProductPrice | undiscounted single-unit price |
skus[] | per-variant price, stock quantity and stock status |
Proxy requirements (read this before picking a market)
Because the market is chosen by exit IP, your proxy has to have IPs in the market you ask for. Two failure modes are reported explicitly rather than silently:
PROXY_COUNTRY_UNAVAILABLE— the request never reached TikTok; it died in the proxy CONNECT tunnel because your Apify Proxy plan has no IPs in that country. Pick a market your plan covers, or pass your own proxies inproxyConfiguration.proxyUrls.SITEMAP_UNREACHABLE—discovermode only. TikTok's PDP sitemap answers fine to residential exits but 404s from datacenter networks, so discover needs a residential proxy.urlsmode works on any egress.
Output
One row per product, with flattened price columns plus the raw payload. Failures
produce a diagnostic row (_error: REGION_MISMATCH_OR_NOT_FOUND,
UNPARSEABLE_INPUT, CAPTCHA_SHELL, BLOCKED_AFTER_RETRIES, UPSTREAM_<code>)
rather than a silent gap, so a scheduled run never loses an input without
telling you. A RUN_SUMMARY record carries the market, currency stability and
transport stats.