Instagram Profile Scraper: accounts, followers and emails
Instagram Profile Scraper extracts public Instagram accounts by handle, URL, user ID or keyword, with their follower lists and public business emails.
Free Apify plan: 5 runs a month, 10 items a run. No credit card.
- $0.02
- per keyword search, 40 profiles in
- $0.01
- per profile by handle, URL or ID
- 2,446
- users on Apify · 3.6 from 13 reviews
- 98.9%
- run success, last 30 days
Read on 21 September 2026.
Which input method should you use?
Instagram Profile Scraper accepts 4 input fields, and each one bills differently. Keywords are the cheapest way to find accounts you do not know yet; handles, URLs and IDs are for accounts you already have.
Cheapest per profile
keywords$0.02per search
40 profiles included
You are looking for accounts by topic
["yoga studio"]handles$0.01per profile
No profiles included
You have a list of usernames
["nike"]startUrls$0.01per URL
No profiles included
You have profile links
https://www.instagram.com/nike/userIds$0.01per ID
No profiles included
You have numeric Instagram IDs
["1644335255"]
Every profile after the free ones costs $0.0005, and so does every follower or following item, on all four methods.
| Apify actor | apidojo/instagram-user-scraper |
|---|---|
| Inputs | keywords · handles · startUrls · userIds · getFollowers · getFollowings · maxItems · customMapFunction |
| Returns | Profile objects, follower items, following items |
| Emails | Public business emails, where the account publishes one |
| Login or proxy | Neither. Public profiles only |
| Reliability | 98.89% of 64,155 runs succeeded in the last 30 days |
| Free plan | 5 runs a month, 10 items per run |
Listed on Apify as Instagram User Scraper, same actor. Apidojo uses the job name.
What are the three Instagram Profile Scraper jobs?
Instagram Profile Scraper runs 3 jobs, and which one you are running decides both the price and the fields you get back: discover accounts by keyword at $0.02 a search, look up accounts you already have at $0.01 each, or export a follower list at $0.0005 an item.
How do you find Instagram accounts by keyword?
Put search terms in keywords. Each term is one search at $0.02 with 40 profiles included, then $0.0005 per extra profile. A 1,000-profile run from one search costs $0.50.
Input
{
"keywords": ["yoga studio", "pilates", "reformer"],
"getFollowers": false,
"getFollowings": false,
"maxItems": 200
}3 searches × $0.02 + max(0, 200 − 120) × $0.0005=$0.10
What comes back
The keyword search shape, 8 fields per account, enough to identify it, not enough to qualify it.
{
"type": "user",
"isAvailable": true,
"id": "23678829",
"username": "marketing_guru",
"fullName": "Marketing Expert",
"profilePicUrl": "https://…",
"isPrivate": false,
"isVerified": true
}Split your terms, and expect thin records
No bio, no email, no counts, feed the usernames back in as handles for the full profile. And each search carries its own 40 free profiles, so "tech", "startup" and "saas" as three searches return 120 free profiles where "tech startup" as one search returns 40.
How do you pull full profiles for accounts you already have?
Use handles, startUrls or userIds. Each account costs $0.01 with no free items and returns the full profile: bio, counts, category, website, bio links and the public business email if the account publishes one.
Input
{
"handles": ["nike", "adidas", "newbalance"],
"getFollowers": false,
"getFollowings": false
}3 × $0.01 + 3 × $0.0005=$0.032
What comes back
The full profile shape, Around 30 fields in the README sample, including the ones lead generation wants.
{
"username": "techstartups",
"fullName": "Tech Startups™️",
"biography": "Daily tech news and startup insights",
"followerCount": 106950,
"followingCount": 227,
"postCount": 1401,
"isBusiness": false,
"category": null,
"website": "http://techstartups.com/",
"publicEmail": "[email protected]",
"totalReelsCount": 1,
"isVerified": false,
"isPrivate": false
}URLs need https:// and must not contain @
https://www.instagram.com/nike/ works. instagram.com/nike and …/@nike/ do not, and usernames are case-sensitive. This is the most common cause of a run that returns nothing, which is why it sits next to the field rather than in a footnote.
How do you export a follower or following list?
Set getFollowers or getFollowings to true on any input method. Each follower or following returned costs $0.0005, so 10,000 followers of one account cost $5.01 including the $0.01 profile query.
Input
{
"handles": ["nike"],
"getFollowers": true,
"getFollowings": false,
"maxItems": 10000
}$0.01 + 10,001 × $0.0005=$5.01
What comes back
The follower shape, 9 fields, including related, the profile whose list the item came from.
{
"type": "user",
"isAvailable": true,
"id": "38092762173",
"username": "john.developer",
"fullName": "John Developer",
"profilePicUrl": "https://…",
"isPrivate": true,
"isVerified": false,
"related": "https://www.instagram.com/techstartups/"
}Verified accounts return at most 50 followers
Instagram limits follower data for verified accounts to the first 50, whatever maxItems says. Non-verified accounts are unaffected. Read this before planning to export a big brand’s audience, not after, and treat maxItems as the hard spending limit it is: budget ÷ $0.0005 is the number of items you can afford.
What does each output shape contain?
Instagram Profile Scraper returns 3 output shapes. Full profiles come from handles, URLs and IDs; follower items come from getFollowers and getFollowings; keyword searches return the short identity shape.
30
Full profile
From handles · URLs · IDs
- username, fullName, id
- biography, website, bioLinks
- followerCount, followingCount
- postCount, totalReelsCount
- isBusiness, category
- publicEmail, contactPhoneNumber
- isVerified, isPrivate
9
Follower / following item
From getFollowers · getFollowings
- username, fullName, id
- profilePicUrl
- isPrivate, isVerified
- isAvailable, type
- related, whose list it is
8
Keyword search result
From keywords
- username, fullName, id
- profilePicUrl
- isPrivate, isVerified
- isAvailable, type
type | Always "user" |
|---|---|
id | Instagram user ID |
username | Handle |
fullName | Display name |
biography | Bio text |
followerCount | Followers |
followingCount | Accounts followed |
isVerified | Blue checkmark |
isPrivate | Private account |
profilePicUrl | Profile picture URL |
website | Link in bio |
publicEmail | Public business email, if available |
contactPhoneNumber | Public contact phone, if available |
postCount | Total posts |
totalReelsCount | Total reels |
bioLinks | Array of bio links with metadata |
isBusiness · category | Business profile and its category |
hasVideos | Whether the profile has video content |
followers · followings | Arrays, when the switches are on |
related | Whose follower or following list an item came from |
Reshape any of these with customMapFunction, a JavaScript function that receives one object and returns one object. Use it to rename or drop fields on the way out, never to decide which records survive.
Which rules change your results?
Six rules decide whether a run returns what you expected. Five come from Instagram itself; one is an Apify plan limit.
- 01
Verified accounts cap follower data at 50
Instagram limits follower data for verified accounts to the first 50 followers, regardless of maxItems. Non-verified accounts are not affected.
- 02
Private accounts cannot be scraped
The scraper uses no login and no cookies, so private profiles return nothing. Check the account in a logged-out window first.
- 03
Public emails exist only on business accounts
And only where that account added contact information. An empty publicEmail is expected behaviour, not a failure.
- 04
URLs need https:// and no @
https://www.instagram.com/nike/ works; instagram.com/nike and …/@nike/ do not. Usernames are case-sensitive.
- 05
Follower lists are on by default, following lists are not
getFollowers defaults to true in the input schema and getFollowings to false, so a plain profile lookup already pulls followers and bills for every one. Set both explicitly on any run where cost matters. The README’s input table says getFollowings defaults to true; the schema the form actually uses says false.
- 06
customMapFunction must not filter
It transforms each item. Using it to drop items can trigger automatic restrictions.
On the free Apify plan the ceiling is 5 runs a month and 10 items in each.
How much does a run cost?
A run costs the query fee plus $0.0005 for every item beyond the free ones. Keyword searches include 40 free profiles each; handle, URL and ID lookups include none.
| Run | Method | Calculation | Cost |
|---|---|---|---|
| 40 profiles | 1 keyword search | $0.02 | $0.02 |
| 100 profiles | 1 keyword search | $0.02 + 60 × $0.0005 | $0.05 |
| 1,000 profiles | 1 keyword search | $0.02 + 960 × $0.0005 | $0.50 |
| 10,000 profiles | 1 keyword search | $0.02 + 9,960 × $0.0005 | $5.00 |
| 1 profile + 50 followers | 1 handle | $0.01 + 51 × $0.0005 | $0.036 |
| 1 profile + 100 followers + 100 following | 1 handle | $0.01 + 201 × $0.0005 | $0.11 |
| 5 profiles + 100 followers each | 5 handles | 5 × $0.01 + 505 × $0.0005 | $0.30 |
| 10 profiles + 200 followers each | 10 handles | 10 × $0.01 + 2,010 × $0.0005 | $1.11 |
| 1 profile + 10,000 followers | 1 handle | $0.01 + 10,001 × $0.0005 | $5.01 |
Computed from the two query fees and the per-item price the Apify Store API reports, and rounded the way the estimator rounds: three decimals below ten cents, two at or above. The actor’s own "5 profiles + 100 followers each" example reads $0.305, where its formula gives $0.3025.
Who uses Instagram Profile Scraper?
Instagram Profile Scraper is used by 6 kinds of team: influencer marketers, lead generation and B2B sales, social media agencies, market researchers, growth teams and e-commerce brands. Which of the three jobs they run is what separates them.
Influencer marketing teams
Discover, then Enrich the shortlist
Find creators by niche, then vet verification, follower counts and public emails before outreach
$0.02 per search + $0.01 per shortlisted profile
Lead generation and B2B sales
Discover, follower switches off
Build prospect lists with public business emails and export them as CSV for the CRM
$0.50 per 1,000 profiles
Social media managers and agencies
Export an audience, on competitor accounts
Compare audiences between brands and find partnership and overlap opportunities
$0.01 + $0.0005 per follower
Market researchers and data analysts
Discover, across many keywords
Build structured profile datasets for demographic analysis, network analysis and ML training
$5.00 per 10,000 profiles
Growth teams and founders
Export an audience, on one niche account
Pull the audience of an adjacent account to find micro-influencers and early adopters
$5.01 per 10,000 followers
E-commerce and retail brands
Enrich, on a schedule
Track follower growth and profile changes for ambassadors and competitors over time
$0.01 per profile per run
How do you run Instagram Profile Scraper from code?
The actor is apidojo/instagram-user-scraper. Anything the web form can set, the REST API and the official Python and JavaScript clients can set too, in the same JSON.
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
# Enrich a list of known accounts, no follower lists
run = client.actor("apidojo/instagram-user-scraper").call(run_input={
"handles": ["nike", "adidas", "newbalance"],
"getFollowers": False,
"getFollowings": False,
})
for user in client.dataset(run.default_dataset_id).iterate_items():
# publicEmail is read with.get(): most accounts do not publish one
print(user["username"], user["followerCount"], user.get("publicEmail"))curl -X POST \
"https://api.apify.com/v2/acts/apidojo~instagram-user-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"handles":["nike"],"getFollowers":true,"getFollowings":false,"maxItems":1000}'Results land in an Apify dataset, ready to export as CSV or read back through the API. None of the keys above are invented: every one is in the actor’s input schema.
Instagram Profile Scraper FAQ
Can Instagram Profile Scraper export follower lists?
It exports follower and following lists when getFollowers or getFollowings is true, at $0.0005 per item. Verified accounts return at most 50 followers.
Does Instagram Profile Scraper return email addresses?
It returns publicEmail for business accounts that published a contact email. Personal accounts usually have none, and an empty value is expected rather than a failure.
How much does an Instagram keyword search cost?
One keyword search costs $0.02 and includes 40 profiles. Profiles beyond 40 cost $0.0005 each, so 1,000 profiles cost $0.50 and 10,000 cost $5.00.
Why did scraping handles cost more than a keyword search?
Handle, URL and ID lookups include no free profiles: each costs $0.01. Keyword searches include 40 free profiles per search, which makes them cheaper for bulk discovery.
Can Instagram Profile Scraper scrape private accounts?
No. It uses no login and no cookies, so only public profiles return data.
Can I scrape an Instagram account by user ID?
Yes. Put numeric IDs in userIds, at $0.01 per ID. The output is the same full profile shape that handles and URLs return.
Do follower items include bios and emails?
No. Follower and following items carry 9 identity fields, without bio, counts or email. Re-run those usernames as handles to get the full profile.
Is there a free way to test Instagram Profile Scraper?
Yes. Demo mode on the free Apify plan gives you 5 runs a month at 10 items each, with no card on file, enough to see the full profile shape before you spend anything.
Where Instagram Profile Scraper fits
Parent scraper
Instagram Scraper
Posts and reels from profile, hashtag, location, audio, profile-reels and tagged URLs, at $0.49 per 1,000 posts. That scraper returns their posts; this one returns the people.
Sibling scrapers
- InstagramInstagram Hashtag Scraper
- InstagramInstagram Comments Scraper
- InstagramInstagram Location Scraper
Guides
- How to export Instagram followers to CSVComing soon
- Finding public business emails on InstagramComing soon
- Keyword search vs handle lookup: which costs lessComing soon
Run Instagram Profile Scraper on one handle
$0.01 for the profile. Add followers only when you need them.
handles: ["nike"] · getFollowers: false
Apidojo is not affiliated with Meta Platforms, Inc.