Instagram Followers Scraper
Pricing
$24.99/month + usage
Instagram Followers Scraper
πΈ Instagram Followers Scraper (instagram-followers-scraper) extracts public follower lists: usernames, names, bios, counts, profile links & verified status. π Ideal for competitor research, influencer discovery, audience analysis & outreach. π Fast, reliable, CSV/JSON export & API-ready.
Pricing
$24.99/month + usage
Rating
0.0
(0)
Developer
Scrapier
Maintained by CommunityActor stats
0
Bookmarked
7
Total users
0
Monthly active users
4 hours ago
Last modified
Categories
Share
Instagram Followers Scraper β Real Followers Plus Labeled Fallback
Instagram Followers Scraper pulls the real follower list of any public Instagram profile β usernames, full names, avatars, verification/privacy flags, and internal account IDs β from Instagram's own followers endpoint. Feed it profile URLs or usernames and get a paginated, deduplicated dataset in JSON or CSV. Every row is structured, ready to hand to an LLM or load into a vector store. When a follower list runs dry before your target count, the actor fills the gap instead of stopping short β and labels every row it adds.
What is Instagram Followers Scraper?
Instagram Followers Scraper queries Instagram's own friendships/<user_id>/followers/ endpoint for one or more profiles supplied as URLs or bare usernames, and returns each profile's followers as structured JSON/CSV rows. No Instagram login is required to run it, though pasting an optional sessionId cookie improves success rates on profiles Instagram is stricter about rate-limiting. What sets it apart from a scraper that just dumps rows and calls them all followers is the sourceType field on every row: "follower" for a row pulled from the real followers list, or "post_commenter" for a fallback row pulled from the profile's own post commenters when the real list runs dry before your maxData target β so padding is never silently mixed in as if it were a real follower.
- Paginates a profile's real follower list automatically until
maxDataor the list is exhausted - Falls back to labeled post-commenter rows to help reach your target row count, never hiding which rows are fallback
- Scrapes multiple profiles in a single run
- Saves rows to the dataset in real time, deduplicated within the run
- Escalates from a direct connection to a datacenter proxy to a residential proxy automatically if Instagram starts blocking requests
- Exports a consistent JSON/CSV schema across every run
What data can you get with Instagram Followers Scraper?
Every account the actor collects β real follower or fallback β comes back with the same 21-field row shape, tagged so you always know which source it came from.
| Result Type | Extracted Fields | Primary Use Case |
|---|---|---|
Follower (sourceType: "follower") | username, full_name, profileUrl, pk / pk_id / id / strong_id__ / fbid_v2, profile_pic_url, profile_pic_id, is_verified, is_private, is_favorite, has_anonymous_profile_picture, account_badges, latest_reel_media, third_party_downloads_enabled, followed_by, scrapedAt, success | Audience analysis, lead lists, bot/quality screening |
Fallback padding (sourceType: "post_commenter") | Identical 21-field shape, sourced from commenters on the target's own recent posts | Reaching a maxData row target on accounts with a small real follower base; can be filtered out entirely |
Transparent sourceType tagging
Every row this actor writes carries a sourceType field, and it is the one thing that separates this actor from a scraper that just dumps rows and calls them all followers. A row tagged "follower" came straight from Instagram's followers endpoint β a real follower, full stop. A row tagged "post_commenter" is fallback padding: an account that commented on the target profile's own recent posts, pulled in only after the real follower list has been fully paginated and still falls short of your maxData target. Nothing about the two row types is hidden from you β filter on sourceType before you count, dedupe, or report, and you never mistake padding for signal.
{ "sourceType": "follower", "username": "arizki", "followed_by": "cristiano" }{ "sourceType": "post_commenter", "username": "j_smith22", "followed_by": "cristiano" }
Fallback padding rows
When a profile's real follower list is smaller than your maxData target, the actor pulls extra accounts from comments on that profile's own recent posts, using the same 21-field row shape as a real follower. These rows always carry sourceType: "post_commenter" and the same followed_by value, grouping and filtering identically to real followers except for that field. Use them to hit a row-count target, or drop them with one filter when only true followers matter.
How does Instagram Followers Scraper differ from the official Instagram API?
Instagram's Graph API (via its Business Discovery endpoint) returns aggregate metrics like followers_count for Instagram Business or Creator accounts β it does not return a list of the usernames or IDs of the accounts that follow a profile, for any account, including your own (Meta for Developers, Business Discovery docs). Instagram Followers Scraper exists precisely to fill that gap: an actual, paginated follower list rather than a single count.
| Feature | Instagram Graph API | Instagram Followers Scraper |
|---|---|---|
| Follower-list access | No endpoint returns follower usernames/IDs β aggregate counts only | Full paginated list of follower rows per profile |
| Which profiles can be queried | Practically limited to Business/Creator accounts in Business Discovery | Any public profile you supply |
| Setup required | Facebook Page link, Business/Creator account conversion, Meta app review | Paste a URL or username and run |
| Login required | Yes β OAuth against a Meta Business account | No login required; optional session cookie improves success |
| Multiple profiles per request | One Business Discovery lookup per call, counts only | Bulk list of profiles in one run, full rows |
| Output format | Platform-defined Graph API JSON | Consistent JSON/CSV dataset with sourceType labeling |
Use the Graph API when you need first-party aggregate metrics for an account you administer. Use Instagram Followers Scraper when you need the actual list of accounts following any public profile, including ones you don't own.
How to scrape Instagram with Instagram Followers Scraper?
- Open Instagram Followers Scraper on its Apify store listing, or call it via the API (see Integrate below).
- Enter one or more profile URLs or bare usernames in
startUrlsβ this is the only required field. - Set
maxDatato the number of followers you want per profile (1β100,000, default 100), and optionally paste asessionIdcookie or enable a proxy for higher success rates. - Start the run.
- Stream or download results as JSON or CSV from the run's dataset β rows appear in real time as they're collected, so you don't have to wait for the run to finish to start working with early rows.
{"startUrls": ["https://www.instagram.com/cristiano/", "nike"],"maxData": 500,"sessionId": "","proxyConfiguration": { "useApifyProxy": false }}
How to run multiple profiles in one job
startUrls accepts an array, so one run can scrape followers for any number of profiles β add each profile as its own entry (a full URL or a bare username) and the actor works through them in turn, applying the same maxData ceiling to each. There is no separate batch parameter or concurrency setting; profiles are processed sequentially, and results land in the same dataset, distinguished by followed_by.
β¬οΈ Input
startUrls is the only required field. Every other parameter is optional and has a documented default.
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
startUrls | Yes | array | List of Instagram profile URLs or usernames to scrape followers from. | ["https://www.instagram.com/cristiano/", "nike"] |
maxData | No | integer | Maximum number of followers to collect per profile. Range 1β100,000, default 100. | 500 |
sessionId | No | string (secret) | Instagram sessionid cookie value; optional but improves success rates. Stored as a secret and never shown again once saved. | "80339464000%3AMwlUEdZkdshtFG%3A5%3A..." |
proxyConfiguration | No | object | Proxy configuration. Defaults to no proxy; the actor escalates to a datacenter then residential proxy automatically if requests get blocked. | {"useApifyProxy": false} |
{"startUrls": ["https://www.instagram.com/cristiano/", "https://www.instagram.com/nike/"],"maxData": 100,"sessionId": "","proxyConfiguration": { "useApifyProxy": false }}
Common pitfall: startUrls takes plain strings β a full URL or a bare username, one per line in the UI's stringList editor β not {"url": "..."} wrapper objects the way some other URL-list actors expect. The actor tolerates that object shape defensively if you happen to pass it via the API, but the plain-string form is what the input schema is built for.
β¬οΈ Output
Output is typed, normalized JSON with a consistent 21-field schema across every row, exportable as JSON, CSV, Excel, or any other format Apify's dataset export supports.
Scraped results
[{"sourceType": "follower","pk": "73320179592","pk_id": "73320179592","id": "73320179592","full_name": "arizki","is_private": true,"fbid_v2": "17889321234567890","third_party_downloads_enabled": 0,"strong_id__": "73320179592","profile_pic_id": "3184829193746501_73320179592","profile_pic_url": "https://instagram.fjsr11-1.fna.fbcdn.net/v/t51.2885-19/profile.jpg","is_verified": false,"username": "davabukandaffa5","has_anonymous_profile_picture": false,"account_badges": [],"latest_reel_media": 0,"is_favorite": false,"followed_by": "cristiano","profileUrl": "https://www.instagram.com/davabukandaffa5/","scrapedAt": "2026-07-25T10:00:00Z","success": true},{"sourceType": "follower","pk": "44981123765","pk_id": "44981123765","id": "44981123765","full_name": "Nike Running","is_private": false,"fbid_v2": "17889455566677788","third_party_downloads_enabled": 1,"strong_id__": "44981123765","profile_pic_id": "3184829193746502_44981123765","profile_pic_url": "https://instagram.fjsr11-1.fna.fbcdn.net/v/t51.2885-19/nike_run.jpg","is_verified": true,"username": "nikerunning_fan","has_anonymous_profile_picture": false,"account_badges": [],"latest_reel_media": 1721890000,"is_favorite": false,"followed_by": "nike","profileUrl": "https://www.instagram.com/nikerunning_fan/","scrapedAt": "2026-07-25T10:00:03Z","success": true},{"sourceType": "post_commenter","pk": "9981237456","pk_id": "9981237456","id": "9981237456","full_name": "J Smith","is_private": false,"fbid_v2": "","third_party_downloads_enabled": 0,"strong_id__": "9981237456","profile_pic_id": "","profile_pic_url": "https://instagram.fjsr11-1.fna.fbcdn.net/v/t51.2885-19/j_smith.jpg","is_verified": false,"username": "j_smith22","has_anonymous_profile_picture": true,"account_badges": [],"latest_reel_media": 0,"is_favorite": false,"followed_by": "cristiano","profileUrl": "https://www.instagram.com/j_smith22/","scrapedAt": "2026-07-25T10:04:12Z","success": true}]
How can I use the data extracted with Instagram Followers Scraper?
- Audience research: read
is_verified,is_private, andhas_anonymous_profile_pictureacross a creator's followers to gauge audience composition and bot-likelihood before treating a raw follower count as real reach. - Influencer and partnership discovery: cross-reference
followed_byacross several brand profiles' follower dumps to find accounts that already follow multiple relevant brands β strong-fit outreach candidates. - AI engineers and LLM developers: pass the JSON dataset straight into an agent's context window or a vector store so a grounded agent can answer "who follows this account" questions with real usernames instead of hallucinated ones.
- Competitive benchmarking: run the same
maxDatatarget against your own profile and a competitor's, then compareis_verified/is_privateratios and uniquepkoverlap to size relative audience quality.
How do you monitor Instagram follower growth over time?
Follower monitoring means running the same profile through the actor on a cadence and comparing what changed, rather than trusting a single snapshot. Because every row carries a stable pk (Instagram's internal user ID) alongside username and scrapedAt, two runs against the same profile can be diffed on the pk set: IDs present in the new run but absent from the last are new followers, and IDs missing from the new run are unfollows or removed accounts. Track is_verified and is_private on the intersecting IDs too, since those flags can flip between runs.
A practical loop: schedule a run against your target profile(s) every day or week using an Apify Schedule, store each run's dataset, and diff the current pk set against the previous run's pk set. Alert when the net change crosses a threshold you care about, or when the sourceType: "post_commenter" share spikes β a rising fallback-padding share means the real follower list is being exhausted before your maxData target, usually because the account is small relative to what you asked for, which is worth knowing before you trust the raw row count.
This actor has no built-in diffing or alerting β the comparison logic runs outside the actor, against datasets from two separate runs. Apify's Schedules feature handles the recurring-run side; webhook or API polling handles picking up each run's results for the diff.
Integrate Instagram Followers Scraper and automate your workflow
Instagram Followers Scraper works with any language or tool that can send an HTTP request.
REST API with Python
import requestsTOKEN = "YOUR_APIFY_TOKEN"resp = requests.post("https://api.apify.com/v2/acts/Scrapier~instagram-followers-scraper/run-sync-get-dataset-items",params={"token": TOKEN},json={"startUrls": ["cristiano", "nike"], "maxData": 100},)for row in resp.json():print(row["sourceType"], row["username"], row["followed_by"])
MCP for query-grounded AI agents
Instagram Followers Scraper is reachable through Apify's hosted MCP server, no custom code needed. Point an MCP client at https://mcp.apify.com?tools=Scrapier/instagram-followers-scraper (with an Apify token) and the actor becomes a callable tool: an agent receives a username or URL, calls the tool, and gets back the same structured JSON rows to ground its answer. Compatible clients include Claude Desktop, Cursor, and VS Code; a local alternative runs npx -y @apify/actors-mcp-server with an APIFY_TOKEN env variable.
Scheduled monitoring and delivery
The actor has no built-in webhook or cron feature, but since it runs on Apify, Apify Schedules can trigger it on a recurring cadence, and Apify webhooks can fire on run completion to push each dataset to your own endpoint β covering the monitoring loop above without custom scheduling code.
Is it legal to scrape Instagram followers?
Scraping publicly visible Instagram followers is generally lawful in most jurisdictions β courts have held that data a platform displays to any visitor is not off-limits merely because it was collected programmatically (see hiQ Labs v. LinkedIn, 9th Cir., 2019, on public-web scraping under the CFAA). This actor only collects what Instagram already shows on a public profile.
Follower usernames, names, and avatars are still personal data, so GDPR and CCPA apply to how you store, combine, and act on them once collected β you need a lawful basis to retain EU residents' data, and California residents have rights over data collected about them. Scraping for a one-off research snapshot carries a different risk profile than scraping to train a model or build a persistent profile database. Consult your legal team for commercial use cases involving bulk data storage.
Frequently asked questions
Do I need to log into Instagram to use this actor?
No. startUrls and a run are enough to get results. Pasting an optional sessionId cookie is not required but improves success rates, since it is treated the same way a logged-in browser session would be.
Does this actor scrape following lists as well as followers?
No β this actor is followers-only. A companion actor on this account (Instagram Followers & Following Scraper) covers the following-list direction with a mode toggle.
What does the sourceType field mean, and are fallback rows ever hidden?
sourceType is "follower" for a row from Instagram's real followers endpoint, or "post_commenter" for fallback padding pulled from the target's own post commenters once the real list runs dry before your maxData target. Fallback rows are never mixed in without this tag.
How many followers does the actor return per profile?
Up to your maxData value (1β100,000, default 100). The actual count can be lower if a profile has fewer real followers than requested and its own posts don't have enough distinct commenters to pad the gap.
Can I scrape multiple Instagram profiles in one run?
Yes β pass an array of URLs or usernames in startUrls and the actor processes each one, applying the same maxData limit per profile.
Does providing a sessionId guarantee every request succeeds?
No. It improves success rates but Instagram can still block or rate-limit requests, which is why the actor also escalates through datacenter and residential proxies automatically.
How does the actor handle Instagram's anti-bot and rate-limiting measures?
It starts with a direct connection, escalates to a datacenter proxy, then to a residential proxy with up to 3 retries if Instagram returns 403/429 responses β no manual proxy tuning required.
Can I extract bio, following count, or post count with this actor?
No. Instagram's followers-list endpoint doesn't return them, so they are left out rather than shipped as always-empty columns.
Does Instagram Followers Scraper work with Claude, ChatGPT, and AI agent frameworks?
Yes. It's reachable through Apify's hosted MCP server (https://mcp.apify.com?tools=Scrapier/instagram-followers-scraper) for MCP-native clients, and callable as a plain HTTP endpoint by any agent framework that can make a request.
How does this compare to other Instagram follower actors?
Actors that discover creators by keyword and enrich them with followersCount β as observed on the Instagram Followers Count Scraper: Verified Profiles Filter listing on 2026-07-25 β return an aggregate follower count per discovered account, not the follower list itself. Instagram Followers Scraper does the opposite job: given a profile, it returns the actual rows of accounts following it.
Can I use this without managing proxies or platform credentials?
Yes. Proxy escalation (direct β datacenter β residential) is handled automatically. You only need to supply the profiles to scrape; a session cookie and a custom proxy configuration are both optional add-ons, not requirements.
Your feedback
Found a bug or missing a field? Let us know through the Issues tab on this actor's Apify Store page, or reach the developer directly through Apify Console messaging. Reports like these keep the actor's field coverage and reliability up to date.