# Instagram Followers & Following Scraper \[From 💰$0.99] No Login (`memo23/instagram-following-scraper`) Actor

\[From 💰$0.99/1k] Scrape the followers and following of any public Instagram account — no login, no cookies, zero risk to your account. Get username, full name, verified & private flags, profile pic and profile URL for every account. Followers, following, or both, many profiles per run.

- **URL**: https://apify.com/memo23/instagram-following-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Social media, Lead generation, AI
- **Stats:** 18 total users, 18 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.99 / 1,000 followed account (result)s

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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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 & Following Scraper

<p align="center">
  <img src="https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/instagram-following-logo.png" alt="Instagram Followers & Following Scraper" width="240" />
</p>

**Scrape the followers and following of any public Instagram account — no login, no cookies, zero risk to your own account.** Paste one or more usernames and get back every follower or followed account with username, full name, verification status, privacy flag, profile picture, and profile URL. From **$0.99 per 1,000 results**. Export as JSON, CSV, or Excel.

### Why Use This Scraper?

- **Zero account risk** — you never hand over Instagram cookies or log in, so your account can't be flagged, throttled, or banned. Cheaper cookie-based scrapers make *you* supply a session and take that risk; this one never does.
- **No Instagram account needed** — nothing to configure, no 2FA, no checkpoints.
- **Followers and following in one Actor** — collect either list or both per account, selected per run.
- **Complete lists** — paginates through the entire list, not just the first page.
- **Multiple profiles per run** — pass a whole list of usernames; every row is tagged with its source account.
- **Fast** — pure HTTP. Following lists are paged in parallel; a 600-account list finishes in under a minute.
- **Clean, flat output** — one row per account, tagged with its list `type`, ready for CRM import, influencer analysis, or network graphs.

### Overview

This Actor returns **one dataset row per account** in the requested list(s). For each input username it first resolves the profile, then walks the followers and/or following list page by page. It does **not** return the input user's own profile — it returns the accounts in their lists. Data is retrieved through a third-party Instagram data provider, so no Instagram credentials are ever required.

### Supported Inputs

| Input | What you get |
|---|---|
| A single username (e.g. `zuck`) | Its followers and/or following list, per `dataToScrape` |
| Multiple usernames | Lists for all of them in one run, each row tagged by `sourceUsername` and `type` |

- Handles are accepted with or without the leading `@`, and full profile URLs work too — `https://www.instagram.com/zuck`, `instagram.com/zuck/`, or the mobile `m.instagram.com` variant, with or without query parameters.
- **Not supported:** private accounts (their lists aren't public — the Actor returns an error item for them), hashtags, post/reel URLs.

> Pure HTTP. No browser, no CAPTCHA solver, no cookies.

### Use Cases

| Audience | How they use it |
|---|---|
| Influencer marketers | Map who a creator follows to find collaborators and peer networks |
| Growth / social teams | Build lookalike audiences from a competitor's following graph |
| Researchers / OSINT | Reconstruct interest and affiliation networks from public follows |
| Sales / lead gen | Surface brands and decision-makers a target account follows |

### How It Works

<p align="center">
  <img src="https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-instagram-following.png" alt="How the Instagram Followers & Following Scraper works" width="900" />
</p>

1. **Resolve** — each input username is looked up to get its numeric Instagram ID and follower/following counts.
2. **Paginate** — each requested list is walked page by page until complete (following pages fetch concurrently; follower pages follow a cursor).
3. **Emit** — every account is pushed to the dataset as its own row, tagged with `sourceUsername` and `type` so multi-user, multi-list runs stay separable.

### Input Configuration

| Field | Type | Required | Notes |
|---|---|---|---|
| `usernames` | array of strings | Yes | Public usernames to scrape, with or without `@`. |
| `dataToScrape` | string | No | Dropdown: `followings`, `followers`, or `both`. Default: `followings`. |
| `maxResultsPerUser` | integer | No | Cap results per username per list. Omit for complete lists. |

#### Example input

```json
{
    "usernames": ["zuck", "therock"],
    "dataToScrape": "both",
    "maxResultsPerUser": 500
}
````

### Output Overview

Each item is a flat object describing one account in a requested list, tagged with `type` (`follower` or `following`). Runs stream to the default dataset, exportable as JSON, CSV, Excel, or via the API.

### Output Samples

```json
{
    "sourceUsername": "zuck",
    "type": "following",
    "userId": "185771970",
    "username": "fencer",
    "fullName": "Miles Chamley-Watson",
    "isPrivate": false,
    "isVerified": true,
    "profilePicUrl": "https://scontent.cdninstagram.com/v/t51.2885-19/...",
    "profileUrl": "https://www.instagram.com/fencer/"
}
```

### Key Output Fields

| Field | Description |
|---|---|
| `sourceUsername` | The input account this row came from |
| `type` | `follower` or `following` — which list the row belongs to |
| `userId` | Numeric Instagram ID of the followed account |
| `username` | Handle of the followed account |
| `fullName` | Display name (may be empty) |
| `isPrivate` | Whether the followed account is private |
| `isVerified` | Whether the followed account is verified |
| `profilePicUrl` | URL of the followed account's profile picture |
| `profileUrl` | Direct link to the followed account's Instagram profile |

### FAQ

**Do I need to provide my Instagram cookies or log in?**
No. This Actor never asks for cookies, passwords, or a session — that's the point. Cookie-based scrapers advertise a lower headline price but require *you* to paste your own Instagram session, which puts your account at risk. Here your account stays completely out of it.

**Does it work on private accounts?**
Only public accounts. A private account's lists aren't public, so the Actor emits an error item for it and continues with your other usernames.

**How fresh is the data?**
Fetched live at run time.

**Can I get followers instead of following?**
Yes — pick `followings`, `followers`, or `both` from the "Data to scrape" dropdown. Every row carries a `type` field telling you which list it belongs to.

**What does it cost?**
Pay per result: from **$0.99 per 1,000 accounts** (plan tiers apply), plus a small per-run start fee. No subscription.

### Support

Found a bug or need a field added? Open an issue on the Actor's **Issues** tab in Apify Console, or email <muhamed.didovic@gmail.com>.

### Additional Services

Need a custom Instagram or social-media scraper, enrichment pipeline, or a private version of this Actor? Custom builds available — reach out at <muhamed.didovic@gmail.com>.

### Explore More Scrapers

- Instagram Profile Scraper
- Instagram Comments Scraper
- Instagram Stories Scraper
- Instagram Hashtag Scraper

Browse the full portfolio: [muhamed-didovic.github.io](https://muhamed-didovic.github.io/)

### 🤖 For AI Agents & LLM Apps

**Purpose:** Return the followers and/or following lists of public Instagram accounts.

**Minimal tested input:**

```json
{ "usernames": ["zuck"], "dataToScrape": "followers", "maxResultsPerUser": 50 }
```

**Output:** array of flat objects, one per account. Fields: `sourceUsername`, `type`, `userId`, `username`, `fullName`, `isPrivate`, `isVerified`, `profilePicUrl`, `profileUrl`.

**Behavior & billing:** Pay-per-event — one charge per result. Private input accounts yield one error item instead of rows. Multiple usernames allowed per call; each result carries its `sourceUsername`. No login/cookies required.

### ⚠️ Disclaimer

This Actor accesses publicly available data on Instagram for legitimate research, market-intelligence, and business-analysis purposes. It does not log in, bypass authentication, or access private content. Use of this Actor must comply with Instagram's and Meta Platforms, Inc.'s Terms of Service and all applicable laws, including data-protection regulations (GDPR, CCPA, etc.). The authors are not responsible for any misuse. Users must:

- Respect rate limits and avoid overloading Instagram's infrastructure
- Not use scraped data to violate user privacy or platform terms
- Process any personal data only with a lawful basis and in compliance with their jurisdiction
- Not republish scraped content in violation of copyright

We do not store scraped data; the Actor returns it directly to your Apify dataset for your authorized use. Instagram is a trademark of Meta Platforms, Inc.; this Actor is not affiliated with or endorsed by Meta.

### SEO Keywords

instagram followers scraper, instagram following scraper, scrape instagram followers, scrape instagram following list, instagram following export, who does an instagram user follow, instagram following list download, instagram following to csv, instagram network analysis, instagram graph scraper, instagram osint tool, instagram following api, no login instagram scraper, no cookies instagram scraper, instagram data extraction, influencer network mapping, instagram lookalike audience, social media scraper, instagram public data, competitive intelligence instagram, instagram following json, apify instagram scraper

# Actor input Schema

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

Public Instagram accounts whose followers and/or following lists you want to scrape. Accepts plain handles (zuck), @-handles (@zuck), or profile URLs (https://www.instagram.com/zuck) — one per line, mixed formats are fine. Private accounts return an error item. Example: \["zuck", "https://www.instagram.com/therock"]. Required, no default.

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

Which list to collect for each account: Followings (accounts they follow), Followers (accounts that follow them), or both at once. Default: Followings.

## `maxResultsPerUser` (type: `integer`):

Maximum number of accounts to collect per username per list. Use it to cap cost or sample a profile. Leave empty to fetch complete lists. Example: 500. Default: unlimited.

## `includeHistorical` (type: `boolean`):

Also return accounts seen in this profile's follower/following list on earlier runs that are NOT in it today — i.e. accounts that have since unfollowed or been unfollowed (churn) — tagged source:"archive" with firstSeenAt/lastSeenAt. Off by default. Enabling it fetches live (skips the fast cache) so the churn comparison uses the full current list.

## Actor input object example

```json
{
  "usernames": [
    "zuck",
    "https://www.instagram.com/therock"
  ],
  "dataToScrape": "followings",
  "includeHistorical": false
}
```

# 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": [
        "zuck"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/instagram-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": ["zuck"] }

# Run the Actor and wait for it to finish
run = client.actor("memo23/instagram-following-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": [
    "zuck"
  ]
}' |
apify call memo23/instagram-following-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Instagram Followers & Following Scraper [From 💰$0.99] No Login",
        "description": "[From 💰$0.99/1k] Scrape the followers and following of any public Instagram account — no login, no cookies, zero risk to your account. Get username, full name, verified & private flags, profile pic and profile URL for every account. Followers, following, or both, many profiles per run.",
        "version": "1.0",
        "x-build-id": "ncZqafjGKcSbVh2sG"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~instagram-following-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-instagram-following-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/memo23~instagram-following-scraper/runs": {
            "post": {
                "operationId": "runs-sync-memo23-instagram-following-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/memo23~instagram-following-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-instagram-following-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "usernames"
                ],
                "properties": {
                    "usernames": {
                        "title": "Instagram usernames",
                        "type": "array",
                        "description": "Public Instagram accounts whose followers and/or following lists you want to scrape. Accepts plain handles (zuck), @-handles (@zuck), or profile URLs (https://www.instagram.com/zuck) — one per line, mixed formats are fine. Private accounts return an error item. Example: [\"zuck\", \"https://www.instagram.com/therock\"]. Required, no default.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "dataToScrape": {
                        "title": "Data to scrape",
                        "enum": [
                            "followings",
                            "followers",
                            "both"
                        ],
                        "type": "string",
                        "description": "Which list to collect for each account: Followings (accounts they follow), Followers (accounts that follow them), or both at once. Default: Followings.",
                        "default": "followings"
                    },
                    "maxResultsPerUser": {
                        "title": "Max results per user",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of accounts to collect per username per list. Use it to cap cost or sample a profile. Leave empty to fetch complete lists. Example: 500. Default: unlimited."
                    },
                    "includeHistorical": {
                        "title": "Include historical (churned) accounts",
                        "type": "boolean",
                        "description": "Also return accounts seen in this profile's follower/following list on earlier runs that are NOT in it today — i.e. accounts that have since unfollowed or been unfollowed (churn) — tagged source:\"archive\" with firstSeenAt/lastSeenAt. Off by default. Enabling it fetches live (skips the fast cache) so the churn comparison uses the full current list.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
