TikTok Account Stats & Repost History Scraper avatar

TikTok Account Stats & Repost History Scraper

Pricing

from $0.49 / 1,000 results

Go to Apify Store
TikTok Account Stats & Repost History Scraper

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

vexaloom-labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

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 onlyNewVideos mode 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: true and, with pinnedFirst, are emitted before the rest of the collected posts.
  • Stable play links — every post row includes an embedUrl that 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, displayName
  • verified, privateAccount, isOrganization, ttSeller
  • bio, bioLink, bioEmail (when a valid address is written in the bio)
  • language, commerceCategory
  • followerCount, followingCount, heartCount, videoCount, diggCount — exact counts, never rounded abbreviations
  • avatarLarger, avatarMedium, avatarThumb
  • createTime, createdAt
  • commentSetting, duetSetting, stitchSetting, downloadSetting, followingVisibility, openFavorite, profileEmbedPermission, profileTab, UserStoryStatus
  • isLive, liveRoomId, liveRoomTitle, liveStartTime, liveViewerCount — present when TikTok reports the account's live status
  • averagePlays, medianPlays, postsPerWeek — only with "Add Derived Statistics" enabled, computed over the videos fetched for that account in the run
  • profileUrl, 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 from
  • postId, postUrl, embedUrl (permanent cookieless player link), postType (video or slideshow), caption, textLanguage, locationCreated
  • createTime, createdAt
  • playCount, likeCount, commentCount, shareCount, collectCount, repostCount
  • isPinned — present when the account pinned this video to the top of its profile
  • stitchEnabled, shareEnabled, duetEnabled, commentStatus
  • isAd, isAigc, isECVideo, privateItem, forFriend, originalItem, adLabelVersion, AIGCDescription
  • author.* — author snapshot at collection time: id, secUid, username, displayName, bio, verified, privateAccount, roomId, avatarUrl, followerCount, followingCount, heartCount, videoCount
  • music.* — sound used: id, title, authorName, original, duration, album, isCopyrighted, isCommerceMusic, isUnlimitedMusic, isPrivate, shootDuration, playUrl, coverUrl, musicUrl, dspLinks
  • video.* — technical metadata and media links: width, height, duration, ratio, definition, bitrate, codecType, format, size, videoQuality, hasSubtitles, subtitleInfos, bitrateInfo, volumeInfo, playUrl, downloadAddr, cover, originCover, dynamicCover
  • images — image list for slideshow posts
  • hashtags, mentions
  • mediaUrlExpiresAt — when the signed media links expire, when TikTok provides it
  • stickersOnItem, effectStickers, diversificationLabels, channelTags, item_control, contents, poi, warnInfo — extra post metadata, present when TikTok supplies it
  • sourcePlaylistId — for videos collected from playlist URLs

Output per playlist row

Playlist rows have rowType: "playlist":

  • profileUsername — the account that owns the playlist
  • playlistId, mixId, name, videoCount
  • coverUrl, playlistUrl, scrapedAt

Input

FieldTypeDefaultDescription
usernamesarray–TikTok usernames with or without @
profileUrlsarray–Full profile URLs, usable instead of or alongside usernames
contentTypesarray["profile","videos"]Any combination of profile, videos, reposts, playlists
playlistUrlsarray–Playlist URLs to collect the videos inside them
maxPostsPerProfileinteger30Max post rows per account, combined across videos and reposts (0 skips posts)
maxItemsinteger0Global cap on post rows for the whole run (0 = no cap)
includeProfileInfobooleantrueSet to false to emit post rows only
oldestPostDatestring–Only posts published on or after this date (YYYY-MM-DD, UTC)
newestPostDatestring–Only posts published on or before this date (YYYY-MM-DD, UTC)
includeLiveStatusbooleantrueAdds live status fields to profile rows when TikTok reports them
computedStatsbooleanfalseAdds average plays, median plays and posts per week to profile rows
onlyNewVideosbooleanfalseMonitoring mode: emit only videos posted since the previous run of the same account
pinnedFirstbooleanfalseEmit 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.

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.