Instagram Email Scraper: Emails, Phones, WhatsApp avatar

Instagram Email Scraper: Emails, Phones, WhatsApp

Pricing

from $1.49 / 1,000 profiles

Go to Apify Store
Instagram Email Scraper: Emails, Phones, WhatsApp

Instagram Email Scraper: Emails, Phones, WhatsApp

Instagram email scraper: give a list of Instagram usernames and get each profile's emails, phone and WhatsApp numbers from its bio, link-in-bio page, website, YouTube and TikTok, plus followers, engagement, category, links and the Contact button type. No login, no cookies.

Pricing

from $1.49 / 1,000 profiles

Rating

0.0

(0)

Developer

DeepMine

DeepMine

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

3 days ago

Last modified

Share

Instagram email scraper: paste a list of Instagram usernames and get each profile's emails, phone numbers and WhatsApp numbers, from its bio and from the pages it links to (its link-in-bio page, website and contact page, YouTube channel and TikTok profile), with where each one was found, the Contact button's type, followers, engagement, category and links. One row per profile, no login.

๐Ÿท๏ธ Username๐Ÿ“ฌ Emailsโ˜Ž๏ธ Phones๐Ÿ”Ž Found On๐Ÿ‘ฅ Followers
russanddaughtersinfo@russanddaughters.com2124754880website251,101
milkbarstorehelp@milkbarstore.com3475779504website881,110
clairepthomashi@clairepthomas.com-link page1,193,722

$2.19 per 1,000 profiles on the Starter plan ($2.59 Free, $2.09 Scale, $1.49 Business). The prefilled run (10 profiles) costs at most $0.02 ($0.03 on Free). Emails and phones are included when the profile publishes one, and so are bio, links, followers, engagement and Reels views. No start fee, no minimum.

What you get

  • Every email address found, in emails: the ones written in the bio first, then the ones on the profile's own pages. businessEmail is the best business inbox found and businessContactSource says where: link page, website, youtube, tiktok or instagram. In our test runs on Apify (2026-10-07) 9 of the 10 prefilled profiles and 36 of 68 fitness creators came with at least one email.
  • Phone and WhatsApp numbers, in phones and whatsappNumbers: numbers written in the bio, WhatsApp links in the bio, and the tel: and WhatsApp links or listed telephone on the profile's own pages. Businesses publish them far more often than creators (2 of the 4 prefilled food businesses, none of 68 fitness creators).
  • Where it looks: the bio; the link-in-bio page (Linktree, Beacons, hoo.be, Stan, ShopMy, Carrd and 15 more); the profile's own website and up to two of its contact or about pages; and the YouTube channel and TikTok profile those pages link to. pagesScanned lists the pages read and linkPageLinks where the link-in-bio page points, so you can check every address.
  • Only the profile's own inboxes: a website counts only when its name matches the handle or display name, and only addresses on its own domain or a personal inbox (Gmail, Outlook...) are kept. Shops, brand checkouts and link platforms' own inboxes (hello@shopmy.us, info@liketoknow.it) are left out.
  • The Contact button's type and the business address: businessContactMethod (CALL, EMAIL, TEXT, DIRECTION) and the street, city, ZIP and coordinates when the business shows them, plus the story highlight count.
  • The whole profile at no extra cost: name, full bio, website and every bio link, category, account type, verified and private flags, exact followers, following and posts, average likes and comments, engagement rate, last post date, the views of the latest 12 reels, Threads handle, linked Facebook page and every account flag Instagram shows visitors.
  • One row per profile, in your order, charged once even if you list it twice. Unknown and age-restricted profiles are listed in the run summary and never charged.
  • No login, no cookies, no account of yours involved. The Actor reads only what Instagram and the profile's own pages show to any visitor.

Typical uses: turning an influencer or creator shortlist into an outreach sheet, collecting the emails and phones of local businesses you found on Instagram, and enriching a CRM list of Instagram handles.

Input

{
"usernames": ["russanddaughters", "@milkbarstore", "https://www.instagram.com/gymdad_jim/"],
"includeContactDetails": true
}
  • ๐Ÿ“‡ Instagram profiles: usernames, @usernames or profile URLs, one per line (up to 1,000 per run).
  • ๐Ÿ“ฌ Search their own pages for contacts: on by default. Off = bio emails and phones only, a few seconds faster per profile.
  • ๐Ÿ“ˆ Include followers and engagement: on by default, included in the price.
  • Advanced: Max profiles (caps the run's cost), Include Reels views (on), Include latest posts (off; adds each profile's latest 6 posts), Proxy.

Output

One row per profile. The dataset's ๐Ÿ“‡ Contacts view shows the emails, phones, where they were found, the Contact button, category, website and followers; ๐Ÿ“Š Overview, ๐Ÿ”Ž Details, ๐Ÿ“ˆ Stats and ๐ŸŽฌ Reels show the rest. The run's OUTPUT record (๐Ÿงพ Run summary) counts the profiles with an email and with a phone and lists each input's status (found, not found, age-restricted).

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/
  • 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; Instagram's business phone comes first when it sends one. Rare for creators.
  • businessContactMethod: what the profile's Contact button does (CALL, EMAIL, TEXT, DIRECTION), when it has one.
  • businessPhoneNumber: 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: 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: where businessEmail (else businessPhoneNumber) was found: link page, website, youtube, tiktok or instagram.
  • emails: every email address found, the bio's first, then the business email, then the ones on the profile's own pages. Inboxes of link and shop platforms (Linktree, ShopMy, LTK...) are left out.
  • phones: every phone number found, the bio's (and its WhatsApp links') first, then the own pages' (digits only).
  • whatsappNumbers: the WhatsApp numbers (wa.me links) in the bio links and on the profile's own pages, as +
  • bioLinks: every link in the bio, as {url, title, linkType, lynxUrl, isPinned, imageUrl, linkId, mediaType, mediaAccentColorHex, creationSource}.
  • linkPageLinks: where the profile's link-in-bio page (Linktree, Beacons, hoo.be...) sends visitors, up to 20 links.
  • pagesScanned: the profile's own pages read for contacts, in order.
  • 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: 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, 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 profile itself (the column is kept so rows join with the Instagram Related Profiles Actor's).
  • depth: always 0 here (the profile itself).
  • rank: the profile's position in your list (1 = first).
  • discoveredFrom: always null here (the Instagram Related Profiles Actor puts 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).

Example row (from the prefilled run on 2026-10-07, latest posts off; latestReels cut to one, picture and redirect links shortened):

{
"profilePicUrl": "https://scontent-yyz1-1.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": "hi@clairepthomas.com",
"contactPhone": null,
"businessContactMethod": "CALL",
"businessPhoneNumber": null,
"businessEmail": "hi@clairepthomas.com",
"businessContactSource": "link page",
"emails": [
"hi@clairepthomas.com"
],
"phones": null,
"whatsappNumbers": 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"
}
],
"linkPageLinks": [
"https://www.clairepthomas.com/cpt-fit-app",
"https://my.playbookapp.io/claire-thomas/programs/comeback-core-challenge/41587",
"https://fullcirclelife.net",
"https://docs.google.com/forms/d/e/1FAIpQLSc31xA3c87ZeUAhGRSFwCNC1lI-aeFeoHSwdM-1TM1vVrj8Aw/viewform?usp=preview",
"https://www.clairepthomas.com/apparel",
"https://www.facebook.com/groups/1084753391691702/?fref=nf",
"https://1stphorm.com/cpt"
],
"pagesScanned": [
"https://linktr.ee/clairepthomas",
"https://www.clairepthomas.com/apparel",
"https://www.clairepthomas.com/contact",
"https://www.clairepthomas.com/cpt-fit-app"
],
"isVerified": true,
"isPrivate": false,
"isBusinessAccount": false,
"isProfessionalAccount": true,
"accountType": "creator",
"followersCount": 1193722,
"followsCount": 1332,
"postsCount": 1832,
"hasReels": true,
"avgLikes": 6133,
"avgComments": 160,
"engagementRate": 0.53,
"lastPostAt": "2026-08-30T18:17:19Z",
"reelsMedianViews": 95484,
"reelsAvgViews": 916332,
"reelsAvgLikes": 43764,
"reelsAvgComments": 407,
"reelsViewsToFollowers": 8,
"lastReelAt": "2026-08-19T17:25:17Z",
"highlightReelCount": 13,
"latestPosts": null,
"latestReels": [
{
"shortCode": "C7zEgUkp1kE",
"url": "https://www.instagram.com/reel/C7zEgUkp1kE/",
"playCount": 9744439,
"likeCount": 327998,
"commentCount": 4337,
"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-yyz1-1.cdninstagram.com/v/t51.82787-19/565676275_18536200234011065_3872982851407481707_n.jpg?stp=...&oe=...",
"seedUsername": "clairepthomas",
"depth": 0,
"rank": 6,
"discoveredFrom": null,
"id": "462667064",
"fbid": "17841400331927229",
"scrapedAt": "2026-10-07T17:51:15Z"
}

Pricing

Pay per result: you pay for each profile delivered, never for usernames that don't exist or that Instagram hides (age-restricted accounts), and never twice for the same profile.

PlanPer 1,000 profiles (emails, phones and WhatsApp numbers when published; bio, links, followers, engagement and Reels views included)
Free$2.59
Starter$2.19
Scale$2.09
Business$1.49

Set a maximum cost on the run and the Actor stops at or before it. Proxies are included: everything is read through Apify's datacenter proxy.

Good to know

  • 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). Some email extractors fill them by logging in on their side; this Actor never logs in, so it finds emails and phones where profiles publish them: the bio, the link-in-bio page, the website, YouTube and TikTok. A profile that publishes its inbox nowhere but behind the Contact button comes without one.
  • Hit rates depend on the list: in our runs on Apify (2026-10-07), the prefilled list (food businesses and creators who publish their inbox) gave an email for 9 of 10 profiles and a phone for 2; 68 fitness creators gave an email for 36 and a phone for none.
  • Speed: rows stream into the dataset in your order as each profile's pages are read. In our runs on Apify (2026-10-07, default 256 MB), the first row arrived 0.4 to 1.4 s after the Actor started reading, 5 profiles took 3.5 to 5.3 s in 9 of 10 runs (1.2-1.6 s of the slower ones was Apify loading the Actor onto a new server), the prefilled 10 took about 5.8 s and 68 creators about 32 s.
  • Private accounts come with their name, bio, bio email and follower count (Instagram shows no posts or reels for them).
  • Not found: unknown or renamed usernames and age-restricted accounts (alcohol brands, for example) are listed in the run summary and not charged; the rest of the run continues. Five profiles failing in a row stop the run with a clear message (Instagram refusing visitors at that moment) instead of retrying a long list.
  • Need lookalikes too? The Instagram Related Profiles Actor finds the accounts Instagram suggests next to a profile, with the same columns.

Feedback

Found a bug or a missing 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.