TikTok Profile Scraper
Pricing
from $0.24 / 1,000 results
TikTok Profile Scraper
Scrape recent posts from TikTok profiles by username or profile URL. One row per post with caption, views, likes, comments, shares, sound and author details, in Clockworks TikTok Profile Scraper field names.
Pricing
from $0.24 / 1,000 results
Rating
0.0
(0)
Developer
Tokfluence Tiktok API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Give it TikTok usernames or profile URLs and it returns each profile's recent posts, one row per post with the creator's details embedded. Rows use the same field names as the Clockworks TikTok Profile Scraper (authorMeta, musicMeta, videoMeta, playCount, diggCount, ...), so a pipeline built on that actor can read the fields we fill. The fields we cannot fill are null, and the list is below.
What it returns
One Clockworks video row per post, with the author embedded in each row, as Clockworks Profile Scraper does. There is no separate profile row. Filled when we hold them:
- the post:
id,text,textLanguage,createTime,createTimeISO,webVideoUrl,isAd,hashtags,mentions,detailedMentions,effectStickers,input,fromProfileSection(alwaysvideos) andisStory(alwaysfalse) - the counters:
playCount,diggCount,commentCount,shareCount,collectCount,repostCount videoMeta:height,width,duration,definition,format,coverUrl(our stored copy of the cover when we have one, TikTok's signed cover otherwise),subtitleLinksmusicMeta:musicId,musicName,musicAuthor,musicOriginalauthorMeta:id,name,nickName,profileUrl,avatar,signature,bioLink,fans,following,heart,video,friends,commerceUserInfolocationMetawhen the post has a location tag;hasTikTokShopProductwhen we have checked the post for a Shop product tag
Fields Tokfluence adds that Clockworks does not have sit under a tokfluence object:
tokfluence.engagement_rate: the creator's engagement rate as Tokfluence stores it, worked out from the median likes, comments, shares and views of their recent posts, passed through unchangedtokfluence.has_email: whether Tokfluence holds a contact email for the creator; the address itself is not in the outputtokfluence.last_analyzed_at: when Tokfluence last scraped this profile, so you can judge how fresh the author details aretokfluence.post_scraped_at: when Tokfluence last scraped this post, so you can judge how fresh its counters aretokfluence.posts_per_week,tokfluence.average_views_per_video,tokfluence.is_brandtokfluence.is_branded_contentandtokfluence.ad_disclosure: whether the post reads as paid or branded content, and how it discloses ittokfluence.region: the creator's region as Tokfluence stores it
How many posts per profile
This is where we differ most from Clockworks, which pages back through a whole profile. We do not.
- Stored posts: at most 15 per creator. Tokfluence keeps the 15 newest posts of each creator it tracks. Anything served from storage, in
databasemode or inautomode when our copy is fresh, stops at 15 however high you set Max posts per profile. - Live scrape: one page. A live scrape reads the posts TikTok loads on the profile's first page. TikTok decides how many that is; we do not page further back. The live answer is the newest posts we hold for the creator right after that scrape.
- Creators under 1,000 followers: no posts. Tokfluence does not collect posts for them, live or stored. When such a creator is scraped live, the run's status message says so by name; when served from storage, they are reported as not found, because we hold no posts for them.
- Sorting. Latest is the default. Popular ranks the posts we fetched (the stored 15 or the live first page) by views; it is not the profile's all-time most popular posts as on Clockworks. Oldest is not offered, because we cannot page back to a profile's first posts.
- Date filters (
oldestPostDateUnified,newestPostDate) are applied to the posts we fetched, so they cannot reach further back than the 15 or the first page.
Inputs
profiles(required): usernames,@handlesor profile URLs. A TikTok numeric user id is read as a username, so it will not find the account.resultsPerPage: posts per profile, default 30.profileSorting:latest(default when empty) orpopular, as above.oldestPostDateUnified: a date (2026-09-01), a span (7 days), or a number of days where1is today only.newestPostDate: a date, inclusive of that whole day in UTC.maxResults: a ceiling on rows across all profiles, default 1000.mode, under Advanced: see below.
Not supported: reposts and stories, excluding pinned posts, comments, followers and following, video and cover downloads, and transcription. Use the other Tokfluence actors for comments and transcripts.
Fresh or fast: the Mode setting
Under Advanced, mode trades freshness for speed:
auto(default): serves the posts Tokfluence already stores when they were scraped in the last 7 days, and scrapes TikTok live for the rest. A profile served from storage returns at most 15 posts.database: fastest. Never scrapes, so profiles we do not already hold are missing from the results, at most 15 posts come back per profile, and they are as old as our last visit (checktokfluence.post_scraped_at).live: always scrapes TikTok now and reads the profile's first page. Freshest, and slower.
Live requests run on Tokfluence's shared scraping workers, one profile after another, and wait behind other live requests, so a large live run can take minutes. The actor sends up to 50 profiles per request, one request after another, and writes rows only once every request has answered.
If a live scrape outlasts the run's timeout, the run fails with the request id and delivers no rows, including for profiles that had already finished. The scrape keeps going and is stored when it finishes, so a database run shortly afterwards returns those posts without scraping again, at most 15 per creator.
Fields that can be null
This actor never fills a gap itself: when we do not have a field it is null, not 0, false or an empty string. Always null today:
authorMeta.region: our stored region is intokfluence.regioninstead.authorMeta.verified,authorMeta.privateAccount,authorMeta.digg,authorMeta.isUnderAge18,authorMeta.roomId,authorMeta.createTime,authorMeta.originalAvatarUrl,authorMeta.followDatasetUrl,authorMeta.hasActiveStoryisPinned,isSponsored,isSlideshow,isMuted,locationCreated: we do not store these per postmediaUrls,slideshowImageLinks,videoMeta.transcriptionLink,videoMeta.originalDownloadAddr, anddownloadLinkinsidevideoMeta.subtitleLinks: we do not copy files into a key-value store. The TikTok subtitle URL is intiktokLinkand is signed, so it stops working some time after the scrape.hashtags[].titleandhashtags[].cover,detailedMentions[].nickNameanddetailedMentions[].postUrl,effectStickers[].stickerStats.useCountmusicMeta.coverMediumUrl,musicMeta.originalCoverMediumUrl,musicMeta.playUrl,musicMeta.musicAlbumcommentsDatasetUrl,note,url,error,errorCode,invalidUrls,submittedVideoUrl,searchQuery,searchHashtag,searchMusic: Clockworks fills these for add-ons, error rows and other inputs this actor does not have
Often null:
authorMeta.commerceUserInfo.categoryandauthorMeta.ttSeller: null when we do not hold themhasTikTokShopProduct: null means we have not checked the post, not "no product"videoMeta.downloadAddr,videoMeta.originalCoverUrlmusicMetaas a whole is null for a post with no sound, andlocationMetafor a post with no location tag- If a creator's profile cannot be loaded, their posts still come back with
authorMeta.id,name,profileUrland the follower counts the post carries; the other author fields and thetokfluencecreator fields are null
Clockworks writes an error row for a profile that is private, empty or not found. We do not, because every row is a paid result. The run's status message names those profiles instead.
Zero or short results
When a run returns nothing, or fewer posts than the profiles times Max posts per profile, it still succeeds, but it logs a warning and sets the run's status message to the likely cause: profiles we could not find, private accounts, creators under 1,000 followers, the 15 stored posts per creator, the live first page, or the date filter. Fix the one it names and run again.
The actor uses one Tokfluence account for every run. If that account is out of API credits, or Tokfluence's scrape service is down, the run fails with a message saying so. You are charged only for rows already in the dataset.
What Tokfluence keeps from a run
Tokfluence logs every request the actor makes: the usernames, the mode, where each row was served from, and a reference made of a one-way hash of your Apify user id plus the run id. Every TikTok handle and hashtag in your inputs and in the returned rows is recorded as a candidate for Tokfluence's creator discovery. Every profile scraped live is stored in Tokfluence like any other scrape, and later runs, anyone's, can be served that stored copy.
Memory
The actor defaults to 256 MB and allows up to 512 MB. It makes one API call per 50 profiles for the posts and one per 100 for the creators' details, holds the posts in memory until those calls finish, then writes rows to the dataset in batches of 100.
Pricing
PLACEHOLDER (Daniel): pay per result, one result event per dataset row. Price to be set in Console at publish.
If your plan's remaining budget covers fewer rows than you asked for, the actor collects up to that ceiling, says so in the log, and stops cleanly rather than returning a silently short list.
Notes
Data comes from public TikTok pages, scraped and stored by Tokfluence. You are the data controller for anything you export; follow GDPR and any local rules that apply to you. More at Tokfluence.