Instagram Competitor Monitor avatar

Instagram Competitor Monitor

Pricing

from $5.00 / 1,000 competitor checkeds

Go to Apify Store
Instagram Competitor Monitor

Instagram Competitor Monitor

Track up to 20 Instagram accounts and see what changed since the last run. You get one row per account. It shows followers, following and posts gained or lost. It also shows bio and verification changes. You get the exact time window too.

Pricing

from $5.00 / 1,000 competitor checkeds

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Instagram Competitor Monitor: what changed on a rival account since your last run

List the Instagram accounts you want to watch and get one row per account back, with the current follower, following and post counts and the change since the last time you ran it. Bio edits and a gained or lost blue tick are flagged too, with the exact window the comparison covers.

The first run on any handle has nothing to compare against, so it writes the baseline and every delta comes back null with isFirstRun: true. Run it a second time and the numbers start meaning something. That is not a limitation you can configure away, it is just how a before-and-after works.

Input1 to 20 Instagram handles, @handles or profile URLs
OutputOne row per account, with the change since last time
Ceiling15 accounts checked per run
Account neededNone from you
Price$0.005 per account checked, flat on every plan

๐Ÿ” What Instagram Competitor Monitor does

Each run reads the public profile of every handle you gave it, compares it against the snapshot from your previous run, writes the row, and then stores the new snapshot for next time. The history lives in a key-value store on your Apify account, so your baselines are yours and nobody else's runs touch them.

Put it on a daily schedule and the rows become a time series. hoursSinceLastCheck and previousCheckedAt sit on every row, so you always know what window a delta actually covers rather than assuming it was 24 hours.

Nothing to log into. The same account written two ways in one list is checked once and billed once.

๐Ÿ“ฅ What you give it

There is one field. That is the whole input.

{
"competitors": ["nasa", "@natgeo", "https://www.instagram.com/nike/"]
}
FieldDefaultWhat it is
competitorsnone1 to 20 entries. A bare handle, an @handle or a full profile link, mixed freely. Duplicates are collapsed.

Post and reel links are not accounts. Paste one and you get an uncharged row saying so, and the rest of your list carries on.

Start a run with nothing filled in and you get one labelled sample row showing what a second-run row looks like. That row is not charged.

๐Ÿ“ค What you get back

A real row from a real run, with one emoji cut out of the bio:

{
"ok": true,
"recordType": "competitor",
"username": "nasa",
"fullName": "NASA",
"isVerified": true,
"isPrivate": false,
"isBusiness": true,
"profileUrl": "https://www.instagram.com/nasa/",
"followers": 104352676,
"following": 91,
"posts": 4928,
"biography": "Making the seemingly impossible, possible. ...",
"externalUrl": "https://www.nasa.gov",
"followersDelta": 7,
"followingDelta": 0,
"postsDelta": 0,
"biographyChanged": false,
"verifiedChanged": false,
"isFirstRun": false,
"hoursSinceLastCheck": 0.02,
"previousCheckedAt": "2026-09-21T01:32:55.336Z",
"checkedAt": "2026-09-21T01:34:02.684Z"
}

That row came from a deliberate back-to-back test, which is why hoursSinceLastCheck is a minute rather than a day. Seven followers in a minute is what a 104-million account does while you look away.

FieldWhat it is
followersDelta, followingDelta, postsDeltaSigned change since your previous run. Negative when the number went down. All null on a first run.
biographyChanged, verifiedChangedtrue when the text or the tick moved between the two runs. null on a first run.
isFirstRuntrue means this run wrote the baseline and there was nothing to compare against.
hoursSinceLastCheck, previousCheckedAtThe window the deltas cover. Read these before trusting a delta.
biography, externalUrlThe current values, so you can see what a flagged change actually says.
followers, following, postsCurrent counts. On a private account these can be null rather than zero.

Nothing is guessed. A field Instagram did not send comes back null.

๐Ÿงพ Reading the output

Three kinds of row land in your dataset, and only the first kind is billed.

RowHow to spot itBilled
An account checkrecordType: "competitor"yes
The sample row_sample: true, and only on a run with no handlesno
A diagnosticok: false and a codeno

Rows also carry a charged flag. It labels real rows against samples and diagnostics rather than being a receipt, so count your competitor rows if you want to check the bill.

CodeWhat it means
BAD_INPUTNot an account. A post link, or more than 20 entries in the list.
NOT_FOUNDInstagram has no such account any more.
PARTIALThe run stopped before reaching that handle. What arrived is complete and correct.
TIME_BUDGETThe run ran out of time before reaching that handle.
STATE_UNAVAILABLEThe stored history could not be read, so that account was skipped this run.
STATE_NOT_SAVEDThe row was delivered but the new snapshot did not save, so the next run will compare against the older one.
RATE_LIMITEDToo many runs too close together. Space them out.
SERVER_ERROR, NETWORK, CHARGE_ERROR, UNEXPECTED_ERRORSomething that did not fit the list above.

No diagnostic row is billed, and one bad handle does not stop the others.

โ–ถ๏ธ How to run it

  1. Open Instagram Competitor Monitor and click Try for free.
  2. Put the accounts you want to watch into Instagram accounts to monitor.
  3. Click Start. This first run writes the baseline, so the deltas will be empty.
  4. Run it again later, or put it on Apify's scheduler, and the second run onwards carries the changes.
  5. Download the dataset as JSON, CSV or Excel, or read it from the Apify API.

๐Ÿ’ฐ How much does it cost?

$0.005 per account checked, which works out at $5.00 per 1,000 checks. Flat on every Apify plan, no volume tiers.

One charge per account row. The same handle listed twice in one run is billed once. Sample rows and diagnostic rows are not billed, so a dead handle or a run that stops early does not cost you results.

๐Ÿ’ก What people use it for

  • A daily run over a shortlist of rivals, so a follower spike is visible the morning after rather than at the end of the quarter.
  • Catching a bio or link-in-bio change, which is usually the first public sign of a launch.
  • Watching when an account starts or stops posting, through postsDelta.
  • Keeping an honest record of growth claims before a partnership conversation.

๐Ÿšง What it does not do

  • The first run has no deltas. It writes the baseline. You need a second run.
  • The box takes 20 handles, a run checks 15. Anything past that comes back as an uncharged PARTIAL row rather than being quietly dropped. Split a longer watch list across runs.
  • Profile numbers only. No posts, no captions, no engagement, no follower lists.
  • History is keyed by handle. If an account renames itself, it starts over as a new one.
  • Two schedules on the same list will both report, each against its own last run, so the windows overlap and the deltas look wrong. Run one schedule per list.
  • Deleting the key-value store resets every baseline you have built up.
  • Private accounts give you what Instagram gives a stranger, which can mean null counts.
  • No alerting. It writes rows. Wiring a Slack message to a followersDelta threshold is your side.

๐Ÿงญ Which Instagram scraper do you need?

If you wantUse
What changed on a set of accounts since last timeThis one
A full profile read in one goInstagram Profile Scraper
Who follows an accountInstagram Followers & Following Scraper
Their posts and reelsInstagram Scraper
Posts other people made about themInstagram Mentions Scraper

โ“ Questions people ask

Why are all my deltas empty? Because it was the first run for those handles. isFirstRun says so on every row. Run it again and you will get changes.

Where is the history kept? In a named key-value store on your own Apify account, keyed by handle. It is yours, and it persists between runs.

How often should I schedule it? Daily suits most watch lists. hoursSinceLastCheck tells you what each delta actually covers, so an irregular schedule still gives usable numbers.

Can I watch 50 accounts? Not in one run. Split them into separate runs or schedules.

Does it work on private accounts? Partly. You get whatever Instagram shows a stranger, which for some private accounts means the counts come back empty.

Is scraping Instagram legal? This reads public profiles only, never private accounts or messages. Results can still contain personal data, which GDPR and similar laws cover, so have a reason for collecting it. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.

๐Ÿ†˜ If something breaks

Open the Issues tab on the actor page. Send the handles you used and the run ID. The code on the diagnostic row usually explains it on its own.