Skip to main content

How to Scrape Instagram Profiles and Followers: 5 Proven Methods for 2026

How to Scrape Instagram Profiles and Followers: 5 Proven Methods for 2026
Introduction

How to scrape Instagram profiles and followers with 5 tools: 1. BrowserAct 2. Instagram Graph API 3. Instaloader (Python) 4. BeautifulSoup + requests 5. Selenium --- Ever wondered how social media agencies track thousands of Instagram profiles overnight? Or how brands monitor competitor follower growth without manually refreshing pages? Instagram has over 2 billion monthly active users, making it one of the richest sources of creator, brand, and audience data on the internet. This technique is i

Detail
📌Key Takeaways
  1. 1BrowserAct's login-aware technology detects Instagram's auth wall, pauses for manual login, then resumes extraction—no automated login means no ban risk.
  2. 2Instagram's Graph API only works for Business/Creator accounts and cannot access follower lists of other accounts.
  3. 3Instaloader is the most feature-rich Python library for Instagram but faces aggressive rate limiting on follower list scraping.
  4. 4BeautifulSoup can only extract basic profile metadata from embedded JSON—no follower lists or engagement metrics.
  5. 5Selenium can handle follower modal scrolling but is very slow and carries high risk of account bans.


Method 1: BrowserAct — The No-Code Instagram Scraper with Login-Aware Technology (Best for Auth-Walled Pages)

BrowserAct is a no-code browser automation platform that solves Instagram's biggest scraping challenge: the login wall. Unlike traditional scrapers that break the moment Instagram demands authentication, BrowserAct's login-aware technology detects when a login or CAPTCHA appears, pauses the workflow, and lets you complete the authentication manually—then automatically resumes extraction.

This is critical because Instagram now requires login for almost every meaningful page: profile views, follower lists, post comments, and even hashtag feeds. Most scraping tools either can't handle this (BeautifulSoup, requests) or risk getting your account banned by automating the login itself (Selenium). BrowserAct's human-in-the-loop approach keeps your account safe while giving you the full power of a real browser session with stealth browsing and residential proxies.

Steps to Scrape Instagram with BrowserAct

Follow this quick start guide to scrape Instagram profiles and followers:

  1. Sign up and create a workflow: Create a free account at BrowserAct. Click "Workflows" → "Create New" and name it (e.g., "Instagram Profile Scraper"). Describe what you want in plain English: "Visit an Instagram profile page, extract username, follower count, following count, post count, bio, profile picture URL, and whether the account is verified."
  1. Configure input parameters: Set up input variables for your workflow. Add profile_url (e.g., https://www.instagram.com/nasa/) as the target. Add max_followers if you want to scroll through and extract follower lists (e.g., 200 followers).
  1. Run and handle login: Click "Start" to execute. When Instagram's login wall appears, BrowserAct pauses and notifies you. Complete the login manually in the live browser session—enter your username, password, and any 2FA code. Once you're logged in, click "Resume" and BrowserAct continues the extraction automatically.
  1. Review and export data: Once the run completes, review extracted profile data (username, full name, follower count, following count, post count, bio, verified status, external URL, profile picture URL) and follower lists (username, profile URL, verified status). Export as CSV, JSON, Google Sheets, or via Webhook.
  1. Automate with scheduling: Set up recurring runs to track follower growth over time. Use BrowserAct's session persistence feature to maintain your Instagram login across runs—no need to re-authenticate every time. Connect to Make or n8n to auto-save data to your CRM.

For advanced builds, you can add Loop nodes to scroll through follower lists, Extract Data nodes with custom prompts like "Extract the username and profile picture URL of each follower in the list," and conditional nodes that handle private accounts differently from public ones.

What Data Can You Extract?

BrowserAct's AI-powered extraction can pull any publicly visible data from Instagram profile pages and follower lists:

  • Profile Data: Username, full name, profile URL, follower count, following count, post count, bio description, verified status (✓), category (Public Figure, Business, etc.), external website URL, profile picture URL, and whether the account is private or public.
  • Follower Lists: Username, full name, profile URL, verified status, and profile picture URL for each follower (requires scrolling through the followers modal).
  • Recent Posts: Post URL, caption, like count, comment count, timestamp, media type (photo/video/carousel), and thumbnail URL.

Outputs are available in formats like JSON, CSV, XML, or Markdown, making it easy to integrate scraped data into influencer databases, CRM pipelines, or audience analysis tools.

Pros

  • No coding required—describe what you need in plain English
  • Login-aware technology handles Instagram's auth wall safely (no automated login = no ban risk)
  • Real browser sessions with stealth browsing and residential proxies
  • AI-powered extraction adapts to page changes automatically
  • Session persistence for maintaining login across runs
  • Flexible export formats and integrations with Make, n8n, Zapier

Cons

  • Requires manual login for first run (but session persistence reduces frequency)
  • Credit-based pricing may add up for very large-scale extraction
  • Cloud-based—no offline execution

Ready to try it? Sign up for BrowserAct's free trial and start scraping Instagram profiles today!


Method 2: Instagram Graph API (Official and Compliant)

The Instagram Graph API is Meta's official way to access Instagram data programmatically. However, it's designed primarily for managing your own business or creator account—not for scraping other users' profiles or follower lists.

Steps to Scrape Instagram with the Graph API

  1. Set up a Meta Developer account: Go to developers.facebook.com and create a new app. Add the Instagram Graph API product to your app.
  1. Connect an Instagram Business or Creator account: The Graph API only works with Business or Creator accounts—not personal accounts. Connect your Instagram account to a Facebook Page, then link it to your Meta app.
  1. Obtain access tokens: Generate a long-lived access token using your app credentials. You'll need the instagram_basic and pages_show_list permissions.
  1. Query available endpoints: Use the API to access your own account data: profile info, media, insights, stories, and comments. You can also search for hashtags and access business discovery data for other public accounts.
  1. Use Business Discovery for competitor data: The /business_discovery endpoint lets you view public profile data (follower count, media count, and recent posts) for other Instagram Business accounts—but not their follower lists.
import requests

ACCESS_TOKEN = "YOUR_LONG_LIVED_ACCESS_TOKEN"
IG_USER_ID = "YOUR_INSTAGRAM_BUSINESS_ACCOUNT_ID"

# Get your own profile data
response = requests.get(
f"https://graph.facebook.com/v18.0/{IG_USER_ID}",
params={
"fields": "username,followers_count,follows_count,media_count,biography,website,profile_picture_url",
"access_token": ACCESS_TOKEN,
}
)
my_profile = response.json()
print(f"@{my_profile['username']}")
print(f"Followers: {my_profile['followers_count']}")
print(f"Following: {my_profile['follows_count']}")
print(f"Posts: {my_profile['media_count']}")

# Business Discovery: get competitor's public data
competitor = requests.get(
f"https://graph.facebook.com/v18.0/{IG_USER_ID}/business_discovery",
params={
"username": "nasa",
"fields": "followers_count,media_count,media{caption,like_count,comments_count,timestamp}",
"access_token": ACCESS_TOKEN,
}
)
nasa_data = competitor.json()["business_discovery"]
print(f"\n@nasa: {nasa_data['followers_count']} followers, {nasa_data['media_count']} posts")

Pros

  • Fully compliant with Instagram's terms of service
  • Official, stable API with documentation and support
  • No risk of IP bans or account suspensions
  • Access to Insights and analytics data for your own account
  • Business Discovery endpoint provides competitor follower counts and recent posts

Cons

  • Only works with Business/Creator accounts—not personal accounts
  • Cannot scrape follower lists (only aggregate counts)
  • Business Discovery is limited to other Business accounts (not personal or private accounts)
  • Requires a Facebook Page connection and Meta Developer app setup
  • Rate limits: 200 requests per hour per app


Method 3: Instaloader Python Library (Open-Source and Feature-Rich)

Instaloader is a popular open-source Python tool specifically designed for downloading Instagram posts, stories, and profile data. It's more reliable than generic scrapers because it's purpose-built for Instagram's structure and actively maintained.

Steps to Scrape Instagram with Instaloader

  1. Install Instaloader: Run pip install instaloader to install the package. It's a pure Python tool with minimal dependencies.
  1. Log in to Instagram: Instaloader requires authentication to access most data. Use instaloader.login() to authenticate with your Instagram credentials—or load a previously saved session to avoid repeated logins.
  1. Scrape profile data: Use Profile.from_username() to load a user's profile and access follower count, following count, post count, bio, and external URL.
  1. Scrape posts and engagement: Iterate through a profile's posts using profile.get_posts(). Each post object contains caption, likes, comments, date, and media URLs.
  1. Scrape follower lists: Use profile.get_followers() and profile.get_followees() to extract follower and following lists. Note: this is the most rate-limited operation and can take hours for large accounts.
import instaloader
import json
from datetime import datetime

# Initialize and login
L = instaloader.Instaloader(
download_posts=False, # Don't download media files
download_videos=False,
download_video_thumbnails=False,
save_metadata=False,
compress_json=False,
)

# Login (required for follower lists)
L.login("your_username", "your_password") # Or: L.load_session_from_file("your_username")

# Scrape profile data
profile = instaloader.Profile.from_username(L.context, "nasa")

profile_data = {
"username": profile.username,
"full_name": profile.full_name,
"follower_count": profile.followers,
"following_count": profile.followees,
"post_count": profile.mediacount,
"bio": profile.biography,
"external_url": profile.external_url,
"is_verified": profile.is_verified,
"is_private": profile.is_private,
"profile_pic_url": profile.profile_pic_url,
}

print(json.dumps(profile_data, indent=2))

# Scrape recent posts with engagement metrics
print(f"\nRecent posts for @{profile.username}:")
for i, post in enumerate(profile.get_posts()):
if i >= 10: # Get last 10 posts
break
print(f" [{post.date.strftime('%Y-%m-%d')}] {post.caption[:50]}...")
print(f" Likes: {post.likes} | Comments: {post.comments}")

# Scrape followers (SLOW - use with caution)
print(f"\nScraping followers for @{profile.username}...")
followers = []
for i, follower in enumerate(profile.get_followers()):
if i >= 100: # Limit to first 100
break
followers.append({
"username": follower.username,
"full_name": follower.full_name,
"is_verified": follower.is_verified,
})
print(f" Follower {i+1}: @{follower.username}")

print(f"\nExtracted {len(followers)} followers")

Pros

  • Free and open-source (MIT license)
  • Purpose-built for Instagram—handles login, pagination, and rate limiting
  • Can extract both profile data and follower/following lists
  • Active community and regular updates
  • CLI tool available for quick one-off extractions
  • Session persistence to avoid repeated logins

Cons

  • Instagram aggressively rate-limits follower list scraping (can take hours for large accounts)
  • Risk of account ban if used too aggressively
  • Login credentials stored in plaintext session files
  • Breaks when Instagram changes its internal API (though community fixes are usually quick)


BrowserAct Skills

Give your agent a real browser, then turn the workflow into a Skill.

  • 1. Use browser-act when an agent needs to open, click, scroll, extract, or inspect a live site.
  • 2. Use browser-act-skill-forge when the workflow should become reusable across runs and agents.
  • 3. Keep the operational boundary simple: automate what the user can already do in the browser.

Method 4: BeautifulSoup + requests (Lightweight Profile Extraction)

Using Python's requests and BeautifulSoup to scrape Instagram is the most lightweight approach, but it's severely limited by Instagram's heavy reliance on JavaScript rendering and login walls. This method works for basic profile metadata extraction from public accounts but cannot access follower lists or engagement metrics.

Steps to Scrape Instagram with BeautifulSoup

  1. Install dependencies: Run pip install requests beautifulsoup4 lxml to install the required packages.
  1. Inspect Instagram's page structure: Open an Instagram profile in developer tools. You'll find that Instagram embeds initial data in a How to Scrape Instagram Profiles and Followers: 5 Proven Met