TikTok Account Stats & Repost History Scraper
Pricing
from $0.49 / 1,000 results
TikTok Account Stats & Repost History Scraper
Look up TikTok accounts for follower/like/video stats, recent videos, and reposted content in one run. Optional session cookie unlocks a profile's full video history. No cookie required for account stats or reposts.
Pricing
from $0.49 / 1,000 results
Rating
0.0
(0)
Developer
vexaloom-labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Look up any public TikTok account and export its stats, its public video history, the content it re-shared (reposts), its playlists and its current live status. Every account comes back as a profile row plus one row per video, repost or playlist, which makes it easy to schedule the actor and follow follower, like and posting trends over time. No TikTok account, cookies or proxy configuration are required.
What this actor does
- Account stats — exact follower, following, hearts and video counts plus display name, bio, bio link, verification, business category, avatars and account settings.
- Public video history — walks an account's posts newest-first, up to the limit you set, instead of stopping at a fixed handful of recent posts.
- Reposts — the videos an account re-shared from other creators, with the original author preserved.
- Playlists — playlist names, covers, video counts and links; add individual playlist URLs to collect the videos inside them.
- Live status — whether the account is streaming right now, with the live room title, start time and viewer count when TikTok reports them.
- Filters and limits — a date window, a global row cap, a per-account row cap and optional derived statistics (average plays, median plays, posts per week).
- New-video monitoring — an
onlyNewVideosmode schedules the actor as a change feed: it remembers each account's newest video between runs and emits only the videos posted since. - Pinned posts — pinned videos carry
isPinned: trueand, withpinnedFirst, are emitted before the rest of the collected posts. - Stable play links — every post row includes an
embedUrlthat plays the post in TikTok's embedded player without cookies, even after the session-bound media URLs expire. - Batch friendly — mix usernames and profile URLs in one run; duplicates are removed automatically.
- Empty fields are omitted — no nulls, empty strings or placeholder values anywhere.
Output per profile row
Profile rows have rowType: "profile":
userId,secUid,username,displayNameverified,privateAccount,isOrganization,ttSellerbio,bioLink,bioEmail(when a valid address is written in the bio)language,commerceCategoryfollowerCount,followingCount,heartCount,videoCount,diggCount— exact counts, never rounded abbreviationsavatarLarger,avatarMedium,avatarThumbcreateTime,createdAtcommentSetting,duetSetting,stitchSetting,downloadSetting,followingVisibility,openFavorite,profileEmbedPermission,profileTab,UserStoryStatusisLive,liveRoomId,liveRoomTitle,liveStartTime,liveViewerCount— present when TikTok reports the account's live statusaveragePlays,medianPlays,postsPerWeek— only with "Add Derived Statistics" enabled, computed over the videos fetched for that account in the runprofileUrl,scrapedAt
Output per video or repost row
Post rows have rowType: "video" for the account's own posts and rowType: "repost" for re-shared content, with contentKind mirroring the same value:
profileUsername— the account the row was collected frompostId,postUrl,embedUrl(permanent cookieless player link),postType(videoorslideshow),caption,textLanguage,locationCreatedcreateTime,createdAtplayCount,likeCount,commentCount,shareCount,collectCount,repostCountisPinned— present when the account pinned this video to the top of its profilestitchEnabled,shareEnabled,duetEnabled,commentStatusisAd,isAigc,isECVideo,privateItem,forFriend,originalItem,adLabelVersion,AIGCDescriptionauthor.*— author snapshot at collection time:id,secUid,username,displayName,bio,verified,privateAccount,roomId,avatarUrl,followerCount,followingCount,heartCount,videoCountmusic.*— sound used:id,title,authorName,original,duration,album,isCopyrighted,isCommerceMusic,isUnlimitedMusic,isPrivate,shootDuration,playUrl,coverUrl,musicUrl,dspLinksvideo.*— technical metadata and media links:width,height,duration,ratio,definition,bitrate,codecType,format,size,videoQuality,hasSubtitles,subtitleInfos,bitrateInfo,volumeInfo,playUrl,downloadAddr,cover,originCover,dynamicCoverimages— image list for slideshow postshashtags,mentionsmediaUrlExpiresAt— when the signed media links expire, when TikTok provides itstickersOnItem,effectStickers,diversificationLabels,channelTags,item_control,contents,poi,warnInfo— extra post metadata, present when TikTok supplies itsourcePlaylistId— for videos collected from playlist URLs
Output per playlist row
Playlist rows have rowType: "playlist":
profileUsername— the account that owns the playlistplaylistId,mixId,name,videoCountcoverUrl,playlistUrl,scrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
usernames | array | – | TikTok usernames with or without @ |
profileUrls | array | – | Full profile URLs, usable instead of or alongside usernames |
contentTypes | array | ["profile","videos"] | Any combination of profile, videos, reposts, playlists |
playlistUrls | array | – | Playlist URLs to collect the videos inside them |
maxPostsPerProfile | integer | 30 | Max post rows per account, combined across videos and reposts (0 skips posts) |
maxItems | integer | 0 | Global cap on post rows for the whole run (0 = no cap) |
includeProfileInfo | boolean | true | Set to false to emit post rows only |
oldestPostDate | string | – | Only posts published on or after this date (YYYY-MM-DD, UTC) |
newestPostDate | string | – | Only posts published on or before this date (YYYY-MM-DD, UTC) |
includeLiveStatus | boolean | true | Adds live status fields to profile rows when TikTok reports them |
computedStats | boolean | false | Adds average plays, median plays and posts per week to profile rows |
onlyNewVideos | boolean | false | Monitoring mode: emit only videos posted since the previous run of the same account |
pinnedFirst | boolean | false | Emit pinned videos before the rest of the post rows |
Example: stats snapshot for a watchlist
{"usernames": ["nike", "adidas", "puma"],"contentTypes": ["profile"],"maxPostsPerProfile": 0,"computedStats": true}
Example: recent videos and reposts since a date
{"usernames": ["natgeo", "bbcnews"],"contentTypes": ["profile", "videos", "reposts"],"maxPostsPerProfile": 50,"oldestPostDate": "2026-09-01"}
Example: repost history only
{"usernames": ["khaby.lame"],"contentTypes": ["reposts"],"maxPostsPerProfile": 100}
Example: collect the videos inside a playlist
{"playlistUrls": ["https://www.tiktok.com/@natgeo/playlist/Cinematic-7509464647364283178"],"maxPostsPerProfile": 100}
Example: full history for a short list
{"usernames": ["corgibobaa"],"contentTypes": ["videos"],"maxPostsPerProfile": 500,"maxItems": 500}
Example: new-video monitoring
{"usernames": ["natgeo", "bbcnews"],"contentTypes": ["profile", "videos"],"maxPostsPerProfile": 50,"onlyNewVideos": true}
Schedule this input daily. The first run returns the account's videos (up to the cap) and remembers the newest one; every later run returns only videos posted since the previous run, so you get a clean new-video feed without duplicates. Reposts and playlists are not filtered by this option.
Use cases
- Influencer vetting — pull follower counts, engagement counters and recent performance for a shortlist of creators.
- Follower growth tracking — schedule a stats-only run to build a time series of followers, hearts and video counts.
- Competitor monitoring — watch posting cadence and engagement for brand accounts with date-windowed runs.
- Repost analysis — see exactly which outside content a creator chooses to amplify.
- Playlist research — export curated playlists as structured video lists.
- Live campaign checks — confirm whether an account is live and capture the stream details in the same run.
FAQ
Do I need a TikTok account, cookies or a proxy?
No. The actor reads public profile data exactly as any logged-out visitor could. There is nothing to configure beyond your input list. (Older versions accepted sessionCookie, cookies and ttwid; those fields were removed because they never changed what the actor returns — old saved tasks that still send them keep working unchanged.)
How does onlyNewVideos behave on the first run?
The first run for an account returns all videos it collects (up to Max Post Rows per Profile) and stores the newest video as the monitoring checkpoint. Every following run returns only videos newer than that checkpoint. If the stored state is ever lost, the next run simply behaves like a first run again — you never get an error.
Why did a monitoring run return no video rows?
Either the account posted nothing since the previous run, or the checkpoint already covers its newest video. The run still succeeds and still emits the profile row, so a scheduled stats-only watch keeps working.
How far back does the video history go?
As far as you ask it to. maxPostsPerProfile caps the rows per account, and date filters let you stop at a chosen day. Large accounts can be paged to hundreds of videos; very large request sizes simply take longer.
Why does an account show no reposts?
Many accounts genuinely never repost. When an account has no publicly visible reposts, the run still succeeds and simply emits no repost rows.
Why can reposts be missing when I ask for both videos and reposts?
maxPostsPerProfile is a combined cap and videos are written first, so a video-heavy account can use the whole budget on videos. Choose reposts only if repost history is what you need.
Why are some fields missing from a row?
Empty fields are omitted on purpose. Some TikTok accounts do not publish a bio link, a location, subtitles or hashtags, and some payloads do not carry every optional flag — those fields are left out rather than filled with blanks.
What do averagePlays and medianPlays cover?
They are computed over the videos returned for that account in the same run, not over the account's entire history. Fetch more videos for a wider window.
Do the video and audio links work in my browser?
The video.playUrl, video.downloadAddr and music.playUrl links are short-lived addresses that TikTok binds to the session that requested them; opening them later usually returns Access Denied. They are kept because existing integrations reference them, but embedUrl is the durable, cookieless way to play a post: it is a permanent TikTok embed link that opens the post in TikTok's own player in any browser, with no account or cookies. postUrl remains the canonical link to the post page, and the image links (cover, originCover, avatars, playlist covers) resolve normally.
Which videos does pinnedFirst reorder?
TikTok lets an account pin up to three videos to the top of its profile. When pinnedFirst is on, any pinned video collected in the run is emitted before the other post rows, and it carries isPinned: true. Pinned videos normally appear inside their chronological position in TikTok's own API, so without this option they keep that position.
What happens to private, suspended or misspelled accounts?
They are skipped: no rows are written for them, the run still succeeds and the status message reports how many accounts could not be found. Profile stats for private accounts are returned when TikTok makes them public.
Is the account location or country included?
TikTok no longer includes an account region in its public profile payload, so the actor does not emit one.
Can I track changes over time?
Yes. Schedule the actor with a stats-only input and compare followerCount, heartCount and videoCount between runs using scrapedAt as the timestamp.
Is this affiliated with TikTok?
No. It is a third-party actor that reads publicly available TikTok web data.