# Instagram Similar Profiles & Lookalike Finder · No Login (`memo23/instagram-similar-profiles-scraper`) Actor

Find accounts similar to any public Instagram profile — Instagram's own 'Suggested for you' graph plus same-category business and creator recommendations. Optional enrichment adds follower counts, bio, category and public contact email. No login, no cookies. JSON, CSV, or Excel.

- **URL**: https://apify.com/memo23/instagram-similar-profiles-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Social media, AI, Automation
- **Stats:** 19 total users, 17 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $2.10 / 1,000 similar profiles

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/platform/actors/running/actors-in-store#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

## Instagram Similar Profiles & Lookalike Finder

Find the accounts most like any public Instagram profile.
Paste a handle and get Instagram's own "Suggested for you" graph — optionally enriched with follower counts, biography, category, and public business contact details.

***

### Why Use This Scraper?

- Instagram's own suggestion graph — up to roughly 78 lookalikes per account
- Optional same-category business and creator recommendations, about 21 more per account
- Optional enrichment adding follower counts, bio, external link, category, and public email or phone
- Filter by verified status or a minimum follower threshold before you pay for rows
- Many source accounts per run, processed in parallel
- Flattened rows that drop straight into CSV, Excel, or a CRM import
- No login, no cookies, no session tokens — nothing to get your account flagged

***

### Overview

The Instagram Similar Profiles & Lookalike Finder is built for lead generation teams, influencer marketers, competitive analysts, and agencies who need to expand from one known account to a list of comparable ones.

The output is **profile-shaped rows**. Each row is one lookalike account, tagged with the source account it was found from. Scrape three source accounts and you get one flat dataset of all their lookalikes, each row carrying `sourceUsername` so you can group or filter by origin.

Two independent graphs feed the results, and each row records which one it came from in its `source` field:

- `suggested` — Instagram's "Suggested for you" chaining graph, the larger and more directly similar set
- `business-category` — recommended business and creator accounts in the same category, enabled with a toggle. This is the only source that carries each account's Instagram category without enrichment.

***

### Supported Inputs

#### Input types

| Input type | Pattern | Example |
|---|---|---|
| Bare handle | `username` | `natgeo` |
| @-prefixed handle | `@username` | `@nasa` |
| Profile URL | `instagram.com/<username>` | `https://www.instagram.com/nike` |

All three forms can be mixed in the same run.

#### Copy-pasteable input

```json
{
  "usernames": ["natgeo", "@nasa", "https://www.instagram.com/nike"],
  "maxSimilarPerAccount": 50,
  "includeBusinessSuggestions": true
}
```

#### Unsupported inputs

- **Private accounts** — Instagram exposes no suggestion graph for them
- **Post, reel, or hashtag URLs** — this actor takes account handles only
- **Accounts Instagram considers ineligible** — some very large brand accounts have no suggestion graph at all. You get an explanatory error row rather than silence. See the FAQ.

***

### Use Cases

| Audience | What they use it for |
|---|---|
| Lead generation teams | Expand one ideal customer into a list of comparable accounts, with public contact details |
| Influencer marketers | Find creators similar to one who already performed well |
| Competitive analysts | Map the account neighbourhood a competitor sits in |
| Agencies | Build prospect lists in a client's exact niche |
| Brand teams | Discover adjacent accounts and partnership candidates |
| Market researchers | Study category clustering and account adjacency on Instagram |

***

### How It Works

![How the Instagram Similar Profiles & Lookalike Finder works](https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-instagram-similar-profiles.png)

1. **Normalise the input** — bare handles, `@handles`, and profile URLs all resolve to a clean username. Invalid input becomes an error row instead of a wasted request.
2. **Resolve the account** — the handle is looked up to get its numeric ID. A missing account returns a clear error row.
3. **Pull the suggestion graph** — Instagram's "Suggested for you" accounts for that profile.
4. **Optionally add category recommendations** — same-category business and creator accounts, deduplicated against the suggestions.
5. **Optionally enrich** — each lookalike is looked up individually to add follower counts, biography, external link, category, and public contact fields. Enrichment happens *before* any follower-threshold filter, so rows you filter out are never billed.

***

### Input Configuration

| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| `usernames` | array | Yes | — | Source accounts. Handles, `@handles`, or profile URLs. |
| `maxSimilarPerAccount` | integer | No | unlimited | Cap on lookalikes returned per source account. |
| `includeBusinessSuggestions` | boolean | No | `false` | Also include same-category business and creator recommendations. |
| `enrichProfiles` | boolean | No | `false` | Add follower counts, bio, category, and public contact fields. Paid Apify plans only. |
| `onlyVerified` | boolean | No | `false` | Return only accounts with a verification badge. |
| `minFollowers` | integer | No | none | Drop lookalikes below this follower count. Automatically enables `enrichProfiles`. |

#### Example — quick lookalike list, no enrichment

```json
{
  "usernames": ["natgeo"],
  "maxSimilarPerAccount": 50
}
```

#### Example — lead generation with contact details

```json
{
  "usernames": ["nasa", "natgeo"],
  "maxSimilarPerAccount": 100,
  "includeBusinessSuggestions": true,
  "enrichProfiles": true,
  "minFollowers": 10000
}
```

***

### Output Overview

One dataset row per lookalike account. Every row identifies the source account it was found from and which graph produced it, then carries the account's public identity fields.

Enrichment fields (`followerCount`, `followingCount`, `postCount`, `biography`, `externalUrl`, `publicEmail`, `publicPhone`, `isBusiness`) are `null` unless `enrichProfiles` is on. `category` is populated for `business-category` rows even without enrichment.

Accounts that could not be processed are returned as error rows carrying `sourceUsername`, `error`, and `message` — these are never charged.

***

### Output Samples

Real row, produced from `usernames: ["natgeo"]` with `enrichProfiles: true` (CDN URL shortened):

```json
{
  "sourceUsername": "natgeo",
  "sourceUserId": "787132",
  "source": "suggested",
  "username": "instagram",
  "userId": "25025320",
  "fullName": "Instagram",
  "profileUrl": "https://www.instagram.com/instagram/",
  "isVerified": true,
  "isPrivate": false,
  "profilePicUrl": "https://scontent-ord5-1.cdninstagram.com/v/t51.82787-19/...",
  "socialContext": "Instagram",
  "category": null,
  "followerCount": 685857490,
  "followingCount": 264,
  "postCount": 8535,
  "biography": "Discover what's new on Instagram 🔎✨",
  "externalUrl": "https://www.youtube.com/watch?v=H6G9PcvHjj4",
  "publicEmail": null,
  "publicPhone": null,
  "isBusiness": false
}
```

Error row for an account with no suggestion graph:

```json
{
  "sourceUsername": "someverylargebrand",
  "error": "no_suggestions_available",
  "message": "Instagram returns no \"suggested for you\" accounts for @someverylargebrand. This happens on some very large or restricted accounts — try a smaller or more niche account."
}
```

***

### Key Output Fields

**Source**
`sourceUsername`, `sourceUserId`, `source`

**Account identity**
`username`, `userId`, `fullName`, `profileUrl`, `profilePicUrl`

**Status**
`isVerified`, `isPrivate`, `isBusiness`, `category`, `socialContext`

**Audience (enrichment only)**
`followerCount`, `followingCount`, `postCount`

**Profile detail (enrichment only)**
`biography`, `externalUrl`

**Public contact (enrichment only)**
`publicEmail`, `publicPhone`

***

### FAQ

**How many lookalikes do I get per account?**
Instagram serves up to roughly 78 suggestions per account, plus about 21 more if `includeBusinessSuggestions` is on. The exact number varies by account.

**Why did one of my accounts return no results?**
Instagram does not expose a suggestion graph for every profile. Very large brand accounts in particular often return nothing — Instagram considers them ineligible for chaining. You get an explanatory error row and are not charged. Smaller, more niche accounts almost always work. Turning on `includeBusinessSuggestions` frequently produces results even when the suggestion graph is empty.

**Do I need enrichment to get follower counts?**
Yes. The suggestion graph returns identity fields only. Follower counts, biography, external link, and contact details each require an additional lookup per profile, which is what `enrichProfiles` does and why it is billed separately.

**Does `minFollowers` work without enrichment?**
It cannot filter on data that was never fetched, so switching it on automatically enables `enrichProfiles`. Filtering happens after enrichment and before billing, so rows dropped by the threshold are not charged.

**How many accounts publish a public email?**
Only a minority — roughly one in five in testing, and only for business or creator accounts that chose to display contact details. `publicEmail` is `null` for the rest. This is an Instagram limitation, not a scraping gap.

**Is this the same as scraping followers?**
No. Followers are people who follow an account. Lookalikes are accounts *similar to* it, per Instagram's own recommendation graph. For follower lists see the Instagram Followers & Following Scraper.

**Do I need an Instagram account, login, or cookies?**
No. Nothing is authenticated and no session is used, so there is no account to get flagged.

***

### Support

Found a bug or need a field that is not there? Open an issue on the actor's **Issues** tab and it will be looked at.

Email: muhamed.didovic@gmail.com

***

### Additional Services

Need a custom scraper, a tailored export format, or an integration into your own pipeline? Custom builds are available — get in touch at muhamed.didovic@gmail.com.

***

### Explore More Scrapers

- **Instagram Profile Scraper** — profiles, posts and comments from any public account
- **Instagram Followers & Following Scraper** — full follower and following lists
- **Instagram Hashtag Scraper** — top posts and reels from any hashtag
- **Instagram Stories & Highlights Scraper** — active stories and permanent highlights
- **Instagram Post Likers Scraper** — who liked any public post or reel
- **Instagram Comments Scraper** — full comment threads with replies
- **Instagram Reels Search & Viral Finder** — find trending reels by keyword

Browse the full collection at [apify.com/memo23](https://apify.com/memo23).

***

### 🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the [Apify MCP server](https://mcp.apify.com) or the Apify API (actor: `memo23/instagram-similar-profiles-scraper`).

**Purpose:** Expands a public Instagram handle into similar accounts using Instagram's own suggestion graph, with optional per-profile enrichment.

**Minimal input:**

```json
{ "usernames": ["natgeo"], "maxSimilarPerAccount": 20 }
```

**Output:** one dataset row per lookalike — sourceUsername, sourceUserId, source, username, userId, fullName, profileUrl, isVerified, isPrivate, profilePicUrl, socialContext, category, and (enrichment only) followerCount, followingCount, postCount, biography, externalUrl, publicEmail, publicPhone, isBusiness. Failed accounts return `{sourceUsername, error, message}` instead.

**Behaviors an agent should know:**

- Yield is capped by Instagram at roughly 78 suggestions per account, plus about 21 with `includeBusinessSuggestions`. Asking for more will not produce more.
- Some accounts — especially very large brands — have no suggestion graph and return `no_suggestions_available`. Retrying will not help; use a smaller account or enable `includeBusinessSuggestions`.
- Enrichment fields are `null` unless `enrichProfiles: true`, which costs one extra request per profile.
- `minFollowers` implicitly enables `enrichProfiles`, because it filters on enriched data.
- Billing: one `similar-profile` event per row delivered, plus one `enriched-profile` event per successfully enriched profile. Error rows and rows removed by filters are never charged.
- No login is used, so private accounts and authenticated-only fields are unavailable.

***

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Meta Platforms, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available Instagram profile data — no authenticated endpoints, paid features, or content behind the instagram.com login wall. Users are responsible for ensuring their use complies with instagram.com's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organization.

***

### SEO Keywords

instagram similar profiles scraper, instagram lookalike finder, scrape instagram suggested accounts, instagram related profiles API, instagram.com scraper, Apify instagram, similar accounts scraper, instagram profile discovery, competitor account finder, influencer discovery data, instagram lead generation, b2b prospecting data, instagram audience research, creator sourcing tool, instagram contact email scraper, social media prospecting, instagram niche research, brand partnership discovery, no login instagram scraper

# Actor input Schema

## `usernames` (type: `array`):

Public Instagram accounts to find lookalikes for. Accepts plain handles (nike), @-handles (@nike), or profile URLs (https://www.instagram.com/nike) — one per line, mixed formats are fine. Very large brand accounts sometimes have no suggestion graph on Instagram's side and return an explanatory error item.

## `maxSimilarPerAccount` (type: `integer`):

Cap how many lookalike profiles to return per source account. Instagram serves up to roughly 78 suggestions per account, plus about 21 more if category recommendations are enabled. Leave empty for all of them.

## `includeBusinessSuggestions` (type: `boolean`):

Add Instagram's recommended business and creator accounts from the same category, on top of the standard 'Suggested for you' graph. Adds about 21 more profiles per account and is the only source that carries each account's Instagram category. Default: off.

## `enrichProfiles` (type: `boolean`):

Look up each lookalike's full profile to add follower and following counts, post count, biography, external link, Instagram category, and any public business email or phone. Costs one extra request per profile and is charged separately. Paid Apify plans only. Default: off.

## `onlyVerified` (type: `boolean`):

Return only accounts with Instagram's blue verification badge. Default: off.

## `minFollowers` (type: `integer`):

Drop lookalikes with fewer followers than this. Follower counts only exist when profiles are enriched, so switching this on automatically turns on 'Enrich profiles'. Leave empty for no threshold.

## Actor input object example

```json
{
  "usernames": [
    "natgeo",
    "https://www.instagram.com/nasa"
  ],
  "maxSimilarPerAccount": 50,
  "includeBusinessSuggestions": false,
  "enrichProfiles": false,
  "onlyVerified": false
}
```

# 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 = {
    "usernames": [
        "natgeo"
    ],
    "maxSimilarPerAccount": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/instagram-similar-profiles-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 = {
    "usernames": ["natgeo"],
    "maxSimilarPerAccount": 50,
}

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

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

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

```

## CLI example

```bash
echo '{
  "usernames": [
    "natgeo"
  ],
  "maxSimilarPerAccount": 50
}' |
apify call memo23/instagram-similar-profiles-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=memo23/instagram-similar-profiles-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/KUjf1JscgXKHSQLKi/builds/aLkszQAenRCTrzlyc/openapi.json
