Instagram Profile Scraper - Bulk Bio & Stats
Pricing
from $2.50 / 1,000 profile scrapeds
Instagram Profile Scraper - Bulk Bio & Stats
Scrape Instagram profiles in bulk without login: exact follower and following counts, bio, verified and private flags, Threads handle, bio links resolved to their real destination domain, and recent-Reel engagement stats including engagement per follower. Monitor mode included.
Pricing
from $2.50 / 1,000 profile scrapeds
Rating
0.0
(0)
Developer
Scrape Sage
Maintained by CommunityActor stats
0
Bookmarked
14
Total users
5
Monthly active users
11 days ago
Last modified
Categories
Share
Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Meta Platforms, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. "Instagram" is referenced only to describe the publicly available website this Actor collects data from.
Scrape Instagram profiles in bulk without a login: exact follower and following counts, bio, external links, verified/private flags, Threads handle and the recent post mix - at one flat price per profile. Two deeper extras, bio links resolved to their real destination domain and recent-Reel engagement stats, are available as an optional add-on you switch on when you want them.
Why this one
Profile scraping is a crowded job, so this actor competes on the parts that are actually hard:
- Bulk by design. Pass 5 handles or 5,000 - no start fee, no per-run overhead, and filters applied before any paid enrichment.
- You only pay for the depth you ask for. The standard profile row is the whole product for most lists. The two enrichments below live behind one switch, off by default, so a bulk lead list is never quietly charged for research it did not want.
- Bio links resolved (add-on). A profile says
linktr.ee/somebrand. That is not useful. Switch the add-on on and the actor follows the redirect chain (including link-in-bio services) and records where it actually lands plus the final domain - which is what turns a profile into a company you can identify. - Engagement stats, computed (add-on). From the account's own Reels tab: average and median plays, average likes and comments, engagement rate against plays, and engagement per follower - the ratio influencer vetting actually runs on.
- Dead handles cost you nothing. A renamed or removed account is recognised and skipped without being billed - which matters when you are feeding in a list somebody else built.
| Standard profile | Add-on | |
|---|---|---|
| Exact follower / following count | ✅ | |
| Post count | ✅ | |
| Bio, verified, private, memorialised | ✅ | |
| Bio links + their domains | ✅ | |
| Threads handle | ✅ when linked | |
| Recent post mix (reels/videos/images/carousels) | ✅ | |
| Follower-to-following ratio | ✅ | |
| Monitor mode (only changed profiles) | ✅ | |
| Bio links resolved to final domain | ✅ | |
| Recent-Reel engagement stats | ✅ avg/median plays, eng. rate, eng. per follower | |
| Login required | ❌ never | ❌ never |
What you get per profile
Every profile: profileUrl · username · userId · fullName · biography · bioHashtags[] · bioMentions[] · followersCount · followingCount · postsCount · followerToFollowingRatio · isVerified · isPrivate · isMemorialized · isUnpublished · profilePicUrl · externalUrls[] · externalDomains[] · threadsUsername · threadsProfileUrl · accountBadges[] · pronouns[] · hasClips · hasLinkedFacebook · latestStoryAt · recentPostsSampled · recentReelsCount · recentVideosCount · recentImagesCount · recentCarouselsCount · recentPostShortCodes[] · scrapedAt
With the add-on switched on, each row also carries: resolvedUrls[] · resolvedDomains[] · recentReelsSampled · avgReelPlays · medianReelPlays · avgReelLikes · avgReelComments · avgReelEngagementRate · reelEngagementPerFollower
Input
{"usernames": ["natgeo", "nasa", "nike"],"includeProfileDetail": false,"minFollowers": 10000,"onlyVerified": false,"maxResults": 100,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
| Field | What it does |
|---|---|
usernames | Handles or profile URLs - any number |
includeProfileDetail | Off by default. Switch on for Reel engagement stats + resolved bio links |
resolveBioLinks | Part of the add-on - follow bio links to their real destination (up to 5 per profile) |
minFollowers | Skip small accounts before any paid enrichment |
onlyVerified / skipPrivate | Audience filters |
onlyChangedProfiles | Monitor mode - emit only when counts/bio/links changed |
maxResults | Cap. 0 = no limit |
Honest limits - read before you buy
- No email, phone or business category. Instagram does not expose contact fields or the business-category field to logged-out callers. Rather than ship empty columns, this actor omits them. Anyone promising no-login Instagram emails is either logged in or guessing.
- The engagement and link-resolution columns are an add-on and are OFF by default. Leave
includeProfileDetailoff and those columns are empty by design - switch it on when you want them. - Engagement stats need Reels. They come from the account's Reels tab (its most recent Reels). An account with no Reels returns nulls rather than a misleading zero - and is not charged the add-on price.
latestStoryAtis ephemeral - it is set only while a 24-hour Story is live, so it legitimately differs between runs.threadsUsername,pronouns,accountBadgesare per-account settings - present-but-empty for accounts that have not set them.- Private accounts return the limited public record; use
skipPrivateto drop them. - RESIDENTIAL proxy is the tested default. Instagram rate-limits datacenter ranges hard.
Pricing (pay per event, no start fee)
| Event | Price | What it covers |
|---|---|---|
profile | $0.0025 | One profile: exact follower/following counts, bio, external links, flags, Threads handle, recent post mix |
profileDetail | $0.01 | The optional add-on - Reel engagement stats (avg/median plays, avg likes/comments, engagement rate, engagement per follower) and bio links resolved to their real destination |
Three things keep the bill honest:
- the add-on is off unless you switch it on, so a plain bulk list only ever pays the
profileprice; - when it is on, it is charged only for accounts that actually return reels or resolved links - an account with neither stays at the plain profile price;
- profiles are billed before they are written, profiles removed by your filters are never billed, and handles that no longer exist on Instagram are skipped free of charge.
Use with AI assistants (MCP)
Works as an LLM tool via the Apify MCP server - ask an assistant to "vet these 20 creators by engagement per follower" and it can call this actor directly.
Agent-ready: autonomous payments (x402 & Skyfire)
This actor is agent-ready — AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:
- x402 — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server — no account, no API key.
- Skyfire — agent-to-service payments for fully autonomous AI-agent workflows.
Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.
Integrations
Make, Zapier, Slack, Google Drive, Airbyte, GitHub, the Apify API, Schedules and Webhooks.
Monitor mode
onlyChangedProfiles: true fingerprints follower/following/post counts, bio and links per handle and emits a row only when one of them changes - a clean growth-tracking feed for a creator roster on Apify Schedules.
Automate & schedule
Run this Actor on autopilot and pull results into your own stack:
- Apify API - start runs, fetch datasets and manage schedules over REST.
- apify-client for JavaScript and apify-client for Python - official SDKs.
- Schedules - run it hourly, daily or weekly and keep your dataset current.
- Webhooks - trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });const run = await client.actor('scrapesage/instagram-profile-scraper').call({"usernames": ["natgeo","nasa","nike"],"includeProfileDetail": true,"maxResults": 10,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Got ${items.length} records`);
FAQ
Do I need a login or cookies? No.
Can I get emails or phone numbers? Not from Instagram logged-out - see the limits section. This actor will not fake it.
Why is postsCount sometimes from a different source? Instagram often returns all_media_count as null on large accounts, so the count is parsed from the profile's own meta description as a fallback. Same number, more coverage.
What is engagement per follower? Average (likes + comments) on recent Reels divided by follower count - the standard ratio for spotting a bought audience. It arrives with the add-on.
Why are the engagement and resolved-link columns empty? They are the profileDetail add-on and it is off by default, so a standard run leaves them empty. Switch on Add-on: activity stats and link resolution and re-run.
What happens to handles that no longer exist? Instagram answers a removed or renamed handle with a normal-looking page rather than a "not found", so the actor checks the page contents, skips it, and does not bill you for it. The run's status message tells you how many were skipped.
Related scrapers by scrapesage
- Instagram Reels Scraper - play counts and full Reel analytics
- Instagram Hashtag Scraper - filtered hashtag and keyword post search
- Instagram Comments Scraper - comment likes and commenter profiles
- Threads Scraper - the Threads side of the same creator graph
Data & lawful use
This Actor reads only what Instagram publishes to logged-out visitors: it does not log in, use cookies or session tokens, create accounts, or reach anything behind a sign-in. Names, handles, bios and engagement figures are public, but they relate to identifiable people, so treat the output as personal data. If you are in the EU or UK you are the data controller for what you do with it: have a lawful basis (usually legitimate interest for research, marketing analytics or B2B prospecting), honour access and deletion requests, and do not use the output for spam or unsolicited messaging.
Under Apify's Standard Actor Contract, which governs your use of this Actor, you are the controller of any personal data in your input and output and scrapesage acts only as your processor: that data is processed solely to run your job, written only to your own Apify storage, never used for any other purpose and never shared onward. If you need help with a data-subject request that involves this Actor's output, open an issue on the Issues tab.
Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Meta Platforms, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.
"Instagram" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense - to identify the publicly accessible website from which this Actor collects data. This Actor is not an official Instagram product, is not authorised or certified by Meta Platforms, Inc., and does not distribute Instagram software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.
Need help?
Open an issue on the Actor's Issues tab, or visit the Apify help center. Feature requests are welcome - this Actor is actively maintained.