# TikTok Fake Followers Check - Real Or Bought? (`reapx/tiktok-fake-follower-audit`) Actor

Anyone can buy 100,000 followers. Nobody can buy 100,000 people who actually watch. See what share of a creator's following turns up for a typical post, and how that compares with creators their size.

- **URL**: https://apify.com/reapx/tiktok-fake-follower-audit.md
- **Developed by:** [Tarek Etman](https://apify.com/reapx) (community)
- **Categories:** For creators, Marketing, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.70 / 1,000 tiktok fake follower audit completeds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

![reapX - the record of what changed](https://reapx.dev/reapx.gif)

## TikTok Fake Follower Audit & Credibility API

Maintained by reapxdev@proton.me. Complete entity records with audit citation links.

> *"The client asked me to guarantee the audience is real. I cannot, and I am the one who signed off."*

When an agency or brand signs an influencer partnership, they bear full financial and reputational exposure if the audience turns out to be inflated by fake followers or engagement pods. Relying solely on surface-level follower counts leaves media plans vulnerable to low conversion rates and uncredited reach.

This actor audits TikTok creator handles for audience credibility without requiring user login. It measures follower history, follower spike flags, engagement rates against size-band peers, ghost follower shares, and comment-to-like ratios.

### ⬇️ Input

Paste the handles you are about to pay, one per line. The `@` is optional.

```json
{
  "handles": [
    "tiktok",
    "nike",
    "gymshark",
    "khaby.lame"
  ],
  "maxProfiles": 10
}
```

#### Input Parameters

| Field | Type | Default | Description |
|---|---|---|---|
| `handles` | Array | `["tiktok", "nike", "gymshark", "khaby.lame"]` | List of TikTok creator @uniqueId handles to audit for fake follower signals. |
| `maxProfiles` | Integer | `10` | Maximum number of creator profiles to process in a single run. |

### ⬆️ Output

Every processed profile outputs a structured record to the default dataset.

#### Output Fields

| Field | Type | Description |
|---|---|---|
| `uniqueId` | String | Stable per-row identifier. TikTok creator @handle. |
| `nickname` | String | Creator display name. |
| `followerCount` | Integer | Total follower count observed. |
| `heartCount` | Integer | Total heart / like count across creator videos. |
| `videoCount` | Integer | Total video count published by creator. |
| `followingCount` | Integer | Total accounts creator is following. |
| `signature` | String | Creator profile bio text. |
| `verified` | Boolean | Verification badge status. |
| `secUid` | String | TikTok internal secure user ID string. |
| `uid` | String | TikTok numeric user ID. |
| `avatar` | String | Profile picture avatar URL. |
| `privateAccount` | Boolean | Private profile indicator. |
| `engagementRate` | Number | Computed engagement rate (average likes per video / follower count). |
| `engagementRateVsPeers` | String | Computed engagement multiplier compared to size-band peers. |
| `followerSpikeFlag` | Boolean | Abnormal step-change follower spike flag. Null on initial run with reason in computedStatus. |
| `ghostFollowerShare` | String | Estimated inactive or ghost follower share text. |
| `commentToLikeRatio` | Number | Estimated comment-to-like engagement ratio. |
| `computedStatus` | Object | Status object explaining any null computed metrics or initial tracking state. |
| `scrapedAt` | String | ISO timestamp of data collection. |

#### Worked Output Example

```json
{
  "uniqueId": "khaby.lame",
  "nickname": "Khabane lame",
  "followerCount": 162500000,
  "heartCount": 461700000,
  "videoCount": 1345,
  "followingCount": 78,
  "signature": "If u want to laugh u are in the right place👇🏿",
  "verified": true,
  "secUid": "MS4wLjABAAAAwAg0rSzO65WQfz4RzQgGv2Xdv108BgPXhRrrmNVIHQZ9PO8-flwwRtEppYTS0OjA",
  "uid": "127905465618821121",
  "avatar": "https://p16-sign-va.tiktokcdn.com/tos-maliva-avt-0068/...",
  "privateAccount": false,
  "engagementRate": 0.0021,
  "engagementRateVsPeers": "0.4x the median for creators in the 10M+ follower band",
  "followerSpikeFlag": null,
  "ghostFollowerShare": "roughly 12% of followers rarely engage",
  "commentToLikeRatio": 0.025,
  "computedStatus": {
    "followerSpikeFlag": null,
    "reason": "needs 30 days of historical tracking, record starts today",
    "daysTracked": 1
  },
  "scrapedAt": "2026-08-05T10:55:00.000Z"
}
```

### How it works

1. **Profile Data Extraction**: Reads creator profile HTML via HTTP and extracts rehydration data without mandatory proxy spend.
2. **Peer Engagement Benchmarking**: Evaluates engagement against size-band peer medians (<10k, 10k-100k, 100k-1M, 1M-10M, 10M+).
3. **Audience Credibility Signals**: Estimates ghost follower shares and flags unobserved historical tracking windows transparently.

### ❓ FAQ

##### How does this actor spot fake followers?

By comparing a creator's average video likes against size-band peer medians and calculating ghost follower shares. Creators with depressed engagement multipliers relative to their follower count trigger low credibility signals.

##### Why does followerSpikeFlag return null on the first run?

Step-change spike detection requires observed historical runs over time. On the first run, the actor returns `null` along with a `computedStatus` object noting that tracking begins today.

##### Can this actor run on Apify without payload bodies?

Yes. If an API request contains no input body (such as automated health checks), the actor falls back to prefilled reference creators to guarantee successful output.

### 💬 Your feedback

Need custom ghost follower detection thresholds, engagement pod cross-checks, or campaign reporting integrations? Contact reapxdev@proton.me.

***

Unofficial - not affiliated with TikTok. Collects data without user login. reapx. Contact reapxdev@proton.me.

# Actor input Schema

## `handles` (type: `array`):

One @handle per line. Paste a whole roster in and get a row back for each. <b>Consequence:</b> the more handles, the longer the run and the more it costs. <b>Empty meaning:</b> leave it blank and a sample set of well known creators is checked, so you can see the shape of the output before you spend anything on your own list.

## `maxProfiles` (type: `integer`):

A ceiling on how many creators one run will check, so a long list cannot run away with your budget. <b>Consequence:</b> anything past this point in the list is left unchecked. <b>Empty meaning:</b> ten creators.

## Actor input object example

```json
{
  "handles": [
    "mrwhosetheboss",
    "gymshark",
    "khaby.lame",
    "mkbhd"
  ],
  "maxProfiles": 10
}
```

# Actor output Schema

## `items` (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 = {
    "handles": [
        "mrwhosetheboss",
        "gymshark",
        "khaby.lame",
        "mkbhd"
    ],
    "maxProfiles": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("reapx/tiktok-fake-follower-audit").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 = {
    "handles": [
        "mrwhosetheboss",
        "gymshark",
        "khaby.lame",
        "mkbhd",
    ],
    "maxProfiles": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("reapx/tiktok-fake-follower-audit").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 '{
  "handles": [
    "mrwhosetheboss",
    "gymshark",
    "khaby.lame",
    "mkbhd"
  ],
  "maxProfiles": 10
}' |
apify call reapx/tiktok-fake-follower-audit --silent --output-dataset

```

## MCP server setup

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

```

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/433vxZsfzpAv79vOk/builds/g6Pq1dB6dEJoKaAdc/openapi.json
