TikTok Scraper - Videos, Profiles & Hashtags $0.25/1k avatar

TikTok Scraper - Videos, Profiles & Hashtags $0.25/1k

Pricing

Pay per event

Go to Apify Store
TikTok Scraper - Videos, Profiles & Hashtags $0.25/1k

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

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

4

Monthly active users

2 days ago

Last modified

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.

FieldNotes
profilesUsernames, with or without @.
hashtagsHashtags, with or without #.
searchQueriesKeywords to search TikTok for.
startUrlsTikTok URLs pasted straight in: a profile URL, a /video/ URL, or a /tag/ URL.
resultsPerPageMax results per profile, hashtag or search. Default 50. See the profile limit above.
maxRunSecondsCost guard. Default 90, max 180. A search that keeps paginating with few results stops here and returns what it has.
sessionCookiesOptional. 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.
proxyConfigurationNot 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, downloadAddr and 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_FOUND row saying the account is private.
  • No comments. This returns videos and profiles. Comment threads are a different job.
  • maxRunSeconds really 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.