Instagram Followers Scraper With Bio Contact Enrichment
Pricing
$19.99/month + usage
Instagram Followers Scraper With Bio Contact Enrichment
Instagram Followers Scraper is an Apify actor that extracts public follower data from Instagram profiles. Collect usernames, profile links, bios, and engagement details in structured formats like JSON or CSV. Ideal for lead generation, influencer research, and audience analysis.
Pricing
$19.99/month + usage
Rating
0.0
(0)
Developer
Scraper Engine
Maintained by CommunityActor stats
1
Bookmarked
48
Total users
3
Monthly active users
4 days ago
Last modified
Categories
Share
Instagram Followers Scraper — Bio, Email and Phone Data
Instagram Followers Scraper With Bio Contact Enrichment pulls every public follower of an Instagram account and, on request, enriches each one's own profile with biography, business_category_name, external_url, and public public_email / public_phone_number. Results export as structured JSON — no HTML parsing needed. Add hasEmail, businessOnly, or minFollowers filters to narrow the list to qualified leads in the same run. Start a run to see it on a real profile.
What is Instagram Followers Scraper With Bio Contact Enrichment?
It's an Actor that scrapes the public followers list of one or more Instagram profiles, then optionally fetches each follower's own profile data — bio, business category, external link, follower/following/media counts, and public contact fields — through Instagram's web_profile_info surface. Output is typed JSON, one row per follower, with enrichment fields present but null until fetched. No Instagram account is strictly required to run it, but providing a sessionId cookie is recommended for higher success rates. It's built for growth marketers, lead-gen and B2B outreach teams, and developers building audience-qualification tooling.
What Instagram follower contact data is publicly available to scrape?
Anyone can see a public account's followers, usernames, and verified badges without logging in. Contact fields exist only when a follower's own account is Business/Creator and published them.
| Data Category | Publicly Available | Restricted |
|---|---|---|
| Username, avatar, verified badge | Yes | — |
| Bio, business category, external link | Yes, if public | Private accounts — login |
| Public email / phone | Yes, if published (Business/Creator) | Personal accounts have none; private — login |
| Own follower/following/media counts | Yes, if public | Private accounts — login |
| Full followers list past page one | Yes, via pagination | No-sessionId runs rate-limit sooner |
| Stories, DMs, non-public content | No | Always restricted |
This Actor only returns publicly visible data — nothing behind a login wall is bypassed.
What data can I extract with Instagram Followers Scraper With Bio Contact Enrichment?
Every dataset row combines the follower's base identity/status fields with the opt-in bio-and-contact enrichment fields below.
| Field Name | Description |
|---|---|
pk | Follower's numeric Instagram user ID (string) |
id | Follower's Instagram ID (same as pk unless Instagram returns a distinct value) |
pk_id | Duplicate/legacy form of the numeric ID |
strong_id__ | Instagram's internal strong-identifier field |
fbid_v2 | Linked Facebook ID, if any |
username | Follower's Instagram handle |
full_name | Follower's public display name |
profile_pic_id | Internal ID of the profile picture asset |
profile_pic_url | Direct URL to the follower's avatar image |
profileUrl | Canonical instagram.com/{username}/ link |
followed_by | Username of the seed profile this follower belongs to |
sourceType | follower (real followers endpoint) or comment_fallback (padded from post commenters when the followers list runs dry before maxData) |
scrapedAt | ISO-8601 UTC timestamp of when the row was collected |
is_verified | Blue-check verification flag |
is_private | Whether the follower's account is private |
has_anonymous_profile_picture | Whether the follower never set a custom avatar |
account_badges | Array of Instagram account badges |
latest_reel_media | Latest reel media indicator from the followers endpoint |
is_favorite | Instagram's internal "favorite" flag |
third_party_downloads_enabled | Whether the follower allows third-party media downloads |
success | Whether this row was collected successfully |
biography (enrichment) | Follower's public bio text |
external_url (enrichment) | Link in the follower's bio |
follower_count (enrichment) | The follower's own follower count |
following_count (enrichment) | The follower's own following count |
media_count (enrichment) | The follower's own post count |
is_business_account (enrichment) | Whether the follower's account is a business/professional account |
business_category_name (enrichment) | Business category label, if set |
public_email (enrichment) | Public business email, if published |
public_phone_number (enrichment) | Public business phone number, if published |
profile_enriched | Whether this row actually received the enrichment fetch |
Identity & profile fields
pk, id, pk_id, strong_id__, fbid_v2, username, full_name, profile_pic_id, profile_pic_url, profileUrl, followed_by, sourceType, scrapedAt — everything that identifies the follower and where the row came from.
Status flags & counts
is_verified, is_private, has_anonymous_profile_picture, account_badges, latest_reel_media, is_favorite, third_party_downloads_enabled, success — booleans and flags from the base followers endpoint.
Bio & contact enrichment
biography, external_url, follower_count, following_count, media_count, is_business_account, business_category_name, public_email, public_phone_number, profile_enriched — only populated when enrichProfiles is on or an enrichment-dependent filter pulled that row's data; otherwise null/false, never guessed.
🤖 Add-on: Need additional Instagram data?
If you want to track how a profile's audience changes over time instead of enriching it, pair this with Instagram Followers — New Followers & Unfollows Checker, which diffs followers/following across re-runs. To score the quality of a profile's own audience (engagement rate, posting cadence), use Instagram Followers Count Scraper With Engagement Quality Score. For leads sourced from post comments rather than follower lists, try Instagram Comments Scraper With Lead Enrichment.
How does Instagram Followers Scraper With Bio Contact Enrichment differ from the official Instagram API?
Meta's Instagram Graph API is scoped to Business/Creator accounts you manage yourself, not to reading arbitrary accounts' followers — it "cannot access Instagram consumer accounts" and has no endpoint for another account's followers list or a follower's bio/contact data (Meta for Developers, Instagram Platform docs).
| Feature | Instagram Graph API | Instagram Followers Scraper With Bio Contact Enrichment |
|---|---|---|
| Account type required | Business/Creator accounts only | Any public Instagram profile |
| Approval process | Meta App Review required for Advanced Access (accessing accounts you don't own) | None — run directly from the input form |
| Followers list access | No endpoint to list another account's followers | Returns the public followers list for any profile you target |
| Follower bio/contact lookup | Not exposed for other users | Per-follower enrichment adds bio, business category, email/phone |
| Setup | OAuth app, linked Facebook Page, review process | Paste profile URLs/usernames and run |
| Scope | Your own managed professional account only | Any public account you point the Actor at |
Use the Graph API when you manage the Instagram account and need native insights/publishing access. Use this Actor when you need the public follower list and per-follower bio/contact data of an account you don't manage.
How to use Instagram Followers Scraper With Bio Contact Enrichment
This Actor runs on the Apify platform — no separate signup or API keys beyond your Apify account.
- Open Instagram Followers Scraper With Bio Contact Enrichment on Apify and start a new run.
- Add one or more profile URLs or usernames to
startUrls(required) — e.g.https://www.instagram.com/nike/. - Set
maxDatafor followers per profile, and paste asessionIdcookie for better reliability. - Turn on
enrichProfiles(and setenrichTopN/enrichConcurrency) if you want bio/contact fields, or sethasEmail/businessOnly/minFollowersfilters directly — these auto-enable enrichment for the rows they need. - Run the Actor and download results as JSON or CSV, or stream them from the dataset.
How to scale to bulk Instagram follower contact extraction
startUrls accepts an array, so one run can process many seed profiles — each gets its own maxData and enrichTopN budget. For volumes beyond a single run's practical size, split your profile list across multiple runs (via the Apify API or scheduled runs) rather than raising maxData indefinitely, since enrichment cost scales with the number of followers enriched.
What can you do with Instagram follower contact data?
- A lead-gen specialist building an outreach list sets
businessOnlyandhasEmailto keep only followers whosepublic_emailandbusiness_category_nameshow they're a relevant business before adding them to a CRM. - A B2B sales rep prospecting a niche audience uses
business_category_nameandpublic_phone_numberto shortlist followers worth a cold call. - An audience researcher profiling a competitor's followers uses
is_verifiedandfollower_countto separate real influencers from low-follower accounts. - A marketer vetting influencer audiences uses
media_countandfollowing_countalongsideis_business_accountto flag likely bot or low-activity followers. - An AI engineer builds a lead-scoring agent that reads
biographyandbusiness_category_nameas context and ranks each follower row for outreach priority — the typed JSON output drops straight into a RAG index or agent tool without extra parsing.
How does Instagram Followers Scraper With Bio Contact Enrichment handle rate limits and blocking?
The Actor escalates proxies automatically: it starts with no proxy, and on a 403/429 response falls back first to a datacenter proxy, then to a residential proxy, sticking with residential once it's needed. A shared asyncio.Semaphore, sized by enrichConcurrency (1-10), caps how many enrichment requests run at once across the whole run so bio/contact fetches don't spike request volume. Base pagination requests retry with exponential backoff on HTTP 429 (up to 3 attempts). Enrichment fetches use Chrome-TLS-impersonating requests (via impit) rather than plain HTTP, matching how a real browser talks to Instagram's web_profile_info endpoint. If a profile can't be accessed at all (invalid, checkpointed session, or blocked), the Actor logs the error and moves to the next profile in startUrls rather than failing the whole run; a sessionId cookie meaningfully improves success rates over an anonymous session.
⬇️ Input
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
startUrls | Yes | array | List of Instagram profile URLs or usernames to scrape followers from. Multiple profiles supported per run. | ["https://www.instagram.com/cristiano/"] |
maxData | No | integer | Maximum followers to collect per profile, after filters are applied. Range 1-100,000. | 100 |
sessionId | No | string | Instagram sessionid cookie value. Optional but strongly recommended for better success rates. | 80339464000%3AMwlU... |
enrichProfiles | No | boolean | When on, fetches each collected follower's own bio/business/contact fields, up to enrichTopN per profile. | false |
enrichTopN | No | integer | Caps how many followers per seed profile get the extra enrichment fetch. Range 0-5000. | 25 |
enrichConcurrency | No | integer | Maximum concurrent enrichment requests across the whole run. Range 1-10. | 3 |
hasEmail | No | boolean | Keep only followers whose enriched profile has a public business email. | false |
hasPhone | No | boolean | Keep only followers whose enriched profile has a public business phone number. | false |
businessOnly | No | boolean | Keep only followers whose enriched profile is a business/professional account. | false |
verifiedOnly | No | boolean | Keep only verified (blue-check) followers. Doesn't require enrichment. | false |
minFollowers | No | integer | Keep only followers whose own follower_count (from enrichment) is at least this number. | 100 |
maxFollowers | No | integer | Keep only followers whose own follower_count (from enrichment) is at most this number. | 50000 |
proxyConfiguration | No | object | Proxy settings. Smart fallback escalates no proxy → datacenter → residential on 403/429. | {"useApifyProxy": false} |
Example input
{"startUrls": [{ "url": "https://www.instagram.com/cristiano/" }],"maxData": 200,"sessionId": "80339464000%3AMwlUEdZkdshtFG%3A5%3AAYiJEi32U_OOJkvXyc232wBhDZz1Q4zQOFhTFSTy3g","enrichProfiles": true,"enrichTopN": 50,"enrichConcurrency": 3,"hasEmail": false,"hasPhone": false,"businessOnly": true,"verifiedOnly": false,"minFollowers": 100,"maxFollowers": null,"proxyConfiguration": {"useApifyProxy": false}}
⬆️ Output
Every run pushes typed, normalized JSON rows to the dataset with a consistent field set across runs — download as JSON, CSV, Excel, or any format the Apify dataset export supports. Enrichment fields are present on every row but stay null/false when a row wasn't enriched.
Example output
[{"pk": "73320179592","id": "73320179592","pk_id": "73320179592","strong_id__": "73320179592","fbid_v2": "","username": "davabukandaffa5","full_name": "arizki","profile_pic_id": "","profile_pic_url": "https://instagram.fjsr11-1.fna.fbcdn.net/v/t51.2885-19/...","profileUrl": "https://www.instagram.com/davabukandaffa5/","followed_by": "cristiano","sourceType": "follower","scrapedAt": "2026-07-25T09:00:00Z","is_verified": false,"is_private": false,"has_anonymous_profile_picture": false,"account_badges": [],"latest_reel_media": 0,"is_favorite": false,"third_party_downloads_enabled": 0,"success": true,"biography": "Coffee roaster | Jakarta","external_url": "https://linktr.ee/davabukandaffa5","follower_count": 842,"following_count": 391,"media_count": 76,"is_business_account": true,"business_category_name": "Coffee Shop","public_email": "hello@davabukandaffa5.com","public_phone_number": null,"profile_enriched": true}]
How does it work?
The Actor calls Instagram's own private web API endpoints — the same ones the Instagram website itself uses to paginate a profile's followers — carrying your sessionId as a cookie when provided. If the followers endpoint's pagination runs dry before maxData is reached, it falls back to scanning commenters on the profile's own posts, tagging those rows comment_fallback so they're never confused with real followers. When enrichment is on, it fetches each follower's own profile through Instagram's web_profile_info endpoint using a Chrome-TLS-impersonating client, so the request looks like a real browser rather than a bot. Proxy tier escalates automatically if Instagram pushes back. Only data any visitor of a public profile could see is returned, and the output field set stays the same run to run regardless of changes to Instagram's own web UI.
Integrations
Instagram Followers Scraper With Bio Contact Enrichment works with the tools you already use to move data around — call it directly over HTTP, or wire it into a no-code workflow.
Calling Instagram Followers Scraper With Bio Contact Enrichment programmatically
from apify_client import ApifyClientclient = ApifyClient("<APIFY_API_TOKEN>")run = client.actor("Scraper-Engine/instagram-followers-scraper-with-bio-contact-enrichment").call(run_input={"startUrls": ["https://www.instagram.com/nike/"],"maxData": 200,"enrichProfiles": True,"hasEmail": True,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
Works in Go, Ruby, Node.js, cURL — any language that can make an HTTP request.
MCP integration for AI agents
Instagram Followers Scraper With Bio Contact Enrichment is callable through Apify's MCP Server, which exposes Apify Actors as tools for MCP-compatible clients. Add this Actor's ID to the actors list when configuring Apify's MCP Server, then call it from Claude, or any other MCP client, the same way you'd call a local tool — no separate integration code required.
No-code tools (n8n, Make, LangChain)
In n8n, use the Apify node (or an HTTP Request node against the Actor's run endpoint) to trigger a run and pull dataset items into your workflow. In Make, use Apify's native app module to start a run and fetch the resulting dataset. In LangChain, use the Apify integration to call this Actor by ID and load its dataset items directly as Documents for a chain or agent.
Is it legal to scrape Instagram follower contact data?
Scraping publicly visible data is generally legal; this Actor only returns data any visitor of a public profile (or a public business/creator profile's published contact fields) can already see — it does not bypass logins or access private accounts. Follower bio, email, and phone fields are personal data, so GDPR (if you or your data subjects are in the EU/UK) and CCPA (if they're in California) govern how you may store, process, and retain them — you need a lawful basis for collection and must honor deletion/access requests. Consult legal counsel if your use case involves bulk storage of personal data, especially contact details intended for outreach.
Frequently asked questions
What Instagram follower fields does Instagram Followers Scraper With Bio Contact Enrichment return?
The top fields are username, full_name, is_verified, and, when enrichment is on, biography, public_email, and public_phone_number. See the data fields section above for the full 31-field row.
Does it require an Instagram account or login?
No account is required to run it, but a sessionId cookie is optional and recommended — without one, Instagram may limit access and success rates for both the base follower list and per-follower enrichment.
How many followers can I extract in one run?
Up to maxData per profile (1-100,000), across as many profiles as you add to startUrls in one run.
What happens if a profile is private or doesn't exist?
The Actor logs an error for that profile (profile not found or inaccessible) and returns zero followers for it, then continues to the next profile in startUrls — a failed profile never stops the whole run.
Can I scrape multiple Instagram profiles at once?
Yes — add multiple entries to startUrls; maxData and enrichTopN both apply per profile, not across the whole run.
Does Instagram Followers Scraper With Bio Contact Enrichment work with Claude, ChatGPT, and other AI agent tools?
Yes. It's reachable through Apify's MCP Server for MCP-compatible clients like Claude, and callable as a plain HTTP endpoint by any agent framework that can start an Apify Actor run.
How does Instagram Followers Scraper With Bio Contact Enrichment compare to other Instagram followers scrapers?
Most Instagram follower scrapers stop at the base list — username, avatar, verified/private flags. This Actor adds an opt-in per-follower enrichment step (bio, business category, external link, public email/phone) and lead-gen filters (hasEmail, businessOnly, minFollowers) that run in the same job, rather than requiring a separate profile-scraping pass per follower.
Does it return data in a format LLMs can use directly?
Yes. Typed, normalized JSON with consistent field names across runs — pass it directly to an LLM, index it in a vector store, or feed it to an agent tool without HTML parsing or selectors.
What happens when Instagram changes its layout or anti-bot system?
The Actor is maintained and the output schema stays stable across updates — no specific turnaround time is promised for any given change.
Can I use it without managing proxies or browser infrastructure?
Yes. Proxy tier escalation (direct → datacenter → residential) and Chrome-TLS request impersonation for enrichment are both handled internally — you don't configure either unless you want to override the proxy settings.
Which Instagram follower fields work best for AI training data and RAG indexing?
For RAG, index biography and business_category_name as the high-information text fields. For training data, follower_count, media_count, and is_verified are the most consistently structured typed fields across records.
Related scrapers
| Scraper Name | What it extracts |
|---|---|
| Instagram Followers — New Followers & Unfollows Checker | Followers/following lists with cross-run growth, new-follower and unfollow diffs |
| Instagram Followers Count Scraper With Engagement Quality Score | Engagement rate, posting cadence, and a 0-100 audience-quality score per profile |
| Instagram Comments Scraper With Lead Enrichment | Post/reel comments with lead-intent flags and optional commenter profile enrichment |
| Following Scraper: Audience Overlap & Segment Breakdown | Accounts shared across multiple seed profiles' following lists, with overlap and segment tiers |
| Instagram Profile Scraper | Full profile data — bio, stats, latest posts, IGTV, related accounts |
| Instagram B2B Email Scraper | B2B emails and phone numbers discovered via Google Search across Instagram content |
Your feedback
Found a bug or missing a field? Open an issue on this Actor's Issues tab on the Apify Store, or reach out through Scraper-Engine's Apify Store profile. Reports like these directly shape what gets fixed and added next.