Instagram Profile Lead Scraper By Keyword avatar

Instagram Profile Lead Scraper By Keyword

Pricing

$19.99/month + usage

Go to Apify Store
Instagram Profile Lead Scraper By Keyword

Instagram Profile Lead Scraper By Keyword

Find targeted Instagram leads using keywords with the Instagram Profile Lead Scraper By Keyword. Extract usernames, bios, follower counts, emails, websites, and profile links automatically. Ideal for influencer discovery, outreach campaigns, and niche audience research.

Pricing

$19.99/month + usage

Rating

0.0

(0)

Developer

Scraper Engine

Scraper Engine

Maintained by Community

Actor stats

1

Bookmarked

35

Total users

0

Monthly active users

9 days ago

Last modified

Share

Instagram Profile Lead Scraper โ€” By Keyword ๐Ÿ“ฑ๐Ÿ”

Give it a keyword. It gives you back Instagram profiles that publish an email address in their bio or captions, ranked by how well they match that keyword.

This is the keyword-driven member of the family. Instead of firing one query and hoping, it expands every keyword into several complementary Instagram-native search angles, pools everything it finds, de-duplicates by profile, and then ranks the pool by keyword relevance before saving the best leads.

"fitness coach"
โ”œโ”€โ”€ exact phrase โ†’ "fitness coach"
โ”œโ”€โ”€ hashtag โ†’ "#fitnesscoach", "#fitness"
โ”œโ”€โ”€ bio contact-intent โ†’ "fitness coach" ("dm for" OR "email for" OR "inquiries" OR "collabs" โ€ฆ)
โ”œโ”€โ”€ profile audience โ†’ "fitness coach" "followers"
โ”œโ”€โ”€ loose terms โ†’ "fitness" "coach"
โ””โ”€โ”€ your own extras โ†’ whatever you add in โž• Extra Keyword Variants

Each angle surfaces a different slice of the index. In live testing the hashtag angle alone returned nine profiles that the plain-phrase angle never showed.


๐Ÿ“Œ Where the email actually comes from

We think you deserve a straight answer instead of marketing copy.

The actor fetches each profile for real and reads its actual bio. Instagram serves a normal browser a ~620 KB JavaScript shell with no profile data in it โ€” that is the dead end most scrapers hit. Served to a declared crawler user-agent, the same URL returns a ~1.2 MB server-rendered document containing the real profile record: biography, full_name, follower_count, and the account's own recent post captions.

What we tried, live from ApifyResult
instagram.com/<handle>/ with a desktop Chrome UA~620 KB JS shell โ€” no biography, no counts.
instagram.com/<handle>/ with a crawler UA~1.2 MB, real profile data. This is what the actor uses.
api/v1/users/web_profile_info/ + x-ig-app-idHTTP 429 on every proxy group. Dead.
Apify UNBLOCKER groupTLS failure.
Brave / Bing / DuckDuckGo / Mojeek / Startpage / Ecosia429, 202 block pages, 403, or no site: support. Unusable.

So the pipeline is genuinely two-stage:

  1. DISCOVER โ€” the 6-angle keyword expansion finds which accounts are relevant.
  2. FETCH โ€” every discovered handle's real profile page is fetched through a residential proxy, and the email is read from the account's own profile.

๐Ÿ”’ Attribution โ€” why a row's email really belongs to that account

The naive version of this scraper reads the email out of a search-result snippet. That is how you end up asserting that @indianyogaassociation's contact address is aymyogaschool@gmail.com โ€” an address that merely appeared in a caption on one of its pages. The row says "this account's email", so a near-miss is a wrong value, not a thin one.

Every row therefore carries an attributionConfidence:

ValueEvidenceemailSource
bio_verifiedRead from the account's own bio field on its fetched profile. Strongest.instagram_profile_bio
own_page_verifiedThe account repeatedly publishes it in its own captions, or it carries the account's own name.instagram_own_caption
handle_matchedOpt-in fallback only: a search snippet address that matches the account name.google_serp_caption_snippet

A one-off address in a single caption is rejected, even when it is the only address on the page โ€” verified case: @dougsyoga's lone caption address was the event registrar's inbox, not his. Addresses that share only a generic trade word (yoga, studio, academy) or the search keyword itself are rejected too, since two unrelated businesses in the same niche always share those.

Default is first-party only (bio_verified + own_page_verified). If that yields fewer leads than you asked for, the actor says so in the log rather than padding the list.

๐Ÿ“Š Output fields

Every field below is populated on every row. We do not emit blank columns.

FieldExampleDescription
networkinstagram.comSource network.
keywordyoga teacherThe keyword you asked for.
titleInternational Yoga Teacher (@yogagise)Headline of the result that discovered this account.
description`International Yoga Teacher
Lifestyle, Travelโ€ฆ`The account's real bio, fetched from its profile.
urlhttps://www.instagram.com/yogagise/Canonical profile URL.
emailyogagise@gmail.comThe contact address, attributed to this account.
handleyogagiseInstagram username.
fullNameInternational Yoga TeacherReal display name from the fetched profile.
followerCount12599Real follower count from the fetched profile.
matchedKeywordyoga teacherWhich of your keywords produced this lead.
keywordVarianthashtag #yogateacherWhich expansion of that keyword found it.
sourceTypeprofile_page / post_page / reel_pageWhich surface discovered the account.
emailSourceinstagram_profile_bioWhere the address was actually read from.
handleSourceresult_url / title_handle / cite_breadcrumb / source_breadcrumbHow the username was recovered.
attributionConfidencebio_verifiedStrength of the emailโ†’account link (see table above).
relevanceScore13.55Keyword-relevance score.
keywordRank1Position within its keyword, best first.

โš™๏ธ Input

InputRequiredDefaultWhat it does
๐Ÿ” Keywordsโœ…["fitness coach"]One or more keywords. Each is expanded into several search angles.
๐ŸŒ Platformโ€”InstagramLocked to Instagram today.
๐Ÿ“ Location Filterโ€”(empty)Adds a city/region term to every query.
๐Ÿ“ง Email Domains Filterโ€”["@gmail.com"]Keep only leads on these domains. Empty = all major free-mail providers.
๐Ÿ“Š Maximum Leads per Keywordโ€”20How many ranked leads to save per keyword.
โš™๏ธ Engineโ€”legacyProcessing engine.
#๏ธโƒฃ Hashtag Discoveryโ€”trueAlso search the hashtag spelling of each keyword.
โž• Extra Keyword Variantsโ€”[]Your own extra search phrases, added to the automatic expansions.
๐Ÿ‘ค First-Party Emails Onlyโ€”trueKeep only emails read from the accountโ€™s own profile. Turn OFF to also accept name-matched search-snippet addresses.
๐Ÿ“„ Pages per Keyword Variantโ€”2Result pages (20 each) to read per variant.
๐Ÿ… Minimum Relevance Scoreโ€”0Drop leads scoring below this. Good leads typically land at 8โ€“14.
๐Ÿ›ก๏ธ Proxy Configurationโ€”GOOGLE_SERPLeave it alone unless you know why you are changing it.

How ranking works

The actor gathers a candidate pool roughly twice the size of your quota, then scores each profile:

  • +3 the full keyword phrase appears in the title/bio/handle
  • +1 per significant keyword token found
  • +2 a keyword token appears inside the username (@lucindabucatfitness for "fitness coach")
  • +1.5 per hashtag form matched
  • +2.5 the lead came from an actual profile page rather than a post
  • up to +2.5 for audience size, when the result exposes a follower count
  • +1 the email local part is built from the handle (a real business account)

The top maxEmails leads are saved, best first.


๐Ÿš€ How to use

  1. Open the actor on Apify and click Try for free.
  2. Type one or more keywords (be specific โ€” "vegan meal prep coach" beats "coach").
  3. Optionally set a location and an email domain filter.
  4. Set Maximum Leads per Keyword.
  5. Start the run, then export the dataset as CSV, JSON or Excel.

๐Ÿ’ก If you get fewer leads than you asked for, that is the honest answer: only a fraction of profiles publish an email in a way search engines indexed. Widen the keyword, drop the location filter, raise Pages per Keyword Variant, or clear the Email Domains Filter.


โš–๏ธ Compliance

This actor reads publicly indexed search results only. It does not log in, does not bypass authentication, and does not touch private accounts or content behind Instagram's login wall. Contact data you collect is personal data โ€” use it in line with GDPR/CCPA and applicable anti-spam law, and honour opt-outs.

๐Ÿ’ฌ Support and feedback

  • Bug reports: open a ticket in the Issues section
  • Custom features / enterprise: dev.scraperengine@gmail.com