# Instagram Related Profiles: Similar Accounts (`deepmine/instagram-related-profiles`) Actor

Instagram related profiles scraper: find similar and lookalike accounts for any Instagram profile from Instagram's suggested accounts, up to 5 levels deep, with bio, links, followers, posts, engagement and Reels views, plus category and email when shown. No login. For influencer discovery.

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

## Pricing

from $0.59 / 1,000 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/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 Profiles: Similar Accounts

Instagram related profiles scraper: type an Instagram username and get the similar and lookalike accounts Instagram itself suggests next to it ("Accounts you might like"), with each one's bio, links, exact followers, posts, engagement rate and the views of its latest reels, plus its category and contact email when the profile shows them. Go up to 5 levels deep for the accounts suggested for those.

| 🏷️ Username | 👤 Name | 👥 Followers | 📈 Engagement | 🎬 Reel Views | 🌱 Seed |
|---|---|---|---|---|---|
| fit.withneeks | Niki Mahmoudi | 109,091 | 10.91% | 35,772 | krissycela |
| natacha.oceane | Natacha Oceane | 922,784 | 4.69% | 754,810 | krissycela |
| linnlowes | LINN LOWES | 3,171,707 | 0.35% | 389,956 | gainsbybrains |

<sub>Collected 2026-10-01 with the prefilled input: four fitness creators, depth 1. Reel Views = median views of each profile's latest 12 reels.</sub>

**$0.79 per 1,000 profiles** on the Starter plan ($0.94 Free, $0.69 Scale, $0.59 Business). The prefilled run (up to 100 profiles) costs at most $0.08 ($0.09 on Free). Bio, links, followers, posts, engagement and Reels views are included, and so are category and contact email when the profile shows them. No start fee, no minimum.

### What you get

- **Similar accounts from Instagram's own suggestions.** Instagram suggests up to 50 accounts per profile (fewer for small creators, and none for many big brand accounts). Depth 2 adds the accounts suggested for each of those: hundreds more per input profile, but they drift away from your niche (a fitness creator's list can lead to actors and pop stars). Depth 3 to 5 go further.
- **Bio and links, plus category and email when shown**: full bio, website and every bio link with its title, account type (personal, business, creator), the category when the profile shows one (Digital creator, Athlete...; about a third of profiles in our runs of the prefilled input), an email address when the bio has one (about half), a phone number when the bio or a WhatsApp link has one (rare for creators: none of the 73 fitness creators in our test runs), following count, the Facebook page it links, Threads handle, @mentions in the bio, pronouns, state-media labels, the full-size profile picture and every account flag Instagram shows visitors. That's every profile field instagram-scraper's related profiles Actor returns without a paid add-on, except its picture id (latest posts too, as a free option).
- **Followers, posts and engagement at no extra cost**: exact follower and post counts, average likes and comments on each profile's latest posts, engagement rate (missing for the few profiles that hide their likes) and the date of its last post.
- **Reels views at no extra cost**: each profile's latest 12 reels with their views, likes and comments, plus the median and average reel views, median views over followers and the date of the last reel, as the profile's reels tab shows them (every profile with reels in our test runs).
- **Business contact details, optional**: a business email from the profile's own pages (a phone too, when its website lists one), the Contact button's type (call, email, text), the business address with coordinates when the profile shows one, and the story highlight count. Instagram hides the Contact button's own email and number from visitors who aren't logged in, so the Actor looks where profiles publish them: their link-in-bio page, their website and its contact page, and the YouTube channel or TikTok profile those pages link to. It never logs in. Off by default because it's slower (a few seconds more per profile). Instagram answers the Contact-button part with an error for about a quarter of profiles (20 of 73 in our test run), which then come without the button type and address.
- **Clean rows in the order Instagram ranks them**: username, name, picture, profile URL, verified and private flags, which input profile it came from, the depth, its rank in the list, and the profile that listed it. Each profile comes once per run, under the first input profile that reached it.
- **Latest posts, free and optional**: each profile's latest posts with caption, likes, comments, time, image, location and coauthors.
- **Free filters**: min and max followers (for example micro-influencers under 100,000), min and max posts, min and max engagement rate, verified, private and business account (yes or no, the same names as instagram-scraper's), and bio keywords. Profiles the filters leave out aren't charged.
- **No login, no cookies, no account of yours involved.** The Actor reads only what Instagram shows to visitors who aren't logged in.

Typical uses: influencer discovery (start from a few creators you like and get their niche with audience sizes), competitor and lookalike research, and building outreach lists.

### Input

```json
{
  "usernames": ["krissycela", "https://www.instagram.com/lilylifts/"],
  "maxDepth": 2,
  "maxResultsPerProfile": 100,
  "maxFollowers": 1000000
}
```

- **Instagram profiles**: usernames, @usernames or profile URLs.
- **Depth**: 1 = suggestions for your profiles (default: the closest lookalikes), 2 = also the suggestions for those (many more, less alike), up to 5.
- **Max related profiles per profile**: caps each input profile (default 500). **Max results** (Advanced) caps the whole run.
- **Include followers and engagement**: on by default and free; turn it off for the fastest runs (username, name and picture only).
- **Include bio, links and category**: on by default and included in the price; turn it off for a slightly faster list.
- **Include latest posts**: off by default; free.
- **Include Reels views** (Advanced): on by default and included in the price.
- **Include business contact details** (Advanced): off by default; included in the price, slower.
- **Filters**: Min and Max followers, Min and Max posts, Min and Max engagement rate, Verified, Private, Business account (`yes` / `no`), Bio keywords. All free.

### Output

One row per related profile, in the dataset's **📊 Overview** view; **🔎 Details** shows bio, category, account type, email, website, following and Threads handle; **📈 Stats** shows every number (followers, posts, average likes and comments, engagement, last post); **🎬 Reels** shows reel views, likes, comments and the last reel's date. The run's OUTPUT record (🧾 Run summary) lists each input profile's status (found, not found, no suggested accounts, or suggestions Instagram answered with an error) and counts.

#### Output fields

- `profilePicUrl`: profile picture (150x150). Instagram signs picture links; they stop working after a few days.
- `fullName`: display name.
- `biography`: full bio.
- `biographySnippet`: first 50 characters of the bio.
- `username`: the handle, without @.
- `profileUrl`: https://www.instagram.com/<username>/.
- `businessCategoryName`: the category the profile shows (Digital creator, Athlete, Nonprofit organization...); null when it hides it (most creators do: about a third of rows in our runs of the prefilled input have one).
- `externalUrl`: the profile's website (its first bio link).
- `contactEmail`: an email address written in the bio or name, when there is one (about half of the rows in our runs of the prefilled input).
- `contactPhone`: a phone number written in the bio or name, or a WhatsApp number from the bio links, when there is one; with **Include business contact details** on, Instagram's business phone comes first when it sends one. Rare for creators.
- `businessContactMethod`: with **Include business contact details** on: what the profile's Contact button does (CALL, EMAIL, TEXT, DIRECTION), when it has one.
- `businessPhoneNumber`: with **Include business contact details** on: a business phone from the profile's own website or link-in-bio page (tel: or WhatsApp links, the site's listed telephone), digits only, when there is one. Instagram hides the Contact button's own number from visitors who aren't logged in.
- `businessEmail`: with **Include business contact details** on: a business email from the profile's own link-in-bio page, website (its contact page too), or the YouTube channel or TikTok profile those pages link to, when one is published there. On a website only addresses on the site's own domain or a personal inbox count, never a shop's or a brand's.
- `businessContactSource`: with **Include business contact details** on: where `businessEmail` (else `businessPhoneNumber`) was found: `link page`, `website`, `youtube`, `tiktok` or `instagram`.
- `bioLinks`: every link in the bio, as `{url, title, linkType, lynxUrl, isPinned, imageUrl, linkId, mediaType, mediaAccentColorHex, creationSource}`.
- `isVerified`: has the blue check.
- `isPrivate`: private account.
- `isBusinessAccount`: a business account (account type business). Instagram sends its own business flag as false to visitors who aren't logged in, so the Actor sets it from the account type; the Business account filter uses the same rule.
- `isProfessionalAccount`: a business or creator account.
- `accountType`: personal, business or creator.
- `followersCount`: exact follower count.
- `followsCount`: accounts it follows.
- `postsCount`: exact number of posts.
- `hasReels`: the profile has reels (Instagram doesn't show visitors a reel count).
- `avgLikes`: average likes on its latest posts (up to 6; posts that hide likes are left out).
- `avgComments`: average comments on its latest posts.
- `engagementRate`: (average likes + average comments) / followers, in percent (1.09 = 1.09%).
- `lastPostAt`: when its newest post was published (UTC).
- `reelsMedianViews`: median views of its latest reels (up to 12, pinned ones included), as the reels tab shows them. These are Instagram's play counts, so they run higher than the older `videoViewCount` other Actors return (2.6 to 7 times higher on the same 8 reels in our check).
- `reelsAvgViews`: average views of those reels.
- `reelsAvgLikes`: average likes on those reels (reels that hide likes left out).
- `reelsAvgComments`: average comments on those reels.
- `reelsViewsToFollowers`: median reel views over followers, in percent.
- `lastReelAt`: when the newest of those reels was posted (UTC; from the reel's id, accurate to about a minute).
- `highlightReelCount`: with **Include business contact details** on: the number of story highlights.
- `latestPosts`: with **Include latest posts** on: its latest posts (up to 6, pinned ones included), each with id, type (Image, Video, Sidecar), shortCode, url, caption, hashtags, mentions, likesCount, commentsCount, timestamp, displayUrl, dimensionsWidth, dimensionsHeight, isPinned, paidPartnership, sponsors, coauthors, locationName, locationId and childPostsCount (Apify's Instagram Profile Scraper's latestPosts names).
- `latestReels`: its latest reels (up to 12, pinned ones included), each with shortCode, url, playCount (views), likeCount, commentCount, postedAt and isPinned.
- `bioMentions`: usernames the bio links to (@sweat...).
- `bioHashtags`: hashtags the bio links to.
- `pronouns`: pronouns the profile shows.
- `threadsUsername`: Threads handle, when the profile shows its Threads badge.
- `isActiveOnThreads`: the profile shows its Threads badge.
- `linkedFacebookPage`: the Facebook page the profile links, as `{id, name}`, when it shows one.
- `addressStreet`: business street address, with **Include business contact details** on and only for businesses that show an address (rare; null otherwise).
- `city`: business city, the same way.
- `zipCode`: business ZIP or postal code, the same way.
- `addressLatitude`: the business address's latitude, the same way.
- `addressLongitude`: the business address's longitude, the same way.
- `transparencyLabel`: Instagram's label for state-controlled media and similar accounts, when shown (rare).
- `transparencyProduct`: where Instagram shows that label.
- `isMemorialized`: a memorialized account.
- `isEmbedsDisabled`: the profile turned off embedding its posts on other sites.
- `isUnpublished`: Instagram's unpublished-account flag.
- `hasStoryArchive`: the account keeps a story archive (Instagram sends it only to logged-in users, so usually null).
- `hasProfilePic`: the account has a profile picture (usually null for visitors who aren't logged in).
- `latestStoryAt`: when its newest story went up (UTC), when Instagram shows it (usually null).
- `hideCreatorMarketplaceBadge`: the profile hides its creator marketplace badge.
- `isRegulatedC18`: Instagram marks the account as regulated 18+ content (alcohol, gambling and similar).
- `isCoppaEnforced`: Instagram applies children's-privacy (COPPA) rules to the account (usually null).
- `isCannes`: Instagram's `is_cannes` flag, passed through as sent.
- `hasLongformMedia`: Instagram's `has_longform_media` flag: the account has long-form videos.
- `shouldShowCategory`: the profile shows its category on its page.
- `showAccountTransparencyDetails`: Instagram shows the "About this account" details for it.
- `profilePicGenaiToolInfo`: Instagram's AI-tool info for the profile picture, when it has any.
- `externalUrlLinkshimmed`: the website as Instagram links it (through l.instagram.com).
- `profilePicUrlHD`: full-size profile picture (signed link, expires after a few days).
- `seedUsername`: the input profile it was found for.
- `depth`: 1 = suggested for the input profile, 2 = suggested for a depth-1 profile, and so on.
- `rank`: its position in the list that suggested it (1 = first).
- `discoveredFrom`: the profile whose suggestions listed it.
- `id`: Instagram's numeric user id.
- `fbid`: Instagram's Facebook-wide id for the account.
- `scrapedAt`: when the run collected it (UTC).

The stats fields (`followersCount`, `postsCount`, `avgLikes`, `avgComments`, `engagementRate`, `lastPostAt`) are in the rows unless you turn followers and engagement off; the Reels fields (`reelsMedianViews` to `lastReelAt`, `latestReels`) unless you turn Reels views off; the bio and profile fields (`biography` to `fbid` except the stats) unless you turn bio, links and category off; `latestPosts` only with **Include latest posts** on; `businessContactMethod`, `businessPhoneNumber`, `businessEmail`, `businessContactSource`, `highlightReelCount`, `addressLatitude` and `addressLongitude` only with **Include business contact details** on. Field names match Apify's Instagram Profile Scraper where both have the field, so the two join on `username` or `id`.

Example row (a creator from the prefilled run with **Include latest posts** and **Include business contact details** on; latestPosts and latestReels cut to one each here, picture and redirect links shortened):

```json
{
  "profilePicUrl": "https://scontent-lhr6-2.cdninstagram.com/v/t51.82787-19/565676275_18536200234011065_3872982851407481707_n.jpg?stp=...&oe=...",
  "fullName": "Claire P. Thomas",
  "biography": "Strength coach + Movement connoisseur\nMove well. Build strength. Live fully.⚡️\n⬇️ Come train for life, not the gym",
  "biographySnippet": "Strength coach + Movement connoisseur Move well. B…",
  "username": "clairepthomas",
  "profileUrl": "https://www.instagram.com/clairepthomas/",
  "businessCategoryName": "Fitness Trainer",
  "externalUrl": "https://linktr.ee/clairepthomas",
  "contactEmail": null,
  "contactPhone": null,
  "businessContactMethod": "CALL",
  "businessPhoneNumber": null,
  "businessEmail": null,
  "businessContactSource": null,
  "bioLinks": [
    {
      "url": "https://linktr.ee/clairepthomas",
      "title": null,
      "linkType": "external",
      "lynxUrl": "https://l.instagram.com/?u=https%3A%2F%2Flinktr.ee%2Fclairepthomas&e=...",
      "isPinned": false,
      "imageUrl": null,
      "linkId": "17957283679759516",
      "mediaType": "none",
      "mediaAccentColorHex": null,
      "creationSource": "NONE"
    }
  ],
  "isVerified": true,
  "isPrivate": false,
  "isBusinessAccount": false,
  "isProfessionalAccount": true,
  "accountType": "creator",
  "followersCount": 1194620,
  "followsCount": 1329,
  "postsCount": 1832,
  "hasReels": true,
  "avgLikes": 6126,
  "avgComments": 160,
  "engagementRate": 0.53,
  "lastPostAt": "2026-08-30T18:17:19Z",
  "reelsMedianViews": 95134,
  "reelsAvgViews": 916136,
  "reelsAvgLikes": 43775,
  "reelsAvgComments": 406,
  "reelsViewsToFollowers": 7.96,
  "lastReelAt": "2026-08-19T17:25:17Z",
  "highlightReelCount": 13,
  "latestPosts": [
    {
      "id": "3975309471173645799",
      "type": "Sidecar",
      "shortCode": "DcrIubljRXn",
      "url": "https://www.instagram.com/p/DcrIubljRXn/",
      "caption": "One last Oregon summer before officially moving across the world to South Africa 🙈\n\nThere’s something strange & beautiful about packing up the life you spent your entire life working for, saving for, & dreaming of…\n\nBut I’ve learned that maybe dreams aren’t meant to be held onto forever. Maybe they come true to show us what we’re capable of creating, only to eventually show us what we’re capable of releasing.\n\nDuring the process of packing everything I own away for the unforeseeable future, it became abundantly clear to me how little any of it actually matters.\n\nThings are just things.\n\nWe spend so much of our lives accumulating them, protecting them, attaching pieces of ourselves to them…\n\nBut in the end, we leave every single one of these things behind.\n\nI am no longer spending my life collecting things. I am here to collect experiences. To feel allll of it. To love deeply. To live fiercely. To follow the places, people & moments that make me feel most alive.\n\nThat’s what I’m here for.\n\nClosing this chapter with a full heart & stepping into the next with open arms.\n\nFor the times, they are a-changin’. 💛\n\nWhere are my fellow global citizens at?! Moving countries is no easy feat. Please leave a comment & share what countries you’ve moved from/moved to. I’m just curious. \n\nIf you’ve made it this far, thank you for allowing me to share my wild ride with you. Truly, your support means more than I can put into words. \n\nHere we go, again. ✈️🌍",
      "hashtags": [],
      "mentions": [],
      "likesCount": 9614,
      "commentsCount": 248,
      "timestamp": "2026-08-30T18:17:19Z",
      "displayUrl": "https://scontent-ord5-2.cdninstagram.com/v/t51.82787-15/790113396_18624440947011065_3963671877673718488_n.jpg?stp=...&oe=...",
      "dimensionsWidth": 1080,
      "dimensionsHeight": 1440,
      "isPinned": false,
      "paidPartnership": false,
      "sponsors": [],
      "coauthors": [],
      "locationName": null,
      "locationId": null,
      "childPostsCount": 20
    }
  ],
  "latestReels": [
    {
      "shortCode": "C7zEgUkp1kE",
      "url": "https://www.instagram.com/reel/C7zEgUkp1kE/",
      "playCount": 9744374,
      "likeCount": 328111,
      "commentCount": 4338,
      "postedAt": "2024-06-04T14:58:21Z",
      "isPinned": true
    }
  ],
  "bioMentions": null,
  "bioHashtags": null,
  "pronouns": null,
  "threadsUsername": null,
  "isActiveOnThreads": false,
  "linkedFacebookPage": null,
  "addressStreet": null,
  "city": null,
  "zipCode": null,
  "addressLatitude": null,
  "addressLongitude": null,
  "transparencyLabel": null,
  "transparencyProduct": null,
  "isMemorialized": false,
  "isEmbedsDisabled": false,
  "isUnpublished": false,
  "hasStoryArchive": null,
  "hasProfilePic": null,
  "latestStoryAt": null,
  "hideCreatorMarketplaceBadge": false,
  "isRegulatedC18": false,
  "isCoppaEnforced": null,
  "isCannes": false,
  "hasLongformMedia": false,
  "shouldShowCategory": true,
  "showAccountTransparencyDetails": true,
  "profilePicGenaiToolInfo": null,
  "externalUrlLinkshimmed": "https://l.instagram.com/?u=https%3A%2F%2Flinktr.ee%2Fclairepthomas&e=...",
  "profilePicUrlHD": "https://scontent-lhr11-1.cdninstagram.com/v/t51.82787-19/565676275_18536200234011065_3872982851407481707_n.jpg?stp=...&oe=...",
  "seedUsername": "lisafiitt",
  "depth": 1,
  "rank": 15,
  "discoveredFrom": "lisafiitt",
  "id": "462667064",
  "fbid": "17841400331927229",
  "scrapedAt": "2026-10-01T17:54:43Z"
}
```

### Pricing

Pay per result: you pay for related profiles delivered, never for input profiles that weren't found or have no suggestions, and never for profiles your filters leave out.

| Plan | Per 1,000 profiles (bio, links, followers, posts, engagement and Reels views included; category and email when shown) |
|---|---|
| Free | $0.94 |
| Starter | $0.79 |
| Scale | $0.69 |
| Business | $0.59 |

Set a maximum cost on the run and the Actor stops at or before it. Proxies are included: the Actor reads everything through Apify's datacenter proxy and uses a little residential on its own only where Instagram refuses a datacenter IP.

### Good to know

- **Big brand accounts and private accounts get no suggestions** (Instagram doesn't list similar accounts for them). The run says so for each such profile and charges nothing for it. Start from a creator or a niche account instead.
- **A few big accounts hide their counts** from visitors who aren't logged in (news publishers such as cnn or bbc, and some celebrities): their rows come without posts and engagement (and sometimes followers), and the run summary counts them. Follower, post and engagement filters leave such profiles out.
- **Hidden from visitors who aren't logged in**: the phone number and email behind a business's Contact button. Instagram sends both as null without a login (the button's type and the business address do come through, with the contact details option). The Actor never logs in, so emails and phones come from the bio and, with the contact details option, from the profile's own link page, website, YouTube or TikTok. A profile that publishes its inbox nowhere but behind the Contact button comes without one.
- **Suggestions change over time** and can differ a little between runs. Instagram suggests public accounts; in our tests none of about 1,100 suggestions was a private account.
- **Speed**: rows stream into the dataset as each profile's details and reels arrive. In our tests of the prefilled run on Apify (2026-10-01), the first profile was in 1.5 to 5 s after the Actor started (4.6 to 7.6 s after clicking Start, container start included) and all 73 profiles took 30 to 34 s. If a very large run nears its timeout, it stops a minute early and keeps everything collected so far.
- **If Instagram refuses us**: five input profiles failing in a row stop the run with a clear message instead of retrying the rest of a long list.
- **Unknown or renamed usernames** are reported as not found in the run summary; the rest of the run continues.
- If Instagram refuses the suggestions, hides them from every IP, or stops showing profile counts or details, the run fails with a clear message instead of finishing empty or with blank columns. One profile that errors in a bigger run is reported in the run summary and the rest of the run continues.

### Feedback

Found a bug or missing a field? Open an issue in the Issues tab. If the Actor saves you time, a short review on its Store page helps others find it.

# Actor input Schema

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

Profiles to find similar accounts for, one per line: a username (natgeo), @username or profile URL (https://www.instagram.com/natgeo/). You get the accounts Instagram suggests for each one; several profiles from one niche give more lookalikes. You pay per related profile delivered.

## `maxDepth` (type: `integer`):

1 = the accounts Instagram suggests for your profiles: the closest lookalikes, up to 50 each. 2 = also the accounts suggested for those: hundreds more per profile, drifting further from your niche (a fitness creator's list can lead to actors and pop stars). Up to 5.

## `maxResultsPerProfile` (type: `integer`):

Related profiles per input profile, closest first. You pay per profile, so this caps the cost per input profile. Default 500.

## `includeStats` (type: `boolean`):

Adds each profile's exact follower and post counts, average likes and comments on its latest posts, engagement rate and last post date. Free: no extra charge. Turn off for the fastest runs (username, name and picture only).

## `includeDetails` (type: `boolean`):

Adds each profile's full bio, bio links, website, category, account type, contact email (when the bio shows one), following count, linked Facebook page and more. Included in the price; turn it off only for a slightly faster list.

## `includeLatestPosts` (type: `boolean`):

Adds each profile's latest posts (up to 6) with caption, hashtags, likes, comments, time, image, location and coauthors. Free: no extra charge; rows get bigger.

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

Keep only profiles with at least this many followers. Free: profiles left out aren't charged.

## `maxFollowers` (type: `integer`):

Keep only profiles with at most this many followers (e.g. 100000 for micro-influencers). Free: profiles left out aren't charged.

## `minPosts` (type: `integer`):

Keep only profiles with at least this many posts (skips new or empty accounts). Free: profiles left out aren't charged.

## `maxPosts` (type: `integer`):

Keep only profiles with at most this many posts. Free: profiles left out aren't charged.

## `minEngagementRate` (type: `number`):

Keep only profiles whose engagement rate (average likes + comments on the latest posts, over followers) is at least this many percent, e.g. 1.5. Free: profiles left out aren't charged.

## `maxEngagementRate` (type: `number`):

Keep only profiles whose engagement rate is at most this many percent. Free: profiles left out aren't charged.

## `isVerified` (type: `string`):

yes = only accounts with the blue check, no = only accounts without it, empty = both. Free: profiles left out aren't charged.

## `isPrivate` (type: `string`):

no = skip private accounts, yes = only private accounts, empty = both. Free: profiles left out aren't charged.

## `isBusinessAccount` (type: `string`):

yes = only business accounts (brands, shops, organizations), no = only personal and creator accounts, empty = both. Free: profiles left out aren't charged.

## `bioKeywords` (type: `array`):

Keep only profiles whose bio, name or category contains any of these words (e.g. coach, founder, nyc). Free: profiles left out aren't charged.

## `maxResults` (type: `integer`):

Stop after this many related profiles in total. You pay per profile, so this caps the run's cost. Profiles come in the order of your input.

## `includeReels` (type: `boolean`):

Adds each profile's latest reels (up to 12) with their views, likes and comments, plus median and average reel views, views over followers and the last reel's date. Included in the price: one more quick datacenter request per profile.

## `includeContactDetails` (type: `boolean`):

Adds a business email (and a phone, when the site lists one) found on the profile's own link-in-bio page, website (and its contact page), or the YouTube channel or TikTok profile they link to, plus the Contact button's type (CALL, EMAIL, TEXT), the business address when the profile shows one, and the story highlight count. Included in the price, but slower (a few seconds more per profile). Instagram hides the Contact button's own phone and email from visitors who aren't logged in, and the Actor never logs in; phones and emails written in the bio are always included.

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

Apify Proxy (datacenter) is the default and reads everything, bio and links included. When Instagram refuses a datacenter IP (a private or unknown input profile's page, a retry), the Actor uses a little Apify residential on its own, at no extra cost to you. Picking Residential here works the same way (its country applies to those residential tries).

## Actor input object example

```json
{
  "usernames": [
    "krissycela",
    "lilylifts",
    "lisafiitt",
    "gainsbybrains"
  ],
  "maxDepth": 1,
  "maxResultsPerProfile": 100,
  "includeStats": true,
  "includeDetails": true,
  "includeLatestPosts": false,
  "maxResults": 100,
  "includeReels": true,
  "includeContactDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

## `summary` (type: `string`):

No description

# 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": [
        "krissycela",
        "lilylifts",
        "lisafiitt",
        "gainsbybrains"
    ],
    "maxDepth": 1,
    "maxResultsPerProfile": 100,
    "maxResults": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("deepmine/instagram-related-profiles").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": [
        "krissycela",
        "lilylifts",
        "lisafiitt",
        "gainsbybrains",
    ],
    "maxDepth": 1,
    "maxResultsPerProfile": 100,
    "maxResults": 100,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("deepmine/instagram-related-profiles").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 '{
  "usernames": [
    "krissycela",
    "lilylifts",
    "lisafiitt",
    "gainsbybrains"
  ],
  "maxDepth": 1,
  "maxResultsPerProfile": 100,
  "maxResults": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call deepmine/instagram-related-profiles --silent --output-dataset

```

## MCP server setup

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

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/niC7VIZ1k3kvCIDvp/builds/pt6s656uKEbJ2IhzD/openapi.json
