# Instagram Fake Followers - Real Or Bought? (`reapx/instagram-fake-follower-audit`) Actor

Check whether an Instagram audience was grown or bought. Returns follower history, engagement against real size-band peers, and the evidence behind every number.

- **URL**: https://apify.com/reapx/instagram-fake-follower-audit.md
- **Developed by:** [Tarek Etman](https://apify.com/reapx) (community)
- **Categories:** Social media, Marketing, For creators
- **Stats:** 3 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

$2.00 / 1,000 creator audit collecteds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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)

## Instagram Fake Followers Audit - Real Or Bought?

> *"This account gained 40,000 followers in three days. Do I say something, or do I just book them and hope?"*

You cannot see bought followers in a snapshot. You can only see them in the curve, and nobody keeps the curve. When an Instagram account experiences sudden spikes in follower count without matching engagement, brands and talent agencies face real financial and reputational exposure.

This tool audits Instagram creator handles to evaluate audience credibility, calculate ghost follower share, compare engagement rate against size-band peer medians, and flag unexplainable follower step changes over time without requiring user logins.

***

### ⬇️ Input

Configure target handles, proxy settings, and detail options. Pre-filled default values ensure automated runs start immediately.

| Field | Type | Default | Description |
|---|---|---|---|
| `username` | `string` | `"nasa"` | Single Instagram handle to audit for fake followers and audience credibility, for example `"nasa"`. |
| `profiles` | `array` | `["nasa", "zendaya", "nike"]` | Optional list of Instagram handles to audit in a single run. Overrides single handle when provided. |
| `includeRecentPosts` | `boolean` | `true` | When enabled, parses recent post cards to evaluate engagement rate vs peer medians and ghost share. |
| `proxyConfiguration` | `object` | `{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}` | Residential proxy setup with session rotation. Required for Instagram fake follower audit routes. |
| `maxItems` | `integer` | `100` | Maximum number of creator profiles to process per run. Hard cap 1,000. |

#### Example Input JSON

```json
{
  "username": "nasa",
  "includeRecentPosts": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  },
  "maxItems": 100
}
```

***

### ⬆️ Output

The actor outputs audit records to the run's default dataset. Each row contains creator profile data, recent post items, and computed fraud and audience credibility metrics.

#### Output Field Reference

| Field | Type | Description |
|---|---|---|
| `username` | `string` | Target Instagram handle without `@` symbol. Stable identifier. |
| `fullName` | `string` | Display name shown on the profile. |
| `followerCount` | `integer` | Total follower count observed on the profile. |
| `followingCount` | `integer` | Total account following count. |
| `mediaCount` | `integer` | Total published post count. |
| `biography` | `string` | Profile bio text. |
| `categoryName` | `string` | Profile category or niche as listed on Instagram. |
| `externalUrl` | `string` | External website URL linked in bio. |
| `isVerified` | `boolean` | True if account holds a verified blue badge. |
| `isBusinessAccount` | `boolean` | True if account is classified as business or creator. |
| `isPrivate` | `boolean` | True if account is private. |
| `profilePicUrl` | `string` | Profile avatar URL. |
| `recentPosts` | `array` | Array of recent post cards (shortcode, likeCount, commentCount, caption, takenAt, isVideo, displayUrl). |
| `followerSpikeFlag` | `boolean` | Flag for unexplainable step-change follower jumps. Null on 1st run; populated as history accrues. |
| `followerSpikeDetails` | `string` | Date and size of detected step change jumps. Null on 1st run. |
| `followerGrowth30d` | `number` | 30-day follower growth. Null on 1st run; populated when multi-run history exists. |
| `followerLoss30d` | `number` | 30-day follower loss. Null on 1st run; populated when multi-run history exists. |
| `ghostFollowerShare` | `number` | Estimated percentage of non-engaging/ghost followers based on size-band benchmarks. |
| `engagementRate` | `number` | Computed engagement rate (%) across recent posts relative to follower count. |
| `engagementRateVsPeers` | `number` | Ratio of creator's engagement rate relative to median of size-band peers. |
| `commentToLikeRatio` | `number` | Ratio of comments to likes across recent posts. |
| `credibilityScore` | `number` | Composite audience credibility score (0-100) derived from peer ER and ghost share. |
| `computedMetricsReason` | `string` | Explanation of inputs and windows used for computed fields, or why history fields are null. |
| `scrapedAt` | `string` | ISO timestamp when audit was performed. |

#### Example Output JSON

```json
{
  "username": "nasa",
  "fullName": "NASA",
  "followerCount": 104254823,
  "followingCount": 74,
  "mediaCount": 4102,
  "biography": "Exploring the secrets of the universe.",
  "categoryName": "Science & Tech",
  "externalUrl": "https://www.nasa.gov",
  "isVerified": true,
  "isBusinessAccount": true,
  "isPrivate": false,
  "profilePicUrl": "https://instagram.fcdn.net/...",
  "recentPosts": [
    {
      "shortcode": "C9hX6mRO58u",
      "likeCount": 245100,
      "commentCount": 1820,
      "caption": "Cosmic discovery...",
      "takenAt": "2026-08-04T18:00:00.000Z",
      "isVideo": false,
      "displayUrl": "https://instagram.fcdn.net/..."
    }
  ],
  "followerSpikeFlag": null,
  "followerSpikeDetails": null,
  "followerGrowth30d": null,
  "followerLoss30d": null,
  "ghostFollowerShare": 0.0,
  "engagementRate": 0.237,
  "engagementRateVsPeers": 1.48,
  "commentToLikeRatio": 0.007,
  "credibilityScore": 84,
  "computedMetricsReason": "Computed from 12 recent posts. followerSpikeFlag and followerGrowth30d require multi-run history (1st run: record starts today).",
  "scrapedAt": "2026-08-05T10:55:00.000Z"
}
```

***

### How it works

1. **Low-Bandwidth Mobile Route:** Requests the Mobile Web profile document using an iPhone Safari User-Agent combined with `Accept-Encoding: gzip`. This fetches profile attributes and recent post cards in ~106.8 KB wire bytes per handle.
2. **Automated Session Rotation:** Rotates residential proxy exit IPs on every request (`session-<RANDOM>`). If an unparsed shell is served, the audit client automatically backs off, rotates the proxy session, and retries.
3. **Audience Credibility Scoring:** Evaluates engagement rate against size-band peer medians, calculates ghost follower share, and computes an overall credibility score (0-100).
4. **Historical Tracking:** Multi-run history tracks follower curves over time, flagging step changes and sudden growth jumps that organic activity cannot produce.

***

### ❓ FAQ

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

Step-change detection requires historical observation across multiple runs. Asserting a follower spike from a single observation would be unverified. On the first run, your record starts today; spike flags and growth curves populate automatically as subsequent runs accumulate.

#### How is ghost follower share estimated?

Ghost follower share is estimated by comparing observed engagement rate across recent posts against expected minimum engagement thresholds for the creator's follower size band. If engagement falls significantly below size-band medians, the gap determines the ghost follower percentage.

#### Why are residential proxies required?

Datacenter proxy IPs are blocked by Instagram with HTTP 429 status codes. Residential proxies with rotated session IDs ensure clean profile access and reliable data collection.

***

### 💬 Your feedback

Questions, feature requests, or custom integration needs? Contact the maintenance team at `reapxdev@proton.me`.

***

*Unofficial - not affiliated with Instagram or Meta. Collects data only. reapx. Contact reapxdev@proton.me.*

# Actor input Schema

## `username` (type: `string`):

Single Instagram handle to audit for fake followers and audience credibility, for example "nasa" or "zendaya". Omit leading @ symbols. The higher the number of handles audited in a single run, the longer the run takes and the more proxy bandwidth it costs. Leave empty if specifying a list in Bulk Profiles.

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

List of Instagram handles to audit in a single run. For example \["nasa", "zendaya", "nike"]. When provided, this list takes priority over Target Instagram Handle. Leave empty if auditing a single handle.

## `includeRecentPosts` (type: `boolean`):

When enabled, parses recent post cards to evaluate engagement rate vs peer medians, like-to-comment ratios, and ghost follower share. Disabling this skips post-level calculations.

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

Select proxy groups. Residential proxies with rotated sessions are REQUIRED for Instagram fake follower audit routes; datacenter IPs are walled by Instagram and will fail.

## `maxItems` (type: `integer`):

Maximum number of creator profiles to fetch and audit per run. The run stops automatically once this limit is reached. The higher the max items, the longer the run takes and the more proxy bandwidth is consumed.

## Actor input object example

```json
{
  "username": "nasa",
  "includeRecentPosts": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "maxItems": 100
}
```

# 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 = {
    "username": "nasa",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("reapx/instagram-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 = {
    "username": "nasa",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("reapx/instagram-fake-follower-audit").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "username": "nasa",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call reapx/instagram-fake-follower-audit --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=reapx/instagram-fake-follower-audit",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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