Instagram Followers Count Bulk Scraper avatar

Instagram Followers Count Bulk Scraper

Pricing

from $1.50 / 1,000 profile scrapeds

Go to Apify Store
Instagram Followers Count Bulk Scraper

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

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

280

Total users

19

Monthly active users

a day ago

Last modified

Categories

Features

Limited permissionsMulti-tenantServer interface

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 pathInputOutput and charge
GET /Noneready, routes and limits; no lookup and no charge
POST /profilesusername 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 200 with all rows; rows for failed profiles carry an error and are not charged. count is the number of rows; found profiles are the rows with error: 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 statuserror.codeMeaning
400INVALID_INPUT, MALFORMED_JSON, INVALID_PROFILE, DUPLICATE_PROFILEMissing or invalid input, malformed JSON, or a profile listed twice
402SPENDING_LIMIT_REACHEDYour spending limit rejected the charge; no results and no charge
403PROFILE_UNAVAILABLEEvery requested profile is private or unavailable
404PROFILE_NOT_FOUND, NOT_FOUNDNo requested profile exists, or the route is unknown
405METHOD_NOT_ALLOWEDUse POST for /profiles
413REQUEST_TOO_LARGE, BATCH_TOO_LARGE, RESPONSE_TOO_LARGEBody over 4 KiB, more than 3 profiles, or a response over 64 KiB
415UNSUPPORTED_MEDIA_TYPESend Content-Type: application/json
429UPSTREAM_THROTTLEDInstagram throttled every requested profile
502UPSTREAM_ERROR, CHARGE_FAILEDNo useful result from Instagram, an unexpected failure, or the charge failed
503OVERLOADED, SHUTTING_DOWNThe run is busy or stopping; retry shortly
504TIMEOUT, UPSTREAM_TIMEOUTThe 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 os
import requests
response = 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-scraper has 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 error field; 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_USERNAMES key-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?

FieldTypeDescription
usernamestringInstagram username
fullNamestringDisplay name on profile
followersCountnumberFollower count
followingCountnumber|nullNot provided — always null (kept for compatibility)
postsCountnumberTotal posts published
isVerifiedbooleanBlue verification badge
isPrivateboolean|nullNot provided — always null (kept for compatibility)
biographystring|nullNot provided — always null (kept for compatibility)
externalUrlstring|nullNot provided — always null (kept for compatibility)
profilePicUrlstringProfile photo URL
profileUrlstringDirect Instagram profile URL
errorstring|nullError 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.

EventFREE tierBRONZESILVERGOLDPLATINUMDIAMOND
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 caseProfilesCost (FREE tier)Cost (BRONZE)
Quick agency shortlist50~$0.305~$0.155
Weekly brand competitor audit200~$1.205~$0.605
Monthly talent database refresh1,000~$6.005~$3.005
Large influencer campaign vetting5,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

  1. Open Instagram Followers Count Bulk Scraper on Apify Store
  2. Click Try for free
  3. In the Usernames field, paste your list of Instagram usernames (without @)
  4. Click Save & Start
  5. Results appear in the Output tab as profiles are scraped
  6. 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

ParameterTypeDefaultDescription
usernamesarray—Required. List of Instagram usernames (with or without @)
maxRetriesinteger2Maximum attempts per username. Transient 400/401/429/5xx, network failures, and unrecognized responses retry through the lightweight fallback; 404 does not retry
delayBetweenRequestsMsinteger300Milliseconds between requests. Increase to 500–1000 for large batches
proxyConfigurationobject—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_USERNAMES or 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 ApifyClient
client = 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.


📦 Other social media scrapers