Instagram Email Scraper: Emails, Phones, WhatsApp
Pricing
from $1.49 / 1,000 profiles
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
Maintained by CommunityActor stats
0
Bookmarked
14
Total users
8
Monthly active users
2 days ago
Last modified
Categories
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 |
|---|---|---|---|---|
| russanddaughters | info@russanddaughters.com | 2124754880 | website | 251,101 |
| milkbarstore | help@milkbarstore.com | 3475779504 | website | 881,110 |
| clairepthomas | hi@clairepthomas.com | - | link page | 1,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.businessEmailis the best business inbox found andbusinessContactSourcesays where:facebook,link page,website,youtube,tiktokorinstagram. 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
phonesandwhatsappNumbers: 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 profile's Facebook Page (its intro's email and phone, when the Page names the profile's own website); 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. When the profile's Instagram links don't reach its website (a shop link only), the website its Facebook Page names is read too, contact pages included.
pagesScannedlists the pages read andlinkPageLinkswhere the link-in-bio page points, so you can check every address. - Where each one came from:
contactSourceslists every email, phone and WhatsApp number once per place it was seen (bio,bio link,facebook,website,link page,youtube,tiktok) with that page's URL, andbusinessEmailSourceandbusinessPhoneSourcesay where the business email and the business phone each came from (they can differ: the email from the Facebook Page, the phone from the website's contact page). - 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 business address and story highlights: the street, city and ZIP when the business shows them, and up to 10 story highlights. The Contact button's type (
businessContactMethod) and the address's coordinates are unavailable logged out since 2026-11-03 (Instagram stopped answering its app record for visitors who aren't logged in). - 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.
Need the profile data without crawling contact websites? Instagram Profile Scraper returns bio, follower counts, engagement and recent Reels in one row per profile.
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, lists each input's status (found, not found, age-restricted) and, in contactSearch, how the pages read for contacts ended, by source: a contact found, none, not the profile's, refused (a login wall or HTTP 401/403/429), timed out, unreadable, another HTTP answer, or cut by the contact search's time limit.
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). Unavailable logged out since 2026-11-03 (Instagram stopped answering its app record for visitors who aren't logged in): null.businessPhoneNumber: a business phone from the profile's Facebook Page (the phone its intro shows), its 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 Facebook Page (the email its intro shows), its 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: wherebusinessEmail(elsebusinessPhoneNumber) was found:facebook,link page,website,youtube,tiktokorinstagram.businessEmailSource: wherebusinessEmailwas found:facebook,link page,website,youtube,tiktokorinstagram.businessPhoneSource: wherebusinessPhoneNumberwas found:facebook,website,link pageorinstagram.contactSources: every value ofemails,phonesandwhatsappNumbers, once per place it was seen, as{type, value, source, url}: typeemail,phoneorwhatsapp; sourcebio(url: the profile),bio link,instagram,facebook,website,link page,youtubeortiktok; url the page it was read on.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).medianEngagementRate: withincludeActivityMetricsin the API input (not in this form): the median of (likes + comments) / followers over its latest posts (up to 6, pinned ones left out), in percent.postsLast30Days: the same way: posts published in the last 30 days among its latest posts.postsLast30DaysComplete: the same way: true when that count is complete (an older post was read too).daysSinceLastPost: the same way: whole days since its newest post.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 oldervideoViewCountother 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. Unavailable logged out since 2026-11-03: null (seehighlights).highlights: the story highlights a visitor who isn't logged in sees on the profile, up to 10, in the profile's order: each with id, title, coverUrl (its cover picture) and url. Null when the profile has none.hasMoreHighlights: the profile has more highlights than the 10 listed (Instagram shows the rest only to logged-in visitors).hasPublicStory: with the profile record on: a story is up right now (its newest story went up in the last 24 hours).igtvVideoCount: with the profile record on: its IGTV (long video) count. Unavailable logged out since 2026-11-03: null.hasChannel: with the profile record on: it runs a broadcast channel. Unavailable logged out since 2026-11-03: null.joinedRecently: with the profile record on: Instagram marks the account as new. Unavailable logged out since 2026-11-03: null.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).latestIgtvVideos: with the profile record and Include latest posts on: its latest IGTV (long) videos (up to 12), each with the latestPosts keys plus title, videoDuration and commentsDisabled. Unavailable logged out since 2026-11-03: null.latestReels: its latest reels (up to 12, pinned ones included), each with shortCode, url, playCount (views), likeCount, commentCount, postedAt and isPinned.relatedProfiles: with the profile record on: the profiles Instagram lists as related to this one (up to 50), each as{id, full_name, is_private, is_verified, profile_pic_url, username}.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.businessAddress: with the profile record on: the business address as{street_address, city_name, city_id, zip_code, latitude, longitude}, when the profile 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. Unavailable logged out since 2026-11-03: null.addressLongitude: the business address's longitude. Unavailable logged out since 2026-11-03: null.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'sis_cannesflag, passed through as sent.hasLongformMedia: Instagram'shas_longform_mediaflag: 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).similarityScore: related-profile rows only (mode: relatedin the API input; this Actor's profile rows don't have it): how close it is to the input profile it was found for, 0 to 100 (see the Instagram Related Profiles Actor's README for how it's scored).similarityReasons: related-profile rows only (mode: relatedin the API input; this Actor's profile rows don't have it): what it has in common with that profile, strongest first, then where Instagram suggested it.detectedLanguage: related-profile rows only (mode: relatedin the API input; this Actor's profile rows don't have it): the language the profile writes in, read from its bio and its latest posts' captions (an ISO 639-1 code:en,es,pt, ...; empty when there is too little text to tell).matchedSeeds: related-profile rows only (mode: relatedin the API input; this Actor's profile rows don't have it): with Sort by = Best match, every input profile whose suggestions reached it, in your input order.seedCount: related-profile rows only (mode: relatedin the API input; this Actor's profile rows don't have it): with Best match, how many of your input profiles reached it.suggestedByCount: related-profile rows only (mode: relatedin the API input; this Actor's profile rows don't have it): with Best match, how many suggestion lists read in the run included it (your profiles' and, deeper, their suggestions').source: related-profile rows only (mode: relatedin the API input; this Actor's profile rows don't have it): with When Instagram suggests nothing: use the tagged network on,instagram(Instagram's suggestions) ortagged-network(found through the accounts the input profile tags, for a profile Instagram suggests nothing for).searchQuery: searches only (searchQueriesin the API input; this Actor's profile rows don't have it): the search the profile was found for.inputUrl: with the profile record on: the input this row is for (a URL or id as given, else the profile URL).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, its highlights from 2026-11-03; businessContactMethod and highlightReelCount as this build gives them (null); highlights and latestReels cut to one, picture and redirect links shortened; keys these rows didn't have, the profile record's, the activity metrics and the related-profile match fields, shown as null; contactSources as this build gives it):
{"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": null,"businessPhoneNumber": null,"businessEmail": "hi@clairepthomas.com","businessContactSource": "link page","businessEmailSource": "link page","businessPhoneSource": null,"contactSources": [{"type": "email","value": "hi@clairepthomas.com","source": "bio","url": "https://www.instagram.com/clairepthomas/"},{"type": "email","value": "hi@clairepthomas.com","source": "link page","url": "https://linktr.ee/clairepthomas"}],"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","medianEngagementRate": null,"postsLast30Days": null,"postsLast30DaysComplete": null,"daysSinceLastPost": null,"reelsMedianViews": 95484,"reelsAvgViews": 916332,"reelsAvgLikes": 43764,"reelsAvgComments": 407,"reelsViewsToFollowers": 8,"lastReelAt": "2026-08-19T17:25:17Z","highlightReelCount": null,"highlights": [{"id": "17878137873572289","title": "๐","coverUrl": "https://scontent-atl3-1.cdninstagram.com/v/t51.71878-15/863487036_..._n.jpg","url": "https://www.instagram.com/stories/highlights/17878137873572289/"}],"hasMoreHighlights": true,"hasPublicStory": null,"igtvVideoCount": null,"hasChannel": null,"joinedRecently": null,"latestPosts": null,"latestIgtvVideos": 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}],"relatedProfiles": null,"bioMentions": null,"bioHashtags": null,"pronouns": null,"threadsUsername": null,"isActiveOnThreads": false,"linkedFacebookPage": null,"businessAddress": 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=...","similarityScore": null,"similarityReasons": null,"detectedLanguage": null,"matchedSeeds": null,"seedCount": null,"suggestedByCount": null,"source": null,"searchQuery": null,"inputUrl": null,"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.
| Plan | Per 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 business address's street, city and ZIP do come through; the button's type is unavailable logged out since 2026-11-03). 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.