Instagram Followers Count Bulk Scraper
Pricing
from $1.50 / 1,000 profile scrapeds
Instagram Followers Count Bulk Scraper
Bulk-check Instagram follower counts for hundreds of public usernames. Returns followers, posts, display name, verification badge, profile picture, and a per-username status without login. Cheap and fast.
Pricing
from $1.50 / 1,000 profile scrapeds
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
0
Bookmarked
280
Total users
19
Monthly active users
a day ago
Last modified
Categories
Features
Share
Instagram Followers Count Bulk Scraper for Profile Stats
Look up Instagram follower counts for hundreds of usernames in a single run. Get followers, posts count, verification status, display name, and profile photo — no login, no API key, no browser required.
Built on Instagram's public profile embed for low-overhead bulk checks. Most successful lookups are fast; transient Instagram throttling can add bounded retry delays.
Server API: instant profile counts
This Actor is also a Server Actor (formerly Standby). Besides normal runs, it answers short HTTP requests for one profile or a small batch, without starting a run for each one. Copy the server URL from the Actor's Server tab (do not build it from the Actor name) and authenticate with your Apify token, preferably as Authorization: Bearer <token> so it stays out of URLs and logs. Normal runs remain the way to check large lists, save datasets, schedule and export.
| Method and path | Input | Output and charge |
|---|---|---|
GET / | None | ready, routes and limits; no lookup and no charge |
POST /profiles | username or usernames (1–3 unique usernames, @usernames or instagram.com profile URLs) | { "ok": true, "count", "results" } with the same profile fields as the dataset. Each found profile is charged with the usual profile-scraped price (FREE $0.006, BRONZE $0.003, SILVER $0.002, GOLD $0.0015, PLATINUM $0.001, DIAMOND $0.0008); no start fee |
- Limits: request body 4 KiB, response 64 KiB, 90 seconds per request including charging, 4 concurrent requests per run. Apify starts more runs for more traffic.
- A request where some profiles are found returns
200with all rows; rows for failed profiles carry anerrorand are not charged.countis the number of rows; found profiles are the rows witherror: null. - A request where nothing is found returns the error that explains it and is free.
- Typical latency: about 5 seconds for one profile on a warm server, 1–2 seconds more on a cold start; Instagram throttling can stretch it up to the 90-second limit.
Errors use { "ok": false, "error": { "code": "...", "message": "...", "retryable": false } }. retryable is true for 429, 502, 503 and 504.
| HTTP status | error.code | Meaning |
|---|---|---|
| 400 | INVALID_INPUT, MALFORMED_JSON, INVALID_PROFILE, DUPLICATE_PROFILE | Missing or invalid input, malformed JSON, or a profile listed twice |
| 402 | SPENDING_LIMIT_REACHED | Your spending limit rejected the charge; no results and no charge |
| 403 | PROFILE_UNAVAILABLE | Every requested profile is private or unavailable |
| 404 | PROFILE_NOT_FOUND, NOT_FOUND | No requested profile exists, or the route is unknown |
| 405 | METHOD_NOT_ALLOWED | Use POST for /profiles |
| 413 | REQUEST_TOO_LARGE, BATCH_TOO_LARGE, RESPONSE_TOO_LARGE | Body over 4 KiB, more than 3 profiles, or a response over 64 KiB |
| 415 | UNSUPPORTED_MEDIA_TYPE | Send Content-Type: application/json |
| 429 | UPSTREAM_THROTTLED | Instagram throttled every requested profile |
| 502 | UPSTREAM_ERROR, CHARGE_FAILED | No useful result from Instagram, an unexpected failure, or the charge failed |
| 503 | OVERLOADED, SHUTTING_DOWN | The run is busy or stopping; retry shortly |
| 504 | TIMEOUT, UPSTREAM_TIMEOUT | The 90-second limit passed, or Instagram timed out for every profile |
In Console or Store, open the Actor's Server tab, expand POST /profiles, choose Try it out, enter { "username": "nasa" } and execute it. The browser adds your signed-in authentication.
cURL (SERVER_URL is the URL from the Server tab)
curl -sS -X POST "$SERVER_URL/profiles" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"username":"nasa"}'
JavaScript
const response = await fetch(`${process.env.SERVER_URL}/profiles`, {method: 'POST',headers: {Authorization: `Bearer ${process.env.APIFY_TOKEN}`,'Content-Type': 'application/json',},body: JSON.stringify({ usernames: ['nasa', 'natgeo'] }),});const profileResponse = await response.json();if (!response.ok) throw new Error(profileResponse.error.message);console.log(profileResponse.results.filter((profile) => profile.error === null));
Python
import osimport requestsresponse = requests.post(f"{os.environ['SERVER_URL']}/profiles",headers={"Authorization": f"Bearer {os.environ['APIFY_TOKEN']}"},json={"username": "nasa"},timeout=100,)response.raise_for_status()print(response.json()["results"])
Best first run: validate 10-25 usernames
Paste a short list of public Instagram usernames first. The output confirms which profiles resolve successfully and shows follower count, post count, verification, display name, and status fields before you upload hundreds of handles.
Pricing clarity: pricing is based on a start fee plus per-profile PPE events; a small validation run tells you how many usernames are valid and what a full list will cost.
🔍 What does Instagram Followers Count Bulk Scraper do?
This actor accepts a list of Instagram usernames and returns the follower count (plus profile metadata) for each one. It reads Instagram's public profile embed over plain HTTP, without a browser or login. This Actor does not provide following count, bio, bio link, the private-account flag, or data for private profiles; those fields are always null. Instagram retired its anonymous mobile profile API (i.instagram.com) in November 2026; the Actor detects that and does not depend on it.
Key capabilities:
- ✅ Check follower counts for 1 to 1,000+ usernames per run
- ✅ Returns followers, posts count, display name, verification badge, and profile photo (following, bio, link, and privacy are not provided and are always null)
- ✅ Handles invalid usernames gracefully (returns error field, keeps running)
- ✅ No login or API key required — fully public data
- ✅ Pure HTTP — no Playwright, no browser, minimal memory (256 MB)
- ✅ Streams results — data appears in the dataset as each profile completes
👥 Who is it for?
Influencer marketing agencies
- Verify follower counts for 500 creator candidates in one run before outreach
- Track follower growth monthly across your entire talent roster
- Compare engagement ratios across a shortlist
Social media managers & brand teams
- Monitor competitor account growth over time with scheduled runs
- Build competitor benchmark dashboards without manual copy-paste
- Alert when a rival crosses a follower milestone
Market researchers & data analysts
- Enrich creator databases with live follower counts
- Feed Instagram data into Google Sheets, Airtable, or BigQuery
- Cross-validate influencer stats from third-party databases
PR & media professionals
- Quickly vet spokespeople and journalists by actual audience size
- Qualify prospective brand ambassadors against follower thresholds
- Compile media kit verification for pitch decks
Developers & automation builders
- Connect to Zapier/Make to trigger workflows when followers hit a target
- Build internal tools that display current follower counts
- Integrate with CRMs to enrich contact records with social proof
💡 Why use Instagram Followers Count Bulk Scraper?
- Bulk-first design — the competitor
apify/instagram-followers-count-scraperhas 8,500+ users but processes one at a time in spirit; this actor is designed for batch lookup with streaming output - Pure HTTP speed — no browser launch time, no page rendering. A 100-username run typically finishes in under 2 minutes
- FREE tier available — run without any Apify subscription. Pay only a small start fee per run
- Honest error handling — bad usernames and partial failures produce inspectable rows with an
errorfield; a batch with no successful profiles fails after saving those rows - Bounded recovery — The Actor tries SHADER, then another accessible Apify proxy group. Intermittent API challenges escalate to the public profile embed, and a failed proxied embed gets one final direct attempt
- Timeout-safe batches — Before the run timeout, the Actor stops starting new lookups, keeps every checked row, saves unchecked usernames to the
UNPROCESSED_USERNAMESkey-value record (not charged), and ends the run as failed with a clear "Incomplete run" message instead of being killed mid-batch - Streaming output — each result is pushed to the dataset immediately, so you can see partial results while large runs are still in progress
📊 What data can you extract?
| Field | Type | Description |
|---|---|---|
username | string | Instagram username |
fullName | string | Display name on profile |
followersCount | number | Follower count |
followingCount | number|null | Not provided — always null (kept for compatibility) |
postsCount | number | Total posts published |
isVerified | boolean | Blue verification badge |
isPrivate | boolean|null | Not provided — always null (kept for compatibility) |
biography | string|null | Not provided — always null (kept for compatibility) |
externalUrl | string|null | Not provided — always null (kept for compatibility) |
profilePicUrl | string | Profile photo URL |
profileUrl | string | Direct Instagram profile URL |
error | string|null | Error message if lookup failed |
Since November 2026 Instagram no longer serves its anonymous profile-info API, so lookups come from the public profile embed. That source provides followers, posts, display name, verification, and profile photo. Limitations: this Actor does not provide followingCount, biography, externalUrl, or isPrivate. The keys stay in every row for compatibility with existing integrations, but their value is always null. Private accounts are not supported: the public embed hides them, so they are reported as not found. If you need bios, links, following counts, or private-account detection, use a full Instagram profile scraper instead.
💰 How much does it cost to check Instagram follower counts?
This actor uses Pay-Per-Event (PPE) pricing — you only pay for profiles actually scraped.
| Event | FREE tier | BRONZE | SILVER | GOLD | PLATINUM | DIAMOND |
|---|---|---|---|---|---|---|
| Run started | $0.005 | $0.005 | $0.005 | $0.005 | $0.005 | $0.005 |
| Profile scraped | $0.006 | $0.003 | $0.002 | $0.0015 | $0.001 | $0.0008 |
Cost examples:
Calculated as the run-start charge + profiles × the applicable per-profile rate.
| Use case | Profiles | Cost (FREE tier) | Cost (BRONZE) |
|---|---|---|---|
| Quick agency shortlist | 50 | ~$0.305 | ~$0.155 |
| Weekly brand competitor audit | 200 | ~$1.205 | ~$0.605 |
| Monthly talent database refresh | 1,000 | ~$6.005 | ~$3.005 |
| Large influencer campaign vetting | 5,000 | ~$30.005 | ~$15.005 |
Free Apify account includes $5 in credits — enough for hundreds of profile lookups. No credit card required to start.
🚀 How to check Instagram follower counts in bulk
- Open Instagram Followers Count Bulk Scraper on Apify Store
- Click Try for free
- In the Usernames field, paste your list of Instagram usernames (without
@) - Click Save & Start
- Results appear in the Output tab as profiles are scraped
- Export to JSON, CSV, or Excel from the Output tab
Input example for 5 accounts:
{"usernames": ["natgeo", "nasa", "cristiano", "kyliejenner", "therock"],"delayBetweenRequestsMs": 300}
Input example (proxy is auto-configured — SHADER datacenter proxy is used by default):
{"usernames": ["brand1", "brand2", "brand3"],"delayBetweenRequestsMs": 500,"maxRetries": 5}
⚙️ Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
usernames | array | — | Required. List of Instagram usernames (with or without @) |
maxRetries | integer | 2 | Maximum attempts per username. Transient 400/401/429/5xx, network failures, and unrecognized responses retry through the lightweight fallback; 404 does not retry |
delayBetweenRequestsMs | integer | 300 | Milliseconds between requests. Increase to 500–1000 for large batches |
proxyConfiguration | object | — | Optional proxy config. Without one, the Actor tries SHADER, an automatic Apify group, then the public embed directly if proxy access is unavailable |
📤 Output example
{"username": "natgeo","fullName": "National Geographic","followersCount": 274991636,"followingCount": null,"postsCount": 31525,"isVerified": true,"isPrivate": null,"biography": null,"externalUrl": null,"profilePicUrl": "https://scontent-...","profileUrl": "https://www.instagram.com/natgeo/","error": null}
Failed lookup example:
{"username": "thisuserdoesnotexist99999","fullName": null,"followersCount": null,"followingCount": null,"postsCount": null,"isVerified": null,"isPrivate": null,"biography": null,"externalUrl": null,"profilePicUrl": null,"profileUrl": "https://www.instagram.com/thisuserdoesnotexist99999/","error": "Profile not found (404): removed, nonexistent, or private (the public embed does not show it)"}
💡 Tips for best results
- Start small — test with 5–10 usernames first to verify the data looks correct before running a large batch
- Tune the delay when needed — start with 300ms, then increase to 500–800ms if Instagram throttles a larger batch
- Proxy routing is automatic — The Actor prefers SHADER, then another accessible Apify proxy group. Runs without proxy permission start on the public embed directly; for very large batches you can override the proxy settings
- The
@symbol is stripped automatically — paste usernames with or without@ - Large lists and the run timeout — the default timeout is 20 minutes. If a run reaches it, the run ends as an incomplete failure; rerun the usernames saved in
UNPROCESSED_USERNAMESor raise the timeout. - Spending limit — each found profile is charged before it is saved. When a run reaches its Maximum charge per run, it stops, keeps the charged profiles, and saves the remaining usernames to
UNPROCESSED_USERNAMES(not charged). - Schedule recurring runs — use Apify's scheduler to run weekly follower audits and track growth over time
- Export to Google Sheets — use the Apify → Google Sheets integration to auto-populate a spreadsheet after each run
🔗 Integrations
Instagram Followers Count Bulk Scraper → Google Sheets
Schedule weekly runs to automatically update a spreadsheet with the latest follower counts for your competitor tracking dashboard. Use the Apify → Google Sheets integration to map username and followersCount fields.
Instagram Followers Count Bulk Scraper → Slack/Discord Set up a webhook to alert your team when a monitored account crosses a follower milestone (e.g., "Brand X just hit 1M followers"). Combine with Apify webhooks and Make automations.
Instagram Followers Count Bulk Scraper → Airtable/CRM Enrich your influencer database with live follower counts before a campaign. Run the scraper against your contact list and sync the results back using Make or Zapier.
Instagram Followers Count Bulk Scraper → Zapier/Make Trigger a workflow when a competitor's follower count changes significantly. Connect the actor output to any of the 5,000+ apps supported by Zapier or Make.
Scheduled monitoring Use Apify's built-in scheduler to run daily or weekly follower audits. Pair with dataset comparison logic to detect growth trends automatically.
🤖 API usage
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('automation-lab/instagram-followers-count-bulk-scraper').call({usernames: ['natgeo', 'nasa', 'cristiano'],delayBetweenRequestsMs: 300,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient(token="YOUR_API_TOKEN")run = client.actor("automation-lab/instagram-followers-count-bulk-scraper").call(run_input={"usernames": ["natgeo", "nasa", "cristiano"],"delayBetweenRequestsMs": 300,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["username"], item["followersCount"])
cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~instagram-followers-count-bulk-scraper/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"usernames": ["natgeo", "nasa", "cristiano"],"delayBetweenRequestsMs": 300}'
🧠 Use with AI agents via MCP
Instagram Followers Count Bulk Scraper is available as a tool for AI assistants that support the Model Context Protocol (MCP).
Add the Apify MCP server to your AI client — this gives you access to all Apify actors, including this one:
Setup for Claude Code
$claude mcp add --transport http apify "https://mcp.apify.com/?tools=automation-lab/instagram-followers-count-bulk-scraper"
Setup for Claude Desktop, Cursor, or VS Code
Add this to your MCP config file:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=automation-lab/instagram-followers-count-bulk-scraper"}}}
Your AI assistant will use OAuth to authenticate with your Apify account on first use.
Example prompts
Once connected, try asking your AI assistant:
- "Use automation-lab/instagram-followers-count-bulk-scraper to check follower counts for these 20 influencers: [paste list]"
- "Check which of these brand accounts has the most Instagram followers: adidas, nike, puma, reebok"
- "Fetch Instagram profile data for my competitor list and tell me the top 5 by follower count"
Learn more in the Apify MCP documentation.
⚖️ Legality
Yes, for public data. Instagram follower counts are publicly visible to anyone who visits a profile — no account or login is required. This actor reads only the same data that any visitor could see in their browser.
We follow ethical scraping principles:
- Only public profiles are queried
- No login, no account, no session cookies are used
- Rate limiting and delays are built-in to avoid server load
- The Actor does not use AI or send input/output to an AI provider
- The Actor creates no external data copy; Apify datasets and logs follow your account retention settings and can be deleted with Apify storage controls
Instagram is named only to identify the public data source. This Actor is independent and is not affiliated with or endorsed by Instagram or Meta. For guidance on responsible use, see the Apify legal overview and Instagram's Terms of Use.
❓ FAQ
How fast does it run? Most successful profile lookups complete quickly. A 100-username batch typically completes in 1–2 minutes, while transient throttling can extend runtime because retries use bounded backoff and fresh proxy sessions.
How much does it cost to check 1,000 Instagram followers? On the FREE tier: approximately $6.005 ($0.005 start + 1,000 × $0.006). On the BRONZE plan: approximately $3.005 ($0.005 start + 1,000 × $0.003). The first ~$5 is free on a new Apify account.
Is this better than the official Instagram API? For follower counts, yes. The official Instagram Graph API requires Facebook app approval, a linked Facebook page, and has strict rate limits (200 calls/hour for basic access). This actor requires none of that — just paste usernames and go.
Why did some profiles return errors?
A few reasons: (1) The username doesn't exist, was removed, or is private and hidden by the public embed (Profile not found (404), which is not retried). (2) Instagram temporarily challenged or throttled a request; the Actor retries transient 400/401/429/5xx, network failures, and unrecognized responses through a lightweight fallback up to maxRetries, then retires a failed proxy before one final direct embed attempt. (3) Rare changes on Instagram's side. Error rows are not charged as scraped profiles.
Why did the run fail even though the dataset contains rows?
When every lookup fails, the Actor saves all error rows for diagnosis and then marks the run failed so schedules and integrations do not mistake an error-only dataset for healthy output. For repeated throttling, increase delayBetweenRequestsMs or provide a different proxy configuration.
What happens if my run reaches its timeout?
The Actor watches the run timeout. Short timeouts work as long as they fit a lookup (allow at least 15 seconds per run, plus a few seconds per username). A request that Instagram leaves hanging is abandoned after 10 seconds and retried, so one slow answer cannot use up a short run. Shortly before the timeout, it stops starting new lookups, keeps and charges only the profiles already checked, and writes the unchecked usernames with the requested/checked counts to the UNPROCESSED_USERNAMES key-value record. The run then ends as failed with an "Incomplete run: checked X of N" message, so schedules and integrations do not treat a partial list as complete. Rerun the saved usernames or raise the timeout. The record is also written when no lookup succeeded.
Can I scrape private accounts?
No. Private accounts are not supported, and no data is returned for them — never counts, posts, or followers lists. The public embed hides private accounts, so they come back as Profile not found (404) with a note that the profile may be private.
Does the Actor collect diagnostics? Failed operations send sanitized diagnostic input, exceptions, and Actor/build/run IDs to our private GlitchTip service so we can repair problems. Secret fields and URL query strings are removed, and reports are retained for 30 days.
Does this work for business accounts? Yes. Business accounts, creator accounts, and personal accounts all return the same public profile data.
📦 Related scrapers
- Instagram Scraper — full Instagram data extraction: posts, reels, stories, hashtags, and profiles
- Instagram Comments Scraper — extract comments from any public post or reel
- Instagram Stories Scraper — download stories from public accounts
- Instagram Reels Scraper — extract reels metadata, views, and engagement data
📦 Other social media scrapers
- TikTok Scraper — TikTok profile data, videos, hashtags, and trends
- Twitter/X Scraper — tweets, profiles, followers, and engagement data
- LinkedIn Profile Scraper — LinkedIn profiles, companies, and job listings
- YouTube Scraper — YouTube videos, channels, comments, and search results