TikTok Profile Scraper - Followers and Likes, No Login avatar

TikTok Profile Scraper - Followers and Likes, No Login

Pricing

from $0.35 / 1,000 profile returneds

Go to Apify Store
TikTok Profile Scraper - Followers and Likes, No Login

TikTok Profile Scraper - Followers and Likes, No Login

Scrape TikTok profiles with no login. Each row has follower count, following count, video count, lifetime likes, bio, verified flag and avatar. Likes given out are hidden on most accounts, so a 0 there means hidden, not none. $0.35 per 1,000 profiles.

Pricing

from $0.35 / 1,000 profile returneds

Rating

5.0

(2)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

28

Total users

11

Monthly active users

2 days ago

Last modified

Share

TikTok Profile Scraper: follower counts, likes and bio for any public handle

Give it a list of TikTok usernames and you get one flat row per account: 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 most 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
CeilingNo cap. One row per unique handle you send
Account neededNone from you
Price$0.35 per 1,000 profiles, flat on every plan

๐Ÿ” 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 rather than in a burst, 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:

FieldWhat it is
signatureThe bio text.
heartCountLifetime likes across everything the account has posted.
diggCountLikes the account has given out. Usually 0, because it is usually hidden.
secUidTikTok's stable internal id for the account.
idThe numeric user id.

A handle that does not exist, or that comes back empty, gets a row saying so and the run carries on to the next one.

๐Ÿ“ฅ 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.
sessionCookiesnoneOptional. Your own TikTok sessionid, used only for handles that came back empty. Use a throwaway account: the value sits in the run input, which anyone who can open the run can read.
proxyConfigurationoffLeave it off. It exists for people routing through their own servers at high volume.
notionConnector, notionParentIdnoneOptional. Write each profile into a Notion database as well as the dataset.

Run it with nothing at all and you get one labelled sample row, free, so you can see the shape before you spend anything.

๐Ÿ“ค 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"
}
FieldWhat it is
uniqueId, nicknameThe handle, and the display name shown above it.
followerCount, videoCountAudience size and how many videos are on the account right now.
heartCountLifetime likes. This is the number people usually mean by "total likes".
verifiedThe blue tick, as a boolean.
avatar, urlDirect link to the profile picture, and the canonical profile link.
id, secUidBoth ids TikTok uses. uniqueId is the readable one, secUid survives a rename.

๐Ÿงพ 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 ok == true and you have your data. NOT_FOUND and BLOCKED both mean no profile came back for that handle, and you can treat them the same way: check the spelling, then try it again later. NO_RESULTS is the single row you get when nothing at all came back for the whole run.

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.

โ–ถ๏ธ How to run it

  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.

๐Ÿ’ฐ How much does it cost?

$0.35 per 1,000 profiles. Flat on every Apify plan, no volume tiers.

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 people use it for

  • Refreshing follower and likes counts across a creator list on a schedule, then diffing week to week.
  • Vetting a shortlist of accounts before an outreach round, so nobody pitches a dead handle.
  • Turning a column of handles from a spreadsheet into a table with real numbers next to it.
  • Grabbing secUid for accounts, which is the id that survives a handle change.

๐Ÿšง What it does not do

  • No videos, comments or follower lists. This is the profile record. Three siblings 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.
  • The avatar link is signed and expires. Download the image if you need to keep it.
  • No search. You need the handle already. It will not find accounts by topic or keyword.

๐Ÿงญ Which TikTok scraper do you need?

If you wantUse
Follower and likes counts for handles you already haveThis one
A profile plus the videos on it, or a keyword searchTikTok Scraper
Videos under a hashtagTikTok Hashtag Scraper
Comments under a videoTikTok Comments Scraper
Which hashtags are climbing right nowTikTok Trending Hashtags

โ“ Questions people ask

Do I need a TikTok account? No. The cookie field is optional and only comes into play for handles that came back empty without it.

Can I get the account's videos too? Not from here. TikTok Scraper returns the profile row plus the videos on the grid.

Why does a big account show followingCount: 0? Because TikTok is not publishing that number for the account. The same goes for diggCount.

What happens to a handle that does not exist? You get an uncharged row marked ok: false, and the run moves on to the next handle instead of stopping.

Is scraping TikTok legal? 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.

Can I run it on a schedule? Yes. Use Apify's scheduler, or start it from the API and read the dataset when it finishes.

๐Ÿ†˜ 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.