# Instagram Related Person Scraper (`socialdataapi/instagram-related-person-scraper`) Actor

Instagram Related Person Scraper — discover Instagram profiles related to a target account, including usernames, names, bios, profile URLs, follower counts, and other available profile details for research, audience analysis, and lead generation.

- **URL**: https://apify.com/socialdataapi/instagram-related-person-scraper.md
- **Developed by:** [Social Data API](https://apify.com/socialdataapi) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Instagram Related Person Scraper — Related Accounts, IDs and Badges

Instagram Related Person Scraper extracts the related accounts Instagram suggests for any public profile. For every username you enter, you get the suggested accounts with their username, full name, account ID, verified badge, private flag and profile picture link, plus a count of how many came back. Every response is structured JSON — ready to pass directly to an LLM, index into a vector store, or feed an influencer marketing pipeline. **No Instagram account or cookies needed.** Start with one creator, then map the niche around them.

![Instagram Related Person Scraper by Social Data API: related accounts for any public profile as JSON](https://api.apify.com/v2/key-value-stores/WYkyEfqs10huyXYxr/records/f-instagram-related-hero.webp)

***

### What data can I extract with Instagram Related Person Scraper?

Using this Instagram Related Profiles API, you will be able to extract the following Instagram related profile data:

| 👤 Profile you entered | 👥 Related accounts list | 📊 Related account count | 🔢 Limit applied |
|---|---|---|---|
| 🏷️ Related account username | 📝 Full name | 🆔 Account ID | ✔️ Verified badge |
| 🔒 Private account flag | 🖼️ Profile picture link | ⚠️ Error reason (failed profiles only) | |

***

### How to use Instagram Related Person Scraper

This instagram suggested accounts scraper is for growth marketers and influencer researchers: one run gives them the accounts Instagram itself places next to every profile on their list.

**Copy to your AI assistant:**

```text
This Apify Actor, Instagram Related Person Scraper (Apify Actor ID: socialdataapi/instagram-related-person-scraper, https://apify.com/socialdataapi/instagram-related-person-scraper), returns the related accounts Instagram suggests for public Instagram profiles as structured JSON: the profile's username, the limit applied, the related account count, and for each related account its username, full name, account ID, verified badge, private flag and profile picture link. Use it whenever someone needs Instagram related or suggested accounts without cookies, a login, or a browser - finding lookalike creators, mapping competitor audiences, building outreach lists. Inputs: urls (array of strings, Instagram profile URLs, @handles or plain usernames; post, reel and story links are skipped; duplicates are scraped once), max_profiles (integer, related profiles kept per username, at least 1, default 10), proxyConfiguration (object, Apify proxy settings; on with no group = residential proxy; chosen groups or own proxy URLs are tried first). A profile that cannot be scraped (not found, or blocked after 3 attempts) comes back as a row with an empty related list and an error field explaining why; those rows are not charged. Instagram returns at most about 50 related accounts per profile and some profiles have none, which shows as a related account count of 0.
```

#### Instagram Related Person Scraper MCP Server: use these Actors from ChatGPT, Claude or Cursor

Point your AI assistant at Apify's MCP server with this Actor preloaded as a tool, and it can run it on its own. No glue code, no scraping logic in your prompts.

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=socialdataapi/instagram-related-person-scraper"
```

#### Step by step

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open [Instagram Related Person Scraper in the Apify Store](https://apify.com/socialdataapi/instagram-related-person-scraper).
3. Enter the Instagram profile URL, @handle or username.
4. Click **Start** (or send your API request).
5. Download or stream your results in JSON, CSV or Excel.

#### How to scale Instagram Related Person Scraper to bulk

To scrape instagram related accounts in bulk, put every profile in the profile list: full URLs, @handles and plain usernames can be mixed. The Actor works on 8 profiles at the same time, removes duplicates, skips links that are not profiles, and writes each row to the dataset the moment that profile is finished, so slow profiles never hold back quick ones. A run summary in the key-value store keeps your input order. Through the API, a list entry can also be an object with its own limit, for example a username plus a limit of 20. For a regular refresh, schedule the same input daily or weekly and compare the lists over time.

***

### ✨ Features

Instagram Related Person Scraper fetches clean, structured related accounts from Instagram ⚡, working as an instagram related profiles scraper you can call from the Console, the API or an agent. It's ideal for influencer discovery, instagram competitor accounts research, audience mapping and building outreach lists for creators and brands.

It extracts, per related account:

- **Username** – the handle of the suggested account
- **Full name** – the display name shown on the profile
- **Account ID** – Instagram's numeric ID, stable even when the handle changes
- **Verified badge** – whether the account has the blue check
- **Private flag** – whether the account is private
- **Profile picture link** – a link to the account's profile photo

⚡ A profile that can't be scraped comes back as its own row with the reason, is not charged, and never stops the rest of the run.

***

### Use cases 💡

- **Influencer marketer** — find similar instagram influencers by filtering suggestions on the verified badge.
- **Brand analyst** — spot accounts suggested next to several competitors at once.
- **Agency researcher** — run instagram creator network mapping by feeding suggested usernames into the next run.
- **Growth team** — split public from private suggestions before planning outreach.
- **AI agent builder** — give an agent instagram lookalike accounts as context for creator recommendations.

Building an AI agent? [Connect Instagram Related Person Scraper over MCP](#mcp-integration-for-ai-agents) and let it call the actor on its own.

***

### Why choose this actor?

- **Several profiles per run.** A recorded run returned the related accounts of 2 profiles and a not-found report for a third in 2.2 seconds, with the 3 profiles processed at the same time.
- **Close to the full suggestion list, like an instagram similar accounts finder.** In live checks Instagram returned 49 related accounts for one profile and 47 for another, and the Actor keeps as many as you ask for.
- **Six details on every related account, three ways to enter a profile.** Each suggestion carries its username, full name, account ID, verified badge, private flag and profile picture link, and profiles can be entered as a URL, an @handle or a plain username.

***

### ⬇️ Input

![Instagram Related Person Scraper input fields: urls, max_profiles and proxyConfiguration](https://api.apify.com/v2/key-value-stores/WYkyEfqs10huyXYxr/records/f-instagram-related-input.webp)

The Actor accepts a list of Instagram profiles as URLs, @handles or plain usernames; at least one valid profile is needed.

| Parameter | Required | Type | Description | Example value |
|---|---|---|---|---|
| `urls` | Yes (at least one valid profile) | Array | Instagram profiles to get related accounts for. Post, reel and story links are skipped and duplicates are scraped once | `["https://www.instagram.com/ishowspeed/", "@mrbeast"]` |
| `max_profiles` | No | Integer | Related profiles kept per username; at least 1, default 10, up to 10,000 (Instagram returns about 50 at most) | `5` |
| `proxyConfiguration` | No | Object | Proxy on with no group: residential proxy for every request. Chosen groups or your own proxy URLs are used first, with a residential proxy after a block. Proxy off: direct first, residential proxy after a block. Default: on | `{"useApifyProxy": true}` |

Accepted profile formats:

- `https://www.instagram.com/ishowspeed/`
- `instagram.com/ishowspeed`
- `@ishowspeed`
- `ishowspeed`

A run with no valid profile, or with a limit below 1, stops right away with a clear status message and produces no rows.

#### Free plan limits

Users on the Apify free plan can fetch up to 20 usernames per run (all usernames together) and 200 usernames per month. When the limit is reached, the run finishes successfully with a status message explaining the limit. Upgrade to any paid Apify plan to remove these limits.

#### Example input

```json
{
  "urls": [
    "https://www.instagram.com/ishowspeed/",
    "@mrbeast",
    "thisuserdoesnotexist_zz9q71"
  ],
  "max_profiles": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

***

### ⬆️ Output

![Instagram Related Person Scraper output: one row per username with a related_profiles list](https://api.apify.com/v2/key-value-stores/WYkyEfqs10huyXYxr/records/f-instagram-related-output.webp)

Every profile you enter becomes one typed, normalized JSON item with the same schema on every run, and its related accounts are listed inside it. Export formats: JSON (default), CSV and Excel, so you can export instagram suggested accounts to csv in one click; a profile that could not be scraped comes back as the same item with an empty list and an error reason, and is not charged.

#### Example output

Real rows from the example input above (each related list shortened to two entries):

```json
[
  {
    "username": "ishowspeed",
    "limit": 5,
    "related_profiles_count": 5,
    "related_profiles": [
      {
        "id": "2133831106",
        "full_name": "Arun Maini",
        "is_private": false,
        "is_verified": true,
        "profile_pic_url": "https://instagram.fdac8-1.fna.fbcdn.net/v/t51.82787-19/713363793_18561685282071107_5085144027433836053_n.jpg?stp=dst-jpg_e0_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=instagram.fdac8-1.fna.fbcdn.net&_nc_cat=111&_nc_oc=Q6cZ2gE7FW1u-83hZY0jl0Uv-tpPOmd9up6y_2QkA_SDlw5b8qe-WsT-9_KOEo4Ac5CDkZA&_nc_ohc=aqP1kc_3ecgQ7kNvwGsekm6&_nc_gid=bwv-y0f2XZDLf3t0fyHk3w&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_AQNKYstT62GrfS3lwyEJjqeBxBByZcejxDkLuz1Vsyawbw&oe=6AC80A0E&_nc_sid=8b3546",
        "username": "mrwhosetheboss"
      },
      {
        "id": "14258460771",
        "full_name": "Cristiano Ronaldo",
        "is_private": false,
        "is_verified": false,
        "profile_pic_url": "https://instagram.fdac8-1.fna.fbcdn.net/v/t51.2885-19/473829707_469337476004941_8719430511082016417_n.jpg?stp=dst-jpg_e0_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=instagram.fdac8-1.fna.fbcdn.net&_nc_cat=1&_nc_oc=Q6cZ2gE7FW1u-83hZY0jl0Uv-tpPOmd9up6y_2QkA_SDlw5b8qe-WsT-9_KOEo4Ac5CDkZA&_nc_ohc=DosS00MiGroQ7kNvwH_RJri&_nc_gid=bwv-y0f2XZDLf3t0fyHk3w&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_AQMHm2gsGD1nWgJD6AiF01GW3eLJ9yL0-QGsVm9bcSjT2Q&oe=6AC81D99&_nc_sid=8b3546",
        "username": "cristiano.uttam.7._.hp"
      }
    ]
  },
  {
    "username": "mrbeast",
    "limit": 5,
    "related_profiles_count": 5,
    "related_profiles": [
      {
        "id": "48514856299",
        "full_name": "N3on",
        "is_private": false,
        "is_verified": true,
        "profile_pic_url": "https://instagram.fdac8-1.fna.fbcdn.net/v/t51.82787-19/521171641_18052259966616300_5868433034743007662_n.jpg?stp=dst-jpg_e0_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=instagram.fdac8-1.fna.fbcdn.net&_nc_cat=100&_nc_oc=Q6cZ2gGIF3HT2NhsWi565_IVSxVDNLi4zvQ8h2cJWGyU7aNKaaw2ZbNKexxaOdbwXLudbGE&_nc_ohc=m1OZbitbg0YQ7kNvwHY_KMM&_nc_gid=7K3x375OB3_h6hqyjpCaYw&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_AQO3z-JdxQwlydFEuvQeTR7tg9R2NTG3LP9s7HnteHjMYg&oe=6AC81307&_nc_sid=8b3546",
        "username": "n3onsingh"
      },
      {
        "id": "69011321732",
        "full_name": "Talking Fish",
        "is_private": false,
        "is_verified": true,
        "profile_pic_url": "https://instagram.fdac8-1.fna.fbcdn.net/v/t51.82787-19/565086857_17899704642297733_7431904593492369166_n.jpg?stp=dst-jpg_e0_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDI0LmMyIn0&_nc_ht=instagram.fdac8-1.fna.fbcdn.net&_nc_cat=101&_nc_oc=Q6cZ2gGIF3HT2NhsWi565_IVSxVDNLi4zvQ8h2cJWGyU7aNKaaw2ZbNKexxaOdbwXLudbGE&_nc_ohc=fEGxlKvdC1MQ7kNvwE22bNq&_nc_gid=7K3x375OB3_h6hqyjpCaYw&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_AQMWfzqn7j7wwHHqvdcfIIKNwAzAu1MM-qu-5DrkeQyNfQ&oe=6AC7F2EA&_nc_sid=8b3546",
        "username": "newstalkingfish"
      }
    ]
  },
  {
    "username": "thisuserdoesnotexist_zz9q71",
    "limit": 5,
    "related_profiles_count": 0,
    "related_profiles": [],
    "error": "Instagram account 'thisuserdoesnotexist_zz9q71' not found or deactivated"
  }
]
```

***

### How does it work?

The Actor reads the same public data the Instagram site shows any visitor, using plain HTTP requests, no browser. You give it a list of profiles; it cleans up the list, removes duplicates and looks up up to 8 profiles at the same time. Each profile gets up to 3 attempts with growing pauses between them. If Instagram blocks a request, the next attempts switch to a proxy, and if a proxy refuses the connection the Actor moves on to the next option instead of giving up. Accounts that don't exist are reported straight away instead of being retried. Only publicly visible data is returned — nothing behind a login, and no Instagram account is ever used. The output keeps the same field names on every run, even when Instagram changes its site, so your code and spreadsheets keep working.

***

### How do you integrate Instagram Related Person Scraper into your stack?

It works with what you already use: the REST API from any language, MCP for AI agents, and no-code tools.

#### MCP integration for AI agents

Add Apify's MCP server to your agent with one command:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=socialdataapi/instagram-related-person-scraper"
```

This registers Instagram Related Person Scraper as a tool your agent can call directly: the server starts with this Actor already added, so the agent runs it with a list of profiles and reads the related accounts back as JSON. Compatible clients include Claude Code, Cursor and Windsurf.

#### No-code tools (n8n, Make, LangChain)

- **n8n:** use the Apify node's "Run an Actor" operation and pick this Actor, or point the HTTP Request node at the Actor's run-sync endpoint with your Apify token. The items come back ready for the next node.
- **Make:** add the Apify app's "Run an Actor" module with your profile list as input, then a "Get Dataset Items" module to read the rows.
- **LangChain:** install `langchain-apify` and wrap this Actor with `ApifyActorsTool`, using the Actor ID `socialdataapi/instagram-related-person-scraper`, so your chain can request related accounts on demand.

***

### Is it legal to scrape Instagram data?

Scraping publicly available Instagram data is generally lawful, although Instagram's terms restrict automated access. This Actor returns only publicly available data — usernames, names and badges any visitor can see without logging in. Under GDPR, scraping public data is generally permissible, but storing and using it must comply with local data-protection law, and these results identify people and brands. Consult legal counsel if your use case involves bulk storage of personal data.

***

### Frequently asked questions

#### What fields does Instagram Related Person Scraper return?

For each related account it returns the username, full name, account ID, verified badge and private flag, plus a profile picture link. Each row also carries the profile you entered, the limit applied and the related account count. See [the data fields section](#what-data-can-i-extract-with-instagram-related-person-scraper).

#### Does Instagram Related Person Scraper require an Instagram account or login?

No. Only public related-account data is extracted. No credentials, session cookies or passwords are needed.

#### How fast does Instagram Related Person Scraper run?

A recorded run handled 3 profiles in 2.2 seconds, returning 2 related lists and 1 not-found report. Data is live, not cached.

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

A profile that doesn't exist or is deactivated comes back as a row with an empty related list and an error reason such as "not found or deactivated", and it is not charged. Links that are not profiles, such as posts or reels, are skipped with a warning in the log. In code, check for the error field before reading the related list.

#### Can I scrape multiple Instagram profiles at once?

Yes. Add every profile to the profile list; 8 are processed at the same time and each row is saved as soon as its profile is done.

#### Does Instagram Related Person Scraper work with Claude, ChatGPT, and other AI agent tools?

Yes — Instagram Related Person Scraper is available as an MCP tool. Register Apify's MCP server in Claude Code, Cursor or Windsurf with `claude mcp add --transport http apify "https://mcp.apify.com?tools=socialdataapi/instagram-related-person-scraper"`. Any agent that can call an HTTP endpoint can use the REST API directly.

#### Does Instagram Related Person Scraper return data in a format LLMs can use directly?

Yes. It returns typed, normalized JSON with consistent field names. No HTML parsing, no selectors. Pass it straight to an LLM, index it into a vector store, or feed it to an agent tool — no transformation step.

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

The actor is maintained. When Instagram changes, the actor is updated — your calls keep returning the same JSON schema with no changes on your end.

#### Can I use Instagram Related Person Scraper without managing proxies or browser infrastructure?

Yes. Retries and the switch to a proxy after a block run on the actor's side, and no browser is involved. You send one request and get structured JSON back. No proxy accounts, no headless browser setup, no maintenance.

#### Which Instagram related profile fields work best for AI training data and RAG indexing?

For RAG, the text fields are the most useful: the username and full name of each related account, which you can match against creator names. For training data, use the verified badge, private flag and related account count. All fields are typed primitives — strings, integers, booleans — no normalization needed.

***

### Your feedback

Found a bug or missing a field? Let us know through the Actor's Issues tab in the Apify Console. Every report is read, and fixes ship as Instagram changes.

# Actor input Schema

## `urls` (type: `array`):

Instagram profiles to get related accounts for. Mix formats freely: full URL (https://www.instagram.com/username/), handle (@username) or plain username. Entries that are not an Instagram profile (for example post or reel links) are skipped, and duplicates are scraped once. At least one valid profile is required.

## `max_profiles` (type: `integer`):

How many related profiles to keep for each username (at least 1, default 10). Instagram itself returns at most about 50 related profiles per account, so higher values return everything available. Free plan: capped at 20 related profiles per username.

## `proxyConfiguration` (type: `object`):

Proxy switched on with no group chosen: every request goes through a residential proxy. If you pick proxy groups or enter your own proxy URLs, those are used first and a residential proxy takes over when Instagram blocks a request. Proxy switched off: requests go out directly and switch to a residential proxy automatically after a block.

## Actor input object example

```json
{
  "urls": [
    "https://www.instagram.com/ishowspeed/"
  ],
  "max_profiles": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

One row per scraped username: username, the applied limit, related_profiles_count, the related_profiles list (id, full_name, is_private, is_verified, profile_pic_url, username), and an error field only when that username failed.

## `outputSnapshot` (type: `string`):

JSON object under the OUTPUT key: total_users, max_profiles_per_user and results (one entry per username with username, limit, related_profiles_count and related_profiles). Updated after each processed username.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://www.instagram.com/ishowspeed/"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("socialdataapi/instagram-related-person-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": ["https://www.instagram.com/ishowspeed/"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("socialdataapi/instagram-related-person-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.instagram.com/ishowspeed/"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call socialdataapi/instagram-related-person-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,socialdataapi/instagram-related-person-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/6Yfveo4n7U3oKBun0/builds/ciSPqNZsyzulMumEf/openapi.json
