Instagram Related Profiles Scraper — Similar Accounts & Leads
Pricing
from $4.53 / 1,000 profile analyzeds
Instagram Related Profiles Scraper — Similar Accounts & Leads
Turn one Instagram handle into a qualified list of the accounts around it. Reads Instagram's own Suggested for You graph, fetches each discovered account's full profile, and returns email, phone, website, category and followers. Filter by contact details, category or follower band. No login needed.
Pricing
from $4.53 / 1,000 profile analyzeds
Rating
0.0
(0)
Developer
ToolzerHub
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Instagram Related Profiles Scraper — Similar Accounts, Already Qualified
Give it one Instagram handle. Get back the accounts around it, each with an email, a phone number, a website, a category and a follower count — already filtered down to the ones worth contacting.
Instagram builds its "Suggested for You" list from who follows whom. That makes it the best free map of a niche there is: one competitor's handle is usually enough to find the rest of the market. This Actor reads that map, then does the part that actually takes time — fetching every discovered account's full profile and throwing away the ones that don't fit.
No login, no cookie, no session.
Quick start
{"profiles": ["nasa"],"searchDepth": "1","maxProfiles": 200,"requireContact": "email"}
That returns up to 200 accounts Instagram suggests alongside nasa, keeping only the ones that publish an email address. At $0.008 per analyzed account, a full 200-profile run costs $1.60.
What you get
One row per account, 23 columns. The ones people actually use:
| Column | What it holds |
|---|---|
username, full_name | Who it is |
business_email | Public contact email, when the account publishes one |
business_phone_number | Public contact phone, when published |
external_url | The link in the bio |
business_category_name | Instagram's own category — Photographer, Restaurant, Public Figure… |
follower_count, following_count, media_count | Size and activity |
biography | Bio text, as written |
is_business_account, is_verified, is_private | Account type and status |
discovered_from, depth, chain_path | Which account led here, and how far out |
matched_by | Which filter kept this row |
{"username": "esa","full_name": "European Space Agency","business_email": "contact@esa.int","external_url": "https://esa.int","business_category_name": "Science Museum","follower_count": 5000000,"is_business_account": true,"is_verified": true,"discovered_from": "nasa","depth": 1,"matched_by": "keyword:space"}
discovered_from is what keeps a wide run readable: every row says which account led to it, so you can always trace a lead back to the handle you started from.
Pricing, and what filters do to your bill
$0.008 per profile analyzed. One event. No Actor start fee, no per-row add-on, no separate charge for the email.
A profile is "analyzed" when it has been discovered, fetched in full, and checked against your filters. It is charged whether or not a filter then keeps it — by the time the filter can run, the profile has already been fetched, and that fetch is the cost.
That matters most when you set a narrow filter:
| Run | Analyzed | Kept | Cost |
|---|---|---|---|
| 200 profiles, no filters | 200 | 200 | $1.60 |
200 profiles, requireContact: email | 200 | ~60 | $1.60 |
| 200 profiles, follower band 10k–100k | 200 | ~40 | $1.60 |
So set maxProfiles to your budget: budget ÷ 0.008. $8 is 1000 profiles. It is a hard ceiling — the run stops there.
Two filters are free. verifiedOnly and skipPrivate read fields that are already on the discovery record, so accounts they reject are never fetched and never billed. Use them first when they fit.
Going wider
searchDepth: "1" asks about the handles you entered and returns the accounts Instagram suggests for them. That's the shortlist.
searchDepth: "2" also asks about each account it found, one level further out. This is how a single handle becomes a whole niche — and it multiplies the bill, because every account it reaches is an analyzed profile. maxPerLevel controls how many accounts each one carries into the next level (10 by default), and maxProfiles is still the hard ceiling.
Accounts already seen in the run are never analyzed twice, so the same profile is never billed twice.
Filter recipes
Brands with a funnel, in your niche
{ "profiles": ["allbirds"], "searchDepth": "2", "accountType": "business","hasWebsite": true, "requireContact": "email", "maxProfiles": 500 }
Mid-tier creators, not mega-accounts
{ "profiles": ["natgeo"], "accountType": "personal","minFollowers": 10000, "maxFollowers": 250000, "maxProfiles": 300 }
One specific trade
{ "profiles": ["thephotographyinstitute"], "businessCategory": "Photographer","requireContact": "email_or_phone", "maxProfiles": 300 }
Anyone mentioning a topic in their bio
{ "profiles": ["shopify"], "keywords": ["skincare", "beauty"],"keywordSearchIn": "bio", "maxProfiles": 400 }
When a run comes back empty
Almost always a filter that's too narrow. In order of likelihood:
- A tight
minFollowers/maxFollowersband. Widen it — run once with no band, look at the counts you actually get back, then set one. businessCategoryis an exact match. "Photographer" works; "Photo" matches nothing.requireContact: "email"on a niche where most accounts are personal. Tryemail_or_phone, or drop toanyand filter the spreadsheet afterwards.verifiedOnly— this excludes the vast majority of accounts by design.
The run log tells you how many accounts were analyzed and how many survived, so you can see which end the problem is at.
FAQ
How many accounts come back per handle? Whatever Instagram suggests for it — usually a few dozen at depth 1, not an exhaustive index. Depth 2 is where the volume comes from.
Does the seed account have to be public?
Yes. Private accounts have no suggestion list to read. Private accounts can still appear in results; skipPrivate drops them for free.
Are the emails scraped from anywhere shady? No. They're the public contact details a business account chooses to publish on its own profile — the same ones the Contact button shows any visitor.
Why is business_email empty on some rows?
Either the account publishes no email, or the row has is_partial: true. Instagram's full-profile source rejects a minority of accounts, and the fallback that answers instead carries no bio link, media count or category. On those rows those columns are unknown, not empty — partial_reason says which case it was.
What happens if a long run gets interrupted? It picks up where it stopped. The Actor checkpoints every account it has analyzed, so when the platform migrates a run to another server it skips those accounts entirely — they are not fetched again, not charged again, and not written to the dataset twice. This matters most on a large depth-2 run, which is exactly the kind that gets migrated.
Is a login or cookie needed? No. Everything here is public data, fetched without an Instagram session.
Support
Questions, bugs, or a filter you wish existed: contact@toolzerhub.com. More Instagram Actors: https://apify.com/toolzerhub