Instagram Followers & Following Scraper [From 💰$0.99] No Login
Pricing
from $0.99 / 1,000 followed account (result)s
Instagram Followers & Following Scraper [From 💰$0.99] No Login
[From 💰$0.99/1k] Scrape the followers and following of any public Instagram account — no login, no cookies, zero risk to your account. Get username, full name, verified & private flags, profile pic and profile URL for every account. Followers, following, or both, many profiles per run.
Pricing
from $0.99 / 1,000 followed account (result)s
Rating
5.0
(2)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
57
Total users
19
Monthly active users
10 hours ago
Last modified
Categories
Share
Instagram Followers & Following Scraper
Scrape the followers and following of any public Instagram account — no login, no cookies, zero risk to your own account. Paste one or more usernames and get back every follower or followed account with username, full name, verification status, privacy flag, profile picture, and profile URL. From $0.99 per 1,000 results. Export as JSON, CSV, or Excel.
Why Use This Scraper?
- Zero account risk — you never hand over Instagram cookies or log in, so your account can't be flagged, throttled, or banned. Cheaper cookie-based scrapers make you supply a session and take that risk; this one never does.
- No Instagram account needed — nothing to configure, no 2FA, no checkpoints.
- Followers and following in one Actor — collect either list or both per account, selected per run.
- Complete lists — paginates through the entire list, not just the first page.
- Filter inside the list — keep only the accounts whose handle, display name, or bio contains what you are looking for. Accounts that don't match are never billed.
- Multiple profiles per run — pass a whole list of usernames; every row is tagged with its source account.
- Fast — pure HTTP. Following lists are paged in parallel; a 600-account list finishes in under a minute.
- Clean, flat output — one row per account, tagged with its list
type, ready for CRM import, influencer analysis, or network graphs.
Coming from another followers scraper?
The most common complaints about Instagram follower scrapers, and how this one is built to avoid them:
| The complaint elsewhere | What this Actor does instead |
|---|---|
| "Returns duplicate records — and charges for them" | Follower lists are walked on a single cursor chain and following lists are assembled by exact page offset, so a list never overlaps itself. Optional historical rows are checked against the live list before billing — a row is never delivered twice in a run. |
| "A valid username gets limited to a handful of results" | No hidden per-account cap on paid runs. The only limits are the ones you set: maxResultsPerUser, your run's charge limit, and its timeout. Million-follower accounts are supported — a timeout delivers a clearly-labeled partial list, never a silent cutoff. |
| "Crawling not working / failing suddenly" | Every upstream request retries up to 4 times with automatic failover. If data genuinely can't be fetched, the run fails loudly so you can retry — it never returns an empty dataset as a "success", and a truncated list is never served as complete. |
| "I asked for an account and got nothing back" | A missing, private, or invalid handle yields one explanatory error row (user_not_found, private_account, invalid_username) — you always see why, and the rest of the run continues. |
| "I need follower data at scale" | Re-runs of the same account within 24h serve from a snapshot instantly. An opt-in archive (includeHistorical) even returns accounts that have unfollowed since your last run — churn tracking no fresh scrape can give you. |
Overview
This Actor returns one dataset row per account in the requested list(s). For each input username it first resolves the profile, then walks the followers and/or following list page by page. It does not return the input user's own profile — it returns the accounts in their lists. Data is retrieved through a third-party Instagram data provider, so no Instagram credentials are ever required.
Supported Inputs
| Input | What you get |
|---|---|
A single username (e.g. zuck) | Its followers and/or following list, per dataToScrape |
| Multiple usernames | Lists for all of them in one run, each row tagged by sourceUsername and type |
- Handles are accepted with or without the leading
@, and full profile URLs work too —https://www.instagram.com/zuck,instagram.com/zuck/, or the mobilem.instagram.comvariant, with or without query parameters. - Not supported: private accounts (their lists aren't public — the Actor returns an error item for them), hashtags, post/reel URLs.
Pure HTTP. No browser, no CAPTCHA solver, no cookies.
Use Cases
| Audience | How they use it |
|---|---|
| Influencer marketers | Map who a creator follows to find collaborators and peer networks |
| Growth / social teams | Build lookalike audiences from a competitor's following graph |
| Researchers / OSINT | Reconstruct interest and affiliation networks from public follows |
| Sales / lead gen | Surface brands and decision-makers a target account follows |
How It Works
- Resolve — each input username is looked up to get its numeric Instagram ID and follower/following counts.
- Paginate — each requested list is walked page by page until complete (following pages fetch concurrently; follower pages follow a cursor).
- Emit — every account is pushed to the dataset as its own row, tagged with
sourceUsernameandtypeso multi-user, multi-list runs stay separable. With a filter set, only matching accounts are pushed, and the walk continues past the rest.
Input Configuration
| Field | Type | Required | Notes |
|---|---|---|---|
usernames | array of strings | Yes | Public usernames to scrape, with or without @. |
dataToScrape | string | No | Dropdown: followings, followers, or both. Default: followings. |
maxResultsPerUser | integer | No | Cap results per username per list. Omit for complete lists. |
enrichWithCounts | boolean | No | Off by default. Adds follower counts and contact fields to every returned account — see below. |
searchQuery | string | No | Keep only accounts whose username or display name contains this text, ignoring case. Example: shop. See "Filtering the list" below. |
excludePrivate | boolean | No | Drop private accounts before they are billed. Default: off. |
bioKeywords | array of strings | No | Keep only accounts whose bio contains at least one of these keywords, ignoring case. Turns on enrichment automatically. Example: ["coach", "agency"]. |
includeHistorical | boolean | No | Also return accounts seen in this list on earlier runs that are no longer in it (churn), tagged source: "archive" with firstSeenAt and lastSeenAt. Default: off. |
Example input
{"usernames": ["zuck", "therock"],"dataToScrape": "both","maxResultsPerUser": 500}
Adding follower counts to each result
Instagram's follower and following list endpoints return a slim account — handle, name, avatar,
verified and private flags — and no follower count. Turn on enrichWithCounts and every
returned account is looked up individually, adding to its row:
followersCount, followsCount, postsCount, isBusiness, biography, externalUrl,
publicEmail, publicPhone, category, fbId
That is what lets you rank a following list by audience size, or pull contact details for the business accounts inside someone's follower list.
Because the list endpoints do not carry these fields, each enriched account costs one extra request and is billed as its own event on top of the per-result price. A 500-account list with enrichment on means 500 extra lookups, so leave it off unless you want the counts.
Two things it will not do: an account whose lookup fails is still returned, unenriched and unbilled; and a lookup is never billed for an account the run then cannot save. Accounts are enriched in list order while the run's charge limit covers the lookup and the result together; once it cannot, the run saves what little the limit still covers without enrichment and ends normally rather than failing. The run log states how many were enriched, how many failed, and whether it stopped early.
{"usernames": ["zuck"],"dataToScrape": "followings","maxResultsPerUser": 100,"enrichWithCounts": true}
Filtering the list
Three inputs narrow a list down to the accounts you want. All three apply before billing, so an account that doesn't match is never charged.
searchQuerykeeps accounts whose username or display name contains the text, ignoring case. It matches anywhere in the text, soshopalso keepscoffeeshopand "Workshop Studio".excludePrivatedrops private accounts.bioKeywordskeeps accounts whose bio contains at least one of the keywords, ignoring case. List pages carry no bio, so every account that passes the other two filters is looked up individually, and each match comes back with the profile fields listed above.
When more than one is set, an account has to pass all of them.
With any filter on, maxResultsPerUser counts matching accounts: the list is walked past the
accounts that don't match until that many are found or the list ends. A filtered run always reads
the list live instead of from the 24-hour snapshot. A rare term can mean walking a long list for a
few matches, so a run can reach its timeout first; the log then says the result is partial.
Billing with bioKeywords: each saved match is billed its result plus one profile lookup.
Lookups for accounts whose bio doesn't match are free, and so is a failed lookup; that account is
left out, since its bio couldn't be checked. When the run's charge limit can no longer pay for one
more match, the run stops and keeps what it saved. The log says it stopped early at the charge
limit and lists any accounts it didn't start. A limit too small for a single match saves nothing,
and the run fails with the charge limit named as the reason.
Accounts from a following list with "photo" in the handle or name, public ones only:
{"usernames": ["natgeo"],"dataToScrape": "followings","searchQuery": "photo","excludePrivate": true,"maxResultsPerUser": 20}
Accounts whose bio mentions "photographer", each with its profile fields:
{"usernames": ["natgeo"],"dataToScrape": "followings","bioKeywords": ["photographer"],"maxResultsPerUser": 20}
Output Overview
Each item is a flat object describing one account in a requested list, tagged with type (follower or following). Runs stream to the default dataset, exportable as JSON, CSV, Excel, or via the API. Rows saved with enrichWithCounts or bioKeywords also carry the profile fields listed under "Adding follower counts to each result".
Output Samples
{"sourceUsername": "zuck","type": "following","userId": "185771970","username": "fencer","fullName": "Miles Chamley-Watson","isPrivate": false,"isVerified": true,"profilePicUrl": "https://scontent.cdninstagram.com/v/t51.2885-19/...","profileUrl": "https://www.instagram.com/fencer/"}
Key Output Fields
| Field | Description |
|---|---|
sourceUsername | The input account this row came from |
type | follower or following — which list the row belongs to |
userId | Numeric Instagram ID of the followed account |
username | Handle of the followed account |
fullName | Display name (may be empty) |
isPrivate | Whether the followed account is private |
isVerified | Whether the followed account is verified |
profilePicUrl | URL of the followed account's profile picture |
profileUrl | Direct link to the followed account's Instagram profile |
Free Apify plan
On the free Apify plan a run covers 1 account and up to 60 rows. The first 3 accounts of each run come back in full, so you can check the data. After that, rows keep the username, user id, full name, profile URL, verified and private flags and the list type, while the profile picture is left empty and, when profile enrichment is on, the follower, following and post counts are rounded to their order of magnitude, the bio is cut to a few characters and the external URL, public email, phone and Facebook id are hidden. A freePlanNote field marks those rows, and their profile lookups are not billed. Any paid Apify plan returns every field in full. Profile enrichment (enrichWithCounts) and historical accounts (includeHistorical) are available on paid Apify plans only; on the free plan enrichment runs only when bio keywords are set, since that filter needs each bio.
FAQ
Do I need to provide my Instagram cookies or log in? No. This Actor never asks for cookies, passwords, or a session — that's the point. Cookie-based scrapers advertise a lower headline price but require you to paste your own Instagram session, which puts your account at risk. Here your account stays completely out of it.
Does it work on private accounts? Only public accounts. A private account's lists aren't public, so the Actor emits an error item for it and continues with your other usernames.
How fresh is the data? Fetched live at run time.
Can I get followers instead of following?
Yes — pick followings, followers, or both from the "Data to scrape" dropdown. Every row carries a type field telling you which list it belongs to.
Can I keep only some of the accounts, like shops or photographers?
Yes. searchQuery matches text in the username or display name, and bioKeywords matches words in the bio. Accounts that don't match are skipped and never billed. See "Filtering the list" above.
What does it cost?
Pay per result: from $0.99 per 1,000 accounts (plan tiers apply), plus a small per-run start fee. No subscription. With enrichWithCounts or bioKeywords, each enriched account is also billed one profile lookup; the Pricing tab shows the rate for your plan.
Support
Found a bug or need a field added? Open an issue on the Actor's Issues tab in Apify Console, or email muhamed.didovic@gmail.com.
Additional Services
Need a custom Instagram or social-media scraper, enrichment pipeline, or a private version of this Actor? Custom builds available — reach out at muhamed.didovic@gmail.com.
Explore More Scrapers
- Instagram Profile Scraper
- Instagram Comments Scraper
- Instagram Stories Scraper
- Instagram Hashtag Scraper
Browse the full portfolio: muhamed-didovic.github.io
🤖 For AI Agents & LLM Apps
Purpose: Return the followers and/or following lists of public Instagram accounts, optionally only the accounts whose handle, display name, or bio matches.
Minimal tested input:
{ "usernames": ["zuck"], "dataToScrape": "followers", "maxResultsPerUser": 50 }
Optional filters: searchQuery (text in the username or display name), excludePrivate (boolean), bioKeywords (array; keeps accounts whose bio contains any of them). With a filter on, maxResultsPerUser counts matches.
Output: array of flat objects, one per account. Fields: sourceUsername, type, userId, username, fullName, isPrivate, isVerified, profilePicUrl, profileUrl. With enrichWithCounts or bioKeywords, rows also carry followersCount, followsCount, postsCount, isBusiness, biography, externalUrl, publicEmail, publicPhone, category, fbId.
Behavior & billing: Pay-per-event: one charge per result, plus one profile lookup per enriched account with enrichWithCounts or bioKeywords. Accounts a filter drops are not billed. Private input accounts yield one error item instead of rows. Multiple usernames allowed per call; each result carries its sourceUsername. No login/cookies required.
⚠️ Disclaimer
This Actor accesses publicly available data on Instagram for legitimate research, market-intelligence, and business-analysis purposes. It does not log in, bypass authentication, or access private content. Use of this Actor must comply with Instagram's and Meta Platforms, Inc.'s Terms of Service and all applicable laws, including data-protection regulations (GDPR, CCPA, etc.). The authors are not responsible for any misuse. Users must:
- Respect rate limits and avoid overloading Instagram's infrastructure
- Not use scraped data to violate user privacy or platform terms
- Process any personal data only with a lawful basis and in compliance with their jurisdiction
- Not republish scraped content in violation of copyright
We do not store scraped data; the Actor returns it directly to your Apify dataset for your authorized use. Instagram is a trademark of Meta Platforms, Inc.; this Actor is not affiliated with or endorsed by Meta.
SEO Keywords
instagram followers scraper, instagram following scraper, scrape instagram followers, scrape instagram following list, instagram following export, who does an instagram user follow, instagram following list download, instagram following to csv, instagram network analysis, instagram graph scraper, instagram osint tool, instagram following api, no login instagram scraper, no cookies instagram scraper, instagram data extraction, influencer network mapping, instagram lookalike audience, social media scraper, instagram public data, competitive intelligence instagram, instagram following json, apify instagram scraper, filter instagram followers by bio, instagram followers bio keyword search