# Instagram Related Users Scraper (`maximedupre/instagram-related-users-scraper`) Actor

Find Instagram accounts related to one or more public seed profiles. Save usernames, profile links, discovery paths, and public profile details, then filter by verification, privacy, or follower count.

- **URL**: https://apify.com/maximedupre/instagram-related-users-scraper.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Social media, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.15 / 1,000 related accounts

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### 🔎 Find related Instagram accounts from a seed profile

For social media researchers, marketers, and developers, this Actor starts with one or more Instagram usernames or public profile URLs. It saves structured account rows with usernames, profile links, discovery paths, status flags, and public profile details when Instagram provides them. Use the rows to explore related accounts, compare a niche, or build an account list from a known profile.

- Use a seed profile to build a short list with **[Find Related Instagram Accounts](https://apify.com/maximedupre/instagram-related-users-scraper/examples/find-related-instagram-accounts)**.
- Start with public seed profiles and save discovery paths with **[Instagram Related Profiles](https://apify.com/maximedupre/instagram-related-users-scraper/examples/instagram-related-profiles)**.
- Review accounts that share a source profile through **[Instagram Similar Accounts](https://apify.com/maximedupre/instagram-related-users-scraper/examples/instagram-similar-accounts)**.
- Apply verification, privacy, or follower filters with **[Instagram Related Accounts](https://apify.com/maximedupre/instagram-related-users-scraper/examples/instagram-related-accounts)**.
- Save usernames and public profile details with **[Instagram Related Users Scraper](https://apify.com/maximedupre/instagram-related-users-scraper/examples/instagram-related-users-scraper)**.

#### 📊 Account rows with first discovery paths

**Account rows**

Each saved row represents one related Instagram account. It includes stable identity, a profile link when available, the first seed and path that found the account, public status flags, and optional public profile details.

#### 🧭 Follow related suggestions across levels

The Actor starts with the profiles in `seedProfiles` and reads Instagram's public related or suggested-account surface. `maxDepth` set to `1` checks direct suggestions. Higher values follow suggestions from discovered profiles up to the five levels offered by the input. `maxRelatedPerProfile` limits how many suggestions are used for each profile at each level.

The Actor saves the first eligible row for an account as soon as it finds that account. If the same account appears again, later matches are ignored. The saved row keeps the first eligible seed and path. When `includeRelationshipEdges` is on, `discoveredFrom` also shows the profile that directly led to the row.

Use `maxItems` to stop after a smaller number of unique accounts. Leave it empty to return all available results until the source is exhausted. A lower `maxDepth` or `maxRelatedPerProfile` value can also shorten the run.

Instagram controls which public suggestions are available and their order. This Actor does not provide a complete follower or following list, a full network census, posts, Reels, Stories, comments, or likes.

#### ⚙️ Input

**Input fields**

| Field | Type | What it does |
| --- | --- | --- |
| `seedProfiles` | array of strings | Required. Add one or more Instagram usernames or public profile URLs. Each value starts a related-account discovery. |
| `maxDepth` | string | Choose `1` for direct discovery or a higher value to follow suggestions from discovered profiles, up to `5`. |
| `maxRelatedPerProfile` | integer | Sets the maximum number of related accounts used for each seed or discovered profile at each level. |
| `includeRelationshipEdges` | boolean | Adds `discoveredFrom` so you can see which profile directly led to each account. |
| `maxItems` | integer | Optional cap on unique accounts saved. Leave it empty to return all available results until the source is exhausted. |
| `verifiedOnly` | boolean | Saves only accounts that Instagram marks as verified. |
| `excludePrivateAccounts` | boolean | Skips accounts that Instagram marks as private. |
| `followerCountRange` | object | Optionally keeps accounts within a public follower count range. Set either bound or both bounds. |
| `followerCountRange.min` | integer | Sets the smallest public follower count to keep. |
| `followerCountRange.max` | integer | Sets the largest public follower count to keep. |

This example uses the Actor's hosted example input. It starts with one seed and sets a 100-account limit.

```json
{
  "seedProfiles": [
    "instagram"
  ],
  "maxDepth": "1",
  "maxRelatedPerProfile": 20,
  "includeRelationshipEdges": false,
  "maxItems": 100,
  "verifiedOnly": false,
  "excludePrivateAccounts": false
}
```

#### 🧾 Output

**Output link**

| Field | Type | What it does |
| --- | --- | --- |
| `dataset` | link | Opens the saved Instagram account rows. |

**Account rows**

| Field | Type | What it does |
| --- | --- | --- |
| `instagramId` | string | Stable Instagram account ID for joining or checking the account. |
| `username` | string | Username for the discovered account. |
| `displayName` | string | Name shown on the Instagram profile. |
| `profileUrl` | string | Public Instagram profile URL when Instagram provides one. |
| `profileImageUrl` | string | Public profile image URL when Instagram provides one. |
| `discoveredFrom` | string | Profile that directly led to the row when relationship links are included. |
| `discovery` | object | The first path that discovered the account. |
| `discovery.seedProfile` | string | Username or profile URL that first led to the account. |
| `discovery.rank` | integer | Account rank in the related suggestions that produced it. |
| `discovery.depth` | integer | Number of related-account levels used to reach the account. |
| `discovery.firstPath` | array of strings | First chain of profile references from the seed to the account. |
| `isVerified` | boolean | Whether Instagram marks the account as verified. |
| `isPrivate` | boolean | Whether Instagram marks the account as private. |
| `bio` | string | Public biography text when Instagram provides it. |
| `externalLinks` | array of strings | Public links listed on the Instagram profile. |
| `followersCount` | integer | Public follower count when Instagram provides it. |
| `followingCount` | integer | Public following count when Instagram provides it. |
| `postsCount` | integer | Public post count when Instagram provides it. |
| `accountType` | string | Public account classification when Instagram provides it. |
| `category` | string | Public account or business category when Instagram provides it. |
| `business` | object | Public business details when Instagram provides them. |
| `business.email` | string | Public business email when the profile provides it. |
| `business.address` | string | Public business address as a JSON string when provided. |

This complete row comes from a successful current-beta run with a public seed profile.

```json
{
  "instagramId": "11902762758",
  "username": "ilya_borzov_",
  "displayName": "Ilya Borzov",
  "profileUrl": "https://www.instagram.com/ilya_borzov_/",
  "profileImageUrl": "https://scontent-ord5-2.cdninstagram.com/v/t51.2885-19/75443168_585012778926833_8638151492592730112_n.jpg?stp=dst-jpg_e0_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDY1LmMyIn0&_nc_ht=scontent-ord5-2.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2gHgZ73VS-6hAW660hibBtEuVE3NiDtVBzyuSKzmJSozsHpJ13QuMqmWvwo9vufiIcw&_nc_ohc=f7NXJiE7RW8Q7kNvwEzZkfz&_nc_gid=Kf_u7hr5u7N_DS2XnXZqVA&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_AQJN4y4rO0W-RICyLpHJSZSh_lEJOBdwdD_9L4YY0eJYow&oe=6A9DDED6&_nc_sid=8b3546",
  "discovery": {
    "seedProfile": "instagram",
    "rank": 5,
    "depth": 1,
    "firstPath": [
      "instagram",
      "ilya_borzov_"
    ]
  },
  "isVerified": true,
  "isPrivate": false,
  "bio": "PR: ilyaborzov10@gmail.com\nYouTube-30M🍋\nTikTok-22M🍋",
  "externalLinks": [
    "https://youtube.com/@ilyaborzov?si=bknR3zInpP3pS4QV"
  ],
  "followersCount": 1924364,
  "followingCount": 295,
  "postsCount": 381,
  "accountType": "professional",
  "business": {
    "email": "ilyaborzov10@gmail.com"
  }
}
```

Optional fields appear only when Instagram provides the related public value. The Actor does not infer missing values. `discoveredFrom` appears when relationship links are enabled.

#### 💳 Pricing

This Actor uses pay per event pricing.

**Account charge**

One charge applies for each related account saved from your seed profiles. The number of saved rows depends on the suggestions available for your inputs and the limits you choose.

#### 🔌 Integrations

Use the dataset link in the run output, or read the saved rows through the Apify API. You can export them with Apify's dataset tools.

**Video guide**

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### What happens when the same account appears more than once?

The Actor saves the first eligible match and ignores later matches. `discovery.seedProfile` and `discovery.firstPath` keep the first path. When relationship links are enabled, `discoveredFrom` shows the profile that directly led to that row.

##### What does leaving `maxItems` empty do?

It returns all available results until the source is exhausted. The input does not add a fixed maximum when it is empty.

##### Why is an optional field missing from a row?

Instagram may not provide every public profile value. The Actor leaves unavailable optional fields out.

##### Does this use Instagram's Graph API related-accounts endpoint?

This Actor reads Instagram's public related or suggested-account surface. It does not promise a specific Graph API endpoint.

##### Can I use more than one seed profile?

Yes. Add multiple usernames or public profile URLs to `seedProfiles`. Each account keeps the first eligible seed and path that led to it.

##### Does it scrape followers, following lists, or posts?

No. It discovers related accounts and public profile details. It does not collect follower or following lists, posts, Reels, Stories, comments, or likes.

### 📝 Changelog

**v1.1** (02-09-2026)

- Related-account discovery now stops at the requested account limit while keeping results in suggestion order.
- Public business email addresses found in Instagram profile biographies are included when available.

**v1.0**

- Related-account rows now include profile image URLs and publish only available optional profile details.

**v0.0**

- Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~instagram-related-users-scraper/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [Instagram Profile Stats Scraper](https://apify.com/maximedupre/instagram-profile-stats-scraper): Check known Instagram profiles and add public follower, following, post, and related-profile stats.
- [Instagram User Search](https://apify.com/maximedupre/instagram-user-search-scraper): Find public Instagram account candidates by keyword before using them as seed profiles.
- [Influencer Scraper](https://apify.com/maximedupre/influencer-scraper): Build cross-platform public influencer lists when you need keyword discovery instead of profile-to-profile discovery.
- [Instagram Related Users Scraper](https://apify.com/thenetaji/instagram-related-user-scraper) by thenetaji: Compare another public related-user workflow when you need a second Store option.
- [Instagram Related Profiles Scraper](https://apify.com/fetch_cat/instagram-related-profiles-scraper): Compare a related-profile option when your workflow starts from public Instagram profiles.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `seedProfiles` (type: `array`):

One or more Instagram usernames or public profile URLs. Each value starts a related-account discovery. Example: instagram

## `maxDepth` (type: `string`):

Choose how many levels of related suggestions to follow. Direct discovery uses 1 level. Higher values follow suggestions from discovered profiles, up to 5 levels.

## `maxRelatedPerProfile` (type: `integer`):

Set the maximum number of related accounts to use for each seed or discovered profile at each level.

## `includeRelationshipEdges` (type: `boolean`):

Add the profile that directly led to each saved account.

## `maxItems` (type: `integer`):

Optional stop for the number of unique accounts saved. Leave this empty to return all available results until the source is exhausted.

## `verifiedOnly` (type: `boolean`):

Save only discovered accounts that Instagram marks as verified.

## `excludePrivateAccounts` (type: `boolean`):

Do not save discovered accounts that Instagram marks as private.

## `followerCountRange` (type: `object`):

Optionally keep accounts within a public follower count range. Set either bound or both bounds.

## Actor input object example

```json
{
  "seedProfiles": [
    "instagram"
  ],
  "maxDepth": "1",
  "maxRelatedPerProfile": 20,
  "includeRelationshipEdges": false,
  "maxItems": 10,
  "verifiedOnly": false,
  "excludePrivateAccounts": false
}
```

# Actor output Schema

## `dataset` (type: `string`):

Link to the saved Instagram account rows.

# 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 = {
    "seedProfiles": [
        "instagram"
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/instagram-related-users-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 = {
    "seedProfiles": ["instagram"],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/instagram-related-users-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 '{
  "seedProfiles": [
    "instagram"
  ],
  "maxItems": 10
}' |
apify call maximedupre/instagram-related-users-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maximedupre/instagram-related-users-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/g9USzjsMX4spVxDQn/builds/kUTK1V2S9qNureRzc/openapi.json
