TikTok Scraper - Video Search, Hashtags, Profiles & Sounds avatar

TikTok Scraper - Video Search, Hashtags, Profiles & Sounds

Pricing

from $3.00 / 1,000 videos

Go to Apify Store
TikTok Scraper - Video Search, Hashtags, Profiles & Sounds

TikTok Scraper - Video Search, Hashtags, Profiles & Sounds

Scrape TikTok videos by keyword, hashtag, profile or sound, and find creator profiles by keyword. Get views, likes, comments, shares, captions, hashtags, music, country code and author ID, bio and followers. No login or cookies needed. Export to JSON, CSV or Excel.

Pricing

from $3.00 / 1,000 videos

Rating

0.0

(0)

Developer

Silkline

Silkline

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

6

Monthly active users

5 hours ago

Last modified

Security

Limited permissions

Share

TikTok Scraper runs TikTok video search by keyword and extracts other public TikTok data as clean, flat JSON. It also works as a TikTok hashtag scraper: collect the videos of a hashtag, read the latest videos of any public profile, find creator profiles by keyword, or list the videos that use a sound. You can also read one video's details, a profile's details, a video's comments and replies, a profile's followers and following, search suggestions for a keyword, and a video's 14-day analytics with an optional fake-view check. Every video comes with views, likes, comments, shares, saves, caption, hashtags, music, duration, publish time, the country code TikTok attaches to the video, and the author's name, handle, ID, profile picture, bio, follower count and verified flag. It works as a TikTok API alternative for marketers, researchers and developers, and no TikTok account, API keys, proxies or cookies are needed.

What data can you get?

The Actor has nineteen modes. The video-list modes (search, hashtag, userPosts, music, userReposts, userPlaylists, photoSearch, explore) share one flat output, so one pipeline handles them. Every other mode returns its own record type, set in the type field.

Modes

ModeGive itYou get
searchkeywords, optional sortType, publishTime, regionthe videos TikTok finds for each keyword, up to 1,000 per keyword
hashtaghashtagsthe videos listed under each hashtag, up to 1,000 per hashtag
userPostsprofilesthe latest videos of each public profile, pinned videos first (marked isPinned), then newest first, up to 1,000 per profile
userSearchkeywordsthe profiles TikTok finds for each keyword: handle, name, ID, follower, following, video and total like counts, verified flag, profile picture, up to 1,000 per keyword
musicsound IDs or tiktok.com/music/... linksthe videos that use each sound, up to 1,000 per sound
videoDetailvideos (IDs, full video links or short share links)one record per video with the video fields plus isAiGenerated and repostCount
profileprofiles; optional includeMilestones, includeCountryone record per profile: counts, bio, link in bio, country and creation time when TikTok shows them
commentsvideos, optional includeRepliesthe comments of each video, up to 1,000 per video, with the commenter's public profile fields; with includeReplies, the replies of comments that have 3 or more, right after their comment
userSoundsprofilesthe sounds each profile has made or published: ID, title, artist, length, videos made with it, original flag, link (same fields as soundSearch, with sourceProfile); an account with no sounds returns nothing and costs you nothing; at least 2 sounds per profile are returned when it has them, whatever maxResults says
aiArticlevideosthe AI-written long text TikTok shows for a video: title, summary, article, keywords and question-and-answer texts; a video without one returns nothing and costs you nothing
followersprofiles; optional searchKeywordthe followers of each profile, with their public profile fields, up to 1,000 per profile; with searchKeyword, the followers whose name matches it (up to 50 per profile)
followingprofiles; optional searchKeywordthe accounts each profile follows (empty when the account hides the list); with searchKeyword, the followed accounts whose name matches it (up to 50 per profile)
keywordSuggestkeywordsthe search phrases TikTok suggests for each keyword, ranked
userRepostsprofilesthe videos each public profile reposted, up to 1,000 per profile (sourceProfile set)
userPlaylistsprofilesthe videos in the first 30 public playlists of each profile, one limit per profile, with playlistId and playlistTitle
similarUsersprofilesprofiles TikTok recommends as similar to each profile (type user, sourceProfile set)
soundSearchkeywords, optional includeSoundDetailthe sounds TikTok finds for each keyword: ID, title, artist, length, videos made with it, original flag, link. Use the IDs in the music mode. With includeSoundDetail, a second record per sound with album, release date and theme tags
photoSearchkeywordsthe photo posts (slideshows) TikTok finds for each keyword, as video records with imageUrls
placeSearchkeywordsthe places TikTok finds for each keyword: name, address, country, coordinates, number of videos
exploreexploreCategoriesvideos from TikTok's explore feed per category (food, tech, comedy ...), exploreCategory set; the feed is random, so each request brings a different selection
videoAnalyticsvideos, optional includeFakeViewScoreper video: views, likes, comments and saves for the last 14 days, totals, a one-line reading and frequent comment phrases; with includeFakeViewScore, a second record with a fake-view score

TikTok video search results and videos (modes search, hashtag, userPosts, music)

FieldWhat it is
playCountViews
likeCountLikes
commentCountComments
shareCountShares
collectCountTimes saved to favorites
downloadCountDownloads, when shown
descriptionCaption of the video
hashtagsHashtags of the video, without #
createdAtPublish time, ISO 8601 UTC
urlLink to the video
videoIdTikTok video ID
authorHandlePublic @handle of the author, without @
authorNameDisplay name of the author
authorIdNumeric TikTok ID of the author
authorSecUidSecure user ID (secUid) of the author, used in TikTok profile links
authorFollowerCountFollowers of the author
authorFollowingCountAccounts the author follows
authorVerifiedTrue for a verified account
authorBioAuthor's profile bio as published; null when empty
authorAvatarUrlLink to the author's profile picture (temporary link; download soon after the run)
authorRegionCountry code TikTok attaches to the video, e.g. US
musicTitleTitle of the sound
musicAuthorAuthor of the sound
musicIdID of the sound
musicOriginalTrue when the sound is the author's original sound
durationSecondsLength of the video in seconds
width, heightVideo width and height in pixels
textLanguageLanguage code of the caption as detected by TikTok (en, es; un when unknown)
mentionsNames mentioned with @ in the caption (display text, no user IDs)
isPinnedTrue when the video is pinned to the top of the author's profile
isSlideshowTrue for a photo slideshow post
isPaidContentTrue for paid (subscriber-only) content
isAdTrue when the video is an ad, when shown
coverUrlCover image link (temporary; download soon after the run)
videoUrlVideo file link (temporary; may be empty)
typeRecord type: video
keywordThe keyword that found the video (search mode)
hashtagThe hashtag the video was read from (hashtag mode)
sourceProfileThe profile the video was read from (userPosts mode)
sourceMusicIdThe sound the video was read from (music mode)

mentions lists the names written after @ in the caption as TikTok displays them, which can be a display name rather than the @handle. isSlideshow is true for photo posts. Most fields TikTok does not send are null; lists such as hashtags and mentions are empty [], and isSlideshow and authorVerified are always true or false.

Search items carry keyword, hashtag items hashtag, profile items sourceProfile and sound items sourceMusicId. A video found by several keywords or hashtags in one run is delivered once.

TikTok creator profile search (mode userSearch)

FieldWhat it is
handlePublic @handle, without @
nameDisplay name
userIdNumeric TikTok ID of the profile
urlLink to the profile
followerCountFollowers
followingCountAccounts the profile follows
videoCountVideos posted
totalLikeCountLikes all the profile's videos received
verifiedTrue for a verified account
isPrivateTrue for a private account
secUidSecure user ID (secUid) of the profile
avatarUrlProfile picture link (temporary)
bioProfile bio as published; often empty in profile search results
keywordThe keyword that found the profile
typeRecord type: user

AI article fields (mode aiArticle)

type is aiArticle: videoId, articleTitle, articleSummary, article (markdown), articleKeywords and articleFaq (question-and-answer texts, when the video has them).

Sound fields (modes soundSearch, userSounds)

type is sound: musicId, title, author, durationSeconds, videoCount (videos made with the sound), isOriginal, coverUrl (temporary), playUrl (audio link when public, temporary), url and keyword (soundSearch) or sourceProfile (userSounds). The existing music mode takes sound IDs, and soundSearch is how you find them.

With includeSoundDetail each sound is followed by a record of type soundDetail: musicId, title, author, album, createdAt (when the sound was added), durationSeconds, videoCount, isOriginal, isCommercial, themeTags and url. It is delivered only when the details were found; a sound without details gets no second record and no extra charge. A sound that appears under two keywords gets its detail record once.

Place fields (mode placeSearch)

type is place: placeId, name, placeType, address, parentPlace (the city or region TikTok files it under), country (two-letter code), latitude, longitude, videoCount and keyword. The search matches loosely, so a keyword always returns places, not always exact ones.

Reposts, playlists, photos and explore (modes userReposts, userPlaylists, photoSearch, explore)

Video records with the video fields above, plus sourceProfile (reposts, playlists), playlistId and playlistTitle (playlists), keyword and imageUrls (photo posts: the slide image links, temporary; isSlideshow is true) or exploreCategory (explore). A video found twice in one run is delivered once.

Similar profiles (mode similarUsers)

type is user, with the profile fields of userSearch (handle, name, userId, secUid, followerCount, followingCount, videoCount, verified, bio, region, avatarUrl) and sourceProfile. The same profile recommended for two inputs appears once for each.

Profile details (mode profile)

type is profile: userId, secUid, handle, name, bio (as published), bioLink, avatarUrl (temporary), verified, isPrivate, followerCount, followingCount, likeCount (total likes received), videoCount, region, createdAt and url. region, bioLink and createdAt are null when TikTok does not show them.

With includeMilestones each profile of 1,000 followers or more is followed by a record of type creatorMilestones: userId, handle, followerCount, likeCount and milestones (each: milestone, title such as "Reached 1M followers", year, date, summary, and topVideos with videoId, description, createdAt, views, likes, comments, shares, saves). With includeCountry each profile is followed by a record of type profileCountry: userId, handle and country (the two-letter country the account is registered in). Each is one extra detail record, charged $0.002 only when it is returned; an account with no data returns nothing and costs you nothing. Profiles are then read one at a time.

Video details (mode videoDetail)

type is videoDetail. It has all the video fields above and two more: isAiGenerated (true when labelled AI-generated) and repostCount. If the main data path is down the fields come from a second one: then authorRegion, downloadCount and isAiGenerated can be null.

Comment fields (mode comments)

FieldWhat it is
commentIdComment ID
parentCommentIdID of the comment this replies to; null for a top-level comment
videoIdThe video
textText of the comment
likeCount, replyCountLikes and number of replies
createdAtTime, ISO 8601 UTC
textLanguageLanguage code TikTok detected
isPinned, isLikedByCreatorPinned by the creator, liked by the creator
authorId, authorHandle, authorName, authorSecUidPublic identity of the commenter
authorAvatarUrlProfile picture link (temporary)
authorBio, authorRegion, authorVerifiedBio as published, country code and verified flag, as TikTok shows them
typecomment

Follower and following fields (modes followers, following)

type is follower or following. Fields: sourceProfile (the profile you gave), userId, secUid, handle, name, avatarUrl (temporary), verified, bio, followerCount, followingCount, videoCount, region. The same account in the lists of two profiles appears once for each.

Suggestion fields (mode keywordSuggest)

type is suggestion: keyword (yours), suggestion (the phrase) and rank (1 is first).

Analytics fields (mode videoAnalytics)

type is videoAnalytics: videoId, totals playCount, likeCount, commentCount, collectCount, daily (the last 14 days, oldest first: date, views, likes, comments, collects gained that day), summary (TikTok's one-line reading) and commentKeywords (frequent phrases in the comments with example comments; null if unavailable). With includeFakeViewScore a second record of type fakeViewScore follows: videoId, fakeScore (0 to 100), confidence, isSuspicious, estimatedFakeViews, fakeViewPercentage, mainReason, componentScores, suspiciousFeatures, estimatedOrganicViews, trafficPool, expectedTrafficPool, creatorTrustScore. A video with no analytics (unknown or too new) returns nothing and gets no fake-view check; after the first video that gets no score, no further scores are requested in the run.

How to use TikTok Scraper

  1. Open TikTok Scraper in Apify Console.
  2. Choose a Mode, for example search videos by keyword, comments of a video, followers of a profile or video analytics.
  3. Fill in the list that belongs to that mode: keywords, hashtags, profiles, userKeywords, musics or videos. For video search you can also set sortType, publishTime and region.
  4. Set maxResults, the limit for each keyword, hashtag, profile or sound.
  5. Start the run and wait for it to finish.
  6. Open the dataset and export the results as JSON, CSV or Excel, or read them through the API.

Input

FieldTypeRequiredWhat it doesDefault
modestringrequiredsearch, hashtag, userPosts, userSearch, music, videoDetail, profile, comments, followers, following, keywordSuggest, videoAnalytics, userReposts, userPlaylists, similarUsers, soundSearch, photoSearch, placeSearch, explore, userSounds or aiArticlesearch
keywordsarray of stringsoptionalSearch keywords for search, keywordSuggest, soundSearch, photoSearch and placeSearch; each keyword is a separate search. Falls back to "skincare" when empty.prefilled with skincare
hashtagsarray of stringsoptionalHashtags for hashtag, as skincare, #skincare or a link (https://www.tiktok.com/tag/skincare). Falls back to "skincare" when empty.prefilled with skincare
searchKeywordstringoptionalModes followers and following: search the list for a name instead of listing it. Up to 50 matches per profile (at least 4 per profile are returned when there are that many, whatever maxResults says), charged as lite. A profile with no match costs you nothing, and the search stops after 3 profiles in a row with no matchnone
profilesarray of stringsoptionalPublic profiles for userPosts, profile, followers, following, userReposts, userPlaylists, similarUsers and userSounds, as khaby.lame, @khaby.lame, or a link to the profile or to one of its videos. Falls back to "khaby.lame" when empty.prefilled with khaby.lame
userKeywordsarray of stringsoptionalSearch keywords for userSearch; each keyword is a separate profile search. Falls back to "skincare" when empty.prefilled with skincare
musicsarray of stringsoptionalSound IDs (7016547803243022337) or links such as https://www.tiktok.com/music/Face-Off-7016547803243022337. Falls back to a sample sound when empty.prefilled with 7016547803243022337
exploreCategoriesarray of stringsoptionalCategories for explore: all, animation-comics, performance, beauty-care, gaming, comedy, daily-life, family, relationships, drama, fashion, lip-sync, food, sports, animals, society, cars, education, fitness-health, tech, singing-dancing. Each is a separate input.prefilled with food
videosarray of stringsoptionalVideo IDs or full video links for videoDetail, comments and videoAnalytics; videoDetail also takes short vm.tiktok.com, vt.tiktok.com and tiktok.com/t/ links. Falls back to a sample video when empty.prefilled with a sample video
includeRepliesbooleanoptionalcomments only: also collect replies of comments with 3 or more repliesfalse
includeMilestonesbooleanoptionalprofile only: add a creator milestones record per profile of 1,000 followers or more ($0.002 each, only when found)false
includeCountrybooleanoptionalprofile only: add an account country record per profile ($0.002 each, only when found)false
includeFakeViewScorebooleanoptionalvideoAnalytics only: add a fake-view check per video ($0.03 each)false
includeSoundDetailbooleanoptionalsoundSearch only: add a detail record per sound ($0.002 each, only when found)false
sortTypestringoptionalOrder of the search results: relevance, most-liked or latest, which favours recent videos but is not strictly by date. If a keyword runs out before maxResults, the rest comes from TikTok's general video results, most liked first. With publishTime set there is no such top-up, so a run can return fewer videos; with a region other than US, results come from the general video results, most liked first (search only)relevance
publishTimestringoptionalOnly videos published in this period: all, day, week, month, 3months or 6months (search only)all
regionstringoptionalTwo-letter country code sent with the search, such as US, GB or DE (search only). TikTok treats it as a hint, and it is not applied together with publishTime.US
maxResultsintegeroptionalMaximum items for each keyword, hashtag, profile, sound, video or category, from 1 to 1,000 (replies count toward their video's limit)20

The Actor accepts any common way of writing an input: khaby.lame, @khaby.lame, a profile link or a link to one of the creator's videos; skincare, #skincare or a tiktok.com/tag/skincare link. An empty input {} searches "skincare" and returns 20 videos, so you can test it in seconds.

At most 50 keywords, hashtags, profiles or sounds are used per run; any extra ones are ignored without a warning. Split longer lists into several runs.

TikTok video search by keyword

{
"mode": "search",
"keywords": ["skincare", "glass skin"],
"sortType": "most-liked",
"publishTime": "month",
"maxResults": 100
}

TikTok hashtag videos

{
"mode": "hashtag",
"hashtags": ["skincare", "https://www.tiktok.com/tag/glowup"],
"maxResults": 100
}

TikTok videos of a profile

{
"mode": "userPosts",
"profiles": ["khaby.lame", "https://www.tiktok.com/@charlidamelio"],
"maxResults": 50
}

Search TikTok profiles by keyword

{
"mode": "userSearch",
"userKeywords": ["skincare"],
"maxResults": 50
}

TikTok videos using a sound

{
"mode": "music",
"musics": ["https://www.tiktok.com/music/Face-Off-7016547803243022337"],
"maxResults": 50
}

Comments of a video

{
"mode": "comments",
"videos": ["https://www.tiktok.com/@khaby.lame/video/7694335322922044703"],
"includeReplies": true,
"maxResults": 200
}

Followers, profile details, suggestions, analytics

{ "mode": "followers", "profiles": ["khaby.lame"], "maxResults": 500 }
{ "mode": "profile", "profiles": ["khaby.lame", "charlidamelio"] }
{ "mode": "keywordSuggest", "keywords": ["skincare"] }
{ "mode": "userReposts", "profiles": ["khaby.lame"], "maxResults": 100 }
{ "mode": "userPlaylists", "profiles": ["mrbeast"], "maxResults": 100 }
{ "mode": "similarUsers", "profiles": ["khaby.lame"], "maxResults": 60 }
{ "mode": "soundSearch", "keywords": ["love"], "maxResults": 40 }
{ "mode": "soundSearch", "keywords": ["love"], "maxResults": 20, "includeSoundDetail": true }
{ "mode": "photoSearch", "keywords": ["cats"], "maxResults": 40 }
{ "mode": "placeSearch", "keywords": ["paris"], "maxResults": 40 }
{ "mode": "explore", "exploreCategories": ["food", "tech"], "maxResults": 100 }
{ "mode": "videoAnalytics", "videos": ["7694335322922044703"], "includeFakeViewScore": true }

Output example

TikTok video item (mode userPosts)

Values are illustrative.

{
"type": "video",
"videoId": "7400000000000000001",
"url": "https://www.tiktok.com/@sample.creator/video/7400000000000000001",
"description": "My morning routine in 60 seconds #skincare #glassskin",
"hashtags": ["skincare", "glassskin"],
"createdAt": "2026-10-08T16:31:16Z",
"durationSeconds": 58.4,
"playCount": 182400,
"likeCount": 15230,
"commentCount": 412,
"shareCount": 960,
"collectCount": 2105,
"downloadCount": 88,
"authorHandle": "sample.creator",
"authorName": "Sample Creator",
"authorFollowerCount": 245000,
"authorVerified": false,
"authorId": "6800000000000000000",
"authorSecUid": "MS4wLjABAAAA...",
"authorAvatarUrl": "https://p16-sign.tiktokcdn-us.com/.../avatar.jpeg",
"authorBio": "Skincare tips every week",
"authorRegion": "US",
"musicTitle": "original sound - sample.creator",
"musicAuthor": "Sample Creator",
"coverUrl": "https://...",
"videoUrl": "https://...",
"textLanguage": "en",
"isPinned": false,
"isSlideshow": false,
"mentions": [],
"width": 576,
"height": 1024,
"musicId": "7400000000000000999",
"musicOriginal": true,
"authorFollowingCount": 180,
"isPaidContent": false,
"isAd": false,
"sourceProfile": "sample.creator"
}

In the other video modes the last field is keyword (search), hashtag (hashtag) or sourceMusicId (music) instead of sourceProfile.

TikTok profile item (mode userSearch)

{
"type": "user",
"userId": "6800000000000000000",
"handle": "sample.creator",
"url": "https://www.tiktok.com/@sample.creator",
"name": "Sample Creator",
"secUid": "MS4wLjABAAAA...",
"avatarUrl": "https://p16-sign.tiktokcdn-us.com/.../avatar.jpeg",
"bio": null,
"followerCount": 245000,
"followingCount": 180,
"videoCount": 312,
"totalLikeCount": 4870000,
"verified": false,
"isPrivate": false,
"keyword": "skincare"
}

How much does it cost?

The Actor uses pay-per-event pricing. You pay for these events:

EventPriceWhen it is charged
Start fee (run-start)$0.00005For each keyword, hashtag, profile, sound or category you give it, and for each video (comments), profile (followers, following) or keyword (keywordSuggest) in those modes. In videoDetail, profile and videoAnalytics it is charged once per run, not per input. The first one is charged when the first request succeeds, even if that request returns nothing. Each further one is charged before that input's first request and is kept even if that input then fails or returns nothing.
Result (result)$0.003For each video or profile-search record returned (search, hashtag, userPosts, userSearch, music, userReposts, userPlaylists, similarUsers, soundSearch, photoSearch, userSounds) and each videoAnalytics record.
Detail (detail)$0.002For each videoDetail record, profile record and keywordSuggest suggestion, and for each aiArticle, creatorMilestones and profileCountry record, each sound detail record (includeSoundDetail, only when the details are delivered).
Lite (lite)$0.001For each comment or reply (comments), follower (followers) and followed account (following; also each match of a searchKeyword search), place (placeSearch) and explore video (explore).
Audit (audit)$0.03For each fake-view score (includeFakeViewScore); only charged when a score is delivered.

The start fee is not charged when the run fails from the start or rejects the inputs, or when your spending limit cannot cover it.

Worked examples:

  • 100 videos for one keyword cost $0.00005 + 100 x $0.003 = $0.30005.
  • 3 hashtags with 100 videos each cost 3 x $0.00005 + 300 x $0.003 = $0.90015.
  • 20 videos from one profile cost $0.00005 + 20 x $0.003 = $0.06005.
  • 500 comments of one video cost $0.00005 + 500 x $0.001 = $0.50005.
  • 60 reposts of one profile cost $0.00005 + 60 x $0.003 = $0.18005.
  • 100 explore videos of one category cost $0.00005 + 100 x $0.001 = $0.10005.
  • Details of 10 videos cost $0.00005 + 10 x $0.002 = $0.02005 (one start fee for the whole run).
  • Analytics with a fake-view check for one video cost $0.00005 + $0.003 + $0.03 = $0.03305.

On the free Apify plan you get 2 free trial runs of this Actor with your own input, up to 10 results each, and nothing is charged; after that, runs return a stored sample dataset (a real result of the prefilled input). Use any paid Apify plan for full runs.

The search filters (sort by relevance, most liked or latest, and limit to the last day, week, month, 3 or 6 months) cost nothing extra per video. You never pay for more than maxResults items per keyword, hashtag, profile or sound, and the run stops by itself if your spending limit is reached. The price of each event is also shown on the Actor page.

A keyword with no matches, a hashtag or sound that does not exist, or a profile with no public videos returns nothing but still costs its start fee, because the request was made. You are never charged for items the Actor did not deliver. If a run fails from the start, nothing is charged; a start fee already paid is not refunded.

Use cases

  • Trend and hashtag research: see which videos and sounds carry a hashtag right now, and how far they reach in views, likes and shares.
  • Influencer and competitor tracking: pull a creator's recent posts with views, likes and comments to calculate engagement rates and posting frequency.
  • Influencer discovery: search profiles by keyword and compare followerCount, videoCount, totalLikeCount and verified before outreach.
  • Sound and music research: list the videos that use a sound and see who uses it and how those videos perform.
  • Product and brand monitoring: find videos that mention a product, a brand or a campaign keyword, filtered by date and sorted by likes.
  • AI and data projects: use TikTok captions, caption language and metrics as clean rows for classification, trend models and dashboards.

Integrations and API

You can start runs through the Apify API, schedule them in Apify Console (for example a daily hashtag check), and connect the results to Apify integrations and your own tools. Results are stored in an Apify dataset that you can download as JSON, CSV or Excel or read page by page.

Example with the Python apify-client package:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("clover_folktale/tiktok-scraper").call(run_input={
"mode": "search",
"keywords": ["skincare", "glass skin"],
"sortType": "most-liked",
"publishTime": "month",
"maxResults": 100
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

Tips and limits

  • Profiles come 10 videos per page. A profile with maxResults 100 takes ten requests; this is how the platform delivers them. Videos come newest first, after any pinned videos.
  • Search can return fewer videos than you ask for. Search pages overlap, and each video is delivered once, so a keyword can run out of new videos before maxResults. Very large limits on a narrow keyword often end early.
  • Keyword search runs several keywords at once. 32 keywords with up to 500 videos each finish in about 2 minutes. Videos of different keywords are interleaved in the dataset; each video carries its keyword, and within one keyword videos keep TikTok's order.
  • region is a hint. Search results can still include videos from other countries; check authorRegion on each video.
  • At most 50 inputs per run. Only the first 50 keywords, hashtags, profiles or sounds are used; extra ones are ignored without a warning.
  • Empty inputs still pay their start fee. Check the spelling of hashtags and handles.
  • Hashtag names must match exactly (any case). If TikTok has no hashtag with exactly that name, the hashtag returns nothing; it still uses its start fee because the lookup was made.
  • Short share links (vm.tiktok.com, vt.tiktok.com, tiktok.com/t/) work in videoDetail mode. In every other mode use the full profile, video or tag link. Each short link costs what a video ID costs; one that no longer opens a video, points to a profile, or does not answer in time returns nothing for that link and the run goes on. If a short link brings nothing, open it in a browser and paste the full video link instead.
  • Numbers are a snapshot. Views, likes and follower counts are what TikTok shows at the time of the run.
  • Links are temporary. Cover, video file and profile picture links expire; download what you need soon after the run.
  • Profile search order moves. TikTok ranks profile results itself and the order can differ between runs; pages overlap and each profile is delivered once, so a keyword can run out before maxResults.
  • Sounds come about 12 videos per page.
  • Comments come about 50 per page, followers about 50 per page. Accounts that hide their following list return nothing; the start fee still applies.
  • Replies are only collected for comments with 3 or more replies, and count toward the limit of their video.
  • Video details, profile details and analytics: an unknown ID returns nothing and costs no per-item fee, and the next ID still runs.
  • Suggestions are sometimes empty for a keyword; the Actor asks once more.
  • Often-empty fields: in search, authorBio is empty because search results don't carry it; user-post results include it. In userSearch, bio is usually empty and there is no country code; use userPosts on a handle for the bio. videoUrl may be empty, and downloadCount and isAd are filled only when TikTok shows them.
  • If a run stops mid-way. If a run stops after results were delivered, it keeps them; you are never charged for items it did not deliver.
  • Unreadable entries. If one entry of an ID or link list cannot be read (a typo, a stray cell, a link to the wrong kind of page), it is skipped and named in the log, and the status message says how many were skipped; the other entries still run and nothing is charged for a skipped one. Only a list with no readable entry stops the run with an input error.
  • Free plan. On the free Apify plan you get 2 free trial runs of this Actor with your own input, up to 10 results each, and nothing is charged; after that, runs return a stored sample dataset (a real result of the prefilled input). Use any paid Apify plan for full runs.

FAQ

Do I need a TikTok account or login?

No. No TikTok account, API keys, proxies or cookies are needed.

The Actor returns only public content: the video, its numbers and the author's public profile (@handle, display name, ID, profile picture, bio, country code of the video, follower count). It does not return private messages. Commenters, followers and followed accounts come with the public profile fields TikTok shows next to them. The bio is returned as published, including any business contact info the creator put there. You are responsible for how you use the data and for following the laws that apply to you.

How fresh is the data?

The data is read live during the run. Views, likes and follower counts are what TikTok shows at that moment.

Why are some fields empty?

Most fields TikTok does not send are null; lists such as hashtags and mentions are empty []. Search results don't carry the author's bio, and profile search results usually have no bio and no country code. Run userPosts on a handle to get the bio.

How many results can I get?

Up to 1,000 items per keyword, hashtag, profile or sound, set with maxResults, for up to 50 inputs per run. Search and profile search can end earlier when TikTok runs out of new results.

Does it scrape TikTok comments?

Yes, with mode comments: comments, and optionally the replies of comments that have 3 or more, with the commenter's public profile fields.

Can I schedule runs and export the data?

Yes. You can schedule runs in Apify Console or start them through the Apify API, and export each dataset as JSON, CSV or Excel.

What if a hashtag, profile or sound does not exist?

It returns no items and still costs its $0.00005 start fee, because the request was made. If a run fails from the start, nothing is charged; a start fee already paid is not refunded. Missing a field or a mode? Open an issue from the Actor page and it will be looked at.

Other tools by Silkline

Every tool below charges per result and needs no login or cookies.

Global platforms

More from Silkline