# Facebook Followers & Following Scraper (`calm_builder/facebook-followers-following-scraper`) Actor

Scrape followers and following lists from any public Facebook profile or page. Export clean JSON or CSV data including names, profile links, verification status, and avatars. Perfect for audience research, lead generation, and influencer analysis.

- **URL**: https://apify.com/calm\_builder/facebook-followers-following-scraper.md
- **Developed by:** [Coder](https://apify.com/calm_builder) (community)
- **Categories:** Social media, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

## Facebook Followers & Following Scraper

Collect public Facebook profile and page **followers** and **following** lists directly from Facebook. Paste profile or page URLs and receive clean JSON records of every follower or account they are following in your Apify dataset.

Use it for **audience research**, **influencer analysis**, **lead generation**, **social mapping**, and **competitive intelligence** — without copying lists manually from profiles.

---

### What you get

Each saved row represents **one person or page** found in a followers or following list:

| Section | What it contains |
| --- | --- |
| **Source** | The original profile URL and ID that you are scraping, and whether this is from their "followers" or "following" list. |
| **Identity** | The discovered person's or page's Facebook ID, name, username, and profile URL. |
| **Media** | Links to their profile picture (both standard and large sizes). |
| **Details** | Verification status (`is_verified`), subtitle (if any), and entity type (User or Page). |

Results stream to the dataset as profiles are processed, so you can preview progress before the run finishes.

---

### Quick start on Apify

1. Open the Actor in the Apify Console.
2. Provide **Facebook profile or page URLs** (vanity URLs, `profile.php?id=`, or direct links to `/followers` or `/following` tabs).
3. Select the **Scrape Mode**: followers, following, or both.
4. Set the **Maximum followers** and **Maximum following** limits per profile (default is `10`).
5. Click **Start** and open the **Dataset** tab when the run finishes.

**Example input:**

```json
{
  "startUrls": [
    {
      "url": "https://www.facebook.com/Cristiano"
    }
  ],
  "scrapeMode": "both",
  "maxFollowers": 50,
  "maxFollowing": 50
}
````

***

### Input parameters

#### Facebook URLs

| | |
| --- | --- |
| **Type** | List of URLs |
| **Format** | Facebook profiles or pages (`facebook.com/username`, `facebook.com/profile.php?id=...`) |
| **Tip** | You can paste the main profile link or direct links to their followers/following tabs. |

#### Scrape Mode

| | |
| --- | --- |
| **Type** | Select |
| **Options** | **Both** (default), **Followers**, **Following** |
| **Description** | Choose which lists to collect from the provided profiles. |

#### Maximum limits

| | |
| --- | --- |
| **maxFollowers** | Maximum number of followers to collect per profile (default `10`). |
| **maxFollowing** | Maximum number of following to collect per profile (default `10`). |

***

### Output overview

#### Dataset structure

- Results are saved to a **single Apify dataset**.
- Each row is one person or page found in the list.
- Use `list_type` to distinguish between followers and following.
- Use `source_profile_url` to group results by the profile you scraped.

***

### Output fields

| Field | Description |
| --- | --- |
| `list_type` | Whether this record came from the "followers" or "following" list. |
| `source_profile_url` | The URL of the target profile being scraped. |
| `source_profile_id` | The Facebook ID of the target profile being scraped. |
| `facebook_id` | The unique Facebook ID of the discovered user or page. |
| `name` | The display name of the user or page. |
| `username` | The Facebook username (vanity handle) if available. |
| `profile_url` | Direct link to the discovered user's or page's profile. |
| `profile_url_type` | The format of the URL (e.g., `vanity`, `people`). |
| `subtitle` | Any subtitle text displayed below their name in the list. |
| `profile_image_url` | URL to the standard-sized profile picture. |
| `is_verified` | Boolean indicating if the profile is verified with a blue badge. |
| `entity_type` | Typically `User` or `Page`. |

***

### Example output

The excerpt below shows a record collected from a "following" list.

```json
{
  "list_type": "following",
  "source_profile_url": "https://www.facebook.com/Cristiano",
  "source_profile_id": "100044296486382",
  "facebook_id": "100064494321045",
  "name": "Dreame Tech",
  "username": "dreametechnology",
  "profile_url": "https://www.facebook.com/dreametechnology",
  "profile_url_type": "vanity",
  "subtitle": "",
  "profile_image_url": "https://scontent.fmad7-1.fna.fbcdn.net/v/...jpg",
  "is_verified": true,
  "entity_type": "User"
}
```

***

### Free plan limits

On the Apify **free plan**, the Actor automatically applies the following limits:

| Limit | Value |
| --- | --- |
| Profiles per run | **2** (only the first 2 URLs in your list) |
| Max followers per profile | **10** |
| Max following per profile | **10** |

Paid Apify plans can use the full input without these caps. If limits apply, the run log will include a warning notice.

***

### Data quality and limitations

**Public lists only**\
The Actor can only scrape followers and following lists that are public. If a user has restricted their friends/followers list privacy settings, the Actor will not be able to retrieve them and will log a warning.

**Data availability**\
Information like `subtitle` or `username` depends on what Facebook publicly exposes in the list interface. If it's missing, it will be blank or empty.

**Scale and timeouts**\
Scraping very large followers lists (e.g., millions of followers) is time-consuming and may hit Facebook's pagination limits. It is recommended to use reasonable limits unless you absolutely need the entire list.

***

### Tips for best results

1. **Test with small limits** — Start with `maxFollowers: 50` to verify your input URLs work before launching a massive run.
2. **Filter by `list_type`** — When scraping both, you can easily filter your resulting dataset exports (JSON/CSV) by the `list_type` column to separate followers from following.
3. **Use IDs for mapping** — Connect the `source_profile_id` to the `facebook_id` to build social network graphs.
4. **Proxy configuration** — Ensure you are running with residential proxies for the best reliability.

***

### Support

For Actor-specific issues, use the **Issues** tab on the Apify store listing or contact the publisher through Apify.

For platform questions (runs, billing, API, schedules), see [Apify documentation](https://docs.apify.com) and Apify support.

# Actor input Schema

## `startUrls` (type: `array`):

Add one or more Facebook profile or page links. Supported formats include vanity URLs (for example `https://www.facebook.com/Cristiano`), direct tab links (`/followers` or `/following`), and ID-based profile links (`https://www.facebook.com/profile.php?id=61551448436559`). If a list is unavailable or restricted, the Actor logs a warning for that profile and continues with the rest.

## `scrapeMode` (type: `string`):

Choose whether to collect followers, following, or both lists for each input profile.

## `maxFollowers` (type: `integer`):

Maximum number of followers to collect from each input profile. Used when collecting followers or both lists.

## `maxFollowing` (type: `integer`):

Maximum number of following entries to collect from each input profile. Used when collecting following or both lists.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.facebook.com/Cristiano"
    },
    {
      "url": "https://www.facebook.com/profile.php?id=61551448436559"
    }
  ],
  "scrapeMode": "both",
  "maxFollowers": 10,
  "maxFollowing": 10
}
```

# Actor output Schema

## `results` (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 = {
    "startUrls": [
        {
            "url": "https://www.facebook.com/Cristiano"
        },
        {
            "url": "https://www.facebook.com/profile.php?id=61551448436559"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("calm_builder/facebook-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 = { "startUrls": [
        { "url": "https://www.facebook.com/Cristiano" },
        { "url": "https://www.facebook.com/profile.php?id=61551448436559" },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("calm_builder/facebook-followers-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 '{
  "startUrls": [
    {
      "url": "https://www.facebook.com/Cristiano"
    },
    {
      "url": "https://www.facebook.com/profile.php?id=61551448436559"
    }
  ]
}' |
apify call calm_builder/facebook-followers-following-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Facebook Followers & Following Scraper",
        "description": "Scrape followers and following lists from any public Facebook profile or page. Export clean JSON or CSV data including names, profile links, verification status, and avatars. Perfect for audience research, lead generation, and influencer analysis.",
        "version": "0.0",
        "x-build-id": "wFfFN3B6f082zB3J9"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/calm_builder~facebook-followers-following-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-calm_builder-facebook-followers-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/calm_builder~facebook-followers-following-scraper/runs": {
            "post": {
                "operationId": "runs-sync-calm_builder-facebook-followers-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/calm_builder~facebook-followers-following-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-calm_builder-facebook-followers-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": [
                    "startUrls",
                    "scrapeMode",
                    "maxFollowers",
                    "maxFollowing"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Facebook profile or page links",
                        "minItems": 1,
                        "type": "array",
                        "description": "Add one or more Facebook profile or page links. Supported formats include vanity URLs (for example `https://www.facebook.com/Cristiano`), direct tab links (`/followers` or `/following`), and ID-based profile links (`https://www.facebook.com/profile.php?id=61551448436559`). If a list is unavailable or restricted, the Actor logs a warning for that profile and continues with the rest.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "scrapeMode": {
                        "title": "Lists to collect",
                        "enum": [
                            "followers",
                            "following",
                            "both"
                        ],
                        "type": "string",
                        "description": "Choose whether to collect followers, following, or both lists for each input profile.",
                        "default": "both"
                    },
                    "maxFollowers": {
                        "title": "Maximum followers per profile",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Maximum number of followers to collect from each input profile. Used when collecting followers or both lists.",
                        "default": 10
                    },
                    "maxFollowing": {
                        "title": "Maximum following per profile",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Maximum number of following entries to collect from each input profile. Used when collecting following or both lists.",
                        "default": 10
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
