TikTok Profile Scraper - Followers and Likes avatar

TikTok Profile Scraper - Followers and Likes

Pricing

from $0.34 / 1,000 profiles

Go to Apify Store
TikTok Profile Scraper - Followers and Likes

TikTok Profile Scraper - Followers and Likes

Scrape TikTok profiles from a list of handles or links. Each row has followers, following, lifetime likes, video count, bio, verified flag, avatar and the secUid that survives a rename. A handle listed twice is billed once. $0.35 per 1,000 profiles.

Pricing

from $0.34 / 1,000 profiles

Rating

5.0

(2)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

50

Total users

25

Monthly active users

6 days ago

Last modified

Categories

Share

Scrape TikTok profiles from a list of handles: one flat row per account with followers, following, lifetime likes, video count, bio, verified flag, avatar and the profile link. Nothing to log into.

The part worth knowing first: TikTok hides two of those numbers on many accounts. followingCount and diggCount come back as 0 on plenty of large, active profiles because the account keeps them private, not because the figure is really zero. And this returns the profile only. The videos on it are a different actor, linked further down.

InputUsernames, or tiktok.com/@handle links
OutputOne row per profile: followers, following, lifetime likes, video count, bio, verified flag, avatar, profile link and both TikTok ids
CeilingNo cap on handles. A long list stops at the run's time limit, an hour by default, and keeps every profile it delivered
SpeedRoughly 40 to 50 profiles a minute on measured runs, and slower when TikTok is slow to answer
Account neededNone
Price$0.35 per 1,000 profiles on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 14,000

🔍 What TikTok Profile Scraper does

You hand it handles, it hands back the profile record behind each one. Handles are taken with or without the @, and a profile link works just as well since the handle is read straight out of it.

Everything is deduplicated before the rows land, so the same account listed twice in one run comes back once and is billed once. Handles are fetched one at a time, which is why a long list takes a while.

The field names are TikTok's own rather than the labels you see in the app, because those are the names you will need if you feed the rows into anything else. heartCount is the lifetime likes figure people usually mean by "total likes".

📋 What data you get from each TikTok profile

What you getField
Handle, display name and the numeric user iduniqueId, nickname, id
TikTok's long id, which survives a handle changesecUid
Biosignature
Followers and followingfollowerCount, followingCount
Lifetime likes across everything the account has postedheartCount
Videos on the account right nowvideoCount
Likes the account has given out, usually hiddendiggCount
The blue tickverified
Profile picture and the profile linkavatar, url

▶️ How to scrape TikTok profiles

  1. Open TikTok Profile Scraper and click Try for free.
  2. Type handles into Usernames, one per line, or paste links into Profile URLs.
  3. Click Start.
  4. Download the dataset as JSON, CSV or Excel, or pull it from the Apify API.

Start it with both boxes empty and you get one labelled sample row that is not charged.

💰 How much does it cost to scrape TikTok profiles?

$0.35 per 1,000 profiles on the Free plan. Paid plans pay a little less: $0.345 on Starter, $0.34 on Scale and $0.335 on Business. On the free plan, the $5 Apify gives you each month covers about 14,000 profiles.

You pay for rows that carry a profile. The sample row, diagnostic rows and the second copy of a handle you listed twice are not charged.

📥 What you give it

{
"profiles": ["tiktok", "nba", "khaby.lame"]
}
FieldDefaultWhat it is
profilesnoneUsernames, with or without @. The form opens with tiktok and nba filled in as an example, which is a starting point rather than a default.
startUrlsnoneOr paste profile links like https://www.tiktok.com/@tiktok. Mix them with profiles freely. A link that is not a profile link is skipped.
sessionCookiesnoneOptional. Your own TikTok sessionid. The field is stored encrypted.
proxyConfigurationoffLeave it off. Your own servers are used exactly as given.
notionConnector, notionParentIdnoneOptional. Write each profile into a Notion database as well as the dataset.

📤 What you get back

A real row from a real run, with the avatar link cut short:

{
"ok": true,
"type": "profile",
"id": "107955",
"uniqueId": "tiktok",
"secUid": "MS4wLjABAAAAv7iSuuXDJGDvJkmH_vz1qkDZYo1apxgzaxdBSeIuPiM",
"nickname": "TikTok",
"signature": "Your next discovery is waiting on TikTok.",
"verified": true,
"avatar": "https://p19-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/...",
"followerCount": 95824985,
"followingCount": 1,
"heartCount": 464140394,
"videoCount": 1591,
"diggCount": 0,
"url": "https://www.tiktok.com/@tiktok"
}
FieldHow to read it
followingCount, diggCount0 often means the account hides the figure, not that it is zero.
heartCountLifetime likes received. This is the "total likes" number.
videoCountHow many videos are on the account at the time of the run, not how many it ever posted.
secUidStays the same when the creator renames the account, so track it rather than uniqueId.
avatarSigned, and it stops working after a while. Download the image if you need to keep it.

🧾 Reading the output

Three kinds of row can land in your dataset.

RowHow to spot itBilled
A profileok: true and type: "profile"yes
The sample row_sample: trueno
A diagnosticok: false and an errorCodeno

Filter on type == "profile" and you have your data. The sample row only turns up when the input was empty.

CodeWhat it means
NOT_FOUNDNo profile came back for that handle. Treat them the same way: check the spelling, then try it again later.
NOT_SERVEDThis profile was not served this run. Re-run it later. Until 12 October 2026 this code was called BLOCKED.
TIME_LIMITThe run neared its time limit and stopped, keeping every profile it had delivered. If no profile had come back by then, the run ends as failed.
NO_RESULTSNothing at all came back for the whole run.

A handle that fails gets its own row and the run carries on to the next one.

One quirk of the Overview table: it shows six columns, so a diagnostic row reads as a nearly blank line there, and followingCount, verified and secUid are not in it at all. Open the row itself or download the JSON and everything is present.

💡 What people use it for

  • Refreshing follower and likes counts across a creator list every week, then comparing week to week.
  • Checking a shortlist of creators before you commit to one, so no budget goes to a dead handle.
  • Turning a column of handles from a spreadsheet into a table with real numbers next to it.
  • Grabbing secUid for each account, the id that survives a handle change.

From a hashtag to a creator shortlist, in three runs:

  1. Run TikTok Hashtag Scraper on a tag in your niche and copy the author.uniqueId column.
  2. Paste those handles into Usernames here and sort on followerCount.
  3. Put the handles worth a closer look into the Profiles box of TikTok Scraper to see their newest videos and how they perform.

🚧 What it does not do

  • No videos, comments or follower lists. This is the profile record. The siblings in the table below cover the rest.
  • followingCount and diggCount are often 0 because TikTok hides them. Read a 0 there as "not shown", not as "none".
  • A private account returns only what TikTok shows the public, which is the name, the bio and the counts it chooses to display.
  • Counts are a snapshot at the moment the row was read, not a history.
  • No search. You need the handle already. It will not find accounts by topic or keyword.
  • It is not an official TikTok tool. Dami's Studio is independent and is not affiliated with or endorsed by TikTok, or by any other company named on this page.

🧭 Which TikTok scraper do you need?

If you wantUse
Follower and like counts for a list of handlesThis one
A profile plus its newest videos, or a keyword searchTikTok Scraper
Videos posted under a hashtagTikTok Hashtag Scraper
Comments under a videoTikTok Comments Scraper
The hashtags ranking in a country right nowTikTok Trending Hashtags
The same kind of row for Instagram accountsInstagram Profile Scraper

❓ Questions people ask

Do I need a TikTok account to scrape TikTok profiles?

No. The cookie field is optional.

Why does a big account show 0 following?

Because TikTok is not publishing that number for the account. The same goes for diggCount, the likes an account has given.

Can I get the account's videos too?

Not from here. TikTok Scraper returns the profile row plus the newest videos on the grid.

Why do the numbers differ from what I see in the app?

Counts move all the time, so two reads an hour apart disagree slightly on a big account and neither is wrong. If a field looks off, open the profile in a private browser window: what a signed-out visitor sees there is what this actor reads.

Can I call it from code or connect it to an AI assistant?

Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/tiktok-user-scraper. Either way the run happens on your Apify account at the same price.

This reads public profiles only, never private accounts or messages. Results can still contain personal data, which GDPR and similar laws cover, so have a reason for collecting it. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page. Include the handles you used and the run ID, and the log is usually enough for us to see what happened.