# Facebook Page Followers Scraper – Visible Profiles (`scrapingmonkey/facebook-page-followers-scraper`) Actor

Collect publicly visible Facebook Page followers with profile names, IDs, pictures and source Page context. Paginate available results without Facebook login.

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

## Pricing

from $1.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/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

Collect the follower profiles Facebook makes visible for a public Page. **Facebook Page Followers Scraper** returns profile names, IDs, links, pictures and source-Page context, with one row per visible follower.

Start from Page usernames or URLs and set how many result pages to attempt. The result is a visible collection, not a complete audience export or a guarantee that every follower can be retrieved. No Facebook login or cookies are required.

| At a glance | Details |
|---|---|
| 📥 Input | Page usernames, numeric IDs as strings, or Page URLs |
| 📤 Output | Visible follower identities with the source Page and available collection summary |
| 🔐 Login required | No Facebook credentials or cookies |
| 📄 Collection | Pagination; `pagesPerProfile` defaults to 1 |
| 💾 Delivery | One row per distinct follower returned for each source Page; JSON, CSV, Excel or API |

### What the Facebook Page Followers Scraper extracts 🔎

The Actor reads the public Followers collection for each submitted Page and keeps every returned profile connected to its source.

- Follower ID, username when available, display name and profile URL
- Profile picture, visible subtitle, profile type and verification flag
- Source Page identity, Page ID, username, URL and profile picture
- Collection total and any public notice supplied by Facebook
- Additional pages of visible followers when continuation is available

### How to scrape Facebook Page followers 🚀

1. Add the Page usernames or URLs whose visible Followers collections you want to inspect.
2. Set `pagesPerProfile`; start with `1` to inspect the available collection.
3. Start the Actor and inspect the dataset’s `status` column.
4. Export successful rows or connect the results to your workflow.

```json
{
  "inputList": [
    "Meta"
  ],
  "pagesPerProfile": 1
}
```

### Facebook Page followers data fields and output 📦

| Field group | Included data |
|---|---|
| Follower identity | ID, username, name, profile URL and picture |
| Profile context | Subtitle, public profile type and verification flag |
| Source Page | `source_profile.*` identity, URL, picture and verification columns |
| Collection | `source_total` and `notice` |
| Run result | Original input and success or failed status |

Complete representative success item. All names, counts and media addresses below are illustrative, not a live result; every current output field is included.

```json
{
  "input": "HarborCoffee",
  "status": "success",
  "id": "100098765432101",
  "username": "MorganLee",
  "name": "Morgan Lee",
  "url": "https://www.facebook.com/MorganLee/",
  "profile_picture_url": "https://media.example.com/morgan-lee.jpg",
  "subtitle": "Portland, Maine",
  "type": "user",
  "is_verified": false,
  "source_profile.id": "100091234567890",
  "source_profile.page_id": "104567890123456",
  "source_profile.username": "HarborCoffee",
  "source_profile.name": "Harbor Coffee",
  "source_profile.url": "https://www.facebook.com/HarborCoffee/",
  "source_profile.profile_picture_url": "https://media.example.com/harbor-coffee-profile.jpg",
  "source_profile.is_verified": false,
  "source_total": 2800,
  "notice": ""
}
```

The table and JSON use the same flat keys and values, with one row per result. Dots in keys such as `source_profile.name` are literal parts of the field name.

`source_total` is a source-reported collection figure, not the number of rows this run will necessarily return. `notice` retains any collection message supplied by Facebook.

Successful rows may contain empty strings, zeroes, false flags, empty lists or nulls when optional information is unavailable. Do not interpret a default count or flag as a confirmed source fact. Failed rows retain `input`, set `status` to `failed`, and use null result fields.

### Input requirements and coverage ⚙️

| Parameter | Type | Required | Rules |
|---|---|---|---|
| `inputList` | array of strings | Yes | At least one Page username, numeric ID as a string, or supported Page URL; no default target. |
| `pagesPerProfile` | integer | No | Default `1`; minimum `1`, maximum `100`. Maximum result pages to attempt per input. |

Page usernames, numeric IDs as strings, standard Facebook Page URLs, `profile.php?id=...` links and legacy `/pages/NAME/ID` links are accepted. Submit the Page itself, not a follower’s profile or a post link.

The initial results count as page 1. Further pages are requested only while Facebook supplies a usable continuation. Page size is controlled by the source, so this is not an exact record limit.

Provide an array of strings, not URL objects. An invalid overall input structure stops processing without dataset rows; an invalid target within a valid list is recorded as a failed result. The input schema does not set a maximum list length; choose batch sizes appropriate to your run limits.

### Facebook Page followers use cases 🎯

#### Visible audience research

Review the identities and public profile labels shown in a Page’s accessible follower list.

#### Source-linked profile records

Keep each returned follower connected to the Page where it was listed when combining several Page collections.

#### Collection monitoring

Compare repeated exports to see changes in the visible collection while treating each export as a partial public snapshot.

### Pricing and billable follower rows 💰

Check the Actor’s **Pricing** tab for the current model and rate. That configuration is authoritative.

Under dataset-item pricing, saved success and failed rows can count toward charges. Each distinct returned follower saves a success row. Invalid inputs, an empty first collection or a persistently unavailable result page can save failed rows; a later failure does not remove earlier results. Retries do not independently add dataset rows. All details remain in their result row.

### Facebook Page Followers Scraper API and integrations 🔌

Replace `$ACTOR_ID` with the ID shown in the Actor’s API tab and `$APIFY_TOKEN` with your Apify token.

```bash
curl -X POST "https://api.apify.com/v2/acts/$ACTOR_ID/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"inputList":["Meta"],"pagesPerProfile":1}'
```

Start runs through the Apify API, schedules or client libraries. Use webhooks for completion events and export the dataset to spreadsheets, Make, Zapier, storage or your own application.

### Reliability and limits ⚠️

Facebook may expose only a small portion of a Page’s followers or withhold the collection entirely. A Page’s displayed follower count does not imply that the same number of identities is accessible.

The Actor saves available rows as pages are processed and skips repeated profile IDs within the same source collection. Pagination can end before the requested limit when Facebook has no more accessible results. An empty first collection or a request that remains unavailable can create a failed row.

### Frequently asked questions ❓

#### Will I receive every follower of a Page?

No. Only the follower identities exposed in the accessible public collection can be collected, even if the displayed follower total is much larger.

#### Does `pagesPerProfile` specify a follower count?

No. It limits result pages to attempt. Each page can return a different number of profiles, or no accessible results.

#### What does `source_total` represent?

It is the total reported with the source collection. It can be missing or default to zero and is not an export-size guarantee.

#### Can this collect the profiles a Page follows?

Use Facebook Page Following Scraper for that outgoing relationship.

#### Does it include private contact details?

No. It returns the public profile fields present in the collection, without private emails, phone numbers or account access.

### Support, responsible use, and related actors 🛟

For help with missing or unexpected results, open an Issue on this Actor’s Apify page with the run link, a public example input and the fields you expected. Keep tokens and credentials out of support messages.

Use public data only for purposes you are authorized to pursue, respecting privacy, platform terms and content rights.

# Actor input Schema

## `inputList` (type: `array`):

Add one Facebook Page username or full Page URL per item. Every input produces success or failed output.

## `pagesPerProfile` (type: `integer`):

Maximum number of result pages to request for each input.

## Actor input object example

```json
{
  "inputList": [
    "Meta"
  ],
  "pagesPerProfile": 1
}
```

# Actor output Schema

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

Actor dataset results with input and status columns.

# 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 = {
    "inputList": [
        "Meta"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapingmonkey/facebook-page-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 = { "inputList": ["Meta"] }

# Run the Actor and wait for it to finish
run = client.actor("scrapingmonkey/facebook-page-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 '{
  "inputList": [
    "Meta"
  ]
}' |
apify call scrapingmonkey/facebook-page-followers-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapingmonkey/facebook-page-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/bimiSfzFCzSKrM5gV/builds/HXKKcFhWn1EXxVagU/openapi.json
