Instagram Profile Scraper – Followers, Bio, Posts, Verified avatar

Instagram Profile Scraper – Followers, Bio, Posts, Verified

Pricing

from $1.70 / 1,000 profile scraped successfullies

Go to Apify Store
Instagram Profile Scraper – Followers, Bio, Posts, Verified

Instagram Profile Scraper – Followers, Bio, Posts, Verified

Pay-per-result Instagram profile scraper — extracts name, bio, followers, verified/business status, bio links, emails & phones via public page or Google SERP. No login, residential proxies. $2 per 1,000 successful profiles ($0.002/result).

Pricing

from $1.70 / 1,000 profile scraped successfullies

Rating

0.0

(0)

Developer

Scrape Pilot

Scrape Pilot

Maintained by Community

Actor stats

0

Bookmarked

411

Total users

64

Monthly active users

7 days ago

Last modified

Share


📸 Instagram Profile & Leads Scraper – Followers, Bio, Emails, Business Info

Extract detailed public Instagram profile data — name, bio, followers, verified badge, business account info, bio links, emails, phone numbers, and recent posts — directly from Instagram's public profile pages. Includes an optional Google SERP discovery mode to find Instagram profiles by keyword. No login required. Residential proxy ready. Pay per successful result — just $2 per 1,000 successful profiles.


💡 What is the Instagram Profile & Leads Scraper?

This actor extracts public profile information from Instagram by fetching and parsing the public profile page (https://www.instagram.com/{username}/) using a Chrome-impersonating HTTP client (curl_cffi). It uses a multi-strategy parser so it keeps working even when Instagram changes its page structure:

  1. SSR JSON extraction — pulls the xig_user_by_username object embedded in the page's server-rendered scripts (most complete data: ID, verified status, bio_links, follower/following counts).
  2. HTML meta-tag fallback — falls back to Open Graph / meta description tags (title, follower/following/post counts, bio) when the SSR JSON block isn't found.
  3. Google SERP snippet fallback — if the profile page itself can't be fetched or parsed, the actor can fall back to a Google search snippet for that username to recover partial data.

On top of core profile stats, the actor also mines the bio and page content for emails, phone numbers, external websites, and bio links, making it useful for lead generation, not just analytics.

No Instagram login, no password, no cookies required. You are charged only for successful profile retrievals — failed, private, or not-found accounts incur no cost.


🚀 Key Features

FeatureDescription
Direct profile scrapingFetches and parses Instagram's public profile page for any username or profile URL.
Google SERP discovery modeGive a keyword instead of usernames — the actor searches site:instagram.com on Google and scrapes every profile it finds.
Multi-strategy parsingFalls back automatically from SSR JSON → HTML meta tags → Google SERP snippet, maximizing successful extractions.
Lead-gen data extractionPulls emails, phone numbers, business contact info, external websites, and bio links from the profile.
No login requiredWorks without any Instagram account.
Private/blocked accountsReturned as failed with no charge.
Residential proxy readyUses Apify's RESIDENTIAL proxy group to avoid IP blocks; falls back to GOOGLE_SERP proxy group for search mode.
Pay per successCharged only when a profile is successfully scraped with substantive data. Failed attempts are free.
Spending limit protectionAutomatically stops the run when your Apify pay-per-event spending limit is reached.
Recent postsReturns shortcodes/URLs for up to 6 recent posts found on the profile page.
Clean, structured JSONReady for CRM, spreadsheets, or dashboards.

📥 Input Parameters

ParameterTypeRequiredDefaultDescription
modestringNo"direct_urls""direct_urls" to scrape specific usernames/URLs, or "google_serp" to discover profiles by keyword.
profileUrlsarray or stringYes (if mode = direct_urls)–Instagram usernames or profile URLs. Accepts a JSON array or a newline/comma-separated string. @ handles and full URLs are both accepted.
keywordstringYes (if mode = google_serp)–Search keyword used to discover Instagram profiles via Google (auto-prefixed with site:instagram.com if not already an Instagram URL/query).
maxResultsintegerNo10Maximum number of profiles to scrape (direct mode) or discover (SERP mode).
requestTimeoutSecsintegerNo15Timeout (seconds) for each profile page request.
retriesPerStrategyintegerNo2Number of retry attempts per profile before falling back to the SERP snippet strategy.
delaySecondsnumberNo0.5Delay between processing each profile, to reduce rate-limiting risk.

Example Input (Direct usernames)

{
"mode": "direct_urls",
"profileUrls": "cristiano\nleomessi\ninstagram",
"maxResults": 10
}

Example Input (Google SERP discovery)

{
"mode": "google_serp",
"keyword": "fitness coach dubai",
"maxResults": 20
}

📤 Output Fields

Each successful profile is pushed to the dataset as an object with the following fields:

FieldTypeDescription
sourcestringAlways "instagram".
statusstring"success" (full profile page parsed) or "partial" (recovered via Google SERP snippet fallback).
usernamestringInstagram username.
fullNamestringDisplay name (falls back to username if unavailable).
instagramIdstring or nullInstagram's internal numeric user ID, when available.
profileUrlstringCanonical profile URL.
isVerifiedbooleanVerified badge.
isPrivatebooleanPrivate account flag.
isBusinessAccountbooleanBusiness/professional account flag.
categorystring or nullBusiness category name, if set.
followersCountinteger or nullFollower count.
followsCountinteger or nullFollowing count.
postsCountinteger or nullNumber of posts (media count).
biographystring or nullCleaned bio text (boilerplate/username-only bios are filtered out to null).
emailsarray of stringsEmails found in the bio or page content (deduplicated, obvious platform/CDN domains excluded).
phonesarray of stringsPhone numbers found in the bio or business contact fields (international format).
websitesarray of stringsExternal links found in bio links, external_url, or the bio text itself.
bioLinksarray of objects{ "title": ..., "url": ... } — Instagram's structured bio-link entries.
businessEmailstring or nullBusiness contact email, if the account exposes one.
businessPhoneNumberstring or nullBusiness contact phone number, if the account exposes one.
avatarUrlstring or nullProfile picture URL.
avatarUrlHdstring or nullHigh-resolution profile picture URL, when available.
latestPostsarray of objectsUp to 6 recent posts as { "shortcode": ..., "url": ... }.
scrapedAtstringISO 8601 UTC timestamp.

Profiles that fail to scrape (not found, blocked, or no usable data recovered even after fallbacks) are not charged and are logged as warnings rather than pushed to the dataset.

Example Output

[
{
"source": "instagram",
"status": "success",
"username": "cristiano",
"fullName": "Cristiano Ronaldo",
"instagramId": "173560420",
"profileUrl": "https://www.instagram.com/cristiano/",
"isVerified": true,
"isPrivate": false,
"isBusinessAccount": false,
"category": null,
"followersCount": 679716462,
"followsCount": 634,
"postsCount": 4130,
"biography": null,
"emails": [],
"phones": [],
"websites": [
"https://hrbl.me/CR7Pro2col",
"http://perplexity.ai/ronaldo",
"http://join.whoop.com/cr7",
"https://youtube.com/@cristiano"
],
"bioLinks": [
{ "title": "Herbalife Pro2Col", "url": "https://hrbl.me/CR7Pro2col" },
{ "title": "Perplexity", "url": "http://perplexity.ai/ronaldo" },
{ "title": "WHOOP", "url": "http://join.whoop.com/cr7" },
{ "title": "UR Cristiano", "url": "https://youtube.com/@cristiano" }
],
"businessEmail": null,
"businessPhoneNumber": null,
"avatarUrl": "https://scontent.cdninstagram.com/v/t51.2885-19/....jpg",
"avatarUrlHd": "https://scontent.cdninstagram.com/v/t51.2885-19/....jpg",
"latestPosts": [
{ "shortcode": "DdOSHfkg0ZR", "url": "https://www.instagram.com/p/DdOSHfkg0ZR/" },
{ "shortcode": "DdJirxwRLFR", "url": "https://www.instagram.com/p/DdJirxwRLFR/" }
],
"scrapedAt": "2026-09-13T16:19:55.971032+00:00"
}
]

💰 Pricing

MetricPrice
Per successful profile$0.002
Per 1,000 successful profiles$2.00
  • Pay-per-event: you are charged one profile event ($0.002) per successfully scraped profile (a profile with substantive data — name, followers, ID, bio, or avatar).
  • Failed, private, not-found, or empty-result profiles are free — no charge.
  • Example: 1,000 successful profiles = $2.00. 10,000 successful profiles = $20.00.
  • Spending limit protection: the run automatically and gracefully stops as soon as your configured Apify spending limit for the profile event is reached — no further profiles are processed or charged.

🛠 How to Use on Apify

  1. Create a task with this actor.
  2. Choose a mode:
    • direct_urls — paste usernames or profile URLs (one per line) into profileUrls.
    • google_serp — enter a search keyword to discover matching Instagram profiles automatically.
  3. Proxies are configured automatically — the actor requests Apify's RESIDENTIAL proxy group for profile fetching, and the GOOGLE_SERP proxy group (falling back to residential) for keyword discovery.
  4. Run — the actor scrapes each profile using its multi-strategy parser and pushes successful results to the Dataset.
  5. Export — download as JSON, CSV, or Excel from the Dataset tab.

Running via API

curl -X POST "https://api.apify.com/v2/acts/your-username~instagram-profile-scraper/runs" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"mode": "direct_urls",
"profileUrls": ["cristiano", "leomessi"],
"maxResults": 10
}'

🎯 Use Cases

Industry / Use CaseHow It Helps
Influencer MarketingEvaluate potential partners by follower count, verification, and category.
Lead GenerationDiscover creators/businesses by keyword via Google SERP mode and extract their emails, phone numbers, and websites straight from their bios.
Competitor AnalysisTrack competitors' follower growth, posting activity, and bio links.
Social ListeningMonitor brand ambassadors and industry accounts.
Academic ResearchStudy public social media presence and network patterns.
Investment Due DiligenceAssess the reach and authenticity signals of a brand's social presence.

❓ Frequently Asked Questions

1. Do I need an Instagram account? No. The actor fetches Instagram's public profile pages directly. No login required.

2. Can I scrape private profiles? No. Private accounts are detected and marked, and typically yield little to no data — they are not charged.

3. Why do I need residential proxies? Instagram blocks most datacenter IPs after moderate usage. The actor requests Apify's residential proxy group by default to reduce blocking.

4. What does Google SERP mode do? Instead of giving specific usernames, you give a keyword. The actor searches Google for Instagram profiles matching that keyword, then scrapes each discovered profile the same way as direct mode.

5. Am I charged for failed attempts? No. You're only charged one profile event per profile that returns substantive data (name, followers, ID, bio, or avatar).

6. Where do the emails/phone numbers come from? They're extracted from the profile's bio text and any exposed business contact fields — the actor does not access private messaging or contact data.

7. What happens when my spending limit is reached? The actor detects the pay-per-event spending limit and stops processing further profiles, preventing overspending.

8. Does the actor return follower/following lists? No, only counts, not the individual accounts. A separate actor would be needed for that.

9. How does it avoid basic blocking? It uses curl_cffi with Chrome impersonation and realistic headers, combined with Apify's residential proxy network.

10. What if Instagram changes its page structure? The parser has multiple fallback strategies (SSR JSON → HTML meta tags → Google SERP snippet), so it degrades gracefully rather than failing outright.


📝 Technical Notes

  • Target: https://www.instagram.com/{username}/ (public profile page).
  • HTTP client: curl_cffi impersonating Chrome (chrome120) to mimic a real browser's TLS fingerprint.
  • Parsing strategies: (1) xig_user_by_username SSR JSON block, (2) Open Graph / meta description tags, (3) Google SERP snippet fallback.
  • Discovery: Google SERP mode paginates search results (up to 5 pages) using Apify's GOOGLE_SERP proxy group, with a residential-proxy or direct-request fallback.
  • Data enrichment: emails and phone numbers are parsed from bio text and business contact fields using phonenumbers and regex-based email extraction, filtering out known platform/CDN domains.
  • Charging: uses Apify's pay-per-event Actor.charge(event_name="profile"), with spending-limit detection (event_charge_limit_reached) to stop the run gracefully.
  • Output: pushed to the Apify Dataset per successful profile as camelCase JSON records.

🔍 SEO Keywords

Instagram Profile Scraper, Instagram lead generation, Instagram email scraper, Instagram follower count, Instagram bio extractor, Instagram Google search scraper, Instagram public profile scraper, bulk Instagram lookup, social media intelligence, influencer analytics, Apify Instagram actor, pay per success scraper



Start scraping Instagram profiles today — only $2 per 1,000 successful profiles, with built-in lead-gen data extraction.