# Instagram Follower Count & Growth Monitor (`data-slayer/instagram-follower-count-growth-monitor`) Actor

Track follower, following, and post-count changes for public Instagram accounts with durable comparisons between scheduled runs.

- **URL**: https://apify.com/data-slayer/instagram-follower-count-growth-monitor.md
- **Developed by:** [Data Slayer](https://apify.com/data-slayer) (community)
- **Categories:** Social media, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 1,000 completed profile checks

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

## Instagram Follower Count & Growth Monitor

Track follower, following, and post-count changes for public Instagram accounts with timestamped comparisons that are ready for reports, alerts, dashboards, and scheduled workflows.

### Watch the demo

YouTube video coming soon.

### What you get

Each successful account check produces one structured Dataset row with the current counts and, when available, the previous successful observation for the same monitor:

- follower count and follower delta;
- following count and following delta;
- post count and post delta;
- current and previous observation timestamps;
- follower growth percentage when it can be calculated honestly;
- an explicit first-observation indicator;
- stable account identity fields for downstream joins.

An unchanged account still produces a completed check. A missing count stays null instead of becoming a misleading zero.

### Built for recurring monitoring

Give the monitor a stable name and use that same name on later runs. The Actor keeps the most recent successful observation for each account and compares the new check with it automatically.

Use a different monitor name when you need an independent history, such as separate client, campaign, or competitor watchlists. Adding an account creates its first observation. Leaving an account out of a run does not erase its saved history.

### Input

#### Instagram accounts

Add 1–100 usernames, `@handles`, or Instagram profile URLs. Equivalent duplicate forms are checked once.

Free-plan runs check up to 5 normalized accounts. Paid plans can check up to 100 accounts per run.

#### Monitor name

Enter a stable name such as `competitor-watch`. Reuse it to continue the same comparison history. Use a different name for a separate history.

### Schedule it with Apify

Run the Actor once to establish a baseline, then create an Apify schedule for the frequency you need. Daily and weekly checks are usually easier to interpret than very frequent snapshots.

The Actor performs one bounded check and exits. It does not keep a container running between observations.

### Reliable comparison behavior

- The first successful observation is labeled as a first observation and has no invented delta.
- Only a successful observation can become the next baseline.
- A failed lookup does not erase a prior successful value.
- Overlapping runs using the same monitor name are rejected before profile checks rather than racing and producing unreliable deltas.
- Counts that are unavailable remain null.
- Input order is preserved after equivalent duplicates are removed.

### Pricing

This Actor uses two visible events:

- **Actor start:** $0.002 once per run.
- **Completed profile check:** $0.0050 Free, $0.0045 Bronze, $0.0040 Silver, and $0.0035 Gold/Platinum/Diamond.

A completed profile check is charged even when the counts did not change. Failed lookups and accounts skipped because of the Free-plan limit do not trigger the completed-check event. Platform usage is included in these event prices.

### Output and integrations

Download successful observations as JSON, CSV, Excel, XML, or HTML from the default Dataset. Use the run's `OUTPUT` record for completion totals, duplicate counts, skipped accounts, and account-level failure summaries.

Each Dataset row includes the requested account, stable profile ID, canonical username, profile URL, observation time, current and previous counts, count deltas, follower growth percentage, first-observation state, change state, and complete/partial observation status. The row identity is the combination of `profileId` and `observedAt`.

The `OUTPUT` summary reports requested, normalized, checked, completed, changed, unchanged, first, partial, failed, duplicate-skipped, plan-limited, and charge-limited totals. Account errors use stable codes and concise customer-safe explanations.

Connect scheduled results to Google Sheets, Make, Zapier, webhooks, dashboards, databases, or your own API workflow using Apify's integrations and API.

### Important limitations

- The Actor reads public profile information that is available at check time. Instagram can remove, restrict, or delay fields.
- It measures aggregate count changes. It does not download follower lists and cannot identify the specific people who followed or unfollowed.
- A delta describes the difference between two successful observations, not every change that happened between them.
- Deleted, renamed, unavailable, or misspelled accounts can fail. The failure is reported without replacing the last successful observation.
- Do not use a monitor name as a password or secret. It is an organizational key for your saved history.

### Responsible use

Use the Actor only for lawful purposes and public data you have a legitimate reason to process. You are responsible for complying with applicable platform terms, privacy rules, and local law.

# Actor input Schema

## `accounts` (type: `array`):

Add 1–100 public Instagram usernames, @handles, or profile URLs. Duplicate forms of the same username are checked once. Free-plan runs check up to 5 accounts; paid plans check up to 100.

## `monitorKey` (type: `string`):

Use the same stable name on later runs to compare with this monitor's saved observations. Use a different name for an independent history.

## Actor input object example

```json
{
  "accounts": [
    "patagonia",
    "https://www.instagram.com/natgeo/"
  ],
  "monitorKey": "competitor-watch"
}
```

# Actor output Schema

## `results` (type: `string`):

One Dataset item per successfully persisted account observation. Each item is one completed-check billing unit.

## `spreadsheetExport` (type: `string`):

Flat count and delta fields suitable for CSV and spreadsheet workflows.

## `runSummary` (type: `string`):

Completion counts, skips, charge-limit state, and customer-safe account errors.

# 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 = {
    "accounts": [
        "patagonia",
        "https://www.instagram.com/natgeo/"
    ],
    "monitorKey": "competitor-watch"
};

// Run the Actor and wait for it to finish
const run = await client.actor("data-slayer/instagram-follower-count-growth-monitor").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 = {
    "accounts": [
        "patagonia",
        "https://www.instagram.com/natgeo/",
    ],
    "monitorKey": "competitor-watch",
}

# Run the Actor and wait for it to finish
run = client.actor("data-slayer/instagram-follower-count-growth-monitor").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 '{
  "accounts": [
    "patagonia",
    "https://www.instagram.com/natgeo/"
  ],
  "monitorKey": "competitor-watch"
}' |
apify call data-slayer/instagram-follower-count-growth-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,data-slayer/instagram-follower-count-growth-monitor"
        }
    }
}
```

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/eF8MmLgNRld1mMZdj/builds/TrPdWTXKBWPaSbjpi/openapi.json
