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.

apidojo/instagram-user-scraper
Input method

Estimated run cost

$0.00

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.

Instagram Profile Scraper specificationsapidojo/instagram-user-scraper
Apify actorapidojo/instagram-user-scraper
Inputskeywords · handles · startUrls · userIds · getFollowers · getFollowings · maxItems · customMapFunction
ReturnsProfile objects, follower items, following items
EmailsPublic business emails, where the account publishes one
Login or proxyNeither. Public profiles only
Reliability98.89% of 64,155 runs succeeded in the last 30 days
Free plan5 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
Field referenceDocumented in the actor README
typeAlways "user"
idInstagram user ID
usernameHandle
fullNameDisplay name
biographyBio text
followerCountFollowers
followingCountAccounts followed
isVerifiedBlue checkmark
isPrivatePrivate account
profilePicUrlProfile picture URL
websiteLink in bio
publicEmailPublic business email, if available
contactPhoneNumberPublic contact phone, if available
postCountTotal posts
totalReelsCountTotal reels
bioLinksArray of bio links with metadata
isBusiness · categoryBusiness profile and its category
hasVideosWhether the profile has video content
followers · followingsArrays, when the switches are on
relatedWhose 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.

What a run costsQuery fee + $0.0005 × billable items
RunMethodCalculationCost
40 profiles1 keyword search$0.02$0.02
100 profiles1 keyword search$0.02 + 60 × $0.0005$0.05
1,000 profiles1 keyword search$0.02 + 960 × $0.0005$0.50
10,000 profiles1 keyword search$0.02 + 9,960 × $0.0005$5.00
1 profile + 50 followers1 handle$0.01 + 51 × $0.0005$0.036
1 profile + 100 followers + 100 following1 handle$0.01 + 201 × $0.0005$0.11
5 profiles + 100 followers each5 handles5 × $0.01 + 505 × $0.0005$0.30
10 profiles + 200 followers each10 handles10 × $0.01 + 2,010 × $0.0005$1.11
1 profile + 10,000 followers1 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

Run Instagram Profile Scraper on one handle

$0.01 for the profile. Add followers only when you need them.

handles: ["nike"] · getFollowers: false

Run this scraper free

Apidojo is not affiliated with Meta Platforms, Inc.