# Instagram Followers Scraper (`khadinakbar/instagram-followers-scraper`) Actor

Export the full followers or following list of any Instagram account: usernames, names, verified flags + optional email enrichment. MCP/API-ready.

- **URL**: https://apify.com/khadinakbar/instagram-followers-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Social media, Lead generation, MCP servers
- **Stats:** 36 total users, 7 monthly users, 50.8% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 scraped accounts

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Instagram Followers Scraper — Followers, Following & Email

Export the **full followers or following list of any Instagram account** as clean JSON, CSV, or Excel. Get usernames, full names, Instagram IDs, verified and private flags, and profile URLs for every account — with **optional one-click enrichment** that adds bio, email, phone, website, follower/following/post counts, category, and business flag for lead generation.

**No Instagram login or cookie is required for public accounts.** The actor uses two managed graph routes, verifies completeness against live profile counts, and falls back automatically when the primary route returns too few rows. A user-supplied session cookie remains an optional final fallback, never a requirement.

***

### What it does

Give it one or more Instagram usernames (or profile URLs), pick **followers** or **following**, and it paginates the entire connection list of each account, returning one structured record per follower. Turn on enrichment to convert raw followers into qualified leads with contact data.

### When to use it

- **Lead generation** — pull a competitor's or partner's followers and enrich with email/website.
- **Influencer & audience research** — see who follows a niche account; filter by verified/business.
- **Competitor analysis** — map overlap between two accounts' audiences.
- **Community / outreach** — build targeted outreach lists from an account's following.

### When NOT to use it

- For **follower counts only** (no list) — that's cheaper with a dedicated count scraper.
- For **posts, reels, comments, or hashtags** — use the matching scraper in the *related actors* section below.
- For **private accounts you don't follow** — Instagram does not expose their follower lists to anyone.

***

### Output data

Each result is one account from the followers/following list:

| Field | Description |
|---|---|
| `username` | Instagram handle |
| `full_name` | Display name |
| `instagram_id` | Internal numeric user ID (stable across handle changes) |
| `profile_url` | Direct link to the profile |
| `profile_pic_url` | Profile picture URL |
| `is_private` | Whether the account is private |
| `is_verified` | Whether the account has a blue check |
| `relationship` | `follower` or `following` |
| `source_username` | The account this record was pulled from |
| `scraped_at` | ISO 8601 timestamp |

**With enrichment enabled (`enrichProfiles: true`), each record also includes:**

| Field | Description |
|---|---|
| `biography` | Profile bio text |
| `email` | Public/business email or email parsed from the bio |
| `phone` | Public business phone |
| `external_url` | Linked website |
| `follower_count` / `following_count` / `media_count` | Profile counts |
| `category` | Category label (e.g. "Photographer") |
| `is_business` | Business/professional account flag |

#### Example output

```json
{
  "username": "janedoe",
  "full_name": "Jane Doe",
  "instagram_id": "1234567890",
  "profile_url": "https://www.instagram.com/janedoe/",
  "profile_pic_url": "https://instagram.com/pic.jpg",
  "is_private": false,
  "is_verified": false,
  "relationship": "follower",
  "source_username": "natgeo",
  "biography": "Travel photographer 📷 collabs: jane@example.com",
  "email": "jane@example.com",
  "external_url": "https://janedoe.com",
  "follower_count": 15400,
  "following_count": 812,
  "media_count": 240,
  "category": "Photographer",
  "is_business": true,
  "scraped_at": "2026-06-01T12:00:00.000Z"
}
```

***

### Pricing (pay per result)

| Event | Price (Free tier) |
|---|---|
| Actor start | $0.00005 |
| Each account scraped | $0.0015 |
| Profile enrichment (add-on, per account) | $0.0015 |

So this actor charges **$0.0015 per persisted follower**; an enriched row is **$0.003**. Lower tiers (Bronze→Diamond) reduce the per-result price. Pay only for results this actor actually persists — no monthly rental.

**Managed-provider cost:** Public no-cookie runs launch paid child Actors in your Apify account. Apify bills those child runs separately at their live Store prices. The primary route currently starts at $0.01/run plus $0.0005/result; the fallback route is used only for incomplete targets and has a minimum 25-item request. This actor sets a hard `maxTotalChargeUsd` on every child run. Check the run tree before large jobs because provider prices can change.

**Parent-actor cost examples:** 1,000 persisted rows = ~$1.50 plain / ~$3.00 enriched, plus managed graph-provider charges. The actor prints its own maximum parent charge and respects your `maxResults` cap.

***

### How to use

1. Add one or more accounts to **Instagram Usernames or Profile URLs**.
2. Choose **Mode** — Followers or Following.
3. Set **Max Results Per Account** (start small to test).
4. (Optional) Toggle **Enrich Each Profile** for bio/email/website/counts.
5. Run. Export from the **Output** tab or via API.

#### Optional session fallback

Leave **Your Instagram Cookie** blank for the managed no-login route. Advanced users may paste a cookie string containing `sessionid=...`; it is used only as a final fallback when both managed graph providers are incomplete. Use a secondary account because Instagram can rate-limit or checkpoint scraping sessions.

***

### Run via API & MCP (for AI agents)

This actor is **MCP-ready**. Connect it to Claude or any MCP client via `https://mcp.apify.com` and call it as `khadinakbar/instagram-followers-scraper`. Input is a simple username + mode; output is flat, agent-friendly JSON. It also runs via the standard Apify API, scheduler, and integrations (Zapier, Make, n8n).

### Related actors (Instagram cluster)

Pair this with the rest of the toolkit:

- **[Instagram Posts Scraper](https://apify.com/khadinakbar/instagram-posts-scraper)** — captions, likes, media.
- **[Instagram Reels Scraper](https://apify.com/khadinakbar/instagram-reels-scraper)** — reels with views and audio.
- **[Instagram Hashtag Scraper](https://apify.com/khadinakbar/instagram-hashtag-scraper)** — posts by hashtag.

***

### FAQ

**Do I need to log in or provide my password?**
No. Public accounts use managed providers. The actor never needs your Instagram password. A `sessionid` cookie is optional for direct-session fallback only.

**Can it scrape private accounts?**
Managed mode supports public accounts. A private account can only work when the optional supplied session already follows it. Otherwise the actor records a truthful valid-empty outcome.

**How many followers can I get?**
Up to your `maxResults` cap per account (max 50,000). Very large accounts are paginated; runs are paced to stay reliable.

**Why can a run launch child Actors?**
The follower graph is not in ScrapeCreators or SociaVault. The actor therefore composes two dedicated managed graph Actors, then uses ScrapeCreators/SociaVault for profile-count verification and optional enrichment. This is what removes the cookie requirement without fabricating follower identities.

**What if every route is blocked?**
The run records `UPSTREAM_FAILED` in `OUTPUT` and `RUN_SUMMARY` and fails honestly. Invalid input, private targets, genuine zero-count profiles, useful partial data, and charge-limit stops succeed with explicit outcome diagnostics.

***

### Legal & compliance

This actor collects **publicly available data** only. You are responsible for using the data in compliance with Instagram's Terms of Service, the GDPR/CCPA, and all applicable laws. Do not use scraped personal data for spam, harassment, or any unlawful purpose. Scrape responsibly and respect data-subject rights. This tool is not affiliated with, endorsed by, or sponsored by Instagram or Meta Platforms, Inc.

# Actor input Schema

## `usernames` (type: `array`):

Instagram accounts whose followers or following list you want to scrape. Accepts usernames (e.g. 'natgeo', 'nasa') or full profile URLs (e.g. 'https://instagram.com/natgeo'). One per line. This is NOT the list of people to look up individually — it is the account(s) whose connections are extracted.

## `mode` (type: `string`):

Choose 'followers' to extract the accounts that follow each target, or 'following' to extract the accounts each target follows. Applies to every username in the list. Defaults to 'followers'.

## `maxResults` (type: `integer`):

Maximum number of followers/following to collect per target account. Use a small number for testing. Large public accounts can have millions of followers; this cap protects your run cost. Defaults to 200. Range 1–50000.

## `enrichProfiles` (type: `boolean`):

When enabled, visits each follower/following profile to add biography, public email, phone, external website, follower/following/media counts, category, and business flag. Great for lead generation. Adds an extra charge per enriched profile and increases run time. Defaults to off.

## `sessionCookie` (type: `string`):

Optional final fallback only. Managed providers handle public follower/following lists without your login. If you supply a cookie containing 'sessionid=...' (or the bare sessionid value), the actor can try Instagram directly when both managed graph routes are incomplete. Use a secondary account. This is a cookie, NOT your password.

## `proxyConfiguration` (type: `object`):

Optional custom or Apify proxy settings. When left blank, authenticated Instagram requests use a managed sticky mobile proxy. Supply your own proxy only when you need to control egress or billing.

## Actor input object example

```json
{
  "usernames": [
    "natgeo"
  ],
  "mode": "followers",
  "maxResults": 200,
  "enrichProfiles": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All collected accounts with full metadata.

## `summary` (type: `string`):

No description

## `runSummary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "usernames": [
        "natgeo"
    ],
    "mode": "followers",
    "maxResults": 200,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/instagram-followers-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "usernames": ["natgeo"],
    "mode": "followers",
    "maxResults": 200,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/instagram-followers-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "usernames": [
    "natgeo"
  ],
  "mode": "followers",
  "maxResults": 200,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call khadinakbar/instagram-followers-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=khadinakbar/instagram-followers-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/Jkrxn3PkXi2rLGIEZ/builds/URnXOSUdS13YXF02p/openapi.json
