Home › Guides › Instagram Profile Scraper
Instagram profile data in bulk: exact followers, bio links and an engagement rate
The Instagram Bulk Profile Scraper turns a list of usernames or profile URLs into one clean row per profile: exact follower count, bio, bio links, verified and private flags, highlight titles, Threads name and whether a story is up — plus, from the public embed page, the exact post count and six newest posts, and from those median likes, median comments, an engagement rate, posts per week and the last-post time. It reads only what a signed-out visitor sees: no login, no cookies, no account.
Who it's for
- Influencer marketers screening creators by followers and real engagement rate, not guesswork.
- Sales and ops teams enriching an account list with bio, links, verified status and followers for a CRM.
- Brand teams watching follower counts run to run.
- Anyone ranking a list of handles by a comparable metric in one pass.
What you get
| Group | Fields (filled share, n=150) |
|---|---|
| Identity | User ID, username, URL, full name (100%); verified & private flags (100%) |
| Reach | Exact followers & following (100%); post count (98%) |
| Bio | Biography (98.7%), bio links (94.7%), external URL, hashtags, mentions, Threads name (44%), bio emails (0.7%) |
| Engagement | Median likes & comments, engagement rate (96.7%), posts per week, last-post time, six newest posts (98%) |
| Extras | Story status, highlight titles, reels flag; optional "accounts you might like" list |
Engagement rate = (median likes + median comments) ÷ followers, over the six newest posts. Shared posts are counted and coauthors names them, so you can recompute on own-content only. A value Instagram did not give is null, never 0.
Input
| Input | What it does |
|---|---|
profiles | One per line: natgeo, @natgeo or a URL (up to 10,000; duplicates read once) |
includeRecentPosts | Read the embed page for post count, six newest posts and engagement (default on); off = fast, profile fields only |
includeSimilarAccounts | Add the "accounts you might like" list (default off) |
extractBioContacts · maxProfiles | List emails written in the bio (default on) · stop after N rows |
{ "profiles": ["https://www.instagram.com/tartinebakery/", "@onyxcoffeelab"], "includeSimilarAccounts": true }
Honest limits
- No email, phone or business category beyond a bio email — the public record carries none.
- Engagement rests on the six newest posts as they stood when read; an account that posts many times a day reads low. Shared posts (~33%) count with full numbers — recompute from
recentPostswithoutcoauthorsfor own content. - No video view/play counts (the six posts carry likes and comments only); a hidden like count stays
null. - Nothing from behind the login — a private profile comes as its public header only; no follower lists, stories, highlight contents, tagged posts or search.
- Signed-in-only / age-restricted profiles get a free status row; a start-up check stops the run before anything is charged if Instagram changed its public queries.
Pricing
Pay per result: one profile event per delivered row, public or private, with or without post figures. Status rows and every line that gave no row (not a profile, no such account, signed-in-only, a duplicate) are free. Current prices are on the actor's Pricing tab on Apify.
Screen creators by real engagement: paste handles and get exact followers, bio links and an engagement rate — up to 10,000 profiles a run, exportable to JSON, CSV or Excel.
Open the Instagram Profile Scraper →Related
This Actor gives profile-level metrics; for a profile's full post feed use the Instagram Profile Posts Scraper, for one post's details use the Instagram Post & Reel Details Scraper, for reels with a performance score the Instagram Reels Scraper, and for comment sections the Instagram Comments Scraper.
Frequently asked questions
Do I need an Instagram account, login or cookies?
No. It reads only what a signed-out visitor sees, so figures can differ from what a signed-in user sees. No login, no cookies, nothing from your own account.
How is the engagement rate computed?
(median likes + median comments) ÷ followers, from the six newest posts. Shared posts are counted and coauthors names them, so you can recompute on own content only. A profile whose six newest all hide likes has no engagementRate.
Can I get email or phone?
No — the public profile carries none. The only contact a row can hold is an email the owner wrote into the bio (bioEmails), and that is rare: about 0.7% of profiles in a 150-profile run.
Why do some profiles have no post figures?
Instagram's public embed page sometimes shows no data (recentPostsStatus: not-offered); the row still has its profile fields. A private or signed-in-only profile comes as its public header only.
How many profiles can one run read?
Up to 10,000, read eight at a time; duplicates are read once. You pay one profile event per delivered row — status rows and lines that give no profile are free.
Using the data lawfully
Rows hold what an account shows publicly on its profile. A profile can belong to a private person or a minor even when it looks like a business, so you are responsible for a lawful reason to process personal data (GDPR and similar). bioEmails is exactly an address the owner wrote into the public bio — nothing hidden is looked up. Not affiliated with Instagram or Meta.
Instagram Bulk Profile Scraper — followers, bio and a real engagement rate per profile. Pay per row, no API key.
Get Instagram profile data on Apify →