๐Ÿ“ธ Instagram B2B Email Scraper avatar

๐Ÿ“ธ Instagram B2B Email Scraper

Pricing

from $4.99 / 1,000 results

Go to Apify Store
๐Ÿ“ธ Instagram B2B Email Scraper

๐Ÿ“ธ Instagram B2B Email Scraper

๐Ÿ“ง Extract verified B2B business emails from Instagram posts, reels & profiles via Google Search. ๐Ÿ” Keyword-driven lead generation with smart proxy support.

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

Scraper Engine

Scraper Engine

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Instagram B2B Email Scraper โ€” Emails, Phones & Profiles

Instagram B2B Email Scraper finds public corporate email addresses on Instagram by running keyword-driven Google Search patterns across posts, reels, and profiles, then returns each lead's email, phoneNumber, businessCategoryName, and followersCount as clean, structured JSON โ€” no HTML parsing or manual copy-paste required. Optional add-ons enrich every lead with live Instagram profile data and related/lookalike accounts. Run it directly on Apify to start building a B2B lead list in minutes.

What is Instagram B2B Email Scraper?

Instagram B2B Email Scraper is an Apify Actor that searches Google for public Instagram posts, reels, and profiles matching your keywords, then extracts corporate-style email addresses (and, optionally, phone numbers and live profile data) from the search-result snippets. It returns every lead as a structured JSON record with consistent field names across runs. No Instagram account or login is required โ€” the Actor works entirely against public Google Search results and Instagram's public, unauthenticated web_profile_info endpoint. It's built for B2B sales and business-development teams, growth marketers, and developers automating lead-generation pipelines.

What Instagram business email data is publicly available to scrape?

Instagram publicly exposes a profile's basic identity and business details to any visitor, but keeps deeper account activity behind a login wall. The table below covers what this Actor can reach versus what stays gated:

Data CategoryPublicly AvailableRestricted behind login wall
Username, bio, and external linkYesโ€”
Follower count and business categoryYes (via the public web_profile_info endpoint)Detailed audience analytics โ€” login
Verified badge / business-account flagYesโ€”
Contact email or phone posted in a bio or captionYes, when the account has published itContact info the account hasn't made public
Post/reel captions indexed by GoogleYesFull comment threads โ€” login
Related/lookalike profile suggestionsPartial, via the same public endpointPersonalized "suggested for you" results โ€” login
Full follower/following listsNoComplete lists โ€” login
Direct messages and StoriesNoAlways โ€” login

Instagram B2B Email Scraper only returns publicly visible data โ€” what any visitor or Google's indexed snapshot already sees. Nothing behind a login wall.

What data can I extract with Instagram B2B Email Scraper?

Every run returns lead and search metadata for each match, plus two opt-in layers โ€” phone/country data and full profile enrichment โ€” that add extra fields when switched on.

FieldDescription
networkThe platform searched โ€” always Instagram.com (or the value of the platform input)
keywordThe keyword that produced this lead
patternThe B2B search pattern that matched (B2B mode only; absent in personal mode)
leadTypeb2b or personal, matching the run's mode
titleThe Google result's title (typically the Instagram page/post title)
urlThe Instagram URL of the matched post, reel, or profile
descriptionThe Google result snippet text the email/phone was extracted from
locationThe location filter applied to the search, if any
scraped_atUTC timestamp when the lead was collected
emailThe extracted email address
phoneNumberThe extracted, normalized phone number (null if extractPhone is off)
dialCodeResolved country dial code used to normalize phoneNumber (null if extractPhone is off)
countryCountry name/label applied to phone matching (null if extractPhone is off)
followersCountFollower count from the live profile (null unless enrichProfile is on)
isBusinessAccountWhether Instagram flags the account as a business account (null unless enriched)
businessCategoryNameInstagram's business category label, e.g. "Health/Beauty" (null unless enriched)
verifiedInstagram verified-badge status (null unless enriched)
bioThe account's live biography text (null unless enriched)
externalUrlThe account's linked external website (null unless enriched)
relatedProfilesLookalike/related profiles surfaced by the same enrichment call ([] unless enriched)

Lead & search metadata

network, keyword, pattern, leadType, title, url, description, location, scraped_at โ€” these identify where a lead came from and which search produced it.

Contact fields

email, phoneNumber, dialCode, country โ€” the extracted contact details, with phone numbers normalized to a resolved dial code when extractPhone is on.

Profile enrichment fields (opt-in)

followersCount, isBusinessAccount, businessCategoryName, verified, bio, externalUrl, relatedProfiles โ€” populated only when enrichProfile is on; otherwise null/[] so it's clear the field was never attempted, not fabricated.

๐Ÿค– Add-on: Need additional Instagram data?

If you need a full standalone profile pull rather than the enrichment subset attached to each lead here, run Instagram Profile Scraper. To expand a lead's related-profile network beyond the per-lead cap, use Instagram Related Person Scraper โ€” the same public endpoint this Actor's relatedProfiles field draws from. To discover more leads by hashtag instead of Google keyword patterns, pair this with Instagram Hashtag Scraper, or use Instagram Mentions Scraper to find accounts that have tagged or mentioned a brand as inbound leads.

How does Instagram B2B Email Scraper differ from the official Instagram API?

Meta's Instagram Graph API is built for managing your own connected Business/Creator account, not for discovering contact emails on accounts you don't own โ€” there is no endpoint that searches or returns third-party business emails. Instagram B2B Email Scraper instead discovers leads across any public Instagram account already indexed by Google.

FeatureInstagram Graph APIInstagram B2B Email Scraper
Data scopeYour own connected Business/Creator account(s) onlyAny public Instagram account indexed by Google
Email/contact discoveryNo endpoint returns third-party contact emailsPurpose-built extraction of emails from public bios and captions
Access requirementsMeta App Review + a Business/Creator account linked to a Facebook PageNo Instagram login, no app approval
Setup timeApp Review and account linking before any call succeedsProvide keywords and start a run
Output shapeRaw Graph API JSON per Meta's evolving schemaNormalized JSON with consistent field names across runs
Third-party data accessNot accessibleAccessible for any public account

Use the Graph API when you're managing insights or publishing for your own connected account. Use Instagram B2B Email Scraper when you need to discover and contact leads on accounts you don't manage.

How to use Instagram B2B Email Scraper

Instagram B2B Email Scraper runs as an Apify Actor โ€” no separate signup or API key setup beyond an Apify account.

  1. Open the Actor's page in the Apify Console (or find it via the Apify Store search).
  2. Provide the required input: keywords โ€” an array of at least one industry, niche, or topic.
  3. Optionally set mode, patterns, location, maxEmails, enrichProfile, and extractPhone to shape the run.
  4. Start the run.
  5. Open the Dataset tab to view, or export the results as JSON or CSV.

How to scale to bulk Instagram business email extraction

keywords accepts an array, so one run can search any number of keywords โ€” each keyword runs against every selected B2B pattern (up to all 29). Raise maxEmails (up to 50,000) to lift the total-lead cap, and maxEmailsPerPattern to control how many leads any single pattern contributes per keyword. For very large lead lists, split keywords across multiple runs rather than one oversized run.

What can you do with Instagram business email data?

  • A B2B sales rep prospecting yoga studios uses email and businessCategoryName to build a niche outreach list without opening each profile manually.
  • A growth marketer running a city-specific campaign uses location and followersCount to prioritize outreach to mid-size local accounts.
  • A partnerships manager vetting collaborators uses isBusinessAccount and verified to filter for legitimate professional accounts before pitching.
  • An agency building a cold-call list uses phoneNumber and dialCode to segment leads by country before dialing.
  • An AI agent building a lead-enrichment pipeline feeds bio, externalUrl, and relatedProfiles into an LLM to draft personalized outreach copy and expand a prospect list via lookalike accounts.

How does Instagram B2B Email Scraper handle rate limits and blocking?

The Actor fetches Google Search results and Instagram's public profile endpoint using impit browser impersonation (a real Chrome fingerprint), so requests aren't sent as a bare script client. Google SERP requests escalate through three tiers on a block โ€” direct connection, then a GOOGLE_SERP datacenter proxy group, then a residential proxy group โ€” with jittered delays between attempts. Instagram profile-enrichment requests use a separate direct-then-residential escalation path, since the SERP-tuned datacenter group doesn't reliably reach instagram.com. A response is flagged as blocked using a heuristic that combines HTTP status and body size with known block phrases, avoiding false positives on large, legitimate results pages. Each blocked request retries up to a bounded number of attempts per tier before that query is skipped with a warning rather than crashing the run. If an error occurs partway through a run, any leads already collected are kept and pushed to the dataset rather than discarded. The useProxy input can force a direct-only connection with all proxy tiers disabled, if you supply your own network path instead.

โฌ‡๏ธ Input

ParameterRequiredTypeDescriptionExample Value
keywordsYesarrayIndustries, niches, or topics to search for on Instagram via Google (e.g. marketing, fitness, real estate). Every keyword runs against every selected pattern.["marketing agency", "yoga studio"]
modeNostringExtraction mode. b2b = corporate email patterns (contact@, info@, bookings, careersโ€ฆ), filters out Gmail/Yahoo/Outlook. personal = broader discovery, optionally filtered to customDomains. Default: b2b."b2b"
customDomainsNoarrayPersonal mode only: keep only emails ending in one of these domains. Leave empty to keep every personal-mode email found. Ignored in B2B mode.["@gmail.com", "@outlook.com"]
patternsNoarrayB2B mode only: which of the 29 corporate-email search patterns to run (keys from b2b_patterns.py, e.g. email_for_bookings, bio_email_basic). Leave empty to run all 29 patterns.["email_for_bookings", "contact_at_domain"]
platformNostringTarget social platform for email discovery. Default: Instagram.com."Instagram.com"
locationNostringGeographic filter added to every search query for hyper-local prospecting. Leave empty for global results. Default: ""."London"
maxEmailsNointegerHard cap on the total number of leads to collect across every keyword and pattern combined. Default: 10. Minimum 1, maximum 50000.200
maxEmailsPerPatternNointegerCap on how many leads a single B2B search pattern can contribute per keyword (B2B mode only). Default: 15. Minimum 1, maximum 5000.25
enrichProfileNobooleanFetch each lead's live Instagram profile (followers, business flag, category, verified, bio, external URL) via the public web_profile_info endpoint, plus related profiles. Adds one extra request per lead. Default: false.true
maxRelatedProfilesNointegerMaximum number of lookalike/related profiles to capture per enriched lead. Only applies when enrichProfile is on. Default: 5. Minimum 0, maximum 50.5
extractPhoneNobooleanAlso scan each Google result snippet for a phone number and normalize it with a country dial code. Default: false.true
countryNostringCountry name and/or dial code to target phone numbers by. When a dial code resolves, matches are normalized to it and filtered to only that dial code. Only used when extractPhone is on. Default: ""."United Kingdom (+44)"
useProxyNobooleanEnable smart 3-tier proxy escalation (direct โ†’ datacenter โ†’ residential) for Google Search and profile-enrichment requests. Off forces a direct connection only, all tiers disabled. Default: true.true
proxyConfigurationNoobjectOptional proxy override when useProxy is enabled. Default: {"useApifyProxy": true, "apifyProxyGroups": ["GOOGLE_SERP"]}.{"useApifyProxy": true, "apifyProxyGroups": ["GOOGLE_SERP"]}

Example input

{
"keywords": ["marketing agency", "yoga studio", "real estate agent"],
"mode": "b2b",
"customDomains": [],
"patterns": ["email_for_bookings", "bio_email_basic", "contact_at_domain", "business_development"],
"platform": "Instagram.com",
"location": "London",
"maxEmails": 200,
"maxEmailsPerPattern": 25,
"enrichProfile": true,
"maxRelatedProfiles": 5,
"extractPhone": true,
"country": "United Kingdom (+44)",
"useProxy": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["GOOGLE_SERP"]
}
}

โฌ†๏ธ Output

Results are written to the Actor's dataset as typed, normalized JSON with the same field names on every run, ready to export as JSON, CSV, Excel, or HTML table directly from the Apify Console, or to pull via the API. Billing is pay-per-result: every lead written to the dataset is charged once under the row_result event, with no separate uncharged accounting rows.

Example output

{
"network": "Instagram.com",
"keyword": "yoga studio",
"title": "Zenflow Yoga Studio (@zenflowyoga) โ€ข Instagram photos and videos",
"description": "๐Ÿ“ London | ๐Ÿง˜ Classes & retreats | ๐Ÿ“ง bookings@zenflowyoga.com for class bookings and private sessions",
"url": "https://www.instagram.com/zenflowyoga/",
"email": "bookings@zenflowyoga.com",
"phoneNumber": "+442071234567",
"leadType": "b2b",
"location": "London",
"pattern": "email_for_bookings",
"scraped_at": "2026-07-25T14:32:10Z",
"dialCode": "+44",
"country": "United Kingdom",
"followersCount": 18420,
"isBusinessAccount": true,
"businessCategoryName": "Health/Beauty",
"verified": false,
"bio": "๐Ÿง˜ London yoga studio | Classes, retreats & teacher training | ๐Ÿ“ง bookings@zenflowyoga.com",
"externalUrl": "https://zenflowyoga.com",
"relatedProfiles": [
{
"username": "primalyogalondon",
"fullName": "Primal Yoga London",
"isVerified": false,
"isPrivate": false,
"profilePicUrl": "https://scontent.cdninstagram.com/v/primalyogalondon_profile.jpg"
}
]
}

How does it work?

For each keyword, the Actor builds a site:instagram.com-scoped Google Search query โ€” combined with a B2B pattern template in B2B mode, or a plain keyword search in personal mode โ€” and fetches the results using Chrome browser impersonation rather than a bare script client. It parses the returned result blocks for a title, description, URL, and email, applying the same logic to pull a phone number when extractPhone is on. When enrichProfile is on, it resolves the lead's Instagram username from its URL (or from the post's embedded owner data for post/reel links) and calls Instagram's own public, unauthenticated profile endpoint for live follower, category, and related-profile data. Only publicly visible data is ever returned, and the output field names stay stable across runs regardless of changes to Google's or Instagram's page markup, since parsing uses several fallback selectors.

Integrations

Instagram B2B Email Scraper works like any other Apify Actor โ€” callable from your own code, from no-code automation tools, or from AI agent frameworks, using the same underlying API.

Calling Instagram B2B Email Scraper programmatically

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("instagram-b2b-emails-scraper").call(run_input={
"keywords": ["marketing agency", "yoga studio"],
"mode": "b2b",
"maxEmails": 200,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["email"], item.get("phoneNumber"))

Works in Go, Ruby, Node.js, cURL โ€” any language that can make an HTTP request.

MCP integration for AI agents

Instagram B2B Email Scraper can be exposed to MCP-compatible clients (Claude Desktop, Claude Code, and other MCP clients) through Apify's Actors MCP Server by registering the Actor's name in the server's ACTORS configuration, then calling it as a tool from your agent โ€” no separate API integration code required.

No-code tools (n8n, Make, LangChain)

In n8n, use the Apify integration node (or an HTTP Request node against the Actor's run endpoint) to start a run and pull dataset items into your workflow. In Make, the Apify app module can start this Actor and pass its output straight into downstream scenarios like CRM row creation. In LangChain, wrap the Actor with the ApifyWrapper/Apify Actor tool to run it and load results as documents directly into a chain or agent.

Scraping publicly visible data โ€” content Instagram and Google make available without a login โ€” is generally lawful, and Instagram B2B Email Scraper only returns data of that kind. That said, an email address is personal data even when it's published in a business context, so collecting, storing, or using it for outreach can fall under GDPR (if the person or business is in the EU/UK) or CCPA (for California residents), which govern the lawful basis for storage and further use rather than the act of viewing public data itself. Consult legal counsel if your use case involves bulk storage or processing of personal data.

Frequently asked questions

What Instagram business email fields does Instagram B2B Email Scraper return?

The core fields are email, phoneNumber, businessCategoryName, followersCount, and bio, alongside search metadata like keyword, pattern, and url. See the full field table above for every key.

Does Instagram B2B Email Scraper require an Instagram account or login?

No. The Actor searches Google and calls Instagram's public, unauthenticated web_profile_info endpoint โ€” no Instagram username, password, or session cookie is needed from you.

How many Instagram business emails can I extract in one run?

Up to the maxEmails cap, which accepts values from 1 to 50,000 per run. The run stops collecting as soon as that cap is reached, or once every keyword/pattern combination has been exhausted.

What happens if a keyword or search pattern returns zero leads?

The Actor moves on rather than erroring. If a query returns empty result pages three times in a row, it stops paging that keyword/pattern combination and continues to the next one, so a low-yield keyword or pattern doesn't stall the run.

Can I scrape multiple Instagram business emails at once?

Yes. keywords accepts an array, and every keyword is run against every selected B2B pattern (up to all 29) in the same run, so one run can cover many niches and search angles at once.

Does Instagram B2B Email Scraper work with Claude, ChatGPT, and other AI agent tools?

Yes. It's callable as a standard HTTP endpoint by any agent framework via the Apify API, and it can also be registered with Apify's Actors MCP Server for MCP-compatible clients like Claude Desktop and Claude Code.

What makes this different from a generic email-scraping tool?

It's purpose-built for Instagram lead generation: 29 engineered B2B search patterns tuned to surface corporate contact emails while filtering out free-mail domains, optional live profile enrichment via Instagram's own public endpoint, and phone-number extraction normalized to a target country's dial code โ€” rather than a single generic regex pass over any web page.

Does Instagram B2B Email Scraper return data in a format LLMs can use directly?

Yes. Output is typed, normalized JSON with consistent field names across runs โ€” no HTML parsing or CSS selectors needed. Pass it directly to an LLM prompt, index it into a vector store, or feed it to an agent tool.

What happens when Instagram or Google changes its layout or anti-bot system?

The Actor is maintained, and its output field names stay stable across changes to Google's or Instagram's markup โ€” the SERP parser already tries several known result-block selectors as fallbacks. No specific update turnaround time is guaranteed.

Can I use Instagram B2B Email Scraper without managing proxies or browser infrastructure?

Yes. The Actor handles Chrome browser impersonation and automatic three-tier Apify proxy escalation (direct โ†’ datacenter โ†’ residential) on your behalf; you only need to leave useProxy on.

Which fields work best for AI training data and RAG indexing?

For RAG, index the free-text fields โ€” bio, description, and title โ€” since they carry the most retrievable context. For training data, email, followersCount, isBusinessAccount, and verified return as consistently typed primitives across every record.

Scraper NameWhat it extracts
Instagram Profile ScraperFull Instagram profile data โ€” bio, followers, verified status, external links
Instagram Related Person ScraperRelated and lookalike profile networks for any Instagram account
Instagram Hashtag ScraperInstagram posts and profiles discovered via hashtag search
LinkedIn B2B Emails Scraper: Verified Email FinderCorporate emails from LinkedIn, grouped by resolved company domain
Alibaba Email Scraper: Top Supplier LeadsSupplier business emails and leads from Alibaba via engineered search patterns
Extract Emails, Contacts & Socials from Any WebsiteEmail addresses discovered via Google site: search on any platform you choose

Your feedback

Found a bug or missing a field? Let us know via the Actor's Issues tab on the Apify Store, or through Apify support โ€” we actively maintain this Actor and use that feedback to prioritize fixes.