Instagram Contact Scraper — Email & Phone Extractor avatar

Instagram Contact Scraper — Email & Phone Extractor

Pricing

from $3.00 / 1,000 contact founds

Go to Apify Store
Instagram Contact Scraper — Email & Phone Extractor

Instagram Contact Scraper — Email & Phone Extractor

Extract emails and phone numbers from public Instagram profiles, using business and creator account fields, bio text and bio links. No login needed; works with Apify MCP and the API.

Pricing

from $3.00 / 1,000 contact founds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

93

Total users

26

Monthly active users

12 hours ago

Last modified

Features

Limited permissions

Share

What is Instagram Contact Scraper?

Instagram Contact Scraper takes Instagram usernames or profile URLs and returns one row per profile with the contact details the account publishes: the business email and phone from the contact button, emails and phone numbers written in the bio, bio links, WhatsApp numbers from click-to-chat links, emails spelled out to dodge scrapers ("name at site dot com"), the external website, plus follower count, verification, business-account flag and category. A hasContact flag tells you at a glance which profiles can be reached. Influencer marketers, agencies, sales teams and AI agents use it to turn a list of handles into an outreach list, with no Instagram login.

Why marketers use it for creator outreach

  • Every public contact source in one row. Contact-button details and bio text are both checked, and the best email and phone are put in email and phone.
  • Link-in-bio and WhatsApp aware. WhatsApp click-to-chat links in the bio are read straight into whatsapp (and phone when no other number exists). linkInBioService names the service the profile links to (Linktree, Beacons, Stan, Bento and more). With expandBioLinks the pages behind those links are opened too.
  • Reachable or not, at a glance. hasContact is true when an email or phone was found.
  • Lower price for profiles without contacts. Profiles with no published contact are billed at a smaller rate. With onlyWithContact they are skipped (no row saved); from 2026-11-23 a skipped profile is billed at that same lower rate, because it is still looked up.
  • Context for prioritizing. followersCount, isVerified, isBusinessAccount and businessCategory help you decide who to contact first.
  • Handles or URLs. Paste @name, name or the full profile URL; duplicates are skipped.

What's new

  • 0.2.1: optional email check (emailCheck): format, mail server, throwaway-domain and role-address flags on each found email, at no extra charge. Optional engagement (includeEngagement) is built but switches on only when its price is added (14-day notice first); until then it does nothing and costs nothing.
  • 0.2.0: WhatsApp numbers (whatsapp), emails spelled out in the bio, linkInBioService, a clean PARTIAL stop before the time limit, and an agentSummary sentence in OUTPUT. Prices are unchanged by this release; the already-announced prices start 2026-11-23.
  • Parallel lookups (5 at a time) and the cheapest available data route first.

How to use it

Get contacts for a list of creators:

{
"usernames": ["humansofny", "natgeo", "https://www.instagram.com/nasa/"]
}

Keep only profiles that publish a contact:

{
"usernames": ["humansofny", "natgeo", "nasa"],
"onlyWithContact": true,
"maxItems": 50
}
InputWhat it controls
usernamesInstagram usernames, @handles or profile URLs. Required.
onlyWithContactSave only profiles where an email or phone was found (default off). From 2026-11-23 skipped profiles are billed as no-contact lookups
expandBioLinksAlso open link-in-bio pages (Linktree, Beacons, websites; up to 3 per profile) to find an email, phone or WhatsApp number when the profile shows no email (default off; the Console form pre-fills it on)
emailCheckCheck each found email with DNS and built-in lists and add emailStatus (likely-deliverable, risky, invalid) plus emailMxFound, emailDisposable, emailRole. A mail server existing does not prove the mailbox does. Default off, no extra charge
includeEngagementAverage likes, comments, engagement rate and last post date from recent public posts. Not active yet (see What's new); default off
maxItemsMost profiles to save in one run, which also caps the cost

Find more contacts through link-in-bio pages:

{
"usernames": ["humansofny", "natgeo", "nasa"],
"expandBioLinks": true
}

Each row says where its contact came from in contactSource (profile, bio or bio-link). Profiles that could not be loaded are listed in OUTPUT.unresolvedUsernames, so nothing is dropped silently. A run that finishes with some profiles unresolved, or that stops a little before its time limit, reports PARTIAL (never a silent success); profiles it did not start are listed in OUTPUT.notProcessedUsernames so you can run them again.

Check the emails you find (free):

{
"usernames": ["humansofny", "natgeo", "nasa"],
"expandBioLinks": true,
"emailCheck": true
}

This is a quick screen, not full verification. For a deeper list check use Email Address Validator; for audience quality use Instagram Fake Follower Auditor. Follower lists are not available without a login and are not offered here.

Still looking for accounts? Start with Instagram User Search Scraper (linked below) to find profiles by keyword, then pass the usernames in here.

Output: contact data you receive

This row has the same fields as a real result, but every value is fictional to protect the account owner's privacy. Fields with no value are left out of the row:

{
"username": "example_studio",
"fullName": "Example Studio",
"userId": "1234567890",
"email": "hello@example-studio.com",
"bioEmails": ["hello@example-studio.com"],
"bioPhones": [],
"bioLinks": ["https://example-studio.com/shop"],
"externalUrl": "https://example-studio.com/shop",
"biography": "Handmade ceramics. Collabs: hello@example-studio.com",
"isBusinessAccount": false,
"followersCount": 48210,
"isVerified": false,
"isPrivate": false,
"profileUrl": "https://www.instagram.com/example_studio/",
"hasContact": true,
"scrapedAt": "2026-10-01T00:19:51.312Z"
}
FieldWhat it contains
email, phoneThe best email and phone found, from the contact button first, then the bio
bioEmails, bioPhonesEvery email and phone number written in the bio
bioLinks, externalUrlThe profile's links and website
hasContacttrue when an email or phone was found
followersCount, isVerified, isBusinessAccount, businessCategoryContext for prioritizing outreach
biography, fullName, profileUrlWho the account is

OUTPUT in the default key-value store counts profiles, contacts found and profiles without contacts for the whole run.

Example workflow: an influencer outreach list

A skincare brand has 200 creator handles from a hashtag search. They run them with onlyWithContact turned on, so only reachable creators are saved and the rest are billed at the lower no-contact rate. They sort by followersCount, keep accounts where isBusinessAccount is true for paid partnerships, and pass the email column to Email Address Validator before sending the first pitch.

Pricing

This Actor uses Pay per event. Apify platform usage is included in the event price. Each saved profile is one event: a contact event when an email or phone was found, or a smaller no-contact event when it was not. Each run also has one start event. The live Pricing tab on this page shows the current prices.

  • 100 profiles, 40 with contacts = 40 contact events + 60 no-contact events + 1 start event.
  • With onlyWithContact on, the same run saves 40 rows. Until 2026-11-22 it is billed 40 contact events + 1 start event; from 2026-11-23 the 60 skipped profiles are also billed as no-contact events (same total as above).
  • New prices from 2026-11-23: $0.008 per profile with a contact, $0.0056 per profile without one (announced with Apify's 14-day notice).
  • maxItems caps each run, so it doubles as a cost ceiling.
  • With expandBioLinks on, a profile whose contact is found only on its link-in-bio page is billed as a contact event. The page visit itself is not charged.

Free Apify plan

Runs from a free Apify plan process up to 25 profiles per run. Every option and field is available. Paid Apify plans have no per-run limit.

Creator outreach with AI agents (MCP)

Connect this Actor to an AI agent through Apify MCP and ask in plain language:

Find contact details for these 20 Instagram creators. Keep only the ones with an email or phone, and give me the email, follower count and website for each.

Agent checklist:

  1. Pass handles or URLs in usernames; set onlyWithContact: true when the user wants reachable profiles only.
  2. Read rows with get-dataset-items; use hasContact to sort reachable profiles first.
  3. Read OUTPUT for counts of contacts found and profiles without contacts; OUTPUT.agentSummary is a ready-made one-sentence answer.
  4. Use profileUrl as the stable ID when joining with other data.

API example

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~instagram-contact-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"usernames": ["humansofny", "nasa"], "onlyWithContact": true}'
Your next stepUseWhy
When you still need to find accounts by keywordInstagram User Search ScraperProfiles for any niche or keyword
When you want the people commenting on a postInstagram Post Engagers ScraperCommenter usernames from public posts and Reels
When you want to check audience quality firstInstagram Fake Follower AuditorFake-follower risk score per profile
When you then want contacts from the linked websitesContact Details ScraperEmails, phones and socials from each website
When you then want to check which emails are deliverableEmail Address ValidatorSyntax, mail server, disposable and role checks

Best results

Starting situationHelpful actionExpected outcome
A long list of creatorsTurn on onlyWithContactOnly reachable profiles in the dataset
Creators who link a website instead of an emailPass externalUrl values to Contact Details ScraperEmails from the creator's own site
Budget limitsSet maxItemsA fixed maximum cost per run
Brand partnershipsFilter on isBusinessAccount and businessCategoryAccounts set up for business contact

Builder's note

I found that creators publish contact details in two places, the contact button and the bio text, so the Actor checks both and puts the best email and phone in their own columns. I learned that many profiles publish no contact at all, which is why those rows cost less and can be left out of the dataset with onlyWithContact.

FAQ

Can I pass profile URLs instead of usernames?

Yes. Usernames, @handles and full Instagram profile URLs all work and can be mixed.

Where do the emails come from?

From what the account publishes: the business contact button and the bio text. For emails on a linked website, pass externalUrl to Contact Details Scraper.

What does hasContact mean?

It is true when the profile publishes an email or a phone number, and false when it publishes neither.

Which profiles work best?

Public creator and business profiles. Business and creator accounts often fill the contact button, which gives the most reliable email and phone.

Why are some fields missing from a row?

Fields with no value are left out of the row to keep it compact. For example, phone appears only when a phone number was found.

Responsible use

This Actor collects contact details that Instagram accounts publish, which is personal data protected by laws such as the GDPR and CCPA. Use it with a lawful basis such as legitimate business interest, follow CAN-SPAM and anti-spam rules, honor opt-out requests, and respect Instagram's terms. Read Apify's guide on whether web scraping is legal for more context. Instagram is a trademark of Meta Platforms, Inc. This independent Actor is not affiliated with, associated with, or endorsed by Instagram or Meta. For questions or bugs, open a ticket in the Issues tab.

⌂ 换网址