# Instagram Followers and Following Scraper (`apify/instagram-followers-following-scraper`) Actor

Scrape Instagram followers' names. Just add Instagram profile and extract followers' username, name, profile picture URL, private or public status, verified status and Instagram user ID. Export scraped data, schedule scraper via API, and integrate with other tools or AI workflows.

- **URL**: https://apify.com/apify/instagram-followers-following-scraper.md
- **Developed by:** [Apify](https://apify.com/apify) (Apify)
- **Categories:** Social media, Lead generation
- **Stats:** 14 total users, 4 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.15 / 1,000 profiles

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

### What can Instagram Followers & Following Scraper do?

Instagram Followers & Following Scraper **extracts the follower and following lists of public Instagram profiles** beyond what the Instagram API provides. Add one or multiple Instagram user
names or profile URLs, and you can:

### What can Instagram Followers & Following Scraper do?

Instagram Followers & Following Scraper is an **Instagram follower export tool** that extracts the follower and following lists of public Instagram profiles, going beyond what the Instagram API provides. Add one or multiple Instagram usernames or profile URLs, and you can:

👥 **Export the full follower list** of any public profile, with each account's username, user ID, and full name

➡️ Get the **following list** (the accounts a profile follows) in the same run

🔀 Scrape **followers and following** — every result is labeled with a `type` field (`FOLLOWER` or `FOLLOWING`)

🏷️ See **which accounts are verified and which are private** before you decide who to research further

🖼️ Grab **profile picture URLs** for every account in the list

🎯 **Limit the number of results per profile** so you only pay for the slice of the audience you need

⬇️ **Download the follower list as CSV, Excel, JSON, or XML** — no browser extension and no Instagram login required

🦾 Access the data programmatically via SDKs (Python & Node.js), API endpoints, and webhooks

🤳 Explore our other [social media scrapers](https://apify.com/store/collections/instagram-scrapers)

Add Instagram Followers & Following Scraper to your audience research toolkit to help you out with **influencer vetting, audience overlap analysis, competitor audience research, and lead list building.**

### What data can I export from an Instagram follower list?

For every account in a follower or following list, Instagram Followers & Following Scraper returns:

<table>
<tr>
<td>👤 Follower username</td>
<td>🪪 Full name</td>
</tr>
<tr>
<td>🆔 User ID</td>
<td>🖼️ Profile picture URL</td>
</tr>
<tr>
<td>✅ Verified status</td>
<td>🔒 Private account flag</td>
</tr>
<tr>
<td>🔗 Follower or following type</td>
<td>📌 Source username</td>
</tr>
</table>

> Note: this Actor returns the **list of accounts**, not their full profiles. It doesn't include bios, follower counts, or post data for each account in the list. To enrich the usernames you get here with profile-level data, feed them into 🔗 [Instagram Profile Scraper](https://apify.com/apify/instagram-profile-scraper).

### How to scrape and export Instagram followers?

1. [Create](https://console.apify.com/) a free Apify account.
2. Open [Instagram Followers & Following Scraper](https://apify.com/apify/instagram-followers-following-scraper).
3. Add **one or multiple Instagram usernames or profile URLs**.
4. Choose whether you want **followers, following, or both**, and set a **results limit** per profile.
5. Click **"Save & Start"** and wait for the datasets to be generated.
6. **Export the follower list** in **CSV, Excel, JSON, or XML**, or access it via API.

> If you only need the **number** of followers rather than the list itself, use our lighter 🔗 [Instagram Followers Count Scraper](https://apify.com/apify/instagram-followers-count-scraper).

### How much will scraping Instagram followers and following cost?

Instagram Followers & Following Scraper uses a **pay-per-event (PPE)** model, so you're charged per result returned. Check the [pricing tab](https://apify.com/apify/instagram-followers-following-scraper/pricing) for the exact per-1,000-results rate on your plan and for how many results your monthly credit covers.

Because follower lists can run into the millions, always set a **results limit** on your first run to sample the data before scaling up.

### ⬇️ Input

Enter either an **Instagram username or a profile URL**. You can input them individually or in bulk using the **Bulk edit** function, then pick whether to scrape followers, following, or both, and how many results you want per profile.

<a href="https://console.apify.com/actors/apify~instagram-followers-following-scraper/">
<img src="https://github.com/apify-projects/actor-readme-images/blob/master/instagram-followers-following-data.png?raw=true" alt="Instagram Followers & Following Scraper input" style="width:70%;"> </a>

### ⬆️ Output

The results appear in a dataset in the **Storage** tab. You can view them as a table, download in **JSON, CSV, Excel, or XML**, or use API endpoints.

<a href="https://console.apify.com/actors/apify~instagram-followers-following-scraper/">
<img src="https://raw.githubusercontent.com/apify-projects/actor-readme-images/36c0a755cfd3086f275dc552147e5951293b1654/instagram-followers-following-data-extracted.png" alt="Instagram Followers & Following Scraper output" style="width:100%;"> </a>

Besides the table view, you can also view your data as JSON, as well as download it as CSV, XML, Excel file, or through an API. Here's an abridged version of the output for the `natgeo` profile.

#### 👥 Extracted Instagram followers data sample

```json
[
    {
        "sourceUsername": "natgeo",
        "userId": "17788527767",
        "username": "john_wyw",
        "fullName": "John Faavae",
        "profilePicUrl": "https://scontent-cph2-1.cdninstagram.com/v/t51.2885-19/485111305_1314482683153102_1667688672299501422_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_cat=110&oe=6A4BF7EE&_nc_sid=17ea04",
        "isVerified": false,
        "isPrivate": false,
        "type": "FOLLOWER"
    },
    {
        "sourceUsername": "natgeo",
        "userId": "22976673752",
        "username": "mr_aarif__111",
        "fullName": "Aarif Khan",
        "profilePicUrl": "https://scontent-cph2-1.cdninstagram.com/v/t51.82787-19/718993887_18117740380761753_2951576306920118302_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_cat=109&oe=6A4C0563&_nc_sid=17ea04",
        "isVerified": false,
        "isPrivate": false,
        "type": "FOLLOWER"
    },
    {
        "sourceUsername": "natgeo",
        "userId": "48900983354",
        "username": "nada.mohamedabdo",
        "fullName": "Nada Mohamed Abdo",
        "profilePicUrl": "https://scontent-cph2-1.cdninstagram.com/v/t51.2885-19/364974559_306415915279249_5272802781817225242_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_cat=101&oe=6A4C00C4&_nc_sid=17ea04",
        "isVerified": false,
        "isPrivate": true,
        "type": "FOLLOWER"
    },
    {
        "sourceUsername": "natgeo",
        "userId": "17184086722",
        "username": "lumora_beauty0001",
        "fullName": "Beautiva Beauty & Cosmetics",
        "profilePicUrl": "https://scontent-cph2-1.cdninstagram.com/v/t51.82787-19/730266468_18128591941574723_625051544976532577_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_cat=111&oe=6A4BF953&_nc_sid=17ea04",
        "isVerified": false,
        "isPrivate": false,
        "type": "FOLLOWER"
    },
    {
        "sourceUsername": "natgeo",
        "userId": "16008015517",
        "username": "owl.7504291",
        "fullName": "",
        "profilePicUrl": "https://scontent-cdg4-1.cdninstagram.com/v/t51.2885-19/573323465_1219825463302212_7278921664109726296_n.png?stp=dst-jpg_e0_s150x150_tt6&_nc_cat=1&oe=6A4C0DAA&_nc_sid=65462d",
        "isVerified": false,
        "isPrivate": false,
        "type": "FOLLOWER"
    }
]
```

If a profile you submitted is private, empty, or doesn't exist, the Actor pushes a single error item for that input instead of a list:

```json
{
    "error": "no_items",
    "errorDescription": "Profile does not exist" or "Profile is private"
}
```

### Want to get other details from an Instagram account?

You can use the other dedicated scrapers below if you want to scrape specific Instagram data:

<table>
<tr>
<td>👤 <a href="https://apify.com/apify/instagram-profile-scraper">Instagram Profile Scraper</a></td>
<td>👥 <a href="https://apify.com/apify/instagram-followers-count-scraper">Instagram Followers Count Scraper</a></td>
</tr>
<tr>
<td>📷 <a href="https://apify.com/apify/instagram-post-scraper">Instagram Post Scraper</a></td>
<td>🎥 <a href="https://apify.com/apify/instagram-reel-scraper">Instagram Reel Scraper</a></td>
</tr>
<tr>
<td>💬 <a href="https://apify.com/apify/instagram-comment-scraper">Instagram Comments Scraper</a></td>
<td>💾 <a href="https://apify.com/apify/export-instagram-comments-posts">Export Instagram Comments and Posts Tool</a></td>
</tr>
<tr>
<td>#️⃣ <a href="https://apify.com/apify/instagram-hashtag-scraper">Instagram Hashtag Scraper</a></td>
<td>📊 <a href="https://apify.com/apify/instagram-hashtag-analytics-scraper">Instagram Hashtag Analytics Scraper</a></td>
</tr>
<tr>
<td>🏷️ <a href="https://apify.com/apify/instagram-tagged-scraper">Instagram Mentions Scraper</a></td>
<td>🔮 <a href="https://apify.com/apify/brand-collaboration-scraper">Instagram Influencer Collaboration Scraper</a></td>
</tr>
<tr>
<td>🔎 <a href="https://apify.com/apify/instagram-search-scraper">Instagram Search Scraper</a></td>
<td>🛍️ <a href="https://apify.com/apify/facebook-ads-scraper">Instagram Ads Scraper</a></td>
</tr>
</table>

> If you're comfortable with more complex settings, use our more advanced 🔗 [Instagram Scraper](https://apify.com/apify/instagram-scraper) or 🔗 [Instagram API Scraper](https://apify.com/apify/instagram-api-scraper). They cover almost all functionalities of the dedicated scrapers.

### ❓FAQ

#### How do I export an Instagram follower list to CSV or Excel?

Run the Actor on the profile you're interested in, then open the **Storage** tab and pick your format. Every run's dataset can be downloaded as **CSV, Excel, JSON, or XML**, so you can open the follower list straight in Google Sheets or Excel. If you'd rather not download anything by hand, hit the dataset endpoint from the [Apify API](https://docs.apify.com/api/v2) with `format=csv` and pipe it wherever you need it.

#### Do I need a Chrome extension or my Instagram login to export followers?

No. Unlike browser-extension follower export tools, this Actor runs on Apify's platform and only reads public data, so you never install anything, never hand over your Instagram password, and never risk your own account. That also means it scales past what a browser tab can handle — you can queue up many profiles in one run and pull the results through the API.

#### How do I tell followers apart from following in the output?

Every item carries a `type` field: `FOLLOWER` means the account follows the profile in `sourceUsername`, and `FOLLOWING` means the profile in `sourceUsername` follows that account. If you scrape several profiles in one run, use `sourceUsername` to group the results, and filter on `type` to split the two lists.

#### Why do some followers have an empty `fullName`?

Because those accounts haven't set a display name on Instagram. The Actor returns exactly what the profile exposes, so `fullName` comes back as an empty string. The same goes for the generic grey-silhouette `profilePicUrl` you'll see repeated across accounts that never uploaded a profile picture.

#### Can I scrape followers of private accounts?

No. The scraper only works with public profiles. If you submit a private account (or one with no followers to show), you'll get a single item back with `"error": "no_items"` and the description `"Profile does not exist"` or `"Profile is private"` instead of a list.

#### Can I scrape the full follower list of a huge account?

Technically yes, but think it through first. Accounts like `natgeo` have hundreds of millions of followers, so a complete list would take a very long time and cost accordingly. Set a results limit, sample the data, and only then decide how deep you want to go.

#### Are the follower lists complete and in a stable order?

Instagram returns followers in pages, newest-first, and it doesn't guarantee a stable order between requests. That means two runs of the same profile can return slightly different sets at the edges, especially for fast-growing accounts. For repeatable analysis, deduplicate on `userId` rather than on list position.

#### Does the output include follower counts, bios, or posts for each account?

No — this Actor returns the list of accounts, with the fields shown in the table above. To get bios, follower counts, post counts, or external links for the accounts you found, pass their usernames to 🔗 [Instagram Profile Scraper](https://apify.com/apify/instagram-profile-scraper).

#### How long do `profilePicUrl` links stay valid?

They're Instagram CDN URLs with an expiry token baked in, so they stop working after a while. If you need to keep the images, download them soon after the run rather than storing the URLs long term.

#### Can I use this to find mutual followers or audience overlap?

Yes. Scrape two or more profiles in the same run, then compare the results on `userId` to find accounts that appear under more than one `sourceUsername`. That gives you shared audience between creators, or the overlap between your followers and a competitor's.

#### Is it legal to scrape Instagram followers and following lists?

Our Instagram Followers & Following Scraper only collects data that is publicly available on Instagram. It does not access private content. Follower lists consist largely of personal data under regulations like the [GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation), so you need a legitimate reason to collect and store them, and you should keep only the fields you actually need. For guidance, see our blog on [the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

#### Can I integrate Instagram follower data with other services?

Yes. Scraped follower and following data can be integrated with almost any cloud service or web app. Apify supports **Zapier, n8n, Slack, Make, Airbyte, Gumloop, CrewAI, IFTTT, Lindy, GitHub, Google Sheets, Google Drive**, [and more](https://apify.com/integrations). You can also use [webhooks](https://docs.apify.com/integrations/webhooks) to trigger actions whenever a run finishes, like sending notifications or syncing datasets.

#### Can I use the Instagram Followers & Following Scraper with the Apify API?

Yes. The Apify API provides programmatic access to run Actors, fetch datasets, monitor performance, and manage tasks. For Node.js, use the apify-client [NPM package](https://apify.com/apify/instagram-followers-following-scraper/api/javascript). For Python, use the apify-client [PyPI package](https://apify.com/apify/instagram-followers-following-scraper/api/python). Full API docs are available in the [Apify API reference](https://docs.apify.com/api/v2).

#### Can I get Instagram follower data through an MCP server?

Yes. You can [connect](https://apify.com/apify/instagram-followers-following-scraper/api/mcp) to an MCP server using clients like ClaudeDesktop or LibreChat, or build your own integration. For Instagram Followers & Following Scraper:

1. Start a Server-Sent Events (SSE) session to receive a `sessionId`.
2. Send API messages using that `sessionId` to trigger the scraper.
3. The message starts the Instagram Followers & Following Scraper with the provided input.
4. The response should be: Accepted.

Learn more in [MCP setup guide](https://blog.apify.com/how-to-use-mcp/).

#### Instagram Followers & Following Scraper not working

The Apify team constantly improves Actor performance. If you find bugs or technical issues, please create an issue on the Actor's [Issues tab](https://apify.com/apify/instagram-followers-following-scraper/issues/open).

# Actor input Schema

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

Public Instagram usernames (without @) whose followers or following you want to scrape. Use the <strong>+ Add</strong> button to add more usernames.

## `dataToScrape` (type: `string`):

What do you want to scrape from each account?

## `resultsLimit` (type: `integer`):

Maximum number of followers or following to scrape per username. If you set it to 5, you'll get 5 followers/following for each profile you've included..

## Actor input object example

```json
{
  "usernames": [
    "natgeo"
  ],
  "dataToScrape": "followers",
  "resultsLimit": 20
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing all scraped followers or following accounts

# 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"
    ],
    "resultsLimit": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("apify/instagram-followers-following-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"],
    "resultsLimit": 20,
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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"
  ],
  "resultsLimit": 20
}' |
apify call apify/instagram-followers-following-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,apify/instagram-followers-following-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/zmvXTNnmCOjErk4wh/builds/PYM9pCaNbmM9cPHpX/openapi.json
