Instagram Following Scraper & Suggested Similar Accounts
Pricing
$19.99/month + usage
Instagram Following Scraper & Suggested Similar Accounts
📸 Instagram Following Scraper & Suggested Similar Accounts extracts public following lists—usernames, names, bios, profile URLs & IDs—with filters, pagination & CSV/JSON export. 🔎 Ideal for influencer research, competitor analysis, lead gen & growth campaigns. ⚖️ Public data only.
Pricing
$19.99/month + usage
Rating
0.0
(0)
Developer
ScrapeBase
Maintained by CommunityActor stats
0
Bookmarked
16
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
An Apify Actor that scrapes the Instagram following list of one or more public profiles — and, for each followed account, also pulls the suggested / similar accounts Instagram itself offers for it. Built for influencer-marketing and partnerships research: instead of only cataloguing who a profile already follows, you also get the accounts Instagram's own recommender puts next to each one, so you can find the next creators to approach instead of only the ones already taken.
What it scrapes
- Following list — every account a given Instagram profile follows (), paginated, pushed to the dataset live as it's collected.GET /api/v1/friendships/{user_id}/following/
- Suggested / similar accounts (optional, on by default) — for each followed account, Instagram's own
"Suggested for you / Similar accounts" list (
GET /api/v1/discover/chaining/?target_id={pk}), attached to that row assuggested_accounts.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
urls | array (required) | prefill ["https://www.instagram.com/mrbeast/"] | Full profile URLs, @handle, or bare handle. Any number of profiles for a bulk run. |
maxItems | integer | 10 | Max accounts to collect per profile from the following list. 0 = no cap. |
sessionId | string | — | Your Instagram sessionid cookie. The following list (and the suggested-accounts call) return HTTP 401 without it — effectively required even though the field is marked optional. |
proxyConfiguration | object | {"useApifyProxy": false} | Optional Apify Proxy settings. The actor falls back direct → datacenter → residential automatically when Instagram pushes back. |
includeSuggestedAccounts | boolean | true | For every followed account collected, also fetch Instagram's suggested/similar accounts for it. Costs one extra request per followed row. |
maxSuggestedPerAccount | integer | 10 | How many suggested accounts to keep per followed account. 0 = keep everything Instagram returns (Instagram typically hands back roughly 30–80 per account in one response, with no further pages). |
hideAlreadyFollowedSuggestions | boolean | true | Drop any suggested account that the profile already follows (compared against the following list collected in the same run only — nothing is stored between runs). |
Example input:
{"urls": ["https://www.instagram.com/nasa/"],"maxItems": 10,"sessionId": "YOUR_SESSIONID_COOKIE_VALUE","proxyConfiguration": { "useApifyProxy": false },"includeSuggestedAccounts": true,"maxSuggestedPerAccount": 10,"hideAlreadyFollowedSuggestions": true}
Output
Each dataset item is one followed account, with the base 17 fields plus suggested_accounts:
{"pk": "19511341806","pk_id": "19511341806","id": "19511341806","full_name": "Jonny Kim","is_private": false,"fbid_v2": "17841419614188917","third_party_downloads_enabled": 1,"strong_id__": "19511341806","profile_pic_id": "3600032490686429836_19511341806","profile_pic_url": "https://instagram.f<cdn-node>.fna.fbcdn.net/v/t51.2885-19/...","is_verified": true,"username": "jonnykimusa","has_anonymous_profile_picture": false,"account_badges": [],"latest_reel_media": 0,"is_favorite": false,"followed_by": "nasa","suggested_accounts": [{"pk": "1506607755","pk_id": "1506607755","id": "1506607755","strong_id__": "1506607755","username": "leonardodicaprio","full_name": "Leonardo DiCaprio","is_private": false,"is_verified": true,"profile_pic_id": "..._1506607755","profile_pic_url": "https://instagram.f<cdn-node>.fna.fbcdn.net/v/t51.2885-19/...","social_context": "Leonardo DiCaprio","chaining_info": { "sources": "", "algorithm": null }}]}
suggested_accounts is only present on the row when includeSuggestedAccounts is true. It is an empty
array [] when Instagram doesn't offer suggestions for that particular account, or when every suggestion
was filtered out by hideAlreadyFollowedSuggestions — never a fabricated value.
How it works
- Resolves each seed profile's numeric user id from its logged-out profile HTML.
- Pages the
following/API (12 accounts per request) and pushes each row to the dataset immediately. - If
includeSuggestedAccountsis on, callsdiscover/chaining/?target_id={pk}for the account just collected, drops any suggestion that's the seed profile itself or (optionally) already followed by the seed, keeps up tomaxSuggestedPerAccount, and attaches the result to that same row before pushing. - Falls back automatically from a direct connection to an Apify datacenter proxy, then to a sticky residential proxy, if Instagram starts rejecting requests.
Notes / honest limits
- The actor scrapes only publicly available data reachable through Instagram's own web API with a logged-in session cookie you provide.
- Suggested accounts are offered by Instagram for most, not necessarily every, followed account —
accounts Instagram doesn't consider eligible come back with an empty
suggested_accountslist, logged as such, and never fail the run. - Neither the following list nor the suggested-accounts list has a documented stable order between identical calls — treat both as "N of the list", not "the top/most-recent N".
chaining_infoandsocial_contextare passed through exactly as Instagram returns them; on the accounts measured during development,chaining_infocame back empty andsocial_contextoften matched the account's own display name, so neither should be relied on as a distinct label.- The end user is responsible for compliance with applicable laws and platform rules.