Instagram Followers & Following β Real Lists, Not Counts
Pricing
from $0.72 / 1,000 follow relation scrapeds
Instagram Followers & Following β Real Lists, Not Counts
Export any Instagram account's followers or following list to structured JSON/CSV: username, name, ID, verified & private flags, profile link. Instagram gates these lists behind login, so this actor uses YOUR OWN session cookie (never ours) to paginate safely. MCP-ready.
Pricing
from $0.72 / 1,000 follow relation scrapeds
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
π₯ Instagram Followers & Following Scraper β Login Required
Overview
This actor exports the followers list or following list of any Instagram account into clean, structured JSON/CSV rows: username, display name, internal user ID, verified flag, private flag, and profile picture URL. Give it one username or a batch, pick Followers / Following / Both, and it paginates through the list automatically.
Read this before you run it. Instagram does not expose these lists publicly. This is a different, harder wall than the one our Instagram Profile Scraper clears β that actor reads follower/following counts from a public JSON endpoint with zero authentication, verified live with a plain unauthenticated request returning a clean 200. The lists themselves live behind friendships/{id}/followers and friendships/{id}/following endpoints that returned, on the exact same kind of unauthenticated request in our own testing, a consistent HTTP 401 with the body {"require_login":true}. That is Instagram's own application-level login wall, not an IP block or a rate limit β no proxy, no header trick, and no amount of retrying gets past it. Any tool claiming to export real follower/following lists with zero login, at scale, on demand is either using a hidden authenticated session it isn't telling you about, or it isn't really delivering what it claims.
So this actor asks for the one thing that actually works: your own Instagram session cookie, supplied as input to a run you control. This is the same pattern already used elsewhere in our catalog (our X/Twitter scraper's optional authToken field) β it is a normal, disclosed way to reach data that requires being logged in, without us ever holding, sharing, or reusing your credentials across runs or customers.
β Real followers/following lists, not just counts | β Pagination handled for you | β Pay only for rows delivered | β MCP-ready for AI agents
What you need before you run this
- An Instagram account you're comfortable using for this β ideally a secondary/throwaway account, not your primary one. Pulling large follower/following lists is exactly the kind of bulk activity Instagram's own risk systems watch for, and doing it can lead to a rate limit, a security checkpoint, or a temporary block on the account whose session you use β this is a real risk under Instagram's Terms of Use, not a hypothetical.
- That account's
sessionidcookie. Log into instagram.com in a normal desktop browser, open DevTools β Application (Chrome) or Storage (Firefox) β Cookies βhttps://www.instagram.com, and copy the value of thesessionidcookie. Paste it into thesessionidinput field (marked secret β it is never logged or displayed). - Optionally, the same session's
csrftokencookie value β not required for the read-only calls this actor makes, but it's the closest match to genuine browser traffic if you want to supply it.
If you run this actor without a sessionid, it will not invent data. It pushes one clear, non-billed row explaining the requirement and exits β you can verify this yourself before spending anything.
How it works
For each target username, the actor first resolves the username to Instagram's internal numeric user ID using the same public, no-login endpoint the profile scraper uses. It then uses your session cookie to call the authenticated followers/following endpoint directly, paginating with Instagram's own cursor (next_max_id) until it hits your requested cap, the run's safety cap, or the end of the list.
Unlike a no-login scraper that benefits from spreading requests across many exit IPs, this actor pins one single proxy session for the whole run. Bouncing one authenticated session across many countries' worth of IPs inside a few minutes is a strong account-takeover signal to Instagram β using one stable IP for the whole run looks like what it actually is: one person, logged in, browsing.
If Instagram rejects the session (expired cookie, checkpoint, or challenge required), the actor detects the exact rejection signature, stops the entire run immediately, and tells you plainly that a fresh IP will not fix it β only a fresh valid sessionid will. Rows already delivered before that point are unaffected and already yours.
π§Ύ Input configuration
{"usernames": ["nasa"],"mode": "followers","sessionid": "71234567%3AAbCdEfGhIjKlMnOpQrStUvWx%3A25%3AAYc...","maxPerUsername": 200,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
| Field | Description |
|---|---|
usernames | Target account(s) to pull followers/following for |
username | Convenience single-target field |
mode | followers, following, or both |
sessionid | Required for real data. Your logged-in Instagram session cookie |
csrftoken | Optional β your session's csrftoken cookie |
maxPerUsername | Stop after this many rows per target/relation (hard-capped at 5000) |
startCursor | Advanced: resume a capped single-target run from its saved cursor |
proxyConfiguration | Residential proxy, one fixed session per run |
π€ Output format
{"relation": "followers","target_username": "nasa","target_user_id": "528817151","user_id": "44196397","username": "spacex_fan_2026","full_name": "Space Enthusiast","is_private": false,"is_verified": false,"profile_pic_url": "https://scontent.cdninstagram.com/...","profile_url": "https://www.instagram.com/spacex_fan_2026/","source": "authenticated-api","scraped_at": "2026-08-02T10:15:00.000Z"}
Every run also ends with one _type: "summary" row (never billed) recording how many targets were requested, how many rows were delivered and charged, and whether the run stopped early because Instagram rejected the session.
πΌ Common use cases
Audience & competitor analysis β pull a competitor's or your own follower list to see who's actually engaged, cross-reference verified/business accounts, and track growth over time on a schedule.
Influencer & creator discovery β export the following list of a known tastemaker account to find adjacent creators worth reaching out to.
Lead enrichment β turn a brand's follower list into a contactable roster for outreach, combined with our Instagram Profile Scraper for bio/website enrichment on each handle.
List-building for paid social β export followers of relevant accounts as a seed list for lookalike/custom audience building.
π Getting started
- Log into the Instagram account you're going to use, and copy its
sessionidcookie (see "What you need" above). - Open the actor on Apify, paste the target username(s) and your
sessionid. - Pick
followers,following, orboth, and set a sensiblemaxPerUsernamefor a first test run (start small β 50 to 100 β before pulling thousands). - Click Save & Start, then export the dataset as JSON, CSV, or Excel, or pull it via the Apify API or MCP.
FAQ
Do I really need to log in? Can't this just work like the profile scraper?
No β and we're not going to pretend otherwise. We tested Instagram's followers/following endpoints directly: the exact same unauthenticated request that returns full profile data from the public endpoint returns 401 {"require_login":true} from the followers/following endpoints. That is Instagram's own login gate.
Is it safe to use my main Instagram account's session?
It carries real risk β rate limits, a security checkpoint, or a temporary block are all things Instagram can do to an account pulling large lists quickly. We strongly recommend a secondary account and a conservative maxPerUsername on your first runs.
Do you store or see my sessionid? No. It is passed straight through to Instagram's own API for the calls this run makes and is never logged, persisted, or reused for another run or another customer. Apify's platform still stores your run's input (marked as a secret field) under your own account's normal data retention.
Why did my run stop with auth_required partway through?
Either the session cookie expired mid-run, or Instagram put up a security checkpoint on that account. This is a credential problem, not a proxy problem β get a fresh sessionid and start a new run; rows already delivered are unaffected.
How am I charged? Pay per row. You are billed only for followers/following rows actually written to the dataset. A missing session, a not-found username, a private target you can't see, or a network failure is never charged.
Can I use it inside an AI agent? Yes β it's exposed as an MCP tool. See below.
Use in Claude, ChatGPT & any MCP agent
https://mcp.apify.com/?tools=themineworks/instagram-followers-scraper
Or call it programmatically with the Apify client:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('themineworks/instagram-followers-scraper').call({usernames: ['nasa'],mode: 'followers',sessionid: 'YOUR_OWN_IG_SESSIONID',maxPerUsername: 200,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
π οΈ Complete your Instagram intelligence pipeline
- Instagram Profile Scraper: bio, counts, verified/business flags β no login required.
- Threads Scraper: posts, profiles, hashtags, and search on Meta Threads.
- Twitter / X Scraper: tweets by keyword or handle.
Typical flow: this actor builds the raw follower/following roster, then the profile scraper enriches each handle with bio and website data.
Questions or need a custom field set? Reach out through the Apify profile.