TikTok Scraper - Videos, Profiles & Hashtags $0.25/1k
Pricing
Pay per event
TikTok Scraper - Videos, Profiles & Hashtags $0.25/1k
A TikTok profile page ships with about ten videos attached, so a profile returns its own row plus those. Hashtag, keyword and video-URL modes go deeper: play, like, comment, share and save counts, the sound, author and hashtags. $0.25 per 1,000 plus a $0.001 start fee.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
4
Monthly active users
2 days ago
Last modified
Categories
Share
TikTok Scraper
Scrape TikTok by profile, hashtag, keyword search or video URL. No login needed from you, no API key, no browser.
Every video row carries playCount, diggCount, commentCount, shareCount, collectCount, the caption text, the hashtags pulled out of it, the sound it uses, the author, and the video and cover URLs. Every profile row carries followerCount, followingCount, heartCount, videoCount, the bio and the verified flag.
The profile limit, up front
A profile returns about a dozen rows: the profile itself plus its 10 or 11 newest videos. That's what TikTok publishes for a creator to a signed-out visitor, and no resultsPerPage value gets past it. A run on 21 August 2026 asking for 50 videos from @nasa came back with 12 rows. Ask for 500 and you'll still get that dozen, and pay for a dozen.
Hashtags and keyword searches page much deeper, so those are the modes to use when you want volume.
Input
Give it any combination of these. They all run in the same job.
| Field | Notes |
|---|---|
profiles | Usernames, with or without @. |
hashtags | Hashtags, with or without #. |
searchQueries | Keywords to search TikTok for. |
startUrls | TikTok URLs pasted straight in: a profile URL, a /video/ URL, or a /tag/ URL. |
resultsPerPage | Max results per profile, hashtag or search. Default 50. See the profile limit above. |
maxRunSeconds | Cost guard. Default 90, max 180. A search that keeps paginating with few results stops here and returns what it has. |
sessionCookies | Optional. Your own TikTok cookie, used only for TikTok's own pages. It's not needed for normal scraping — it only helps on age-restricted or otherwise gated videos. |
proxyConfiguration | Not needed. Metered proxy groups aren't available and get replaced with rotating datacenter addresses. |
{ "profiles": ["nasa"], "hashtags": ["spacex"], "resultsPerPage": 50, "maxRunSeconds": 90 }
Run it with empty input and you get one labelled, uncharged sample row so you can see the shape before spending anything.
Output
A profile row:
{"ok": true,"type": "profile","id": "7664638705177150477","uniqueId": "nasa","secUid": "MS4wLjABAAAAU9BRVzC8oCaeg…","nickname": "NASA","signature": "Making the seemingly impossible, possible.✨","verified": true,"avatar": "https://…","followerCount": 1130466,"followingCount": 23,"heartCount": 5257362,"videoCount": 31,"diggCount": 0,"url": "https://www.tiktok.com/@nasa"}
A video row:
{"ok": true,"type": "video","id": "7665075736742530317","webVideoUrl": "https://www.tiktok.com/@nasa/video/7665075736742530317","text": "Something big just landed on TikTok.","createTime": "2026-07-21T20:09:02.000Z","hashtags": [],"region": "US","playCount": 921800,"diggCount": 70300,"commentCount": 2011,"shareCount": 2708,"collectCount": 5383,"isAd": false,"video": { "duration": 25, "cover": "https://…", "dynamicCover": "https://…", "playAddr": "https://…", "downloadAddr": "https://…" },"music": { "id": "7665075815390645006", "title": "original sound", "authorName": "NASA", "playUrl": "https://…", "original": false, "duration": 25 },"author": { "id": "…", "uniqueId": "nasa", "nickname": "NASA", "avatar": "https://…" }}
Check type to tell the two apart. hashtags is parsed out of the caption text, so it's empty when the creator didn't use any.
Other limits
- Video and cover URLs expire.
playAddr,downloadAddrand the cover URLs are signed by TikTok with an expiry a few hours out. Download what you need during or shortly after the run — don't store them and expect them to work next week. - Private accounts return nothing. You get an uncharged
NOT_FOUNDrow saying the account is private. - No comments. This returns videos and profiles. Comment threads are a different job.
maxRunSecondsreally does stop the run. On a slow hashtag or search feed you'll get a partial result rather than an open-ended bill. Raise it to 180 if you'd rather have the rows.- Results are deduplicated within a run, so the same video appearing under two hashtags is charged once.
Billing
$0.25 per 1,000 results ($0.00025 each), plus a $0.001 run-start fee (charged per gigabyte of run memory, so exactly $0.001 on the default 1 GB).
Same price on the free plan as on a paid one, with nothing tiered by volume. One charge per profile or video row written to the dataset. Failed runs, empty runs, the sample row and diagnostic rows aren't charged.
1,000 results costs $0.251. 10,000 costs $2.501.