Instagram Follower Tracker avatar

Instagram Follower Tracker

Pricing

from $1.68 / 1,000 item processeds

Go to Apify Store
Instagram Follower Tracker

Instagram Follower Tracker

Track public Instagram follower and following counts across runs with timestamped previous values, absolute changes, and percentage changes.

Pricing

from $1.68 / 1,000 item processeds

Rating

0.0

(0)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

6 days ago

Last modified

Share

Track public Instagram follower and following counts across repeated runs. This Instagram follower tracker saves one successful snapshot per profile, then exports previous values, absolute changes, percentage changes, and observation timestamps on later runs.

Use it for scheduled creator monitoring, competitor audience reporting, campaign checks, and spreadsheet or data-pipeline exports. It measures counts, not the identities of individual followers or unfollowers.

What does this Actor do?

For each supplied public Instagram profile, the Actor:

  1. validates and deduplicates usernames and profile URLs;
  2. captures current follower, following, and post counts;
  3. loads the last successful snapshot in the same state namespace;
  4. calculates absolute and percentage changes;
  5. writes one typed dataset row;
  6. replaces the saved baseline only after a successful result.

The first observation has changeState: "first_seen" and null change fields. Later observations are changed or unchanged.

Who is it for?

  • Influencer marketing teams comparing creator audience growth.
  • Social media managers checking owned profiles on a schedule.
  • Competitive intelligence teams monitoring public competitor accounts.
  • Agencies exporting repeatable client reports.
  • Analysts and developers feeding timestamped Instagram counters into BI tools.

Why use this Instagram tracker?

A normal profile scraper gives you current counters. This Actor adds the monitoring state required to answer what changed since the previous successful run.

  • No Instagram login or cookies supplied by you.
  • Public usernames, @handles, and profile URLs are supported.
  • Task runs are isolated automatically by Apify Task ID.
  • Direct/API runs can set a stable stateNamespace.
  • Failed profiles do not overwrite a healthy baseline.
  • Useful rows include both current and previous values.

What data can I export?

FieldMeaning
instagramUserIdStable Instagram account ID
usernameUsername at observation time
displayNamePublic display name
profileUrlCanonical profile URL
followersCountCurrent follower count
followingCountCurrent following count
postsCountCurrent post count when available
previousFollowersCountPrevious successful follower count
previousFollowingCountPrevious successful following count
followersChangeCurrent minus previous followers
followersChangePercentPercentage follower change
followingChangeCurrent minus previous following
followingChangePercentPercentage following change
observedAtCurrent snapshot timestamp
previousObservedAtPrevious snapshot timestamp
changeStatefirst_seen, changed, or unchanged
stateNamespaceSnapshot-history namespace

You can download the default dataset as JSON, CSV, Excel, XML, RSS, or HTML through Apify.

How to track Instagram follower changes

  1. Open the Actor input.
  2. Add one or more public usernames or profile URLs under Instagram profiles.
  3. Run once to establish the baseline.
  4. Run again later with the same namespace to calculate changes.
  5. For recurring monitoring, save the input as an Apify Task and add a daily or weekly Schedule.
  6. Export the dataset or connect it to your automation.

For scheduled Tasks, leave stateNamespace empty unless you intentionally want several Tasks to share a named history. The Actor automatically uses the stable Task ID.

Input parameters

ParameterTypeDefaultDescription
profilesstring[]nasa, natgeoPublic usernames, @handles, or profile URLs; required
stateNamespacestringTask ID or defaultStable history namespace, 1–64 letters, numbers, _, or -
resetBaselinebooleanfalseIgnore old values and save a fresh baseline
maxProfilesinteger100Maximum unique profiles processed, up to 500
maxRetriesinteger2Lower-cost structured-route attempts before bounded recovery

Duplicate usernames are processed once. Post and Reel URLs are rejected because this Actor accepts profile pages only.

Example input

{
"profiles": [
"nasa",
"@natgeo",
"https://www.instagram.com/apify/"
],
"stateNamespace": "weekly-creator-watch",
"maxProfiles": 100,
"maxRetries": 2
}

To deliberately restart history:

{
"profiles": ["nasa", "natgeo"],
"stateNamespace": "weekly-creator-watch",
"resetBaseline": true
}

Example output

A later successful run produces a row like this:

{
"instagramUserId": "17841401474538262",
"username": "nasa",
"displayName": "NASA",
"profileUrl": "https://www.instagram.com/nasa/",
"isVerified": true,
"isPrivate": false,
"followersCount": 104353012,
"followingCount": 91,
"postsCount": 4923,
"previousFollowersCount": 104353016,
"previousFollowingCount": 91,
"followersChange": -4,
"followersChangePercent": 0,
"followingChange": 0,
"followingChangePercent": 0,
"observedAt": "2026-09-16T14:08:11.000Z",
"previousObservedAt": "2026-09-16T14:07:02.000Z",
"changeState": "changed",
"stateNamespace": "weekly-creator-watch"
}

Small percentage changes can round to 0 because percentages are reported to three decimal places. Baseline rows have null previous/change fields.

How much does it cost to track Instagram follower changes?

The Actor uses pay-per-event pricing:

  • one Start charge per run;
  • one Item processed charge per successful profile snapshot;
  • no item charge for a profile that cannot produce a useful snapshot.

The exact price depends on your Apify plan and is shown in Console before a run. The active BRONZE rate is $0.0028 per successful profile plus a $0.004 start event:

Successful profilesBillable events
11 start + 1 item
101 start + 10 items
1001 start + 100 items

Multiply the item count by your plan's live item rate, then add the one-time start event. These examples exclude any taxes, refunds, fraud adjustments, disputes, corrections, or clawbacks. Check the live Console pricing panel for the applicable tier before running.

Scheduling and history isolation

The best monitoring workflow is an Apify Task:

  1. create a Task from a working Actor input;
  2. run it once to establish a baseline;
  3. attach an Apify Schedule;
  4. keep the profile list stable or interpret new profiles as first_seen;
  5. connect completed datasets to your reporting destination.

Each Task receives its own automatic namespace. When you run the Actor directly from an API client, use a unique stable stateNamespace for each monitor. Reusing the same namespace intentionally shares baselines for matching usernames.

Reliability, retries, and limits

Instagram is a changing third-party source. The Actor first tries a lightweight structured route, then uses a bounded US residential profile-page recovery when required. A recovery attempt can take longer and transfer more data.

  • Maximum input size: 500 profile entries.
  • Processing is conservative to reduce source blocking.
  • Only public profile metadata is supported.
  • Private profiles may expose counters but no private content is accessed.
  • Deleted, renamed, unavailable, or blocked profiles can fail.
  • Partial batches preserve successful rows.
  • A run fails if every requested profile fails.
  • A failed fetch does not replace the previous successful snapshot.

Export to Google Sheets or a data pipeline

For a spreadsheet workflow, schedule the Task and connect the run dataset through Apify Integrations, Make, Zapier, or a webhook. Keep username, observedAt, followersCount, and followersChange as the core reporting columns.

For a warehouse workflow, fetch every run's dataset after completion and append rows keyed by:

stateNamespace + username + observedAt

This gives you longer-term history while the Actor's own state store retains only the latest successful baseline needed for the next comparison.

Run with the Apify API

cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~instagram-follower-change-monitor/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"profiles": ["nasa", "natgeo"],
"stateNamespace": "api-weekly-watch"
}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/instagram-follower-change-monitor').call({
profiles: ['nasa', 'natgeo'],
stateNamespace: 'js-weekly-watch',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("automation-lab/instagram-follower-change-monitor").call(
run_input={
"profiles": ["nasa", "natgeo"],
"stateNamespace": "python-weekly-watch",
}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Use with MCP and AI agents

Claude Code

Add the Actor to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/instagram-follower-change-monitor"

Claude Desktop, Cursor, and VS Code

Use this HTTP MCP configuration in Claude Desktop, Cursor, or VS Code:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/instagram-follower-change-monitor"
}
}
}

Example prompts:

  • “Create a baseline for NASA and National Geographic Instagram follower counts.”
  • “Run my weekly creator monitor and summarize absolute follower changes.”
  • “Return only profiles whose follower count changed since the last snapshot.”

The Actor returns all useful snapshots; your agent can filter changeState or followersChange afterward.

Legality and responsible use

Use the Actor only for lawful purposes and public information. Respect Instagram's terms, applicable privacy and database laws, contractual obligations, and the rights of profile owners. Do not use count changes to harass, discriminate against, or make sensitive decisions about individuals.

This Actor does not log in, bypass private-account controls, or return individual follower identities. It is independently operated and is not affiliated with or endorsed by Instagram or Meta.

Troubleshooting

Why are all change fields null?

This is the first successful observation in that namespace, or resetBaseline was enabled. Run later with the same profile and namespace.

Why did a profile fail while other rows succeeded?

The account may be unavailable, renamed, rate-limited, or temporarily blocked by Instagram. Successful profiles are preserved. Retry later rather than repeatedly launching identical runs.

Why did my history restart?

Check whether you changed stateNamespace, switched to another Task, or enabled resetBaseline. Each Task is isolated automatically.

Why is the percentage zero when the absolute change is not zero?

The percentage is rounded to three decimal places. A change of a few followers on a very large account can round to 0.

FAQ

Does it show who followed or unfollowed?

No. It reports follower and following count changes, not lists of people.

Can I monitor private accounts?

Only public counters that Instagram exposes may be returned. The Actor never accesses private posts or follower lists.

Can I monitor hundreds of profiles?

Yes, up to 500 entries per run, but begin with a smaller batch and schedule conservatively because source availability and runtime can vary.

Does the Actor keep full history?

The default dataset stores each run's exported rows. The internal state store keeps only the latest successful baseline per namespace and username. Append run datasets externally for long-term analysis.

Are profile URLs supported?

Yes. Use a direct instagram.com/<username>/ profile URL. Post, Reel, Stories, Explore, and account-management URLs are rejected.

Support

If Instagram changes its public responses or a valid public profile repeatedly fails, open an issue from the Actor page with a non-sensitive example input and the run URL. Do not include passwords, cookies, or private account data.