Instagram Profile Scraper - Followers, Bio & Engagement avatar

Instagram Profile Scraper - Followers, Bio & Engagement

Pricing

from $0.95 / 1,000 profile scrapeds

Go to Apify Store
Instagram Profile Scraper - Followers, Bio & Engagement

Instagram Profile Scraper - Followers, Bio & Engagement

Scrape public Instagram profiles in bulk by username, URL or user id: followers, following and posts count, bio and bio links, category, business flags, related profiles, emails and phones in the bio. Optional latest posts with engagement rate. Monitor mode tracks follower and post deltas. No login.

Pricing

from $0.95 / 1,000 profile scrapeds

Rating

0.0

(0)

Developer

Top Api

Top Api

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

0

Monthly active users

4 days ago

Last modified

Share

What does Instagram Profile Scraper do?

Instagram Profile Scraper looks up public Instagram profiles in bulk and returns one structured row per account: exact follower, following and post counts, full name, bio, every link in bio with its label, category, business or creator status, verified and private flags, related accounts, and the emails and phone numbers an account writes in its bio. Built for influencer marketers, agencies, lead-generation teams and analysts who need Instagram account data for a list of handles without a login, cookies or an API key.

Instagram Profile API - Instagram Followers Count Scraper - Instagram Bio Scraper - Instagram Account Lookup

Instagram profile header that Instagram Profile Scraper turns into one row

  • Bulk lookup: paste usernames, @handles, profile URLs or numeric user ids, mixed; duplicates are read once and every row says which input line it answers.
  • Exact counts: followersCount, followsCount and postsCount as plain numbers, not "104M", plus IGTV and highlight counts.
  • Who the account is: business, creator or personal (accountType), category, verified badge, private flag, related accounts Instagram suggests next to it.
  • Contact signals: website and every bio link with its label, emails and phone numbers written in the bio or in WhatsApp / tel: / mailto: links, business address when published.
  • One better: optional latest posts with engagementRate, average likes, comments and video views and postsPerWeek; a tracking mode that adds follower, following and post deltas since the last run.
  • Filters before delivery: follower range, account type, verified only, public only, must have a website / email / phone, bio keywords, posted within N days.
  • No login, cookies or Instagram API key: the actor reads only what Instagram serves a signed-out visitor.
  • Export anywhere: JSON, CSV, Excel, XML; schedules, webhooks, Make, Zapier, n8n, Google Sheets, Slack, the Apify API and MCP.

What data can you get from Instagram profiles?

πŸ†” User id, username, profile URLπŸ‘€ Full name and bioπŸ‘₯ Followers (`followersCount`)
➑️ Following (`followsCount`)πŸ–ΌοΈ Posts count (`postsCount`)🎬 IGTV and highlight counts
πŸ”— Link in bio + every bio link with its label (`externalUrls`)πŸ“§ Emails in the bio (`emails`)πŸ“ž Phones in the bio or WhatsApp link (`phones`)
🏒 Business / creator / personal (`accountType`)🏷️ Category and category codeπŸ“ Business address, contact method
βœ… Verified, πŸ”’ private flagsπŸ§‘β€πŸ€β€πŸ§‘ Related accounts (`relatedProfiles`)πŸ“· Profile picture, standard and HD
πŸ“… Date of the newest post (`lastPostAt`)πŸ“ˆ Add-on: latest posts + engagement rateπŸ” Tracking: follower and post deltas, what changed

On the first live run (20 input lines: brands, restaurants, creators, a private account, a handle that does not exist and a numeric id) all 18 delivered profiles had followers, following and posts counts, 94% a bio, 83% a website, 83% a category, 56% related accounts, 22% an email in the bio and 6% a phone; the not-found handle came back as a free status row and the numeric id was recognised as a duplicate of a username already in the list.

How to scrape Instagram profiles with Instagram Profile Scraper

  1. Create a free Apify account - $5 of monthly credit, no card needed.
  2. Open Instagram Profile Scraper and click Try for free.
  3. Paste your handles into Profiles (one per line) or upload a file under Profile URLs from a file, and set Max profiles.
  4. Optionally set filters, turn on Latest posts + engagement rate, or turn on Track changes between runs for a watchlist.
  5. Click Start. Rows stream into the dataset; the 20-line test list finished in 33 seconds.
  6. Open the Storage tab and Export as JSON, CSV or Excel, or let a schedule run it for you.

⬇️ Instagram Profile Scraper input

ParameterTypeDescription
πŸ” What to scrape
usernamesListRequired (or startUrls). Usernames, @handles, profile URLs or user ids, e.g. nasa, @natgeo, https://www.instagram.com/nike/, 528817151. With nothing given, the actor runs the sample profile nasa.
startUrlsFile / URL listProfile URLs from an uploaded file or a remote list, merged with usernames.
βœ‚οΈ Refine results
minFollowers / maxFollowersIntegerFollower range, e.g. 10,000-100,000 for micro-influencers. Default: no limit.
accountTypeSelectAny, professional (business or creator), business, creator or personal. Default: any.
verifiedOnlyBooleanOnly accounts with the verified badge. Default: false
excludePrivateBooleanLeave out private accounts. Default: false
requireContactSelectMust have a website, an email, a phone, an email or phone, or any of the three. Default: no requirement.
bioKeywordsTextKeep accounts whose bio, name, category or bio links contain one of these words, e.g. bakery, cafe.
activeWithinDaysIntegerKeep accounts whose newest post is at most N days old. Default: 0 (off).
βž• Extra data
includeLatestPostsBooleanAdds up to 12 latest posts plus engagement metrics, charged as latest-posts per profile that gets posts. Default: false
πŸ” Monitoring
monitorModeBooleanAdds changeType, followersDelta, followsDelta, postsDelta, followersGrowthPct and changedFields against the last run. Pair with a daily schedule.
monitorStoreNameTextNamed key-value store holding the snapshots. Default: instagram-profiles-monitor
monitorOnlyChangesBooleanWith tracking on, deliver only new or changed profiles. Default: false
πŸ“¦ Output
maxResultsIntegerCap on delivered profiles; 0 = the whole list. Default: 0 (the form suggests 100).
includeUnavailableBooleanAdd a free status row for each input that returned no profile (not found, unreadable, invalid).
compactBooleanCore fields only, sized for AI agents and MCP clients.
βš™οΈ Advanced
proxyConfigurationProxyDefault: Apify proxy (datacenter first, residential only as a fallback).
maxConcurrencyIntegerProfiles read at once, 1-10. Default: 4

Input JSON

{
"usernames": ["nasa", "@natgeo", "https://www.instagram.com/nike/", "528817151"],
"minFollowers": 10000,
"accountType": "professional",
"includeLatestPosts": true,
"maxResults": 100
}

Paste usernames, profile URLs or user ids in the same list

Every form of a handle is read once. Do: nasa, @nasa, https://www.instagram.com/nasa/, instagram.com/nasa/reels/. Don't: a post or reel link such as https://www.instagram.com/p/DNQuxufAih9/ - it is not a profile, so it is skipped and named in the log (and as a status row with includeUnavailable).

Use the filters to keep only the profiles you can work with

Filters run on each profile after it is read and before it is written: a list of 1,000 handles with minFollowers: 10000 and requireContact: "email" returns only the accounts that pass. The run summary (RUN_SUMMARY in the key-value store) counts how many each filter removed.

Turn on tracking for a daily watchlist

With monitorMode on, the first run stores a snapshot of every profile and marks it NEW; each later run of the same list adds the change since then (followersDelta, postsDelta, changedFields such as biography, links, verified). Give each watchlist its own monitorStoreName. Add monitorOnlyChanges when you only want the accounts that moved: new posts, an edited bio or links, a new category, or followers up or down by 1% or more since the profile was last delivered.

⬆️ Instagram Profile Scraper output

Every profile becomes one dataset item. Here is the table view of the first live run (latest-posts add-on on):

Instagram Profile Scraper output: followers, posts, category, website and engagement per profile

And one row as JSON (shortened; relatedProfiles, externalUrls and latestPosts are arrays of objects):

{
"id": "528817151",
"username": "nasa",
"fullName": "NASA",
"biography": "Making the seemingly impossible, possible. ✨",
"externalUrl": "https://www.nasa.gov/",
"followersCount": 104294180,
"followsCount": 90,
"postsCount": 4945,
"igtvVideoCount": 171,
"highlightReelCount": 6,
"verified": true,
"private": false,
"accountType": "business",
"businessCategoryName": "Government Agencies",
"categoryEnum": "GOVERNMENT_ORGANIZATION",
"businessContactMethod": "CALL",
"relatedProfiles": [{ "username": "sciencechannel", "full_name": "Science Channel", "is_verified": true }],
"lastPostAt": "2026-10-04T16:09:22.000Z",
"engagementRate": 0.192,
"avgLikes": 198829,
"avgComments": 1006,
"postsPerWeek": 11.26,
"status": "ok"
}

Instagram profile fields

Fill measured on the 18 profiles of the first live run.

FieldTypeWhat it isFill
id, username, url, fullNamestringWho the account is100%, name 94%
followersCount, followsCount, postsCountnumberExact counts100%
biographystringBio text94%
externalUrl, externalUrlsstring, arrayLink in bio and every bio link with its label83%
businessCategoryNamestringCategory shown under the name83%
accountType, isBusinessAccount, isProfessionalAccountstring, booleanbusiness / creator / personal100%
verified, privatebooleanBadges100%
highlightReelCountnumberStory highlights94%
igtvVideoCount, categoryEnum, businessContactMethodnumber, stringFrom Instagram's app answer (see Limits)67%, 44%, 44%
relatedProfilesarrayAccounts Instagram suggests next to this one56%
emails, phonesarrayWritten in the bio or bio links22%, 6%
businessAddressobjectStreet, city, zip, coordinates when published11%
profilePicUrl, profilePicUrlHD, fbidstringAvatar and Meta account id100%
lastPostAtISO dateNewest visible post94%
latestPosts, engagementRate, avgLikes, avgComments, postsPerWeekadd-onLatest posts and engagement94%
changeType, followersDelta, postsDelta, changedFieldstrackingChange since the last runevery row in tracking mode
status, source, inputUrl, scrapedAtstringok / private; which Instagram surface served it; the input line100%

How can I use Instagram profile data?

  • 🎯 Influencer marketers - size a creator list by followers, engagement rate and posting frequency before outreach.
  • πŸ“‡ Lead-generation teams - turn a list of business handles into rows with website, category, address and any email or phone they publish.
  • 🏷️ Agencies - check a client's competitors weekly: follower growth, new posts, bio and link changes.
  • πŸ§‘β€πŸ€β€πŸ§‘ Researchers - expand a seed list through relatedProfiles and classify accounts by type and category.
  • πŸ€– AI and data teams - feed compact rows to an LLM or a warehouse; counts are numbers, never "1.2M".
  • πŸ“ˆ Brand monitoring - schedule tracking mode daily and alert on accounts whose changedFields is not empty.

How much does it cost to scrape Instagram profiles?

Instagram Profile Scraper is pay-per-result: $0.95 per 1,000 profiles, no start fee. One result is one profile written to the dataset. The optional latest posts + engagement block is $1.00 per 1,000 profiles that get it.

ProfilesProfiles onlyWith latest posts + engagement
10$0.0095$0.0195
100$0.095$0.195
1,000$0.95$1.95
10,000$9.50$19.50

Status rows for unavailable profiles (includeUnavailable) are free. Apify platform usage is included in these prices. The actor runs on 256 MB with no browser: 18 profiles took 33 seconds and peaked at 59 MB; 100 profiles took 157 seconds.

Integrations, API, scheduling & MCP

  • Schedules: run the same list hourly, daily or weekly from the Schedules tab; with monitorMode each run carries the change since the previous one.
  • Webhooks: call a URL when a run finishes and push the rows to your CRM, Slack or a sheet.
  • No-code: Make, Zapier, n8n, Google Sheets, Airtable and Slack through Apify integrations.
  • API: start runs and read datasets from Node.js or Python with apify-client; code is on the API tab.
  • MCP / AI agents: connect Claude, Cursor or any MCP client through the MCP tab and ask for profiles in plain language; compact keeps rows small.

More TopApi scrapers

πŸ“Έ Instagram Scraper - posts, reels and carousels by profile, hashtag or URL𝕏 X Profile Scraper - X (Twitter) accounts with followers and bio🎡 TikTok Scraper - videos by profile, hashtag or URL
🎬 TikTok Video Scraper - single TikTok videos by URL▢️ YouTube Shorts Scraper - Shorts with views and channel dataπŸ”Ž Facebook Search Posts Scraper - public posts by keyword
⭐ Google Maps Reviews Scraper - reviews with owner repliesπŸ“Š Similarweb Scraper - website traffic and rank🧭 All TopApi actors - social, reviews and lead-gen scrapers built for scheduled runs

Instagram profile limits & empty runs

  • Results per run: no Instagram-side cap on how many profiles one run looks up; maxResults caps what you pay for. About one profile per second at the default 4 at a time.
  • Two Instagram surfaces: most profiles come from the answer Instagram's own apps use (source: "mobile"). For some business accounts Instagram returns an error on that surface, and those are read from the web profile and its embed page instead (source: "web"): same counts, bio, links, category and related accounts, but no IGTV count, category code or contact method, and the add-on carries the 6 latest posts instead of 12. On the first live run 6 of 18 profiles came from the web surface; on a 40-account list of small food brands and restaurants it was 29 of 40.
  • Business email and phone: Instagram withholds the business contact block from signed-out visitors (null on every one of 44 profiles checked), so emails and phones come from what the account writes in its bio and bio links.
  • Private accounts: the public header only (counts, name, bio), status: "private", no posts.
  • Empty dataset: every handle was not found, invalid, filtered out, or (with monitorOnlyChanges) unchanged - the status message and RUN_SUMMARY say which.

FAQ

How much does Instagram Profile Scraper cost?

$0.95 per 1,000 profiles delivered, plus $1.00 per 1,000 for the optional latest posts + engagement block. No start fee, and status rows for unavailable handles are free.

How many Instagram profiles can Instagram Profile Scraper look up in one run?

As many as you paste; the 100-profile test took 157 seconds at the default settings. Raise Parallel profiles to 6-8 for lists of thousands, and split very large lists into several runs if you want results sooner.

Can I track Instagram follower growth with Instagram Profile Scraper?

Yes. Turn on Track changes between runs, save the input as a task and schedule it daily. Each row then carries followersDelta, followsDelta, postsDelta, followersGrowthPct and changedFields against the previous run of the same list.

Does Instagram Profile Scraper return the posts count?

Yes, postsCount is an exact number for every public profile, on both Instagram surfaces the actor reads. The latest posts themselves are the optional add-on.

Can I get emails and phone numbers from Instagram profiles?

The actor returns emails and phone numbers that an account writes in its bio or puts in WhatsApp, tel: or mailto: bio links. Instagram does not show the business contact button's email or phone to signed-out visitors, so those are not available.

Do I need an Instagram account, cookies or an API key?

No. Instagram Profile Scraper reads only what Instagram serves a signed-out visitor; you pass usernames, URLs or ids and nothing else.

Can I use Instagram Profile Scraper with the Apify API?

Yes. Start runs, fetch datasets and manage schedules with apify-client for Node.js or Python; the API tab has ready-to-paste code.

Can I use Instagram Profile Scraper through an MCP server?

Yes. Open the MCP tab, connect your MCP client (Claude Desktop, Cursor, LibreChat) and ask for profiles in plain language; turn on compact to keep rows small.

Can I integrate Instagram Profile Scraper with other apps?

Yes - Make, Zapier, n8n, Google Sheets, Slack and more through Apify integrations, or webhooks that fire when a run finishes.

Why did my Instagram Profile Scraper run return no results?

In testing the causes were: handles that do not exist (turn on includeUnavailable to see them as rows), post links pasted instead of profile links, filters that removed everything (the status message lists how many each filter removed), and tracking runs where nothing changed with monitorOnlyChanges on.

Instagram Profile Scraper extracts only publicly available profile data; it does not log in or collect private data. Results can still contain personal data, which is protected by regulations such as the GDPR, so make sure you have a legitimate reason to process it.

Your feedback

Found a bug or missing a field? Open an issue on the Issues tab and we will look at it.