Instagram Profile Scraper + Emails & Contacts
Pricing
from $4.00 / 1,000 profile scrapeds
Instagram Profile Scraper + Emails & Contacts
Scrape public Instagram profiles by username or URL: name, bio, followers, posts, verification, business category, plus parsed email and phone. No login required. MCP-ready.
Pricing
from $4.00 / 1,000 profile scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
15 hours ago
Last modified
Categories
Share
Scrape public Instagram profiles at scale by username or profile URL. Get full profile metadata plus parsed email and phone for lead generation — in clean, flat JSON built for spreadsheets, CRMs, and AI agents. No login or cookies required.
What it does
Give it Instagram usernames (or profile URLs) and it returns one structured record per profile: display name, bio, follower / following / post counts, verification status, business category, profile pictures, every external link in the bio, Instagram-suggested related accounts, and the most recent posts. For business and creator accounts it also surfaces the public contact email and phone number, and it parses emails/phones out of the bio text for everyone else.
It runs over Instagram's public web profile endpoint through residential proxies, so there is no login wall, no cookie export, and no browser automation to babysit. That makes it fast, cheap to run, and stable.
When to use it
- Lead generation — turn a list of creator/business handles into emails, phones, and follower metrics.
- Influencer marketing — qualify creators by follower count, verification, category, and posting activity.
- Market & competitor research — track accounts, bios, links, and recent content over time.
- Audience mapping — follow
relatedProfilesto map a niche or competitor network. - AI agents / MCP — a clean
username → JSONtool with predictable per-profile cost.
Not for hashtags or single post URLs. Use a hashtag scraper or post scraper for those.
Output
One record per profile (null/unknown fields are omitted):
| Field | Type | Description |
|---|---|---|
username | string | Instagram handle |
fullName | string | Display name |
userId | string | Numeric Instagram ID |
biography | string | Bio text |
followersCount | integer | Followers |
followingCount | integer | Following |
postsCount | integer | Total posts |
isVerified | boolean | Blue-tick verified |
isPrivate | boolean | Private account (metadata only) |
isBusinessAccount | boolean | Business / professional account |
businessCategory | string | Category label |
email | string | Contact email (business field or parsed from bio) |
phone | string | Contact phone (business field or parsed from bio) |
externalUrl | string | Primary bio link |
bioLinks | string[] | All bio links |
relatedProfiles | string[] | Suggested related accounts |
profilePicUrl / profilePicUrlHd | string | Profile picture URLs |
highlightReelCount | integer | Story highlights |
igtvVideoCount | integer | IGTV / long-form videos |
recentPosts | object[] | Up to 12 recent posts (see below) |
profileUrl | string | Canonical profile URL |
scrapedAt | string | ISO 8601 scrape timestamp |
Each item in recentPosts: postId, shortCode, postUrl, caption, likeCount, commentCount, isVideo, videoViewCount, thumbnailUrl, postedAt.
Example record
{"username": "natgeo","fullName": "National Geographic","userId": "787132","biography": "Inspiring the explorer in everyone 🌎 Stories from @natgeo photographers.","followersCount": 281000000,"followingCount": 167,"postsCount": 29850,"isVerified": true,"isPrivate": false,"isBusinessAccount": true,"businessCategory": "Publisher","email": "press@natgeo.com","externalUrl": "https://on.natgeo.com/instagram","bioLinks": ["https://on.natgeo.com/instagram"],"relatedProfiles": ["nasa", "natgeotravel"],"profilePicUrl": "https://instagram.com/.../natgeo.jpg","recentPosts": [{"shortCode": "C1abcDEf","postUrl": "https://www.instagram.com/p/C1abcDEf/","caption": "Photo by @example…","likeCount": 412000,"commentCount": 1820,"isVideo": false,"postedAt": "2026-05-30T14:21:00.000Z"}],"profileUrl": "https://www.instagram.com/natgeo/","scrapedAt": "2026-06-01T18:51:00.000Z"}
Pricing
Pay-per-event — you pay only for what you get:
| Event | Price |
|---|---|
| Actor start | $0.00005 |
| Profile scraped | $0.004 / profile |
A 1,000-profile run costs about $4. Each profile includes metadata, contacts, and recent posts in a single charge — no hidden add-on fees. Pay-per-usage (compute + proxy) billing is also available for very large jobs.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
usernames | string[] | — (required) | Usernames, @handles, or profile URLs |
scrapeRecentPosts | boolean | true | Include up to 12 recent posts |
maxRecentPosts | integer | 12 | 0–12 recent posts per profile |
proxyConfiguration | object | RESIDENTIAL | Residential strongly recommended |
{"usernames": ["nasa", "https://www.instagram.com/nike/", "@natgeo"],"scrapeRecentPosts": true,"maxRecentPosts": 12}
Run via API
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~instagram-profile-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{ "usernames": ["nasa", "natgeo"] }'
Use with AI agents (MCP)
This actor is MCP-ready. Connect it through the Apify MCP server and an AI agent can call it with a single username and receive structured JSON back. Input descriptions and output keys are written for LLM consumption, and per-profile cost is predictable, so agents can budget calls reliably.
How it works & reliability
- Reads Instagram's public web profile endpoint — no login, no cookies, no browser.
- Residential proxies + session pool with automatic rotation on
403/429. - Honest failure: if Instagram blocks every request and nothing is scraped, the run fails clearly and you are not charged for blocked requests.
- Cost cap is printed at the start of every run; the actual billed amount is printed at the end.
- Private accounts return metadata only (no posts), flagged with
isPrivate: true.
Related actors
- Instagram Hashtag Scraper — posts + engagement by hashtag:
khadinakbar/instagram-hashtag-scraper - B2B Lead Finder & Enrichment — Google Maps leads + emails:
khadinakbar/b2b-lead-finder-enrichment - Contact Details Scraper — emails, phones, socials from any website:
khadinakbar/contact-details-scraper
FAQ
Do I need an Instagram account or cookies? No. It only reads public profile data through a public endpoint.
Does it work on private accounts? It returns public metadata (name, bio, counts, category) and flags isPrivate: true. Posts are not available for private accounts.
Where does the email come from? Business/creator accounts expose a public contact email and phone, which are returned directly. For other accounts, the actor parses emails/phones from the bio text when present.
Can I pass profile URLs instead of usernames? Yes — full URLs, @handles, and bare usernames all work in the usernames field.
How many profiles can I scrape? As many as you provide. Cost scales linearly at $0.004 per profile.
Legal & compliance
This actor collects only public information that any logged-out visitor can view, and is intended for lawful uses such as lead generation, research, and analytics. It does not bypass authentication or access private content. You are responsible for using the data in compliance with Instagram's Terms of Service, the GDPR/CCPA, and any other applicable laws and regulations. Do not use scraped personal data for spam or unlawful purposes. Instagram is a trademark of Meta Platforms, Inc.; this actor is not affiliated with, endorsed by, or sponsored by Meta.