Instagram Profile Email & Phone Scraper
Pricing
from $4.00 / 1,000 profile scrapeds
Instagram Profile Email & Phone Scraper
Extract public emails and phone numbers from Instagram profiles by username or URL. Each row adds bio, followers, following, business category, website, bio links, verification and recent posts. Unknown usernames are not charged. No login needed.
Pricing
from $4.00 / 1,000 profile scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
151
Total users
44
Monthly active users
6 days ago
Last modified
Categories
Share
What is Instagram Profile Email & Phone Scraper?
Instagram Profile Email & Phone Scraper turns Instagram usernames or profile URLs into one clean row per profile, with the public email and phone the account publishes on its contact button or in its bio. Each row also has the display name, bio, follower and following counts, verification, business flag and category, external link, bio links and profile picture, plus hasEmail, hasPhone and contactSource so you can filter outreach-ready accounts at a glance. It also includes up to 12 recent posts with caption, comment count, media type and date. Brand teams, influencer marketers, researchers and AI agents use it to size up and enrich Instagram accounts in bulk, with no Instagram login.
| You give | You get | Price |
|---|---|---|
| Usernames, @handles or profile URLs | One row per profile: public email and phone with their source, bio, followers, category, links, up to 12 recent posts | $4 per 1,000 profiles (profile-scraped), Apify platform usage included; unknown usernames are free |
Why marketers use it for profile research
- The numbers that matter first.
followersCount,followingCountandisVerifiedsit at the top of every row for quick ranking. - Contacts when they are public.
emailandphonecome from the contact button or the bio when the account publishes them;contactSourcesays which. Turn ononlyWithContactto save (and pay for) only profiles that list one. - Recent activity at a glance.
recentPostsshows up to 12 latest posts with caption, comments, date and media type. - Handles or URLs, deduplicated. Paste
natgeo,@nasaor a full profile URL; repeats are skipped. - Pay only for real profiles. Unknown usernames are listed in the run summary and are free.
How to use it
Look up a list of creators with their recent posts:
{"usernames": ["natgeo", "@nasa", "https://www.instagram.com/humansofny/"],"scrapeRecentPosts": true,"maxRecentPosts": 12}
Profile details only, smallest rows:
{"usernames": ["nike", "adidas", "puma"],"scrapeRecentPosts": false}
| Input | What it controls |
|---|---|
usernames | Instagram usernames, @handles or profile URLs. Required. |
onlyWithContact | Save only profiles with a public email or phone; others are skipped free (default off) |
scrapeRecentPosts | Add the profile's latest posts (default on) |
maxRecentPosts | Posts per profile, up to 12 (default 12) |
proxyConfiguration | Apify Proxy settings; Residential by default |
Need more than 12 posts per account? Continue with Instagram Posts Scraper linked below.
Output: Instagram profile data you receive
A real row for a public creator account (email partly redacted, recentPosts shortened to one post, image URLs left out):
{"username": "humansofny","fullName": "Humans of New York","userId": "242598499","biography": "New York City, one story at a time.\nCreated by Brandon Stanton\nInquiries/Collabs: h***@gmail.com","followersCount": 12654423,"followingCount": 755,"isVerified": true,"isPrivate": false,"isBusinessAccount": false,"email": "h***@gmail.com","hasEmail": true,"hasPhone": false,"contactSource": "bio","externalUrl": "https://bit.ly/dearnewyorkbook","bioLinks": ["https://bit.ly/dearnewyorkbook"],"igtvVideoCount": 1,"recentPosts": [{"postId": "3741054891297971261","shortCode": "DPq5ZpJDZw9","postUrl": "https://www.instagram.com/p/DPq5ZpJDZw9/","caption": "Dear New York closes on October 19th. ...","commentCount": 974,"isVideo": true,"postedAt": "2025-10-11T13:27:07.000Z"}],"profileUrl": "https://www.instagram.com/humansofny/"}
| Field | What it contains |
|---|---|
username, fullName, userId, biography, profileUrl | Who the account is |
followersCount, followingCount | Audience size |
isVerified, isPrivate, isBusinessAccount | Account status flags |
email, phone | Public contact details, included when the account publishes them |
hasEmail, hasPhone, contactSource | Quick contact flags and where the contact came from (contact_button or bio) |
businessCategory | The account's public category, when shown |
externalUrl, bioLinks | The website and links in the bio |
recentPosts | Up to 12 latest posts with URL, caption, comment count, media type and date |
postsCount | Total posts when Instagram's public data reports it, mostly for smaller accounts |
profilePicUrl, profilePicUrlHd | Profile picture links |
Fields without a value are left out of the row. OUTPUT in the default key-value store reports the run outcome and lists any usernames that were not found.
Example workflow: shortlisting creators for a campaign
An outdoor brand has 50 creator handles from a hashtag search. They run them with maxRecentPosts set to 6, sort by followersCount, and read recentPosts to confirm each creator posted in the last month. They keep creators whose email is filled for direct outreach. Then they pass the rest to Instagram Contact Scraper to look for a contact in the bio and contact button.
Pricing
This Actor uses Pay per event. Apify platform usage is included in the event price, so you pay one profile-scraped event per profile saved ($4 per 1,000 profiles) plus one start event per run. Unknown usernames and profiles skipped by onlyWithContact are free. See the Pricing tab for current rates.
- 50 profiles = 50 profile events (about $0.20) + 1 start event.
- Recent posts come at no extra charge.
- The size of your
usernameslist sets the ceiling for each run.
Free Apify plan
Runs started from a free Apify plan return up to 25 results per run, with every input mode and output field available. Paid Apify plans have no per-run limit, so your usual result settings apply.
Profile research with AI agents (MCP)
Connect this Actor to an AI agent through Apify MCP and ask in plain language:
Look up these 10 Instagram accounts and keep only those with a public email or phone. Rank them by followers and give me each one's email, phone, category, website and the date of its latest post.
Agent checklist:
- Pass handles or URLs in
usernames. - Set
scrapeRecentPosts: falsewhen only profile numbers matter, to keep rows short. - Read rows with
get-dataset-items; readOUTPUTfor usernames that were not found. - Use
profileUrlas the stable ID when joining with other data.
API example
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~instagram-profile-scraper/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"usernames": ["natgeo", "nasa"], "scrapeRecentPosts": false}'
Related Instagram tools from the same developer
| Your next step | Use | Why |
|---|---|---|
| When you still need to find accounts by keyword | Instagram User Search Scraper | Profiles for any niche or keyword |
| When you want more than 12 posts per account | Instagram Posts Scraper | Full post lists by profile, hashtag or URL |
| When you then want contact details | Instagram Contact Scraper | Emails and phones from bio and contact button |
| When you want to check audience quality | Instagram Fake Follower Auditor | Audience-quality score per profile |
| When you want to know how old an account is | Instagram Account Age Checker | Estimated creation date per account |
Best results
| Starting situation | Helpful action | Expected outcome |
|---|---|---|
| Ranking a long list of accounts | Turn off scrapeRecentPosts | Shorter rows with all the profile numbers |
| Checking how active an account is | Keep maxRecentPosts at 6 to 12 | Recent captions and dates |
| Mixed handles and URLs | Paste them as they are | One row per account, duplicates skipped |
| Needing the full post history | Use Instagram Posts Scraper | Every post, beyond the latest 12 |
Builder's note
I found that most people want a quick read on an account before deciding anything else, so each row starts with followers, verification and the website, followed by the latest posts. I learned that Instagram's public profile data reports a reliable total post count mainly for smaller accounts, so the Actor includes postsCount only when that number is the true total.
FAQ
Do I need an Instagram account?
No. The Actor reads public profile data and needs no login or cookies.
Why is postsCount missing for some accounts?
Instagram's public profile data reports the total post count mainly for smaller accounts. For larger ones the Actor leaves the field out so every number you get is the real one.
Does it return emails?
When an account publishes an email or phone on its contact button or in its bio, it appears in email and phone.
Can I keep only accounts with an email or phone?
Yes. Set onlyWithContact to true. Profiles without a public email or phone are skipped and not charged.
What happens with an unknown username?
It is listed in OUTPUT.notFound and is free.
Can I get more than 12 posts?
Each profile row carries up to 12 recent posts. For complete post lists, use Instagram Posts Scraper.
Responsible use
This Actor collects public Instagram profile data, which can include personal data protected by laws such as the GDPR and CCPA. Use it only with a lawful basis, honor opt-outs, 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.