TikTok Shop Scraper — Exact Sold Counts, No Login
Pricing
Pay per event
TikTok Shop Scraper — Exact Sold Counts, No Login
Scrape TikTok Shop by keyword and get exact units sold per product — 164, not the rounded badge — plus title, price, seller, image and link. One row per product. No login, no cookies, no proxy needed.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Data Runner
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
TikTok Shop Scraper — Exact Sold Counts, No Login 🛍️
Scrape TikTok Shop by keyword and get the number nobody else gives you: the
exact units sold per product. 164, not the rounded "164 sold" badge the page
displays. Plus title, price, seller, image and link — one row per product.
No login. No cookies. No captcha solving. Runs from a plain datacenter IP.
Why this matters for product research: on TikTok Shop the winners are memes. A single read of
funny shirtreturns John Pork Tung Tung Tung Sahur 67 Shirt at 1,206 units and Lollipop Cat Brainrot Tee — trends that are selling right now, priced under $6, from sellers you have never heard of.
What you get — one row per product
{"term": "funny shirt", // exactly as you typed it"geo": "US","position": 1, // the storefront's order on page one"productId": "1732481525745357276","title": "Funny graphic tees \"There is Motion at Your Front Door\" Tung Tung Sahur","sold": 164, // EXACT, not the rounded badge the page shows"price": 4.8,"currency": "USD","shop": "A2HMK","image": "https://p16-oec-general-useast5.ttcdn-us.com/…","url": "https://shop.tiktok.com/us/pdp/…/1732481525745357276","competingTotal": null, // TikTok does not publish it — see FAQ"cardsOnPageOne": 30, // what THIS read returned. Not the field size."scrapedAt": "2026-09-05T19:00:00.000Z","sourceUrl": "https://shop.tiktok.com/us/s?q=funny%20shirt"}
Who uses this
- Print-on-demand and merch sellers — find which meme is selling on shirts today, at what price, before it is everywhere.
- Dropshippers and product researchers — see the real winners in a category, their exact unit counts, and who is selling them.
- DTC and brand teams — track your category on the fastest-growing marketplace, week over week.
- Trend tools and data teams — TikTok is where a trend starts and TikTok Shop is where it sells. This is the one surface where both live in the same place.
Input
{"searchTerms": ["funny shirt", "dolly parton"],"geos": ["US"],"maxProductsPerTerm": 20}
| Field | Default | Notes |
|---|---|---|
searchTerms | — | Required. Sent verbatim. Up to 100 per run. |
geos | ["US"] | US, GB, ID, MY, PH, SG, VN, TH and more. One row set per term × region. |
maxProductsPerTerm | 20 | Page one is about 30 cards. Max 60. |
sessionCookie | — | Optional. Only for signed-in pricing. |
proxyConfiguration | off | Measured unnecessary — see FAQ. |
Pricing
$0.001 per product row — $1.00 per 1,000 rows.
A term that came back blocked, captcha'd or empty produces no rows and costs nothing. You pay for products, not for attempts.
⚠️ Per row and not per keyword, deliberately. The same search URL returns 5, 10 or 30 cards and the server decides — measured, fixed at page load. A per-keyword price would charge the same for five cards as for thirty, on a coin flip the buyer cannot see. The Actor's own cost is per keyword either way; that variance is ours to absorb, not yours.
What it does NOT do, on purpose
These are the decisions that make the numbers trustworthy. Each one costs a feature and buys a fact.
- It never invents a zero. A product with no sold badge comes back
sold: null, notsold: 0. A zero would rank a product TikTok simply did not count below one that genuinely sells nothing — the opposite conclusion. - It never writes the page size into
competingTotal. Thirty cards is thirty cards, whether thirty sellers compete or thirty thousand. Turning "we could not see it" into "the field is empty" is exactly the reading that gets the wrong product made. - It never returns a short list when it was blocked. If TikTok's Security Check took every term, the run ends red with nothing pushed. A half-read field is indistinguishable from a thin market, and that mistake is expensive in one direction only.
- It never normalizes your term.
Dolly Partongoes out asDolly Parton. Lower-casing on the way in has twice cost a downstream tool hundreds of already-measured terms that then read as "not measured". - It never truncates a title. The end of a listing title is where the detail that distinguishes one product from another lives — and for a print-on-demand brief, it is the evidence.
- It never mixes regions. Counts are reported per region and never summed, because marketplace counts overlap: a sum is a number that exists nowhere.
- It never solves a captcha. It does not need to — see below.
FAQ
Do I need a TikTok account, login or cookies?
No. The Security Check guards the storefront root; this Actor loads the search page, which is not walled the same way. Measured 5 Sep 2026, signed out, from a fresh browser:
| page | signed out |
|---|---|
shop.tiktok.com/us — the root | 🔴 Security Check, 10 KB |
shop.tiktok.com/us/s?q=funny shirt — what this Actor loads | ✅ 1.1 MB, 30 real products |
You can still pass a sessionCookie if you want the storefront to treat you as
a signed-in shopper (regional pricing, personalisation). It is optional.
Do I need a proxy?
No, and turning one on by default was costing money for nothing. Measured on the Apify platform:
| run | result |
|---|---|
| 6 terms, datacenter IP, no proxy, no cookie | 6 of 6 succeeded · 0 captchas · 50 s · 0.028 CU |
| 1 term, same | 13 s · 0.0074 CU |
RESIDENTIAL proxy is billed per GB. It is now off by default. Turn it on for high volume from one address, or if reads start coming back blocked — the run summary names every failed term and why, so you will see it happen.
Why is competingTotal always null? Can I get the number of competitors?
TikTok Shop does not publish it, and there is no page two to count. This was looked for properly:
| tried | result |
|---|---|
&offset=30, &page=2, &cursor=30 | ignored — identical first product |
| scrolling the results grid | no request fires; the DOM stays put |
the View more control | not reachable from the results grid |
The results component says has_more: true and load_more_params.offset: 30
and nothing more. Thirty is page one, not the field.
⚠️ The URL parameters appeared to work — &page=2 returned "12 new products".
A control run of the unchanged URL three times returned 10, 10 and 30, which
is where those "new" products came from. The server decides how many cards to
serve, fixed at load.
So this Actor answers "what is winning", not "how crowded is it". If you need a competitor count, it has to come from a marketplace that publishes one.
Is sold the product's total sales?
No — it is a floor, and it is exact. TikTok publishes an integer
(sold_count: 164) while the page renders a rounded badge. This Actor reports
the integer. It is what the storefront chose to show for that card, from page
one, so treat it as evidence that a listing moves — not as lifetime sales.
Which regions work?
US, GB, ID, MY, PH, SG, VN, TH and other TikTok Shop storefronts.
Counts are per region and never summed. Some regions return fewer results for
the same term; a region with no results produces no rows, and the run summary
names it.
How fast and how much?
13 seconds for one term, 50 seconds for six. About $0.008 in compute for a six-term run, plus $0.001 per row.
What if TikTok changes its page?
The run ends red and the summary names which terms failed and why —
captcha, no-products, navigation-failed. It never finishes green with a
short list, because downstream "3 competitors" and "we were blocked" look
identical and only one of them gets a product made.
Output
Two places:
- Dataset — one row per product, as above.
- Key-value store
OUTPUT— the run summary, including which terms produced nothing and why, named rather than merely counted. A term that could not be read is not a term with no competition, and you need to be able to tell them apart.
Keywords: tiktok shop scraper, tiktok shop api, tiktok shop product scraper, tiktok shop data, scrape tiktok shop, tiktok shop sold count, tiktok shop units sold, tiktok shop search scraper, tiktok shop no login, tiktok shop without cookies, dropshipping product research, print on demand research, pod trend research, tiktok shop trending products, viral products tiktok, tiktok shop seller data, ecommerce trend research, tiktok shop scraper free.