# Why Your Reach Dropped - Get The Real Answer (`reapx/follower-loss-tracker`) Actor

"My numbers dropped and nobody will tell me why." Watch your audience day by day and find out whether people actually left, or your posts just stopped landing.

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

## Pricing

$0.40 / 1,000 follower loss item 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)

## Why Your Reach Dropped - Get The Real Answer

> *"My views just died. Same videos, same effort, and nobody will tell me why."*

You already checked the obvious things. Nothing changed. The uploads that used to do a million are doing a third of that, and every answer online is somebody guessing about the algorithm.

**Put in a handle. Get the answer back as a sentence:**

> *"@channel's latest uploads are getting 61% fewer views than the ones before them. It turned with the upload from 3 weeks ago. They went from posting every 4 days to every 11. Their strongest recent upload did 2.4x their own average: "I Was Wrong About This"."*

That is the whole thing. What changed, when it turned, what caused it, and what is still working - on the first run, in about ten seconds, for any channel.

***

### ⬇️ Input

The actor accepts a JSON input specifying the target creator handle or profile URL.

| Field | Type | Description |
|---|---|---|
| `username` | String | Target creator handle (e.g. `mkbhd`) or profile URL. |

***

### ⬆️ Output

Outputs direct answers and performance trajectory metrics to the default dataset.

| Field | Description |
|---|---|
| `whatHappened` | The answer, in plain words, ready to paste into a message or a deck. |
| `reachChangePct` | How far reach moved against their own earlier uploads. |
| `dropStartedAtTitle` | The upload where the drop began. |
| `postingGapDaysRecent` / `postingGapDaysPrior` | Posting rhythm now versus before, in days. |
| `bestPost` / `bestPostIndex` | The upload that beat their own average, and by how much. |
| `recentMedianViews` / `priorMedianViews` / `ownMedianViews` | The numbers behind the answer. |
| `uploadsAnalysed` | How many uploads the answer is built from. |

#### Sample Output Record

```json
{
  "username": "mkbhd",
  "whatHappened": "@mkbhd's latest uploads are getting 80% more views than the ones before them. They are posting more often now, every 5 days instead of every 7. Their strongest recent upload did 2.1x their own average: "Macbook Neo Impressions: Reincarnated!"",
  "reachChangePct": 79.5,
  "postingGapDaysRecent": 5,
  "postingGapDaysPrior": 7,
  "bestPost": "Macbook Neo Impressions: Reincarnated!",
  "bestPostIndex": 2.1,
  "uploadsAnalysed": 29
}
```

***

### How it works

1. **Upload History Analysis:** Fetches recent video uploads for any creator handle without requiring account credentials.
2. **Posting Cadence & Reach Measurement:** Computes publishing gap series, view medians, and reach drop timelines.
3. **Sentence Diagnosis Generation:** Returns a plain-language sentence explaining exact reach changes, cause, and top performer.

***

### ❓ FAQ

#### Does it work on a channel I do not own?

Yes. It needs nothing but the handle.

#### How far back does it look?

As far as the channel's uploads go, usually around 30, and it tells you exactly how many in `uploadsAnalysed`.

#### Does it get better the more I use it?

Yes. Every run adds to that channel's record, and `daysTracked` tells you how deep the record goes.

***

### 💬 Your feedback

Something you want computed that is not here yet? Say so - reapxdev@proton.me. We build these.

***

*Unofficial, not affiliated with any social network.*

reapx · reapx.dev · reapxdev@proton.me

# Actor input Schema

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

The handle you want the answer on - yours, or a creator you are about to book. Just the name, no @ needed.

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

How the run reaches the platform. The default is already the route that works for this source, so leave it alone unless you have a reason to change it.

## Actor input object example

```json
{
  "username": "mkbhd",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

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

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

# Run the Actor and wait for it to finish
run = client.actor("reapx/follower-loss-tracker").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": "mkbhd",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call reapx/follower-loss-tracker --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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