# TikTok Fake Followers Checker: Influencer Audit & Engagement (`moggedhq/tiktok-fake-followers-checker`) Actor

Check TikTok accounts for fake followers. $0.24 per account; checking 20 creators costs $4.80. Each gets a verdict, audience quality score and grade, estimated fake follower %, red flags, engagement and views vs the norm for its size, newest-follower and comment checks and a post price. No login.

- **URL**: https://apify.com/moggedhq/tiktok-fake-followers-checker.md
- **Developed by:** [mogged](https://apify.com/moggedhq) (community)
- **Categories:** Social media, AI
- **Stats:** 3 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $192.00 / 1,000 tiktok account audits

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 Fake Followers Checker: Influencer Audit & Engagement

**For brands, influencer marketing agencies and creators who want to know, before they pay or partner, whether a TikTok account's followers and engagement are real.**

**$0.24 per account. Checking 20 creators before a campaign costs $4.80.** Accounts that cannot be checked are free.

Give it TikTok usernames or profile links. For each account you get one audit row: a verdict (looks genuine, some doubts, likely bought followers), an audience quality score from 0 to 100 with a grade, an estimated share of fake or inactive followers, red flags in plain words, engagement rate and views compared with what is normal for an account of that size, a check of the 200 newest followers one by one, a comment quality check on recent videos, and an estimated price range for one sponsored post. No login, no cookies, no TikTok account needed.

### What you get

One row per account, and the first column is the answer in one sentence:

> @nasa: looks genuine. Audience quality 100/100 (A), about 0% of followers look fake, bought or inactive. Views are healthy for the follower count: 12% of followers per video.

The main fields:

| Field | What it tells you |
|---|---|
| `summary` | The answer in one plain sentence: verdict, score, estimated fake share and the main reason |
| `verdict`, `verdictReason` | looks genuine, some doubts or likely bought followers, with the main reason in one sentence |
| `audienceQualityScore`, `audienceGrade` | 0 to 100 and A to F (A from 85, B from 70, C from 55, D from 40) |
| `estimatedFakeFollowerPct`, `estimatedRealFollowers` | Estimated share of followers that are fake, bought or inactive, and the followers left after removing them |
| `redFlags`, `greenFlags` | Every finding in plain words, with the numbers behind it |
| `followers`, `following`, `likes`, `videos` | The account's public counters |
| `engagementRatePct`, `engagementRateNormPct`, `engagementVsNorm` | Likes, comments and shares per view, the usual range for this size, and below, normal or above |
| `engagementRateByFollowersPct`, `engagementRateByFollowersNormPct` | Likes, comments and shares per video as a share of followers, and the usual range |
| `viewsToFollowersPct`, `viewsToFollowersNormPct`, `viewsVsNorm` | Median views per video as a share of followers, and the usual range for this size |
| `avgViews`, `medianViews`, `avgLikes`, `avgComments`, `avgShares`, `avgSaves` | Averages over the recent videos analyzed |
| `likesPerViewPct`, `viewsConsistency`, `topVideoShareOfViewsPct` | Likes per view, whether views are steady or carried by one hit |
| `postsPerWeek`, `daysSinceLastPost` | Posting rate and recency |
| `followersSampled`, `likelyFakeFollowerPctInSample`, `suspiciousFollowerPctInSample` | The newest followers checked one by one, and the share that look like bots or empty accounts |
| `newAccountFollowerPctInSample`, `emptyAccountFollowerPctInSample`, `defaultAvatarFollowerPctInSample`, `topFollowerFlags` | Brand-new accounts, accounts that never posted or liked anything, accounts without a picture, and the most common traits |
| `commentsAnalyzed`, `lowQualityCommentPct`, `genericCommentPct`, `repeatedCommentPct`, `spamCommentPct`, `emojiOnlyCommentPct`, `botLikeCommenterPct` | Comment quality on recent videos |
| `estimatedPostPriceUsdLow`, `estimatedPostPriceUsdHigh` | Estimated price range in US dollars for one sponsored post |
| `confidence` | high, medium or low, from how much data could be read |
| `recentVideos` | The videos analyzed: link, date, views, likes, comments, shares, saves, pinned |

The Output tab has four views: **Verdicts and scores**, **Red flags**, **Engagement and views**, and **Follower sample and comments**.

### Price

**$0.24 per account audited**, cheaper with an Apify subscription: Bronze $0.228, Silver $0.216, Gold and above $0.192. Private, missing and unreadable accounts are free, and so are accounts where TikTok shows too few videos to judge. Apify platform usage is included.

| Audit | Cost |
|---|---|
| 1 creator before a deal | $0.24 |
| A shortlist of 50 creators | $12.00 |
| A roster of 500 creators | $120.00 |

Your maximum charge per run is always respected: the run stops before going over it. On Apify's free plan a run audits up to 25 accounts in full; any paid Apify plan removes that limit.

### Sample report

A real audit, run on 13 October 2026 (`recentVideos` cut to one entry and `topFollowerFlags` to three):

```json
{
  "summary": "@nasa: looks genuine. Audience quality 100/100 (A), about 0% of followers look fake, bought or inactive. Views are healthy for the follower count: 12% of followers per video.",
  "username": "nasa",
  "profileUrl": "https://www.tiktok.com/@nasa",
  "verified": true,
  "verdict": "looks genuine",
  "verdictReason": "Views are healthy for the follower count: 12% of followers per video.",
  "audienceQualityScore": 100,
  "audienceGrade": "A",
  "estimatedFakeFollowerPct": 0.0,
  "estimatedRealFollowers": 2064498,
  "redFlags": [],
  "greenFlags": [
    "Views are healthy for the follower count: 12% of followers per video.",
    "None of the 200 newest followers look like bot or empty accounts.",
    "Comments look real: most of 150 recent comments say something specific."
  ],
  "followers": 2064498,
  "following": 23,
  "likes": 10947842,
  "videos": 56,
  "followerTier": "1M to 10M followers",
  "engagementRatePct": 9.39,
  "engagementRateNormPct": "6.9 to 18.0",
  "engagementVsNorm": "normal",
  "engagementRateByFollowersPct": 1.85,
  "viewsToFollowersPct": 12.13,
  "viewsToFollowersNormPct": "0.8 to 13.0",
  "viewsVsNorm": "normal",
  "avgViews": 407530,
  "medianViews": 250400,
  "avgLikes": 36520,
  "avgComments": 660,
  "avgShares": 1095,
  "avgSaves": 2472,
  "viewsConsistency": "steady",
  "postsPerWeek": 2.9,
  "daysSinceLastPost": 2,
  "videosAnalyzed": 10,
  "pinnedExcluded": 1,
  "followersSampled": 200,
  "likelyFakeFollowerPctInSample": 0.0,
  "suspiciousFollowerPctInSample": 3.0,
  "newAccountFollowerPctInSample": 7.0,
  "emptyAccountFollowerPctInSample": 1.5,
  "topFollowerFlags": [{"flag": "empty_bio", "count": 112}, {"flag": "no_videos", "count": 70}, {"flag": "mass_following", "count": 26}],
  "commentsAnalyzed": 150,
  "lowQualityCommentPct": 2.0,
  "repeatedCommentPct": 1.3,
  "spamCommentPct": 0.0,
  "botLikeCommenterPct": 4.0,
  "estimatedPostPriceUsdLow": 2900,
  "estimatedPostPriceUsdHigh": 7200,
  "confidence": "high",
  "recentVideos": [
    {"videoId": "7695060950394703118", "postedAt": "2026-10-10T15:26:57Z", "isPinned": false,
     "views": 256100, "likes": 24100, "comments": 1552, "shares": 1009, "saves": 1542}
  ],
  "error": null
}
```

And the red flags from a real account with 1.7 million followers that runs follower-gain livestreams (name left out):

```json
{
  "summary": "@example.account: likely bought followers. Audience quality 43/100 (D), about 93% of followers look fake, bought or inactive. Typical videos reach only 0.06% of the follower count in views (1,030 median views for 1,701,929 followers); creators with 1M to 10M followers usually get 0.8% to 13%.",
  "verdict": "likely bought followers",
  "audienceQualityScore": 43,
  "audienceGrade": "D",
  "estimatedFakeFollowerPct": 93.2,
  "redFlags": [
    "Typical videos reach only 0.06% of the follower count in views (1,030 median views for 1,701,929 followers); creators with 1M to 10M followers usually get 0.8% to 13%.",
    "Engagement is low: 3.6% of viewers like, comment or share (usual: 6.9% to 18%).",
    "34% of 91 recent comments are generic, copied or promo (typical: about 5.3%; 9 in 10 creators stay under 17%).",
    "24% of comments are copies of another commenter's text.",
    "The account advertises follow-for-follow, follower gains or follower sales in its name or bio."
  ],
  "estimatedPostPriceUsdLow": 10,
  "estimatedPostPriceUsdHigh": 25
}
```

### How to use it

1. Click **Try for free** (or open the Actor in Apify Console) and add the accounts to **TikTok usernames or profile links**, one per line. `nasa`, `@nasa` and `https://www.tiktok.com/@nasa` all work; paste a whole list with **Bulk edit**.
2. Leave the other settings as they are for a standard audit, or check more of the newest followers (up to 1,000) or more comments (up to 500).
3. Press **Start**. The prefilled one-account example takes under a minute and costs $0.24; 50 accounts take about 6 minutes and cost $12.
4. Open the **Output** tab and click **Export** for Excel, CSV, JSON or Google Sheets. Sort by `audienceQualityScore` to put the weakest accounts first.

Input example:

```json
{
  "usernames": ["nasa", "@duolingo", "https://www.tiktok.com/@zachking"],
  "videosToAnalyze": 10,
  "followersToSample": 200,
  "commentsToAnalyze": 150
}
```

### How the estimate works

TikTok does not publish fake follower numbers, so every percentage, score, verdict and price here is an estimate built from public signals. Five kinds of evidence go in:

1. **Views against followers.** Bought followers do not watch. The median views of the newest videos (pinned videos and videos under 48 hours old left out) are divided by the follower count and compared with accounts of the same size. Below the 25th percentile counts a little; below the 10th percentile counts a lot. Verified accounts often carry large legacy audiences, so their shortfall counts half.
2. **The newest followers, one by one.** Up to 200 of the newest followers (up to 1,000 if you ask) are scored on traits of bot and empty accounts: no profile picture, a name TikTok made up (`user` and digits), never liked a single video, follows thousands of accounts with almost no followers, made in the last 30 days, promo words in the name. A score of 50 or more counts as likely fake. Real people like videos, so an account with many likes given is pulled down. Only counts are returned; no follower names leave the run.
3. **Comments.** Recent comments are checked for generic one-liners, text copied by several commenters, follow-for-follow and promo requests, and commenter names that look made by a bot. Emoji-only comments are reported but not held against anyone: they are normal on TikTok.
4. **Engagement that real viewing cannot produce.** Views with almost no likes or comments (bought or paid-promotion views), more likes than views, or likes above 35% of views.
5. **The account itself.** Follow-for-follow or follower sales in the name or bio, a large following with no videos, following thousands of accounts, and months without a post.

`estimatedFakeFollowerPct` combines three shares as independent parts: followers that look like bots in the sample, followers that do not watch (the views shortfall), and followers gained through follow trains or bought engagement (comment quality, the share of brand-new accounts, self-promotion). `audienceQualityScore` starts at 100 and loses points for each finding, more for stronger ones. The verdict is **likely bought followers** when two strong signals agree, the score is under 50 or the estimate is 70% or more; **some doubts** when one strong signal shows, the score is under 75 or the estimate is 30% or more; otherwise **looks genuine**.

The sponsored post price is median views times $10 to $25 per 1,000 views, scaled by audience quality (at least $10 to $25). Bought views are taken out first. It is a starting point for negotiation, not a quote.

**What is normal.** The usual ranges were measured on 13 October 2026 on 244 public TikTok accounts with 300 to 163 million followers: active creators found through TikTok search and among the newest followers of large accounts, plus well-known brand and celebrity accounts. The range shown is the middle half (25th to 75th percentile).

| Account size | Views per video, share of followers | Engagement rate by views |
|---|---|---|
| Under 1K followers | 40% to 75% | 5.5% to 12.9% |
| 1K to 10K | 11% to 46% | 3.7% to 13.8% |
| 10K to 100K | 2.6% to 50% | 3.4% to 17.1% |
| 100K to 1M | 1.1% to 16.5% | 3.4% to 10% |
| 1M to 10M | 0.8% to 13% | 6.9% to 18% |
| 10M and more | 1.0% to 4.5% | 7.9% to 13.8% |

On those 244 accounts the checker said looks genuine for 84%, some doubts for 14% and likely bought followers for 2%. On 30 accounts that run follow-for-follow trains, follower-gain livestreams or sell followers, it said likely bought followers for 18, some doubts for 10 and looks genuine for 2.

### Use with AI agents (MCP)

The Apify MCP server (`https://mcp.apify.com`) lets Claude, ChatGPT, Cursor, VS Code and other MCP clients call this Actor as a tool, fill in the input from a plain request, and read the rows back.

**Claude Code:**

```bash
claude mcp add apify "https://mcp.apify.com/?tools=moggedhq/tiktok-fake-followers-checker" -t http
```

**Cursor, VS Code and other clients that take a server URL** (`mcp.json`):

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com/?tools=moggedhq/tiktok-fake-followers-checker"
    }
  }
}
```

**Clients that only run local servers:**

```json
{
  "mcpServers": {
    "apify": {
      "command": "npx",
      "args": ["-y", "@apify/actors-mcp-server", "--tools", "moggedhq/tiktok-fake-followers-checker"],
      "env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
    }
  }
}
```

Example prompt:

> Check if these TikTok influencers have fake followers: @creator_one, @creator_two, @creator_three. Rank them by audience quality and tell me which to avoid.

Input the agent sends:

```json
{ "usernames": ["creator_one", "creator_two", "creator_three"] }
```

Read `summary` first (or `verdict`, `audienceQualityScore` and `redFlags`); it answers "is this audience real?". Rows with an `error` are accounts that could not be audited (private, missing or too few public videos); they are not charged. A three-account run takes about a minute and costs $0.72.

### Use it from code (API)

```bash
curl -X POST "https://api.apify.com/v2/acts/moggedhq~tiktok-fake-followers-checker/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"usernames": ["nasa", "duolingo"]}'
```

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("moggedhq/tiktok-fake-followers-checker").call(run_input={"usernames": ["nasa", "duolingo"]})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row["username"], row["verdict"], row["audienceQualityScore"], row["estimatedFakeFollowerPct"])
```

In n8n, Make or Zapier, use the Apify app's **Run Actor** step with `moggedhq/tiktok-fake-followers-checker`, then send each row to Google Sheets, a CRM or Slack.

### Good to know (limits)

- **It is an estimate.** It reads public signals; it cannot see TikTok's internal data, who paid for what, or where followers live. A red flag is a reason to ask the creator questions, not proof.
- **The follower sample is the newest followers.** TikTok lists followers newest first and offers no way to sample older ones, so followers bought months ago do not show in the sample. The views check covers that case: old bought followers still do not watch.
- **The newest 10 or so videos.** TikTok's public profile card shows the latest 10 to 12 videos, and that is what is measured. A creator who just had one viral hit or a slow week will look a little different next week.
- **Follow-for-follow audiences are real people,** but they follow to be followed back, not to watch. They are counted as inflated followers.
- **Ads and paid promotion** bring views without much engagement, so brand accounts that promote their videos can show the "views far outrun reactions" flag.
- **Large legacy accounts** (news, sports leagues, celebrities with years of followers) often get few views per follower. Verified accounts are judged more gently for that reason, and the verdict says "some doubts" rather than "likely bought followers" unless other signals agree.
- **Private accounts cannot be audited** and are free. So are accounts that do not exist and accounts whose videos TikTok does not show to visitors.
- **TikTok only.** Instagram's public pages refused 12 of 12 test profiles from cloud servers without a login, so Instagram is not included.

### FAQ

**Is a "likely bought followers" verdict proof that someone bought followers?**
No. It means several public signals point the same way: few views for the follower count, copied or follow-for-follow comments, bot-like new followers, or self-promotion of follower gains. Read the red flags and ask the creator.

**Why can an account with no fake followers in the sample still get a low score?**
Because the sample only covers the newest followers. Followers bought long ago show up as views far below the norm, not in the newest-follower sample.

**How is this different from HypeAuditor, Modash or other influencer platforms?**
There is no subscription and no seat: you pay per account checked, run it on a whole list at once, and get the method and the numbers behind every verdict. It is not affiliated with those tools.

**Is this allowed? Do you log in to TikTok?**
It reads only what TikTok shows to any logged-out visitor: public profiles, public videos, public comments and the public follower list. It never logs in, never uses cookies from an account, and does not return the names of followers. It is not affiliated with, endorsed by or connected to TikTok or ByteDance.

**Can I schedule it?**
Yes. Save your input as a task and add an Apify schedule to re-check a creator roster every month, then compare scores over time.

**How long does it take?**
About 30 seconds for one or two accounts and about 7 seconds per account on longer lists.

### More tools from mogged

- [Recently Funded Startups](https://apify.com/moggedhq/recently-funded-startups): startups that just raised a round, with founders and contacts
- [Hiring Leads](https://apify.com/moggedhq/hiring-leads): companies hiring now, with open roles and the people to contact
- [Google Ads Keyword Planner Scraper](https://apify.com/moggedhq/keyword-search-volume): Google search volume, CPC and keyword difficulty for any keyword list
- [Google Maps Rank Tracker](https://apify.com/moggedhq/google-maps-rank-tracker): geo grid rank checks and heatmaps for local SEO
- [Technical SEO Audit Tool](https://apify.com/moggedhq/seo-audit-tool): website SEO checker with a score and a fix list

# Actor input Schema

## `usernames` (type: `array`):

The TikTok accounts to check, one per line: a username (nasa or @nasa) or a profile link (https://www.tiktok.com/@nasa). Paste a whole creator list with Bulk edit. Each account audited costs $0.24; accounts that are private, missing or cannot be read are free.

## `videosToAnalyze` (type: `integer`):

How many of the newest videos to measure for views, likes, comments, shares, engagement rate and consistency (3 to 12). TikTok's public profile card shows the latest 10 or so; pinned videos and videos under 48 hours old are left out of the view figures.

## `followersToSample` (type: `integer`):

How many of the account's newest followers to check one by one for bot and empty-account signs (no picture, auto-made name, never liked a video, follows thousands, brand-new account). 0 skips the follower sample.

## `commentsToAnalyze` (type: `integer`):

How many comments on recent videos to check for generic, emoji-only, copied and promo comments and bot-like commenter names. 0 skips the comment check.

## Actor input object example

```json
{
  "usernames": [
    "nasa",
    "@duolingo",
    "https://www.tiktok.com/@khaby.lame"
  ],
  "videosToAnalyze": 10,
  "followersToSample": 200,
  "commentsToAnalyze": 150
}
```

# Actor output Schema

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

No description

## `flags` (type: `string`):

No description

## `engagement` (type: `string`):

No description

## `audience` (type: `string`):

No description

# 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 = {
    "usernames": [
        "nasa"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("moggedhq/tiktok-fake-followers-checker").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 = { "usernames": ["nasa"] }

# Run the Actor and wait for it to finish
run = client.actor("moggedhq/tiktok-fake-followers-checker").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 '{
  "usernames": [
    "nasa"
  ]
}' |
apify call moggedhq/tiktok-fake-followers-checker --silent --output-dataset

```

## MCP server setup

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

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/hOsuUMsuA88A7obbe/builds/9TeN5VRi3n3E1tSwb/openapi.json
