Blog/Social data
11 min read

Are Instagram Follower and Engagement Trackers Accurate?

Two providers disagreed by 2 followers out of 104 million. The same 12 posts gave 0.096% or 0.334% engagement depending on one undocumented choice.

Are Instagram Follower and Engagement Trackers Accurate?

Copy this line to your agent to pull a profile and its recent posts.

set up https://monid.ai/SKILL.md and use apify /apify/instagram-profile-scraper to read a profile

The worry people bring to this question is that follower counts are made up. On 2026-09-03 two independent providers, asked for the same account minutes apart, returned 104,409,665 and 104,409,667. They differ by two people out of a hundred and four million. The number that turns out not to be trustworthy is the other one, the engagement rate, and the reason has nothing to do with data collection. This guide runs through Monid, the OpenRouter for agent tools.

Do follower counts actually disagree between tools?

Essentially no, and it is worth understanding why before worrying about it.

The measurement

The same public account, two providers, on 2026-09-03:

follower countposts
tikhub104,409,6654,910
apify104,409,6674,910

Two apart on followers, exact agreement on post count.

Why they agree

Because neither is estimating. Instagram publishes the follower count on the profile, and both providers read the same published field. There is no modelling step to disagree about. The gap of two is the account gaining and losing followers during the minutes between the two calls, which is what a live counter does.

What differs is the shape, not the number

tikhub returns Instagram's own internal structure: edge_followed_by: { count: ... }, edge_owner_to_timeline_media: { count: 4910 }, edge_felix_video_timeline: { count: 171 } for Reels. apify returns flat camelCase: followersCount, followsCount, postsCount, verified, plus relatedProfiles and latestPosts.

That is the same portal-model-versus-contact-record distinction we measured on property portals in the MLS guide. The field names tell you whose data model you are reading, not who is more accurate. What an Instagram profile API should return goes through the field set in detail.

So treat follower count as settled

If two independent providers land within two of each other on a nine-figure number, the collection is not your problem. Spend the scepticism where it is warranted.

📖 See also Instagram API: Which One in 2026?

Why does the same data give two different engagement rates?

Because engagement rate is not reported by Instagram. It is computed, and every tool computes it differently while presenting the result as a fact.

The measurement

Taking the twelve most recent posts the profile endpoint returned, covering 2026-08-12 to 2026-09-03, against 104,409,667 followers:

MethodEngagement rate
Mean likes only0.334%
Mean likes plus comments0.336%
Median likes instead of mean0.096%

Same account, same twelve posts, same afternoon. The median version is 3.5 times lower than the mean version, and the only thing that changed is one line of arithmetic that no dashboard shows you.

Where the gap comes from

The spread inside those twelve posts. The best performed 2,433,126 likes; the worst got 40,291. Sixty to one. With a distribution that skewed, the mean is dragged by one or two viral posts and the median describes the typical post, and the two are answering genuinely different questions.

The other choices nobody documents

How many posts. This provider returned twelve. Another returns thirty, another uses a ninety-day window. On an account that posts irregularly, "last 12 posts" and "last 90 days" cover different periods entirely.

Which post types. The sample was 4 images, 5 videos and 3 carousels, and Reels engage differently from feed images. The profile also reported 171 Reels separately from 4,910 timeline posts, so a tool that counts one and not the other gets a different answer.

Which denominator. Followers is the convenient choice and the wrong one conceptually, since a post reaches people who do not follow the account. Reach is the right denominator and is not public.

What that means for comparing creators

Two creators measured by two tools cannot be compared. Two creators measured by one tool can be ranked, as long as you never treat the absolute number as meaningful. That is the practical rule this whole post exists to establish, and it is why vetting an influencer should mean pulling the raw posts rather than reading a score. A worked version of that pull is in profile as structured data in one call.

How do you compute an engagement rate you can defend?

Three steps. The first is free.

For agents

Grab an API key at app.monid.ai, then paste this to your agent and hand it the key:

set up https://monid.ai/SKILL.md

It learns the whole discover, inspect, run workflow itself. More in the agent quickstart.

For humans

npm install -g @monid-ai/cli
monid keys add -k <your-api-key> -l main

Step 1. Pull the profile with its recent posts

What it does. Gets the follower count and the per-post numbers in one call, which is what lets you compute anything yourself.

The endpoints. apify/apify/instagram-profile-scraper, billed per result.

The call.

monid run -p apify -e /apify/instagram-profile-scraper -w -i '{"usernames": ["nasa"]}'

What comes back. The profile fields plus latestPosts, each carrying likesCount, commentsCount, timestamp, type and the caption. type is the field that lets you separate Reels from feed posts, and timestamp is the one that lets you fix a window instead of a post count.

What it costs. A fraction of a cent per result. Current figures at monid.ai/tools.

Step 2. Compute it yourself, and write the definition down

What it does. Turns an incomparable number into a comparable one.

The call. No endpoint:

from statistics import mean, median

def engagement(posts, followers, *, days=30, stat=median, types=None):
    cutoff = now() - timedelta(days=days)
    sample = [p for p in posts
              if p["timestamp"] >= cutoff
              and (types is None or p["type"] in types)]
    if len(sample) < 5:                 # too few to mean anything
        return None
    per_post = [p["likesCount"] + p["commentsCount"] for p in sample]
    return stat(per_post) / followers, len(sample)

Three things this does that a dashboard does not: it fixes a time window rather than a post count, it defaults to the median so one viral post cannot carry the number, and it refuses to answer on a sample of fewer than five.

What comes back. A rate plus the sample size it came from. Always store both; a rate without its n is a number you cannot argue with later.

Step 3. Keep the raw posts

What it does. Makes the analysis re-runnable when you change your mind about the definition.

The call. No endpoint. Store likesCount, commentsCount, timestamp and type per post, not just the computed rate. You will change the definition, and if you only stored the output every historical number becomes incomparable with every new one. This is the same reason the fundamentals guide argues for storing a figure together with the date you fetched it.

Give this to your agent

$Set up https://monid.ai/SKILL.md, and then use Monid to pull the last 30 days of posts for these 20 creators, compute median engagement per follower, and show me the sample size next to each.

What makes a follower count genuinely wrong?

Not collection error. Three other things, in rough order of how often they matter.

The account bought followers

The count is accurate and the audience is not real. This is the failure people mean when they say a tracker is inaccurate, and no amount of better collection detects it, because the followers genuinely exist as accounts. The signal is the ratio: an account with a million followers and 40,000 likes on a typical post has a story to explain.

The count is a snapshot of a moving number

Our two providers differed by two because the number changed between calls. Over a campaign that drift is real, so record the timestamp with the count and compare like for like.

The account changed hands or rebranded

Follower counts survive a pivot. An account with a large audience acquired under a previous identity has a number that describes a past that has nothing to do with the current content.

And one that is a measurement artifact

Instagram itself reports slightly different numbers in different surfaces, and the app has historically rounded large counts in some views. If you are reconciling against what a creator sees in their own app, expect small disagreements that are neither side's fault.

📖 See also Apify Instagram Scraper: What You Actually Get

Which endpoint should I use for which job?

EndpointWhat it doesInputOutputBest forBilling
apify/apify/instagram-profile-scraperProfile plus recent postsUsernamesCounts, verified, latestPosts with likes and commentsComputing engagement yourselfPer result
tikhub profile lookupProfile in Instagram's own shapeUsernameedge_followed_by, media and Reel countsReading the platform's native modelPer call
tikhub followersThe follower listUsername, countFollower records with verified flagsAuditing who actually followsPer call
tikhub related profilesInstagram's own suggestionsUsernameRelated accountsFinding comparable creatorsPer call

Every row was verified with monid inspect on 2026-09-03. The table gives billing shape rather than figures; shape drives design and current numbers live on monid.ai/tools.

The followers row is the one that answers the bought-audience question properly. A count tells you nothing about quality; a sample of the actual follower records, with their verified flags and whether they have profile pictures and posts, tells you a great deal.

When should you not trust any of this?

Three cases.

You need reach or impressions. Those are private analytics, visible only to the account owner and through Instagram's own Graph API with the creator's permission. Any public tool quoting reach is inferring it, and that inference is a model, not a measurement.

The creator has given you their own analytics. Then use those. First-party numbers include reach, saves, shares and profile visits, none of which are public, and they are the right basis for a paid deal.

You are making a decision the number cannot carry. A 0.096% or 0.334% engagement rate is not the difference between a good and bad partnership, and treating a derived metric as a threshold is how people end up rejecting creators for arithmetic reasons.

And the disclosure: this is Monid's blog and we sell per-call access to both providers compared here. The finding is that they agree, which is not a differentiator for either of them, and the useful recommendation in this article is a function you write yourself rather than anything we bill for.

Conclusion

Follower counts are fine. Two independent providers landed two apart on a hundred and four million, and both reported exactly 4,910 posts, because both are reading a number Instagram publishes rather than estimating one.

Engagement rate is the problem, and it is a definition problem rather than a data problem. The same twelve posts on the same afternoon produced 0.096% or 0.334% depending on whether you take the median or the mean, a 3.5x difference driven by a single viral post in a sample where the best and worst were sixty to one apart.

So compute it yourself against a fixed time window, default to the median, record the sample size beside every rate, and keep the raw posts so you can change your mind later. And never compare a rate from one tool against a rate from another, because you are comparing two undocumented definitions rather than two creators.

Free next step: pull one account you know well and compute both the mean and the median engagement rate. If they are close, the account posts consistently. If they are far apart, you have just learned something the dashboard number was hiding. Start at monid.ai.

FAQ

What counts as a good Instagram engagement rate?

The commonly quoted bands, roughly 1 to 3% as healthy and above 6% as strong, come from studies of small and mid-size accounts and do not transfer to large ones. Engagement falls as audience grows, so the account measured here at 0.096% to 0.334% is unremarkable for its size and would be alarming at 10,000 followers. Compare within a size bracket, and compare against other accounts you measured the same way, because a benchmark computed under someone else's definition is not a benchmark.

Should you use reach instead of followers as the denominator?

Conceptually yes, since a post is seen by people who do not follow the account and not seen by most who do, which makes followers a poor proxy for the audience actually reached. Practically you cannot, because reach is private analytics available only to the account owner. Following-based rates are what public tools compute, and the honest framing is that they measure engagement relative to audience size rather than engagement relative to who saw the post. If a creator shares their own reach figures for a paid deal, use those instead.

Can you detect bought followers from public data?

Partly, and the useful signals are ratios rather than any single number. A large audience with disproportionately low likes and comments is the first flag. Pulling a sample of the actual follower records and looking at how many have profile pictures, posts and any verified presence is the second, and it is far more informative than any aggregate score. What you cannot do from public data is prove it, so treat the output as a reason to ask questions rather than a verdict.

How often do follower counts change?

Continuously on a large account, which is why two calls minutes apart differed by two. For a small account the number can sit still for days. The practical consequence is that a count is only meaningful with the moment it was taken attached, and that any comparison across accounts should use counts pulled in the same run rather than assembled over a week. Daily is a sensible cadence for tracking growth, and anything faster is measuring noise, the same per-field reasoning as the enrichment refresh guidance.

Last updated September 2026.

instagram engagement ratefollower count accuracyinfluencer vettingsocial datainstagram api