Check whether an Instagram account's followers and engagement are real. Get engagement rate, median likes and comments, follower-to-following ratio and whether engagement is rising or falling across recent posts. One handle in, one row out. No login, no API key.
First build. One row per public Instagram account: engagement rate, median likes and comments,
follower-to-following ratio, the trend across the account's recent posts, and the dates those
posts cover. A verdict trails the numbers.
Pinned posts and other accounts' collaboration posts are left out of every number, and the row
counts both.
No trend below five analysed posts, and confidence is never high below five.
An account that is private, that the profile fetch does not return, or that has too few posts for
a verdict is reported with the reason and is not charged.
Run 16, 2026-09-11, still not pushed
The follower-tier bands are measured. Each is the 10th to 90th percentile of engagement rate
across 416 accounts read on 2026-09-11, so about 1 in 10 accounts in that sample sits below each
floor. They replace the widely quoted industry ranges, which read 16 of 16 large public brands as
SUSPICIOUS. tests/test_tier_bands.py recomputes the table from the saved rows and fails if it
drifts. A verdict resting on the band still carries confidence: "low".
The row carries the fields it was computed from: accountId, and sourcePosts, one entry per
post the fetch returned with its date, counts and owner as received and how it was used. The
fetch's own dataset is deleted after Apify's retention period, and the row now says so.
An age-restricted account is reported with Instagram's reason, and a not_found row says no
account was found. Neither is charged.
Every row says the profile fetch chooses the account, and can return a different one than was
meant.
Proposed start price $0.01, down from $0.05. The per-account price stays $0.05. Nothing is set
in Console.
Run 18, 2026-09-11, still not pushed
Brandon's decisions 1 to 5 from run 16. Every number re-derives from the same three fixtures.
AUTHENTIC reads basis: "tier", confidence: "low". It read posts/high on 308 of 389
rows, NASA's included, while it cleared a floor measured on other accounts. posts is removed from
the basis list. Every row now reads confidence: "low".
The top tier is split at 10M followers. Six rows, not five.
The band sample needs three analysed posts, the verdict floor. 419 accounts, up from 416,
because the next change brought accounts back.
The follow ratio is measured per tier. The recalled 1.2 is gone. Under 10K the threshold is
0.87, the measured 10th percentile. From 10K up the 10th percentile is 7.78 or higher, which is not
following back, so those tiers have no ratio signal and LIKELY_INFLATED cannot be reached there.
Only a leading out-of-order run is pinned. 36 of the 38 accounts the old order guard refused
are read now. A list is still refused when more posts are guessed pinned than are left below them:
2 of 493.
Re-run over all 493 accounts: flagged went from 56 of 389 (14.4%) to 51 of 419 (12.2%). Under
10K it went from 32% to 20%.
Run 19, 2026-09-11, still not pushed
Brandon's decisions 1 and 2 from run 18.
An account with no follower count reads NO_FOLLOWER_COUNT and is not charged. It read
AUTHENTIC with nothing compared. None of the 493 measured accounts reach it.
The README says why accounts above 10K followers get no follow-ratio signal: none of the 337 in
the sample follows more accounts than follow it, and the lowest ratio among them is 1.52.