TikTok Followers Scraper - Follower & Following Lists
Pricing
Pay per event
TikTok Followers Scraper - Follower & Following Lists
Export a TikTok account's followers or the accounts it follows, one row each with handle, display name, bio, follower count, video count, verification and avatar. The account itself comes back with its own full numbers.
TikTok Followers Scraper: follower and following lists
Give it TikTok accounts and get their followers as rows, or the accounts they follow, or both. Each row carries the handle, display name, bio, follower count, how many accounts they follow, video count, verification and avatar. The account you asked about comes back as its own row with its full numbers.
No login, no API key, no TikTok developer account.
What you get
Per follower, or per followed account: handle, url, nickname,
author_id, sec_uid, bio, follower_count, following_count,
video_count, total_likes, author_verified, is_private, is_live,
avatar_url, and of_account saying whose list the row came from.
Per account you asked about: everything above plus bio_link,
friend_count (mutual follows), is_organization, region, language and
following_visible.
Counts arrive as integers, not as the 1.2M strings the site shows.
Speed
150 followers in 1.2 seconds, five pages of thirty, with a follower count on all 150. Resolving the account itself took 0.8 seconds.
Thirty rows per request is TikTok's page size and there is no way to raise it, so a walk of five thousand is roughly 167 requests.
Three reasons a list comes back empty, and they are not the same
This is the part worth reading before you trust a result, because TikTok returns all three as an ordinary success and they mean entirely different things.
The account hides who it follows. This is a setting, and it is independent of whether the account is private. Duolingo is a fully public, verified account with 18 million followers, and its following list returns nothing because the setting is off. Measured across four large accounts: one hidden, three open.
The row for such an account carries following_visible: false, and the run
reports it as list_hidden with a message saying the followers are still
readable. It is not retried, because retrying will never help.
The account is private. Both lists are hidden. The account row still comes
back with its own numbers and is_private: true.
The account does not exist. A mistyped handle returns a normal-looking
TikTok page, and the only thing distinguishing it from a real account is a
status code buried in the page data. That is checked, so a typo is reported as
no_such_account rather than becoming a row claiming somebody has no
followers.
TikTok truncates long lists, and the run says when
An account with tens of millions of followers will not hand over tens of
millions of rows. TikTok sets a flag when it has decided to serve a partial
list, and the run reports it as listsTruncatedByTikTok in the summary.
A truncated walk of a huge account and a complete walk of a small one produce the same-looking table, and the difference matters. So it is a number in the summary rather than something you have to infer from the row count.
Input
| Field | Type | Notes |
|---|---|---|
profiles | array | Profile links, @handle or bare handles, one per line. Required. |
listType | select | followers, following or both. Both costs two walks per account. |
maxFollowersPerProfile | integer | Default 200, up to 5,000. |
maxFollowingPerProfile | integer | Default 200. Only used when the following list is requested. |
includeProfile | boolean | Default on. The account's own row. Free. |
country | string | Two-letter code. Lists are served regionally, so this can change the ordering. |
language | string | Two-letter code. |
proxyCountryCode | string | Where the request should appear to come from. |
Why the account's own row is free
Finding an account's followers requires resolving the account first, and that
resolution loads the page that already contains every number about it:
followers, following, video count, lifetime likes, bio, bio link, verification,
region. Charging for a second read of a page the run had to load anyway would
be charging for nothing, so includeProfile is on by default and costs
nothing.
What people use this for
Audience overlap. Run two competing accounts and intersect the follower handles. The size of the overlap is how much of an audience is already shared, which is the number that decides whether a partnership adds reach or repeats it.
Lead lists from a niche account. The followers of a small, sharply defined account are a better-targeted list than any interest filter, and the bio and follower count on each row are enough to rank them.
Who a brand watches. The following list of a company account is its competitor set, its agencies and the creators it is considering, stated in public and rarely read.
Bot and quality checks. Followers with no videos, no bio and a handle like
user8837261 are visible in one sort. A follower list where most rows look
like that is an audience worth discounting.
Notes
Follower counts are live and change through the day. A run is a snapshot.
Rows are deduplicated within a run, so an account appearing on two pages appears once.
An account that does not exist, is private, or has hidden its following list is reported by name with which of the three it was, rather than contributing zero rows that read as an account nobody follows.
Free Apify plans are capped at 10 results per run. The run stops walking at that point rather than reading the whole list and discarding it.