Instagram Bot Detector
Pricing
from $1.00 / 1,000 results
Instagram Bot Detector
Instantly analyze Instagram profiles to detect fake followers, bot accounts, and artificial influencers. Get a precision 0-1 Bot Score based on engagement, ratios, and behavioral signals.
Pricing
from $1.00 / 1,000 results
Rating
5.0
(1)
Developer

Louis Deconinck
Actor stats
1
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Instagram Bot Detector is an Apify Actor that analyzes Instagram profiles to detect bot accounts using multiple signals like follower ratios, username patterns, engagement metrics, and profile completeness.
๐ฏ Why detect Instagram bots?
Use cases:
- Influencer Verification - Verify that influencer accounts have real, engaged followers before partnerships
- Community Moderation - Identify and filter out bot accounts from your Instagram followers
- Competitor Analysis - Check if competitors are using bots to inflate their follower counts
- Account Auditing - Audit your own followers to understand the quality of your audience
- Research - Study bot patterns and behavior on social media platforms
โจ What can Instagram Bot Detector do?
This Actor allows you to:
- Analyze multiple profiles - Process multiple Instagram usernames or URLs in a single run
- Calculate bot scores - Get a 0-1 score indicating how likely an account is to be a bot
- Detect fake influencers - Identify accounts with bought followers through engagement analysis
- Analyze posting patterns - Detect automated posting through timing analysis
- Handle private accounts - Gracefully handle private accounts with adjusted scoring
๐ How to detect Instagram bots?
- Make a free Apify account here: https://console.apify.com/sign-up
- Click on "Try for free"
- Enter Instagram usernames (e.g.,
instagram,therock) or profile URLs (e.g.,https://instagram.com/therock) - Click "Start" and wait for the Actor to complete
- Download your data in JSON, CSV or Excel format
๐ก What data will you receive?
Instagram Bot Detector extracts detailed information about each profile:
| Field | Description |
|---|---|
| userId | Instagram user ID |
| username | Instagram username |
| fullName | Display name |
| biography | Profile bio text |
| followers | Number of followers |
| following | Number of accounts following |
| posts | Number of posts |
| isVerified | Whether the account is verified |
| isPrivate | Whether the account is private |
| botScore | Bot likelihood score (0-1, higher = more likely bot) |
| humanScore | Human likelihood score (0-1, higher = more likely human) |
| confidence | Confidence in the bot detection (0-1) |
| isLikelyBot | Boolean indicating if botScore > 0.5 |
๐งฎ How the scoring algorithm works
The bot detection algorithm analyzes multiple signals from an Instagram profile and combines them into a single botScore (0-1). Higher scores indicate a higher likelihood the account is a bot.
Scoring methodology
- Individual signal scores - Each profile characteristic is evaluated and scored from 0 (not suspicious) to 1 (highly suspicious)
- Weighted combination - Scores are combined using weighted averages, with stronger bot indicators having higher weights
- Fatal flags - Certain conditions (like verified accounts) immediately classify an account as human
- Private account handling - Content-based scores are set to
nullfor private accounts since the data isn't accessible
Signal weights
| Signal | Weight | Description |
|---|---|---|
| ratioScore | 2.0 | Follower/following ratio is the strongest indicator |
| fakeInfluencerScore | 1.5 | Bought followers detection |
| postsScore | 1.5 | No posts is very suspicious |
| profilePicScore | 1.5 | Default avatar is a strong signal |
| spamScore | 1.3 | Spammy bio/URL content |
| biographyScore | 1.2 | Empty biography |
| usernameScore | 1.0 | Random/suspicious username patterns |
| engagementScore | 1.0 | Low engagement relative to followers |
| postTimingScore | 1.0 | Burst posting patterns |
| followersScore | 0.7 | Low follower counts |
| followingScore | 0.7 | High following counts |
| fullNameScore | 0.6 | Random/gibberish display names |
| highlightsScore | 0.5 | No story highlights |
| accountAgeScore | 0.5 | Recently joined accounts |
| accountTypeScore | 0.3 | Personal vs business accounts |
| verifiedScore | 0 (fatal) | Verified = definitely human |
๐ Output field reference
Profile information
| Field | Type | Description |
|---|---|---|
userId | string | Instagram's internal user ID |
username | string | The account's handle (without @) |
fullName | string | Display name shown on profile |
profilePicUrl | string | URL to the profile picture |
biography | string | Bio text (may be empty) |
externalUrl | string | null | Website link in profile |
followers | number | Total follower count |
following | number | Number of accounts being followed |
posts | number | Total number of posts |
isVerified | boolean | Blue checkmark verification status |
isBusinessAccount | boolean | Business account type |
isProfessionalAccount | boolean | Creator/professional account type |
isPrivate | boolean | Whether the account is private |
highlightReelCount | number | Number of story highlights |
hasClips | boolean | Whether account has Reels |
defaultProfilePic | boolean | true if using Instagram's default avatar |
Computed metrics
| Field | Type | Description |
|---|---|---|
followerFollowingRatio | number | followers / following - Influencers typically have high ratios, mass-follow bots have very low ratios |
usernameEntropy | number | Shannon entropy of username (0-1) - Higher values indicate more random/generated usernames |
averageEngagementRate | number | null | (avg likes + comments) / followers * 100 - Percentage engagement per post. null if no posts |
postTimingVariance | number | null | Variance in hours between posts - Low variance with short gaps suggests automation |
Individual scores (0-1, higher = more suspicious)
| Field | Description | How it's calculated |
|---|---|---|
profilePicScore | Default profile picture | 1 if using default Instagram avatar, 0 otherwise |
biographyScore | Empty biography | 1 if bio is empty/whitespace, 0 otherwise |
postsScore | No posts | max(0, 1 - posts ร 0.1) - Reduced by 70% for recently joined accounts. null for private accounts |
highlightsScore | No story highlights | 1 if no highlights, 0 otherwise. null for private accounts |
followersScore | Low follower count | max(0, 1 - logโโ(followers + 1) / 3) - Logarithmic scale where 1000+ followers โ 0 |
followingScore | High following count | min(1, logโโ(following + 1) / 3) - Logarithmic scale where 1000+ following โ 1 |
ratioScore | Suspicious follower/following ratio | Mass-follow bots have ratio < 0.1 โ score 1.0. Private accounts get 70% reduction |
usernameScore | Suspicious username | Combines digit ratio, long number sequences, consecutive special characters (__, ..), leading/trailing digits |
accountAgeScore | Recently joined | 1 if is_joined_recently flag is true, 0 otherwise |
accountTypeScore | Personal account | 0 for business/professional accounts, 0.3 for personal accounts |
verifiedScore | Not verified | 0 if verified (triggers "definitely human"), 1 otherwise |
postTimingScore | Burst posting pattern | Based on gaps between posts - Many posts within 30 minutes indicates automation. null if < 2 posts |
engagementScore | Low engagement | 1 - logโโ(engagement_rate ร 10 + 1) / 3 with bonuses for high absolute engagement. null if no posts |
spamScore | Spammy content | Detects spam keywords (crypto, dm for, follow4follow) and high-risk URLs (Telegram, URL shorteners) |
fullNameScore | Random/gibberish name | High entropy + no normal structure = suspicious. International names (CJK, Cyrillic, etc.) get benefit of the doubt |
fakeInfluencerScore | Bought followers | High follower ratio + ultra-low engagement (< 0.1%) โ likely bought followers |
Final bot detection
| Field | Type | Description |
|---|---|---|
botScore | number | Final weighted bot likelihood score (0-1). Higher = more likely a bot |
humanScore | number | 1 - botScore. Convenience field for human likelihood |
confidence | number | Confidence in the detection (0-1). Based on: (1) how many signals were available, (2) how extreme the score is |
isLikelyBot | boolean | true if botScore > 0.5 |
Output example
{"userId": "77183297419","username": "minajjjray","fullName": "minajjjray","profilePicUrl": "https://instagram.fbkk12-2.fna.fbcdn.net/v/t51.2885-19/573323465_1219825463302212_7278921664109726296_n.png?stp=dst-jpg_e0_s150x150_tt6&cb=8438d1d6-849f285f&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xNTAuYzIifQ&_nc_ht=instagram.fbkk12-2.fna.fbcdn.net&_nc_cat=1&_nc_oc=Q6cZ2QEZpDwos_dxCnk-1sN_wEAAfF2BLdpd1rVj8A32fUX-lyV9qKE9jfh1hy_G9_6qzYE74I3fFVvDvTi-zW2J-6TR&_nc_ohc=k4JGjKyu-qYQ7kNvwEHdC5N&_nc_gid=vjf5WU0qwnJiIGlrWluAkg&edm=AJ1X7eQBAAAA&ccb=7-5&ig_cache_key=YW5vbnltb3VzX3Byb2ZpbGVfcGlj.3-ccb7-5-cb8438d1d6-849f285f&oh=00_AfkLbbGdNCxxeSmBSf5GUlrzxqKgKlbhRRnVWkKVHs5AgA&oe=694380AA&_nc_sid=1cea78","biography": "","externalUrl": null,"followers": 8,"following": 29,"posts": 0,"isVerified": false,"isBusinessAccount": true,"isProfessionalAccount": true,"isPrivate": false,"highlightReelCount": 0,"hasClips": false,"defaultProfilePic": true,"followerFollowingRatio": 0.27586206896551724,"usernameEntropy": 0.7966576244513051,"averageEngagementRate": null,"postTimingVariance": null,"profilePicScore": 1,"biographyScore": 1,"postsScore": 1,"highlightsScore": 1,"followersScore": 0.6819191635202251,"followingScore": 0.4923737515732208,"ratioScore": 0.8,"usernameScore": 0,"accountAgeScore": 0,"accountTypeScore": 0,"verifiedScore": 1,"postTimingScore": null,"engagementScore": null,"spamScore": 0,"fullNameScore": 0.3,"fakeInfluencerScore": 0,"botScore": 0.5490229353808581,"humanScore": 0.4509770646191419,"confidence": 0.5592183483046865,"isLikelyBot": true}
๐ฅ Input
The Actor accepts these input parameters:
usernames(array, required): List of Instagram usernames (e.g.,instagram,@therock) or profile URLs (e.g.,https://instagram.com/therock) to analyze for bot detection.
Input example
{"usernames": ["instagram","therock","https://instagram.com/cristiano"]}
๐ฐ How much does it cost to detect Instagram bots?
This actor is extremely cost-effective. Check the "Pricing" tab for more details.
With Apify's free tier, you get $5 of platform credits monthly for free, which you can use to test this actor for free.
Do you need to analyze more profiles? Upgrade to a paid plan which includes more platform credits and discounted pricing.
Tips:
- Provide multiple usernames in your input, that way you only pay the actor start cost once.
- If you are doing a large run, consider increasing the RAM used per run to analyze faster. When doing a small run decrease the RAM used to reduce the actor start costs.
- Upgrade to a higher plan to get discounted pricing. Link: https://apify.com/pricing
๐ Integrate with your workflows
This Actor integrates seamlessly with:
- Automation platforms - Build no code workflows with Make.com, n8n, and Zapier
- Webhooks - Trigger actions when analysis completes through webhooks
- Schedulers - Run regularly to monitor follower quality with Apify's Scheduler
- API - Start runs and access data programmatically with the Apify API
- Google Sheets - Export directly to spreadsheets
๐ฅ Who made this Actor?
Gordian is a specialised Apify web scraping agency founded by Louis Deconinck.
Louis is a top 1% Apify developer, Oxford University IT graduate, and creator of 70+ scrapers used by 1,000+ data professionals every month. He has scraped 10,000,000+ pages bypassing the most advanced anti-scraping protections.
- Apify AI Agent Hackathon Winner
- 300+ contributions in Apify Discord
- Former senior data engineer in EU banking
Looking for a custom data solution? Get in touch.
๐ค More excellent Apify Actors by us
- Instagram Profile Scraper - Scrape Instagram profile data
- Instagram Story Scraper - Download Instagram stories with captions
- Skool Scraper - Scrape Skool community data
โ FAQ
Is it legal to scrape Instagram?
Yes, web scraping publicly available data is legal. This scraper only extracts information that is publicly visible.
For more information on web scraping legality, read this blog post: Is web scraping legal?
How accurate is the bot detection?
The bot detection uses multiple signals and provides a confidence score. Accounts with higher confidence scores and extreme bot scores (close to 0 or 1) are more reliable. Verified accounts are automatically marked as human.
Can I export data to CSV or Excel?
Yes, Apify supports exporting dataset results in multiple formats: JSON, CSV, Excel (XLSX), HTML, XML and RSS.
What happens if Instagram changes their API?
We monitor the API structure and update the Actor when changes occur. If you encounter issues, please report them in the Issues tab.
How does the scoring work?
The Actor calculates individual scores (0-1) for various signals like profile picture, username patterns, follower ratios, and engagement. These are combined using weighted averages to produce a final bot score. Private accounts receive special handling since some data isn't accessible.
How do I get started?
Make a free Apify account to claim your free $5 usage and start detecting bots today by clicking "Try for free".