TikTok Creator Scraper: Influencer Profiles & Video Stats
Pricing
from $0.90 / 1,000 videos
TikTok Creator Scraper: Influencer Profiles & Video Stats
Scrape TikTok creator profiles by username or link: followers, total likes, bio, bio link and email, verified status and secUid, plus recent videos with plays, likes, shares, saves and comments, each scored against the creator's own median. Date filter included. No login. Pay per video or profile.
Pricing
from $0.90 / 1,000 videos
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
3
Monthly active users
a day ago
Last modified
Categories
Share
From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with over 140,000 runs across 170+ public actors.
Give it TikTok usernames or links. Get back each creator's public profile (followers, following, total likes, video count, verified badge, bio, the link in their bio and any email written in it) with their most recent videos: plays, likes, shares, saves, comments, caption, hashtags, sound, duration and posting time. Every video row also says whether it was a hit for that creator, because playsVsCreatorMedian compares its plays with the creator's own median. No TikTok login, no cookies and no API key.
Why choose this actor?
- Know which videos really broke out. Raw view counts cannot tell a 1 million play video from @espn (61 million followers) apart from one from a small creator.
playsVsCreatorMediancan: in our run on 27 September, an @espn football clip scored8.7(2 million plays against a median of 229,900) and a @nasa video scored19.18. That works the same for accounts of any size. - A vetting table in one switch. Turn on
profileOnlyand each creator becomes one row withmedianPlays,medianEngagementRate,medianPlaysToFollowers,postsPerWeek,daysSinceLastPostand the top recent video. In our test on 2 October, @nasa, @natgeo and @espn with 30 videos each came back as three vetting rows in 10.5 seconds, and @natgeo's row showed a median of 17,650 plays on 9.6 million followers. - Pay only for rows you get. One charge per video row (or per creator row in
profileOnly), plus $0.005 per run. Creators that do not exist or are banned, private accounts in video mode, lookups TikTok refused, videos outside your date window, pinned videos you skipped and duplicates are never charged.
Part of The Mine Works Social media and video family: Threads Scraper, Reddit Scraper, Threads Search Scraper, Instagram Profile Scraper, Instagram Followers & Following, Reddit Search Scraper.
Try it in one minute
Paste this into the JSON tab of the input page and press Start:
{"profiles": ["nasa"],"maxVideosPerCreator": 10}
You get NASA's 10 latest videos, each with the creator's profile and the median score, in a few seconds.
Give creators in profiles, one per line, in any of these forms: a username (nasa or @nasa), a profile link (https://www.tiktok.com/@nasa), a link to one of their videos, a vm.tiktok.com short link, or a secUid. You can mix them, and the same creator given twice is scraped once. API callers who send usernames, username, startUrls, urls or profileUrls instead are understood too.
Apify's free plan includes $5 of credit every month, which covers about 1,800 video rows or about 1,400 creator rows at this actor's Free plan price (plus the $0.005 start fee on each run).
Copy to your AI assistant
themineworks/tiktok-creator-scraper on Apify. Scrapes public TikTok creator profiles and their recent videos without login: one row per video with plays, likes, shares, saves, comments, caption, hashtags, sound, engagement rate, plays vs the creator's own median and the creator's profile, or one row per creator with median plays, median engagement, plays per follower, posts per week and top video. Call ApifyClient("TOKEN").actor("themineworks/tiktok-creator-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: profiles (string[]: usernames, @names, profile links, video links, vm.tiktok.com links or secUids; up to 1,000). Optional: maxVideosPerCreator (0 to 1000, default 30; 0 returns profiles only), postedWithinDays (1 to 3650, no default), profileOnly (default false), excludePinnedPosts (default false), allowBrowserFallback (default true, needs 1 GB memory). The last row has _type "info" and is never billed; per creator statuses are in the key-value record OUTPUT. Full spec: GET https://api.apify.com/v2/acts/themineworks~tiktok-creator-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
Key features
- Up to 45 fields per video row (45 for a creator with a bio link and bio email, 43 without): the video's counts (
playCount,diggCount,shareCount,collectCount,commentCount,repostCount),engagementRate,playsVsCreatorMedian, caption,hashtags,mentions, sound, duration, cover, theisPinned,isAd,isSponsoredandisECVideoflags, and up to 16 creator fields with the profile and its median. - One row per creator mode with up to 39 fields: the profile plus
videosAnalyzed,medianPlays,averagePlays,medianEngagementRate,medianPlaysToFollowers,videosOver3xMedian,postsPerWeek,lastPostAt,daysSinceLastPost,topVideoUrl,topVideoPlaysandtopVideoPlaysVsMedian. - Up to 1,000 creators and 1,000 videos per creator in one run. Three creators are read at a time; videos come 15 per request, newest first.
- A date filter that saves money.
postedWithinDaysstops reading a creator's feed once videos get older than the window, so older videos are neither returned nor charged, and the median is taken over the videos inside the window. - Pinned videos handled. Pinned videos are marked
isPinnedand always left out of the median, posts per week and top video, because they are usually old hits;excludePinnedPostsdrops them from the output too. - Bio link and bio email.
bioLink(creatorBioLinkon video rows) is the link in the creator's bio, andbioEmail(creatorBioEmail) is an email address the creator wrote in the bio, found in 1 of the 9 profiles we sampled on 2 October. The actor never guesses or looks up emails anywhere else.
How to use it
Basic: one creator's latest videos
{"profiles": ["nasa"],"maxVideosPerCreator": 30}
Several creators at once, in any input form
{"profiles": ["nasa", "@natgeo", "https://www.tiktok.com/@espn"],"maxVideosPerCreator": 20}
On 27 September a run like this (nasa, the @espn link and a made up username) returned 40 videos in 4.5 seconds. The made up name returned no rows and cost nothing.
Influencer vetting table
{"profiles": ["cookingwithlynja", "zachking", "mkbhd", "glossier", "natgeo"],"maxVideosPerCreator": 30,"profileOnly": true}
One row per creator, charged per creator. Sort by medianPlaysToFollowers to see who still reaches their audience, and by daysSinceLastPost and postsPerWeek to see who is active. videosOver3xMedian counts recent breakouts.
Profiles only, fastest and cheapest
{"profiles": ["garyvee", "gordonramsayofficial", "mrbeast", "khaby.lame"],"maxVideosPerCreator": 0}
maxVideosPerCreator: 0 switches the run to one row per creator with the profile alone (followers, likes, video count, bio, bio link, bio email, verified badge) and no video requests. On 2 October 9 profiles came back in 10.2 seconds.
Campaign reporting: last 30 days, pinned posts left out
{"profiles": ["natgeo"],"maxVideosPerCreator": 100,"postedWithinDays": 30,"excludePinnedPosts": true}
Filter on playsVsCreatorMedian of 3 or more to list the posts that beat the creator's usual reach. Save the input as a task and schedule it weekly (for example 0 8 * * 1) to follow a creator over a campaign; each run returns and charges every video in the window again unless monitorMode is on, so keep the window short.
Breakout alert for a list of creators
{"profiles": ["nasa", "espn", "natgeo"],"maxVideosPerCreator": 15,"postedWithinDays": 2}
Schedule it daily and send rows with playsVsCreatorMedian above 3 to Slack through a webhook or Make. The median here is taken over the videos inside the two day window, so for creators who post rarely use a longer window and check creatorMedianSample.
Input parameters
| Parameter | Type | Default | What it does |
|---|---|---|---|
profiles | array of strings | none (form prefill: nasa and https://www.tiktok.com/@espn) | One creator per line: username, @username, profile link, video link, vm.tiktok.com short link or secUid. Up to 1,000 per run; extra creators are skipped with a warning. Duplicates are removed. |
maxVideosPerCreator | integer (0 to 1,000) | 30 | How many of each creator's most recent videos to read. In the default mode each one is a row. With profileOnly on, they feed the vetting numbers. 0 returns one profile row per creator and reads no videos. |
postedWithinDays | integer (1 to 3,650) | none | Keep only videos posted in the last N days. Older videos are never returned or charged. Leave empty for no date filter. |
profileOnly | boolean | false | One row per creator instead of one row per video, charged per creator. |
excludePinnedPosts | boolean | false | Leave out the videos a creator pinned to the top of the profile. They are left out of the median either way. |
allowBrowserFallback | boolean | true | If TikTok's page does not include a creator's profile over plain HTTP, try again from a headless browser session. Slower, and it only starts when needed. Needs at least 1 GB of memory; below that it is switched off and such creators are reported as blocked. |
API callers can also send the date as postedAfter with a date such as 2026-09-01, and the video cap as resultsPerPage, maxVideos or maxPostsPerProfile.
Run options. The default memory is 1 GB (the browser fallback needs it) and the default timeout is 3,600 seconds.
What data do you get?
Video rows (default mode)
The video: id, webVideoUrl, createTime (Unix seconds), createTimeISO, text (the caption), textLanguage, hashtags, mentions, durationSec, coverUrl, isSlideshow (photo post), isPinned, isAd, isSponsored (branded content), isECVideo (TikTok Shop video).
Counts and scores: playCount, diggCount (likes), shareCount, collectCount (saves), commentCount, repostCount, engagementRate (likes, comments, shares and saves divided by plays), playsVsCreatorMedian (this video's plays divided by creatorMedianPlays).
The sound: musicId, musicTitle, musicAuthor, musicOriginal.
The creator: creatorUsername, creatorNickname, creatorId, creatorSecUid, creatorProfileUrl, creatorFollowers, creatorFollowing, creatorTotalLikes, creatorVideoCount, creatorVerified, creatorBio, creatorBioLink, creatorBioEmail, creatorAvatarUrl, creatorMedianPlays, creatorMedianSample (how many videos the median was taken over).
Run fields: input (the line the row came from) and scrapedAt.
Creator rows (profileOnly or maxVideosPerCreator: 0)
Profile: username, nickname, userId, secUid, profileUrl, bio, bioLink, bioEmail, avatarUrl, verified, privateAccount, language, followers, following, totalLikes, videoCount, friendCount, likesGiven, isSeller, isCommerceAccount, commerceCategory, isOrganization, accountCreatedAt.
Vetting numbers (when videos were read): videosAnalyzed, medianPlays, averagePlays, medianEngagementRate, medianPlaysToFollowers, videosOver3xMedian, lastPostAt, daysSinceLastPost, postsPerWeek, topVideoUrl, topVideoPlays, topVideoPlaysVsMedian.
Run fields: videoMetricsStatus (ok, or not_requested when no videos were read), profileSource (how the profile was read, such as profile_page), input, scrapedAt.
Empty fields are left out of a row rather than sent as null. TikTok shows a creator's region to logged out visitors only rarely; it appeared for none of the 14 creators we sampled.
Each run ends with one _type: "info" row that is never charged. A status for every creator (ok, private, banned, not_found, blocked, none_in_date_window, duplicate and others), how each profile was read, feed pages used and what was charged go to the key-value store record OUTPUT, not the dataset.
Stable fields for automations
These 17 fields were present in every video row we sampled (43 rows from two runs on 27 September and 2 October):
| Field | What it holds |
|---|---|
id | TikTok video ID |
webVideoUrl | Public link to the video |
createTime | Posting time, Unix seconds |
createTimeISO | Posting time, ISO 8601 |
text | Caption |
playCount | Plays |
diggCount | Likes |
shareCount | Shares |
collectCount | Saves |
commentCount | Comments |
engagementRate | (likes + comments + shares + saves) / plays |
playsVsCreatorMedian | Plays divided by the creator's median plays |
isPinned | true for a pinned video |
creatorUsername | The creator's username |
creatorFollowers | The creator's followers at scrape time |
creatorMedianPlays | Median plays over the creator's returned videos, pinned left out |
scrapedAt | ISO timestamp when the row was captured |
We will not rename these fields. New fields may be added over time; existing ones keep their names.
Output examples
Real rows from our runs, with long URLs and the avatar and cover links left out.
A video row from the 27 September run (profiles included the @espn link), a clip that pulled 8.7 times ESPN's median:
{"id": "7690028817464839455","webVideoUrl": "https://www.tiktok.com/@espn/video/7690028817464839455","createTime": 1790474374,"createTimeISO": "2026-09-27T01:59:34.000Z","text": "#cfb #football #lsu ","hashtags": ["cfb", "football", "lsu"],"playCount": 2000000,"diggCount": 194800,"shareCount": 17400,"collectCount": 8691,"commentCount": 586,"repostCount": 0,"durationSec": 12,"isPinned": false,"isAd": false,"isSponsored": false,"musicTitle": "original sound","musicAuthor": "ESPN","musicOriginal": true,"engagementRate": 0.1107,"playsVsCreatorMedian": 8.7,"creatorUsername": "espn","creatorNickname": "ESPN","creatorFollowers": 61096414,"creatorTotalLikes": 6303833491,"creatorVideoCount": 10621,"creatorVerified": true,"creatorBio": "Serving Sports Fans. Anytime. Anywhere.","creatorMedianPlays": 229900,"creatorMedianSample": 20,"input": "https://www.tiktok.com/@espn","scrapedAt": "2026-09-27T13:16:16.972Z"}
A creator row with vetting numbers (profileOnly: true, 30 videos read, 2 October):
{"username": "natgeo","nickname": "National Geographic","profileUrl": "https://www.tiktok.com/@natgeo","bio": "Step into wonder and find your inner explorer with National Geographic 🌎","bioLink": "spr.ly/natgeotiktok","verified": true,"privateAccount": false,"followers": 9631545,"following": 62,"totalLikes": 54832556,"videoCount": 1521,"isCommerceAccount": true,"commerceCategory": "Shopping & Retail","accountCreatedAt": "2020-01-10T16:08:37.000Z","videosAnalyzed": 30,"medianPlays": 17650,"averagePlays": 169973,"medianEngagementRate": 0.0658,"medianPlaysToFollowers": 0.0018,"videosOver3xMedian": 4,"lastPostAt": "2026-10-01T22:19:07.000Z","daysSinceLastPost": 0.7,"postsPerWeek": 8.76,"topVideoUrl": "https://www.tiktok.com/@natgeo/video/7686521463628664095","topVideoPlays": 2200000,"topVideoPlaysVsMedian": 124.65,"videoMetricsStatus": "ok","profileSource": "profile_page","input": "@natgeo","scrapedAt": "2026-10-02T15:13:17.478Z"}
A profile only row (maxVideosPerCreator: 0, 2 October) for a creator who put a business email in her bio:
{"username": "cookingwithlynja","nickname": "Lynja","profileUrl": "https://www.tiktok.com/@cookingwithlynja","bioLink": "https://glnk.io/4x159/cookingwithlynja","bioEmail": "Cookingwithlynja@gmail.com","verified": true,"followers": 22174148,"following": 61,"totalLikes": 361653433,"videoCount": 507,"isOrganization": false,"accountCreatedAt": "2020-06-04T00:58:06.000Z","videoMetricsStatus": "not_requested","profileSource": "profile_page","input": "cookingwithlynja","scrapedAt": "2026-10-02T15:13:51.144Z"}
Pricing
Pay per event: you pay for each row delivered to your dataset, plus a small start fee per run.
| Event | Free | Bronze | Silver | Gold and above |
|---|---|---|---|---|
video-scraped, per video row | $0.0027 | $0.0019 | $0.0014 | $0.0009 |
video-scraped, per 1,000 videos | $2.70 | $1.90 | $1.40 | $0.90 |
creator-profile, per creator row | $0.0035 | $0.0028 | $0.0022 | $0.0015 |
creator-profile, per 1,000 creators | $3.50 | $2.80 | $2.20 | $1.50 |
apify-actor-start, per run | $0.005 per GB of run memory, minimum one event | same | same | same |
The start fee, exactly. Apify's apify-actor-start event is charged once when a run starts, at $0.005 for each GB of memory the run uses, with a minimum of one event. This actor runs on 1 GB by default, so a default run pays $0.005. At 2 GB it would be $0.01.
Worked examples on the Free plan. One creator's latest 30 videos: $0.081 plus $0.005. 50 creators with 30 videos each (1,500 rows): $4.05 plus $0.005. 100 creator rows with vetting numbers: $0.35 plus $0.005. On Gold the same 1,500 videos cost $1.35 plus $0.005.
Never charged: creators that do not exist or are banned, private accounts in video mode, lookups TikTok refused, videos outside your date window, pinned videos you chose to skip, a creator given twice, the info row and the OUTPUT record. A private account in profileOnly mode still returns its public profile numbers and is charged as one creator row.
There is no scheduled price change for this actor. The Pricing tab on this page always shows the rate for your own plan; if it and this table ever differ, the Pricing tab is right.
Run it on a schedule
Turn on monitorMode and each run delivers only the videos you have not received before, so a daily run costs you only for what is new.
- Enter your input, switch on Monitor mode and click Save as a task.
- In Apify Console open Schedules, click Add schedule and pick Daily (or any time and timezone you like).
- Under Actors or tasks to run, add the task you saved and save the schedule.
{"profiles": ["nasa","https://www.tiktok.com/@espn"],"maxVideosPerCreator": 30,"monitorMode": true}
The first run delivers everything it finds. After that, each run delivers only videos that were not in an earlier run with the same input, and videos it skips are never charged. The run's OUTPUT record shows new_this_run and skipped_duplicates. Changing the input starts a fresh history; changing only the result limit does not. Reading a creator's feed stops at the first page of videos you already have, and a creator with nothing new shows the status no_new_videos in the OUTPUT record. Each video is delivered once, so leave monitor mode off when you want fresh play counts for the same videos on every run. With profileOnly on, monitor mode works per creator instead: a creator row comes back only the first time and when its name, bio, bio link, email, flags, video count or latest post date changed. Followers, likes and the video medians move every day, so they do not count as a change.
FAQ
What does it read from TikTok? What TikTok shows a logged out visitor in the US: the creator's public profile page, then the same video feed TikTok's own profile page loads, 15 videos per request, newest first, until it has as many as you asked for, the videos get older than your date window, or the feed ends.
How many creators and videos can I get? Up to 1,000 creators per run and up to 1,000 recent videos per creator. In our 27 September run, two creators with 20 videos each took 4.5 seconds.
What does playsVsCreatorMedian mean?
The video's plays divided by the median plays of the creator's videos returned in the same run, with pinned videos left out of the median. 3 means the video reached three times the creator's usual audience; 0.5 means half. creatorMedianSample says how many videos the median rests on, so check it when you use a narrow date window.
How fresh is the data?
Every run reads TikTok live, and each row carries scrapedAt. Counts are what TikTok shows at that moment.
Do I need a TikTok account, cookies or an API key? No. You need only an Apify account. Nothing of yours is connected, so no account of yours can be blocked.
Which proxy does it use, and does it work outside the US? It reads from Apify's US datacenter proxy, included in the price. TikTok refused its web feeds to logged out visitors from the UK, Europe, Canada, Australia, Brazil, Japan and Mexico when we tested on 26 September, so the actor always reads from the US. Creators based in any country can be scraped. Only if TikTok's page leaves out a profile does the browser fallback start, on datacenter first and residential last.
What happens with private, banned or made up accounts?
A private account shows its profile numbers but not its videos: in video mode it returns no rows and costs nothing, and in profileOnly mode you get its profile row with privateAccount: true. Banned and non existent usernames return no rows and are never charged; in our tests a made up username came back with the status banned in the OUTPUT record.
Does it get the creator's email address?
Only when the creator wrote one in their bio. It comes back as bioEmail (or creatorBioEmail on video rows). The actor does not guess, buy or look up emails anywhere else.
Can I get only recent videos, for example the last 30 days?
Yes. Set postedWithinDays to 30. The actor stops reading a creator's feed once videos get older than the window, so older videos are neither returned nor charged.
Can I run it on a schedule?
Yes. Save your input as a task, then in Apify Console go to Schedules, create a schedule (for example 0 8 * * 1 for Monday mornings) and add the task. Unless monitorMode is on, the actor does not remember earlier runs, so each run returns and charges every video in its window; a short postedWithinDays keeps repeat runs cheap. With monitorMode on, each run returns only videos it has not delivered before.
How do I export the data?
From the run's Storage tab as JSON, CSV, Excel, XML or HTML, or through the Apify API. Drop the row that has a _type field if you want videos or creators only.
Can I use it from Claude, ChatGPT or another AI assistant?
- Connector URL:
https://mcp.apify.com/?tools=themineworks/tiktok-creator-scraper. - Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code:
claude mcp add -t http tiktok-creator-scraper "https://mcp.apify.com/?tools=themineworks/tiktok-creator-scraper".
Is it legal to scrape TikTok creator profiles? The actor collects only public profile and video data that anyone can see without logging in, and it never logs in or gets past a login wall. Usernames and bio emails can still be personal data, so you are responsible for how you store and use them, including TikTok's terms and data protection laws such as GDPR and CCPA. This actor is not affiliated with TikTok or ByteDance. This is general information, not legal advice.
Integrations
- Google Sheets: export a run to a sheet, or use Apify's Google Sheets integration to append each run's rows to a vetting sheet.
- Make, Zapier and n8n: use the Apify app or node to start a run and send breakout videos (
playsVsCreatorMedianabove 3) to Slack, email or a CRM. - Webhooks: have Apify call your URL when a run succeeds, then read the dataset.
- API and client libraries: start runs and read datasets from Python, JavaScript or any HTTP client. The "Copy to your AI assistant" block above has the exact call.
- MCP clients: Claude, ChatGPT, Cursor, VS Code and Claude Code can call the actor as a tool through
https://mcp.apify.com.
To find creators worth vetting, start with TikTok Hashtag and Search Scraper, which returns TikTok videos and their creators by hashtag or keyword, then pass the usernames here.
More from The Mine Works
Social media and video
- Threads Scraper
- Reddit Scraper
- Threads Search Scraper
- Instagram Profile Scraper
- Instagram Followers & Following
- Reddit Search Scraper
- Twitter / X Scraper
- YouTube Transcript
- Xiaohongshu (RED) Scraper
- Telegram Channel Scraper
- Telegram Channel Finder
- Pinterest Profile Scraper
Leads and business directories
Marketing, SEO and reviews
Real estate
Science, health and government data
Jobs and hiring
Company and business data
E-commerce and marketplaces
Food and local services
Developer and AI tools
More tools
Support
Found a creator the actor cannot read, or need a field we do not return yet? Open an issue on the Issues tab of this page with your input and the run ID, and we will reply there. To ask for a new social media source, email dmineworks@gmail.com.
TikTok Creator Scraper turns a list of TikTok creators into profile and video rows with engagement and plays against each creator's own median, charged only for rows delivered.

