# TikTok Followers Scraper: Export Followers & Following (`s_actors/tiktok-followers-scraper`) Actor

Export the followers and following list of any public TikTok profile: username, name, bio, email in bio, followers, likes, videos, verified badge and when each follow happened. Filter influencers and leads. Track new followers and unfollows on a schedule. No login.

- **URL**: https://apify.com/s_actors/tiktok-followers-scraper.md
- **Developed by:** [Superior Actors](https://apify.com/s_actors) (community)
- **Categories:** Social media, Lead generation, AI
- **Stats:** 5 total users, 0 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.30 / 1,000 accounts

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### TikTok Followers Scraper: Export Followers & Following

Export the **followers list** and the **following list** of any public TikTok profile: username, name, bio, **email in the bio**, followers, likes, videos, verified badge of every account and **when each follow happened**. Filter the lists down to influencers or leads, and schedule it to get **new followers** and **unfollows** of the profiles you track. Export to CSV, Excel or JSON.

```json
{ "profiles": ["@nasa", "https://www.tiktok.com/@garyvee"], "lists": "both", "maxPerProfile": 1000 }
```

No TikTok login, no cookies, no browser extension. Use it as a **TikTok followers API**: one call returns clean JSON for many profiles.

#### What you get

One row per account in a list. Real example, October 2026, the accounts @garyvee follows with **Exact follow time** on:

| username | nickname | followerCount | followedAt |
|---|---|---|---|
| coinkrewe | Coin Krewe | 26,957 | 2026-09-17T20:18:30Z |
| swishbreaks | Swish Breaks | 24,201 | 2026-06-10T20:15:37Z |
| sundayleagueinvestors | Sunday League Investors | 24,624 | 2026-06-10T17:48:03Z |
| acbreakz | ACBreakz | 90,322 | 2026-05-12T23:08:17Z |
| breakswithjess | Breaks With Jess | 2,018 | 2026-04-24T21:35:31Z |

| Field | Description |
|---|---|
| `username`, `nickname`, `profileUrl`, `userId`, `secUid` | The account: @username, display name, link and TikTok IDs |
| `bio`, `bioEmail` | The bio text and the first email address found in it (for outreach) |
| `followerCount`, `followingCount`, `likeCount`, `videoCount`, `friendCount` | The account's exact numbers |
| `verified`, `privateAccount`, `isSeller`, `avatarUrl` | Blue badge, private account, TikTok Shop seller, profile picture |
| `followedAt` | Exact date and time of the follow (with **Exact follow time**) |
| `followedAfter`, `followedBefore` | The time window of the follow: TikTok lists accounts newest first in batches of 30 |
| `list`, `position` | `followers` or `following`, and the place in the list (1 = newest) |
| `change` | With tracking: `new` (a new follower or follow since the previous run) or `unfollowed` |
| `sourceUsername`, `sourceNickname`, `sourceUserId`, `sourceFollowerCount`, `sourceFollowingCount` | The profile whose list it is, with its **exact** follower count (TikTok rounds it to 1.9M on the profile page) |
| `input`, `scrapedAt`, `error` | Which input the row came from; `error` explains a profile that was not found or hides its list (free) |

#### How it works

1. Add **profiles**: `tiktok.com/@user`, `@user` or just `user`
2. Choose **Followers**, **Following** or **Both lists**, and how many accounts per list
3. Optional: **filters** (min followers, verified, email in bio, keywords) or **tracking** (only new followers, unfollows)
4. Run, then download the dataset as CSV, Excel, JSON or HTML

| Input | What it does |
|---|---|
| **TikTok profiles** | Any number of public profiles |
| **What to get** | Followers, following or both |
| **Max accounts per list** | Up to 10,000 (TikTok shows only the latest 10,000 followers of a profile) |
| **Exact follow time** | `followedAt` for every account: slower (about 3 accounts per second), for up to a few thousand |
| **Min / Max followers**, **Verified only**, **Only with email**, **Keywords in bio or name** | Return only the accounts you need; skipped accounts are free |
| **Only new followers** | Each run returns only accounts that were not in the list at the previous run |
| **Detect unfollows** | Adds rows for accounts that left the list (lists up to 2,000 accounts) |

#### Why this Actor

| | |
|---|---|
| 💰 **$0.39 per 1,000 accounts** | No subscription, no paid start; profiles not found, hidden lists and filtered accounts free |
| 🕒 **When each follow happened** | Exact follow time or a time window on every row: see who followed after a video went viral, or when a creator followed a brand |
| 🔁 **Follower tracker** | Schedule it with **Only new followers** and **Detect unfollows**: get the new followers, new follows and unfollows of any profile |
| 🎯 **Leads and influencers** | Email from the bio, follower filters, keywords: turn a competitor's followers into an outreach list |
| 📊 **Exact numbers** | The profile's exact follower count and every account's followers, likes and videos |
| ⚡ **Fast** | ~10,000 followers in about 2 minutes, several profiles at the same time |

#### Track new followers and unfollows

1. Add the profiles (yours, competitors', creators you work with), choose the list and turn on **Only new followers** (and **Detect unfollows** for lists up to 2,000)
2. Save as a task and add a schedule, e.g. every hour or every morning
3. The **first run** returns the latest accounts as a baseline. **Every later run** returns only the changes with `change` = `new` or `unfollowed`: send them to [Google Sheets](https://apify.com/s_actors/google-sheets-import-export), Slack, email or your CRM with an integration

The state is kept in your account (key-value store `tiktok-followers-state`). Following lists work the same way: see every new account a creator or competitor starts following.

#### Pricing

Pay per account, no subscription needed. Apify Scale and Business plans pay less:

| Event | Free and Starter plans | Scale plan | Business plan |
|---|---|---|---|
| Run start | $0.001 | $0.001 | $0.001 |
| Account (one row) | $0.00039 | $0.00034 | $0.0003 |

| Task | Cost |
|---|---|
| 1,000 followers of a profile | ~$0.39 |
| The latest 10,000 followers | ~$3.90 |
| 10 profiles tracked daily, ~50 new followers each per day | ~$5.90 per month |

Profiles that are not found, private accounts, hidden following lists and accounts skipped by filters are not charged.

#### Ready-made tasks

Open it, change the profiles, and run:

| Task | What you get |
|---|---|
| [Export TikTok Followers List to CSV & Excel](https://apify.com/s_actors/tiktok-followers-scraper/examples/export-tiktok-followers-list) | The followers of TikTok profiles with bio, email and stats |

#### FAQ

**Can I get all followers of a big account?** TikTok shows only the latest 10,000 followers of any profile, to the website and to every tool without a login. For bigger accounts you get the newest 10,000; to keep up after that, schedule the Actor with **Only new followers**.

**Why does a following list return an error?** The account hid the list of accounts it follows (a TikTok privacy setting). Its followers are still available. A few accounts also show only part of their lists: the run's status says so.

**Can I scrape private accounts?** No. TikTok shows the lists of a private account only to its approved followers.

**How exact is the follow time?** With **Exact follow time** `followedAt` is the second TikTok recorded. Without it, every row has `followedAfter` / `followedBefore`: the follow happened between these times (for big profiles that is a few minutes; for lists that change rarely it can be months).

**Do I need a TikTok account or cookies?** No. The Actor reads public lists the way the TikTok website does for a visitor.

#### Use with the API and AI agents

Run it via the [Apify API](https://docs.apify.com/api/v2) from Python, Node.js or any HTTP client, or connect it to Claude, ChatGPT and other AI agents through the [Apify MCP server](https://mcp.apify.com): "Find fitness creators with 10k-100k followers who follow @gymshark and have an email in their bio."

#### Other tools

| Tool | What it does |
|---|---|
| [TikTok Profile Scraper](https://apify.com/s_actors/tiktok-profile-scraper) | All videos of TikTok profiles: plays, likes, dates, exact followers, new-video alerts, MP4 download |
| [TikTok Comments Scraper](https://apify.com/s_actors/tiktok-comments-scraper) | Comments and replies of TikTok videos and profiles, keyword filter, only-new alerts |
| [TikTok Video Scraper](https://apify.com/s_actors/tiktok-video-scraper) | Views, likes, shares, hashtags and sound of TikTok videos, MP4 download, views tracker |
| [TikTok Transcript Scraper](https://apify.com/s_actors/tiktok-transcript-scraper) | Transcripts and subtitles of TikTok videos and profiles: text, SRT, VTT, translations |
| [TikTok Trending Hashtags Scraper](https://apify.com/s_actors/tiktok-trending-hashtags-scraper) | Trending TikTok hashtags by country: ~45 per country (not just the top 3), views, trend curve, top creators, new-trend alerts |
| [TikTok Trending Videos Scraper](https://apify.com/s_actors/tiktok-trending-videos-scraper) | Top TikTok videos by country: ~80 per country (not just the top 4), period and organic views, engagement, likes, creators, new-video alerts |
| [TikTok Viral Videos & Explore Scraper](https://apify.com/s_actors/tiktok-explore-scraper) | Viral TikTok videos from the Explore page in any country and 21 categories: plays, likes, plays per hour, creators, new-video alerts |
| [TikTok Trending Sounds & Songs Scraper](https://apify.com/s_actors/tiktok-trending-sounds-scraper) | Trending TikTok sounds and songs by country and Explore category: videos using each sound, plays, creators, commercial use, MP3 |
| [YouTube Channel Email Scraper](https://apify.com/s_actors/youtube-channel-email-scraper) | Emails and social links of YouTube channels for influencer outreach |
| [Telegram Channel Analytics](https://apify.com/s_actors/telegram-channel-analytics) | Exact subscribers, reach and ads of public Telegram channels |
| [Google Sheets Import & Export](https://apify.com/s_actors/google-sheets-import-export) | Send the followers to a Google Sheet |

#### Is it legal?

The Actor collects only public profiles and lists that TikTok shows to any visitor, without logging in. Followers lists contain personal data (usernames, bios, emails): use them in line with GDPR, CAN-SPAM and other privacy and anti-spam laws, and do not contact people who did not agree to it.

# Actor input Schema

## `profiles` (type: `array`):

One per line: profile links (tiktok.com/@user), @username or username. The account must be public.

## `lists` (type: `string`):

Followers: the accounts that follow the profile, newest first. Following: the accounts the profile follows, latest follows first (some accounts hide this list).

## `maxPerProfile` (type: `integer`):

How many accounts to return from each list of each profile. TikTok shows only the latest 10,000 followers of a profile to anyone, so that is the maximum.

## `exactFollowTime` (type: `boolean`):

Add followedAt: the exact date and time each account followed (or was followed). Reads one account per request, about 3 accounts per second instead of ~80, so use it for up to a few thousand accounts. Without it every row has followedAfter / followedBefore: the time window of its batch of 30.

## `minFollowers` (type: `integer`):

Skip accounts with fewer followers, e.g. 1000 to find creators and drop bots and empty accounts.

## `maxFollowers` (type: `integer`):

Skip accounts with more followers, e.g. 100000 for micro-influencers. Empty = no limit.

## `verifiedOnly` (type: `boolean`):

Return only accounts with TikTok's blue verified badge.

## `onlyWithEmail` (type: `boolean`):

Return only accounts that put an email address in their bio (bioEmail), for outreach and lead lists.

## `bioKeywords` (type: `array`):

Return only accounts whose bio, name or username contains one of these words (from the start of a word: "coach" finds "coaching"). Case does not matter.

## `onlyNew` (type: `boolean`):

Return only accounts that were not in the list at the previous run of this Actor in your account (remembered in the key-value store tiktok-followers-state). The first run returns the latest accounts as a baseline; every later run returns only the new ones, with change = new.

## `detectUnfollows` (type: `boolean`):

Also add a row with change = unfollowed for every account that left the list since the previous run. Works for lists of up to 2,000 accounts (the whole list is read on every run).

## `maxConcurrency` (type: `integer`):

How many lists are read at the same time. Each list is read page by page in order.

## `proxyConfiguration` (type: `object`):

Requests go direct first and switch to Apify datacenter proxies (then residential) when TikTok refuses them. The default works for most runs.

## `debugLog` (type: `boolean`):

Log every retried request (for troubleshooting).

## Actor input object example

```json
{
  "profiles": [
    "@nasa",
    "https://www.tiktok.com/@garyvee"
  ],
  "lists": "both",
  "maxPerProfile": 50,
  "exactFollowTime": false,
  "verifiedOnly": false,
  "onlyWithEmail": false,
  "onlyNew": false,
  "detectUnfollows": false,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "debugLog": false
}
```

# Actor output Schema

## `overview` (type: `string`):

Every follower or followed account with its stats, bio and follow time.

## `leads` (type: `string`):

Email from the bio, bio text and size of each account, for outreach.

## `changes` (type: `string`):

With Only new followers or Detect unfollows: what changed since the previous run.

## `all` (type: `string`):

Every field of every row.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "profiles": [
        "@nasa",
        "https://www.tiktok.com/@garyvee"
    ],
    "lists": "both",
    "maxPerProfile": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("s_actors/tiktok-followers-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "profiles": [
        "@nasa",
        "https://www.tiktok.com/@garyvee",
    ],
    "lists": "both",
    "maxPerProfile": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("s_actors/tiktok-followers-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "profiles": [
    "@nasa",
    "https://www.tiktok.com/@garyvee"
  ],
  "lists": "both",
  "maxPerProfile": 50
}' |
apify call s_actors/tiktok-followers-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,s_actors/tiktok-followers-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/OEQuYaPWZzfaVbjO8/builds/wZ6xCDPgoxB4qijtt/openapi.json
