# Facebook Followers Scraper (`harpoon/fb-followers-scraper`) Actor

Scrape the followers of Facebook profiles and pages by URL. Pushes one dataset item per follower.

- **URL**: https://apify.com/harpoon/fb-followers-scraper.md
- **Developed by:** [Harpoon](https://apify.com/harpoon) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 1,000 followers

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/actors/running/actors-in-store.md#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

## Facebook Followers Scraper

Export the people who follow any Facebook profile or page — with their name, profile link, picture, verification badge, and subtitle — as clean, ready-to-use rows.

- **Followers, straight from a URL.** Paste a profile or page URL and get its public follower list.
- **Public data only.** No login, cookies, or account required.
- **Ready to join.** Every row carries a stable profile link plus the `target_id`/`target_url` it came from.
- **One row per follower.** Export to JSON, CSV, Excel, or XML straight from the dataset.

> Built for audience research, influencer vetting, community mapping, and enriching CRM or AI datasets.

### What can Facebook Followers Scraper do?

| Target | What it returns |
|--------|-----------------|
| Profile URL | The account's **followers**. |
| Page URL | The page's **followers**, where the list is public. |
| Numeric id | Target a profile/page by its numeric Facebook id. |

You control **how many** followers come back per target (`max_items`), and can request the list in your locale (`language`).

Every run also gives you export to JSON / CSV / Excel / XML, API and webhook access, scheduled runs, and MCP access for AI agents.

### What data can you get?

One row per follower, with these fields:

| Group | Fields |
|-------|--------|
| **Follower** | `id`, `name`, `url`, `profile_picture`, `is_verified` |
| **Context** | `subtitle` (bio/role line, when shown) |
| **Source** | `target_id`, `target_url`, `target_name` |

### How to use Facebook Followers Scraper

1. [Create](https://console.apify.com/sign-up) a free Apify account.
2. Open **Facebook Followers Scraper** in Apify Console.
3. Paste one or more profile or page URLs into **Profiles / Pages**.
4. Optionally set **Max followers per target**.
5. Click **Start** and wait for the run to finish.
6. Download from **Storage ▸ Dataset** as JSON, CSV, Excel, or XML.

### Input

Paste URLs — one per line, or a list via **Bulk edit**:

- **URL** — e.g. `https://www.facebook.com/zuck`.
- **Numeric id** — e.g. `4`.

#### Results

- `max_items` — hard cap on followers per target (default `100`). The final page is trimmed so the total never exceeds it.

#### Locale

- `language` — locale used when requesting the list.

**Example input**

```json
{
  "targets": ["https://www.facebook.com/zuck"],
  "max_items": 100,
  "language": "en"
}
```

See the **Input** tab above for every field and its default.

### Output

Results land in the default dataset under **Storage ▸ Dataset**. A built-in **Overview** view (picture, name, profile link, verification, source, subtitle) makes the data readable immediately. Download as JSON, CSV, Excel, or XML.

**Sample follower**

```json
{
  "id": "pfbid02RaUriW74SZzbbfF1xtrPkY86F8mKoTR41YgJnEtgx88nffDPV1tnfPJeDzoMBMHCl",
  "name": "Danieo Vitori",
  "url": "https://www.facebook.com/people/Danieo-Vitori/pfbid02RaUriW74SZzbbfF1xtrPkY86F8mKoTR41YgJnEtgx88nffDPV1tnfPJeDzoMBMHCl/",
  "profile_picture": "https://scontent.../picture.jpg",
  "is_verified": false,
  "target_id": "4",
  "target_url": "https://www.facebook.com/zuck/followers",
  "target_name": "Mark Zuckerberg"
}
```

Some rows also include a `subtitle` (a bio or role line) when the source shows one. Field names follow the source's lowercase snake\_case names.

### Use cases

1. **Audience research** — pull a profile's or page's followers and analyze the mix from the subtitle and profile URLs.
2. **Influencer vetting** — check a profile's follower list and verified accounts before a partnership.
3. **Community mapping** — understand the audience around a niche account.
4. **CRM / outreach lists** — join each follower back to the source via `target_url` and enrich with profile links.
5. **AI / LLM datasets** — structured, de-duplicated rows ready for analysis.

### How much does it cost?

Facebook Followers Scraper is priced **per result** (pay-per-result) at **$1.00 per 1,000 followers** ($0.001 each), plus a small Apify platform fee. Starting a run is free.

- 1,000 followers ≈ **$1.00** in actor cost.
- 10,000 followers ≈ **$10.00**.
- Profiles with no public list are not charged.

See the **Pricing** tab for plan discounts.

### FAQ

**Do I need a Facebook account, login, or cookies?**
No. The actor reads publicly visible follower lists — no login, cookies, or account required.

**Why did a profile or page return no followers?**
Not every account makes its follower list public. If a list is private, the target returns nothing (and is not charged).

**How many followers can I get?**
`max_items` (default `100`) caps the total per target. Raise it for more; very large lists take longer.

**Why do the numbers differ from what I see when logged in?**
Public views can show fewer followers (and a different order) than a logged-in session. The dataset reflects what is publicly visible at run time.

**Does it scrape group members too?**
No. This actor handles followers only. Group member lists are members-only and are not supported.

**Is it legal to extract this data?**
Results contain personal data, protected by GDPR and similar laws. Only scrape personal data when you have a legitimate reason, and follow the terms of the data source and your local laws.

**Can I use it from the API, SDKs, or an AI agent?**
Yes — use the **API** tab for JavaScript, Python, REST, and CLI examples, or connect the Apify MCP server to call it from Claude, ChatGPT, or another MCP client.

**Something isn't working.**
Check that each entry is a valid profile/page URL or numeric id. If it still fails, open an issue in the **Issues** tab with your input JSON.

### Notes and limitations

- **Followers are public for many profiles, but not all** — accounts that hide their follower list return nothing.
- **Pages may hide their follower list** — Pages are supported where the list is public.
- **`max_items` is a hard cap** — the final page is trimmed so the total is never exceeded.
- **Ordering can be ranked, not strictly by sign-up order** — the list order comes from the source and can differ between runs.
- **Counts can differ from the logged-in view** — some followers are hidden or viewer-specific.
- **Personal data** — names, profile links, and pictures are personal data. Handle the results accordingly.

### Run locally

```bash
go run ./cmd/actor
```

### Support

Found a bug or have feedback? Open an issue in the **Issues** tab, or email **islam.tazerout@outlook.com**.

# Actor input Schema

## `targets` (type: `array`):

Profile/page URLs or numeric ids, e.g. <code>https://www.facebook.com/zuck</code> or <code>4</code>. Add one per line, or paste a list with <b>Bulk edit</b>. Duplicates are removed automatically.

## `max_items` (type: `integer`):

How many followers to fetch per profile/page. The final page is trimmed so the total never exceeds this number.

## `language` (type: `string`):

Locale used when requesting the list. Names and labels are returned in the language Facebook provides for that locale.

## Actor input object example

```json
{
  "targets": [
    "https://www.facebook.com/zuck",
    "4"
  ],
  "max_items": 100,
  "language": "en"
}
```

# Actor output Schema

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

One row per follower. Export as JSON, CSV, Excel, or XML.

# 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 = {
    "targets": [
        "https://www.facebook.com/zuck"
    ],
    "max_items": 100,
    "language": "en"
};

// Run the Actor and wait for it to finish
const run = await client.actor("harpoon/fb-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 = {
    "targets": ["https://www.facebook.com/zuck"],
    "max_items": 100,
    "language": "en",
}

# Run the Actor and wait for it to finish
run = client.actor("harpoon/fb-followers-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 '{
  "targets": [
    "https://www.facebook.com/zuck"
  ],
  "max_items": 100,
  "language": "en"
}' |
apify call harpoon/fb-followers-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,harpoon/fb-followers-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/pOr0fevuGLBCgM7r0/builds/9qG9kJmAyQAdOHZYA/openapi.json
