Instagram Related Person Scraper avatar

Instagram Related Person Scraper

Pricing

$19.99/month + usage

Go to Apify Store
Instagram Related Person Scraper

Instagram Related Person Scraper

The Instagram Related Person Scraper helps you discover and extract data about related or suggested Instagram accounts. Gather usernames, bios, follower counts, and profile links. Perfect for influencer research, competitor analysis, and expanding outreach with structured, actionable data.

Pricing

$19.99/month + usage

Rating

5.0

(11)

Developer

Scraper Engine

Scraper Engine

Maintained by Community

Actor stats

10

Bookmarked

335

Total users

12

Monthly active users

5 days ago

Last modified

Share

Instagram Related Person Scraper extracts the "related" and "suggested" accounts Instagram itself surfaces for any public profile — returning each related account's username, full_name, id, is_verified, is_private, and profile_pic_url. Results come back as clean, structured JSON with no HTML to parse, and no Instagram login is required to run it. Add one or more usernames, hit Start, and map creator networks or competitor audiences in a single run.

Instagram Related Person Scraper is an Apify Actor that queries Instagram's own public web profile endpoint for the "related profiles" (or "chaining suggestions") graph Instagram already computes for a given account, and returns those suggested accounts as structured data. It does not require an Instagram account, login, or session cookie — it bootstraps its own lightweight public session automatically for each run. It's built for growth marketers, influencer researchers, and developers who need to map Instagram's suggested-account graph programmatically instead of clicking through "related accounts" one profile at a time.

Instagram serves a "related profiles" graph for public accounts without requiring the viewer to log in — the same suggestions the endpoint would hand any anonymous visitor. What's not available is a related-profile graph for private accounts, or any data field Instagram's own endpoint doesn't include in that response (such as counts).

Data CategoryPublicly AvailableRestricted behind private-account visibility
Related profiles for public accountsYes — returned directly by Instagram's profile endpoint
Related profiles for private accountsNoInstagram doesn't expose a related-profile graph for accounts you can't already view
Related account username & full nameYes
Verified-badge flag on related accountsYes
Private-account flag on related accountsYes
Profile picture URL of related accountsYes
Follower/following counts of related accountsNoNot present in this endpoint's response — would require a separate profile lookup
The complete set of accounts Instagram could ever suggestNoInstagram's own algorithm caps and orders the list; this Actor returns exactly what that endpoint hands back

Instagram Related Person Scraper only returns publicly visible data — what any visitor sees. Nothing behind a login wall.

Instagram Related Person Scraper returns one row per input username, holding a run summary plus a nested list of the related accounts Instagram suggested for it.

Field NameDescription
usernameThe input profile the related accounts were fetched for
limitThe per-profile cap that was applied to this username (from max_profiles)
related_profiles_countNumber of related profiles returned for this username
related_profilesArray of related-profile objects (see below)
errorPresent only when the fetch failed for this username; holds the failure reason

Each entry inside related_profiles describes one suggested account:

Field NameDescription
idInstagram's internal numeric ID for the related account
usernameHandle of the related/suggested account
full_nameDisplay name of the related account
is_verifiedtrue if the related account has Instagram's verified badge
is_privatetrue if the related account is private
profile_pic_urlDirect URL to the related account's profile picture

🤖 Add-on: Need additional Instagram data?

Related profiles tell you who Instagram thinks looks similar — pair that with Instagram Profile Scraper for full bio, follower, and post-count data on any of those accounts, or Instagram Followers Scraper With Bio Contact Enrichment to turn a seed account's own followers into a contactable lead list. If you're mapping hashtags instead of accounts, Instagram Related Hashtag Stats Scraper Pay Per Events applies the same "what does Instagram suggest next" idea to tags.

Why not build this yourself?

Instagram's official Graph API has no endpoint for related, suggested, or "accounts like this one" data at any access tier — Business Discovery only exposes basic public metrics for a fixed set of connected accounts, so there's no official API path to replace this Actor. Building your own scraper means reverse-engineering Instagram's private web_profile_info endpoint, generating and refreshing an app ID and CSRF token, spoofing a browser's TLS fingerprint to avoid immediate blocks, and rebuilding all of it whenever Instagram tweaks the response shape. Add residential proxy costs and retry/backoff logic on top, and maintaining this in-house takes ongoing engineering time that a maintained Actor absorbs for you.

Instagram Related Person Scraper runs directly on Apify — no separate signup or API key beyond your Apify account is needed.

  1. Open the Actor on its Apify Store page and click Try for free (or Start, if you already have it saved).
  2. Add one or more Instagram profile URLs, @handles, or plain usernames to urls — every field is optional, so an empty run still completes against a built-in demo profile.
  3. Adjust max_profiles if you want more or fewer related accounts per username than the default of 50.
  4. Leave proxyConfiguration enabled (it's prefilled on) for more reliable runs.
  5. Click Start, then export the dataset as JSON, CSV, or Excel once the run finishes.

urls accepts a list, so adding multiple usernames or profile URLs in one run scrapes each one's related profiles in sequence — there's no separate "bulk mode" to enable. When calling the Actor through the Apify API instead of the Console, each entry in the list can also be an object like {"username": "nike", "limit": 20} to give that one profile its own cap instead of the run-wide max_profiles default.

  • An influencer marketing manager scouting lookalike creators filters related_profiles by is_verified to shortlist verified accounts similar to a known creator before outreach.
  • A growth marketer researching a niche runs several competitor usernames through urls and compares each related_profiles list to find accounts that show up as "related" to more than one competitor.
  • A brand-safety or research team uses is_private on each related profile to separate accounts that can be vetted further (public) from ones that can't (private).
  • A social-listening researcher chains discovery by feeding related_profiles[].username values from one run back into urls for a follow-up run, walking Instagram's suggestion graph outward one hop at a time.
  • An AI engineer building a "find accounts like this" agent tool feeds the related_profiles JSON array straight into a vector store or RAG pipeline, using username and full_name for semantic matching without writing any parsing code.

Before fetching any profile, the Actor bootstraps a session by requesting the target's public profile page like a browser would, pulling a real app ID and CSRF token out of the response instead of using only static defaults. Every request to Instagram is sent through curl_cffi with Chrome TLS-fingerprint impersonation rather than a plain HTTP client, and responses are checked for both blocking status codes (401/403/429/500/502/503/504) and HTML "login wall" pages disguised as a 200 response. If proxyConfiguration is enabled, the Actor always escalates to Apify's residential proxy pool and retries a blocked request up to 3 times; the session bootstrap step retries up to 3 times with exponential backoff as well. A short fixed delay is inserted between each username's requests to pace the run. If a username still fails after all retries, that row is written with an empty related_profiles list and an error field describing the failure, instead of stopping the whole run.

⬇️ Input

Instagram Related Person Scraper takes three optional parameters — nothing is required to start a run.

ParameterRequiredTypeDescriptionExample Value
urlsNoArrayInstagram profile URLs, @handles, or plain usernames to fetch related accounts for. Add multiple entries to cover several profiles in one run.["https://www.instagram.com/ishowspeed/", "@mrbeast"]
max_profilesNoIntegerMaximum related profiles to fetch per input username. Minimum 0, maximum 10,000.50
proxyConfigurationNoObjectApify Proxy settings. Residential proxy is prefilled on for reliability.{"useApifyProxy": true}

Example input

{
"urls": [
"https://www.instagram.com/ishowspeed/",
"@mrbeast",
"nike"
],
"max_profiles": 50,
"proxyConfiguration": {
"useApifyProxy": true
}
}

⬆️ Output

Every run writes one row per input username to the Actor's dataset, in typed, consistent JSON — export it as JSON, CSV, or Excel directly from the run. Each row is billed as one row_result pay-per-event charge, whether that username's fetch succeeded or ended in an error row.

Example output

[
{
"username": "ishowspeed",
"limit": 50,
"related_profiles_count": 4,
"related_profiles": [
{
"id": "7594441026",
"username": "mrbeast",
"full_name": "MrBeast",
"is_private": false,
"is_verified": true,
"profile_pic_url": "https://scontent.cdninstagram.com/v/t51.2885-19/mrbeast_profile.jpg"
},
{
"id": "1922658954",
"username": "kaicenat",
"full_name": "Kai Cenat",
"is_private": false,
"is_verified": true,
"profile_pic_url": "https://scontent.cdninstagram.com/v/t51.2885-19/kaicenat_profile.jpg"
},
{
"id": "48282783661",
"username": "duke.dennis",
"full_name": "Duke Dennis",
"is_private": false,
"is_verified": true,
"profile_pic_url": "https://scontent.cdninstagram.com/v/t51.2885-19/dukedennis_profile.jpg"
},
{
"id": "6944599466",
"username": "agentzeroatl",
"full_name": "Agent 00",
"is_private": false,
"is_verified": false,
"profile_pic_url": "https://scontent.cdninstagram.com/v/t51.2885-19/agent00_profile.jpg"
}
]
},
{
"username": "some_private_account",
"limit": 50,
"related_profiles_count": 0,
"related_profiles": [],
"error": "BLOCKED_LOGIN_WALL: response was HTML, not JSON"
}
]

How does it work?

Instagram Related Person Scraper first requests each target's public profile page the way a browser would, pulling out a live app ID, CSRF token, and cookies instead of relying only on static fallbacks. It then calls Instagram's own web_profile_info web endpoint for that username and reads whichever related-accounts graph Instagram returns — edge_related_profiles or edge_chaining, depending on the account — normalizing both into the same output shape. Requests are sent with a Chrome TLS-fingerprint impersonation layer rather than a real headless browser, and route through Apify's residential proxy pool when enabled, so no browser rendering or JavaScript execution happens on your end. Only what Instagram's public endpoint actually returns is included — nothing is inferred or filled in. Because the output fields are normalized in code rather than scraped from HTML, the same username / related_profiles schema stays stable even if Instagram changes its page layout.

Integrations

Instagram Related Person Scraper runs on Apify, so it works with anything that can call an HTTP API or an Apify client library — no proprietary SDK required.

from apify_client import ApifyClient
client = ApifyClient("<APIFY_API_TOKEN>")
run = client.actor("scraper-engine/instagram-related-person-scraper").call(run_input={
"urls": ["https://www.instagram.com/ishowspeed/", "@mrbeast"],
"max_profiles": 50,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["username"], item["related_profiles_count"])

Works in Go, Ruby, Node.js, cURL — any language that can make an HTTP request.

MCP integration for AI agents

Instagram Related Person Scraper is reachable through Apify's Actors MCP Server, which exposes Actors on Apify Store as callable tools for MCP-compatible clients such as Claude Desktop and Claude Code. Register it by connecting from this Actor's page in Apify Console, or by running npx @apify/actors-mcp-server configured with this Actor's store ID.

No-code tools (n8n, Make, LangChain)

In n8n, use the HTTP Request node (or the community Apify node) pointed at this Actor's run endpoint, passing urls and max_profiles in the request body. In Make, use the Apify app's "Run Actor and get dataset items" module and map urls from an earlier scenario step. In LangChain, call the same Apify API endpoint from a custom Tool, or load results with the community Apify dataset loader, so an agent can pull a fresh related-profile graph mid-conversation.

Scraping publicly available Instagram profile data is generally lawful, though Instagram's own Terms of Service restrict automated access to the platform. Instagram Related Person Scraper only returns data Instagram's own endpoint already serves publicly — usernames, names, and badges any visitor could see, nothing from behind a login wall. Because the accounts returned are identifiable individuals or brands, this output can count as personal data under GDPR and CCPA, so you need a lawful basis before storing or reusing it, and should honor deletion/access requests from anyone whose data you keep. Consult legal counsel if your use case involves bulk storage of personal data or spans multiple jurisdictions.

Frequently asked questions

The top fields are username, related_profiles (with nested username, full_name, is_verified, and is_private), and related_profiles_count. See What data can I extract above for the full field list.

No. The Actor bootstraps its own public session for each run by requesting the target's profile page directly — no sessionid cookie, password, or Instagram account is needed as input.

Up to max_profiles (default 50, maximum 10,000) per input username, and you can add as many usernames to urls as you want processed in that run.

What happens if a profile is private or doesn't exist?

Instagram doesn't expose a related-profiles graph for accounts you can't view, so that username's row comes back with an empty related_profiles array and an error field holding the failure reason (for example, an HTTP error or a detected login-wall response), rather than failing the whole run.

Can I scrape multiple Instagram profiles at once?

Yes. urls is a list — add every username or profile URL you want related accounts for, and the Actor processes them one after another in the same run.

Yes. It's reachable through Apify's Actors MCP Server for MCP-compatible clients, and callable as a plain HTTP endpoint by any agent framework that can make API calls.

Most related-profile tools on the market differ mainly in whether they accept a list of usernames per run or only one at a time, and whether they return structured flags like is_verified and is_private alongside the username. Instagram Related Person Scraper accepts a list of usernames in a single run and returns those flags on every related profile by default.

Yes. Output is typed, normalized JSON with consistent field names across runs — no HTML parsing or CSS selectors needed. Pass it straight to an LLM, index it in a vector store, or feed it to an agent tool.

What happens when Instagram changes its layout or anti-bot system?

The Actor is maintained, and the output schema (username, related_profiles, and its nested fields) stays stable even when Instagram's internal endpoint or page structure changes. No specific update turnaround time is guaranteed.

Yes. There's no browser involved at all — the Actor talks directly to Instagram's web endpoint with a TLS-impersonating HTTP client, and handles residential proxy rotation and retries internally when proxyConfiguration is enabled.

For RAG-style semantic matching, index username and full_name — they're the identity-bearing text fields returned for every related profile. For structured filtering or training features, is_verified, is_private, and related_profiles_count return as consistently typed booleans and numbers across every row, since this Actor doesn't include free-text bio fields in this particular output.

Scraper NameWhat it extracts
Instagram Profile ScraperFull profile data — bio, follower/following/post counts, verification, related accounts, and latest posts
Instagram Followers Scraper With Bio Contact EnrichmentA profile's followers list, optionally enriched with bio, business category, and public email/phone
Instagram Followers — New Followers & Unfollows CheckerFollowers or following lists with cross-run growth diffs (new followers, unfollows, growth rate)
Instagram Hashtag ScraperPosts or reels for a given hashtag, section by section
Instagram Related Hashtag Stats Scraper Pay Per EventsHashtag post counts plus the related hashtags Instagram itself suggests, by popularity tier
Instagram Comments Scraper With Lead EnrichmentPost/reel comments with lead-intent flags and optional commenter profile enrichment

Your feedback

Found a bug or missing a field? Let us know so we can take a look — feedback like this is what keeps this Actor accurate as Instagram's site changes.