Instagram Following Scraper
Pricing
from $1.50 / 1,000 profile scrapeds
Instagram Following Scraper
Export the full following and followers list of any Instagram profile as structured JSON — username, full name, verified/private flags, and profile URL. MCP-ready.
Pricing
from $1.50 / 1,000 profile scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
18
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Instagram Following Scraper exports the following and followers list of any Instagram profile as structured JSON. It accepts Instagram usernames or profile URLs and returns one record per connected account. Each record includes the source profile, list type, username, full name, verified and private flags, profile URL, and scrape timestamp. With enrichProfiles enabled, each record can also include biography, email, phone, website, counts, category, and business flag. The Actor is available on Apify and usable through Apify MCP.
Best fit and connected workflows
Use this Actor when your starting point is an Instagram profile and you want a clean list of connected accounts for analysis, routing, or downstream enrichment.
Common workflow fits include:
- Audience mapping from a brand, creator, or competitor profile.
- Lead collection from a following list with optional profile enrichment.
- Private vs. verified account review in a follower base.
- Social graph expansion before sending profile records to a downstream Instagram tool.
When you want reactions, comments, or review data for a profile discovered here, pass that profile into Instagram Comments Scraper. That workflow starts from a returned Instagram account and continues into engagement data for the same profile.
Practical scenario
A growth analyst starts with nasa and wants the accounts NASA follows. They enter the username, keep listType on following, and set a result cap that matches the size of the review. The Actor returns records with username, fullName, isVerified, isPrivate, profileUrl, and scrapedAt. The analyst sees that one returned account is verified and has a clear profile URL, then opens that profile in a separate workflow or sends it to a comments review step.
Input
| Field | Type | Description |
|---|---|---|
usernames | array of strings | Instagram usernames or profile URLs to scrape, such as nasa or https://www.instagram.com/natgeo/. Accepts bare handles, @handles, and full profile URLs. Targets user profiles only. |
listType | string | Which list to export: following, followers, or both. Defaults to following. |
maxResults | integer | Maximum profiles returned per target per list. Used as a hard cost cap. |
enrichProfiles | boolean | Adds profile bio, email, phone, website, counts, category, and business flag to each returned record. |
proxyConfiguration | object | Proxy settings for Instagram requests. The default uses Apify Residential proxy. |
Example input
{"usernames": ["nasa","https://www.instagram.com/natgeo/"],"listType": "following","maxResults": 100,"enrichProfiles": false,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Output
Each dataset item represents one account from the selected following or followers list.
| Field | Type | Description |
|---|---|---|
sourceUsername | string | The Instagram profile whose list this record came from. |
listType | string | following or followers. |
username | string | Handle of the connected account. |
fullName | string | Display name, if set. |
userId | string | Instagram numeric user ID. |
isPrivate | boolean | Whether the account is private. |
isVerified | boolean | Whether the account has a verified badge. |
profilePicUrl | string | Profile picture URL. |
profileUrl | string | Canonical Instagram profile URL. |
scrapedAt | string | ISO 8601 timestamp of when the record was scraped. |
biography | string | Profile bio text, with enrichment enabled. |
email | string | Business email or an email parsed from bio, with enrichment enabled. |
phone | string | Public business phone, with enrichment enabled. |
externalUrl | string | Linked website, with enrichment enabled. |
followerCount | integer | Follower count, with enrichment enabled. |
followingCount | integer | Following count, with enrichment enabled. |
mediaCount | integer | Post count, with enrichment enabled. |
category | string | Account category, with enrichment enabled. |
isBusiness | boolean | Business or professional account flag, with enrichment enabled. |
Example output record
{"sourceUsername": "nasa","listType": "following","username": "spacex","fullName": "SpaceX","userId": "12345678","isPrivate": false,"isVerified": true,"profilePicUrl": "https://instagram.fxxx.cdn.com/v/pic.jpg","profileUrl": "https://www.instagram.com/spacex/","scrapedAt": "2026-06-02T07:24:00.000Z"}
How it works
This Actor uses Instagram's private list endpoints with a managed rotating session pool and a residential proxy. It paginates the selected list until it reaches the requested maxResults cap for each target profile. Each returned profile is written as one dataset record. The implementation also includes per-session scoring and retirement, polite request pacing, and a stop-on-exhaustion session policy.
Pricing
This Actor uses Pay per event pricing. The primary event is Profile scraped, and Apify platform usage is charged separately. Open the live Pricing tab in Apify Console for the current pricing details.
A simple example: if a run returns one hundred profiles, billing is based on one hundred Profile scraped events, plus the relevant Apify platform usage for the run. If enrichProfiles is enabled, each enriched profile adds one more request and one more charge for that profile.
Use with AI agents (MCP)
This Actor is exposed through Apify MCP and can be called by AI agents that need structured Instagram connection lists. The tool identity is khadinakbar/instagram-following-scraper.
Use it when an agent needs a source Instagram username or profile URL and should receive normalized records for following or followers connections. The output provenance is the dataset items produced by the run, so each record keeps the source profile and scrape timestamp.
Fetch the following list for
nasa, return verified and private flags, and includeprofileUrlandscrapedAt. If enrichment is enabled, also surfacebiography, andexternalUrl.
Output interpretation is straightforward: each item is one connected profile. listType tells you which relationship was exported, and sourceUsername preserves the original source profile. Pagination is handled by the Actor, and maxResults acts as a hard cap on the number of returned profiles per source and per list. Cost follows the same cap because billing is based on returned profile events. If you work with a larger profile set, the dataset is still the main place to read the full result list back.
Apify API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('khadinakbar/instagram-following-scraper').call({usernames: ['nasa'],listType: 'following',maxResults: 10,enrichProfiles: false,});const dataset = client.dataset(run.defaultDatasetId);const { items } = await dataset.listItems();console.log('Dataset items:', items);
Best results and outcome guidance
Start with a small maxResults value when you are validating a profile, list type, or enrichment setting. Use following for accounts a profile follows, followers for accounts that follow the profile, and both when you want both directions in one run. If you need lead-style records, turn on enrichProfiles so each returned profile can include bio, email, website, counts, category, and business flag. Keep the proxy configuration on the default residential setting unless your Apify environment already provides a residential provider.
Design note
I found that the dataset contract always requires sourceUsername, listType, username, profileUrl, and scrapedAt, which makes every record traceable back to the original Instagram profile and scrape time.
Related Actors
- Instagram Comments Scraper - use after this Actor when you want comments, reactions, or review data for one of the returned Instagram profiles.
FAQ
What input can I use for usernames?
You can provide bare handles, @handles, or full Instagram profile URLs. The input schema is scoped to user profiles, which keeps the workflow centered on account connection lists.
When should I use following, followers, or both?
Use following to export accounts the profile follows, followers to export accounts that follow the profile, and both when you want both relationships tagged in the output.
What does enrichProfiles add?
It adds biography, email, phone, website, follower count, following count, post count, category, and business flag to each returned profile record.
How does the result cap work?
maxResults sets the maximum number of returned profiles per target profile per list. For both, the cap applies to following and followers separately.
Can I use this Actor through Apify MCP?
Yes. The Actor is MCP-ready and usable through Apify MCP as khadinakbar/instagram-following-scraper.
Which Actor is a natural next step after this one?
If you want comments for a returned Instagram profile, use Instagram Comments Scraper. It fits when you have a profile from this Actor and want engagement context for that same account.
Responsible use
Use the output in ways that respect Instagram's terms, applicable privacy and data-protection laws, and the context in which the profiles were collected. Review your own compliance requirements before storing, sharing, or enriching personal data.