# Facebook Pages Scraper (`data_minds/facebook-pages-scraper`) Actor

Facebook Pages Scraper extracts emails, phones, likes, followers, business hours, social links and Ad Library data — scrape Facebook page details in bulk for lead generation, local business data and competitor research

- **URL**: https://apify.com/data\_minds/facebook-pages-scraper.md
- **Developed by:** [Data Minds](https://apify.com/data_minds) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Facebook Pages Scraper: Contact Details, Followers, Ads & Business Data

**Scrape Facebook page data** in bulk — emails, phones, websites, likes, followers, business hours, social links, page transparency, and Ad Library status from public Facebook Pages.

🔗 **Paste Facebook Page URLs or usernames → Start → watch page profiles stream into Output in real time.**

***

### 📑 Table of Contents

- [What Is Facebook Pages Scraper?](#-what-is-facebook-pages-scraper)
- [What Data Can You Extract From Facebook Pages?](#-what-data-can-you-extract-from-facebook-pages)
- [How It Works](#-how-it-works)
- [How to Use (Apify Console)](#-how-to-use-apify-console)
- [Input Parameters](#-input-parameters)
- [Output Example](#-output-example)
- [Related Actors & Workflows](#-related-actors--workflows)
- [Frequently Asked Questions](#-frequently-asked-questions)
- [Support & Contact](#-support--contact)

***

### 🎁 What Is Facebook Pages Scraper?

**Facebook Pages Scraper** is an [Apify Actor](https://apify.com/actors) built to **scrape Facebook pages without login** for public Page profiles. It is a purpose-built **Facebook page scraper** / **Facebook business page scraper**: paste Page URLs, usernames, or IDs, and get structured **Facebook page details** — identity, engagement stats, **Facebook page contact** fields, business profile, social links, photos, transparency signals, and Ad Library status.

Use it for **Facebook lead generation**, local business enrichment, **Facebook competitor research**, agency reporting, and CRM append. Because it runs on the **Apify platform**, you get scheduling, run monitoring, a REST/MCP-friendly API for every **Facebook page dataset**, webhooks, and export to JSON/CSV/Excel — so a **bulk Facebook page scraper** fits Sheets, Airtable, Make, Zapier, or your own stack.

This is **not** a manual copy-paste workflow. It is a practical **Facebook page info API**-style pipeline for teams that need repeatable **Facebook page enrichment**, clean rows, and sectioned Output views — Overview, Contact, Engagement, Business, Media, Social, and Transparency & Ads.

***

### 📊 What Data Can You Extract From Facebook Pages?

For **Facebook local business data** and **Facebook page enrichment API** workflows, one run can deliver:

- 🏷️ **Identity** — page name, username, category, verified badge, page ids (**Facebook page id extractor** use cases).
- 📈 **Engagement** — likes, followers, talking-about, check-ins, ratings / recommend signals (**Facebook page likes scraper** / **Facebook page followers scraper**).
- 📧 **Contact & location** — email, phone, website, address, map link, Messenger (**Facebook page email scraper**, **Facebook page phone number scraper**, **Facebook page address scraper**, **Facebook page website scraper**).
- 🏢 **Business profile** — intro, hours, price range, services, type (**Facebook business hours scraper**, **Facebook page category scraper**).
- 🔗 **Social links** — Instagram, TikTok, X, YouTube, LinkedIn, and more (**Facebook page social links scraper**).
- 🖼️ **Media** — profile picture, cover photo (**Facebook page profile picture scraper**).
- 🛡️ **Transparency & ads** — creation date/year, confirmed owner signals, ad status, Ad Library URL (**Facebook page transparency scraper**, **Facebook ad library page scraper**, **Facebook page creation date**).

Use **scrape Facebook page data** runs for outbound lists, market maps, or competitor dossiers — anywhere you need structured **Facebook page contact scraper** results at scale.

***

### 🔧 How It Works

1. **Add your pages.** Paste Facebook Page URLs (bulk edit / remote text lists supported) and/or usernames / page IDs.
2. **Pick data options.** Language, About details, Ad Library, verified badge display, dedupe, and caps.
3. **The Actor resolves each page.** Public profile fields are collected into one row per page.
4. **Optional layers attach.** About/business details and Ad Library / transparency signals when enabled.
5. **Results stream live.** Rows appear in Output as soon as each page finishes — with dedicated views per section.
6. **Export or automate.** Download JSON/CSV/Excel or pull via API / schedules for ongoing enrichment.

***

### 🚀 How to Use (Apify Console)

1. Open this Actor in [Apify Console](https://console.apify.com/actors).
2. Paste **Facebook Page URLs** into **startUrls** (and optional usernames/IDs into **pages**).
3. Optionally set language, About / Ad Library toggles, max pages, and concurrency.
4. Leave proxy on automatic escalation, or force your own proxy.
5. Click **Start** and watch the **Output** tab fill with **Facebook page details**.
6. Switch views (Overview, Contact, Engagement, Business, Media, Social, Transparency & Ads, Issues) and export.

#### 🤖 Quick API example

```bash
curl -X POST "https://api.apify.com/v2/acts/<ACTOR_ID>/run-sync-get-dataset-items" \
     -H "Authorization: Bearer $APIFY_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
       "startUrls": [
         {"url": "https://www.facebook.com/MrBean"},
         {"url": "https://www.facebook.com/humansofnewyork"}
       ]
     }'
```

***

### 🧩 Input Parameters

#### 📘 Pages to Scrape

| Field | Type | Description | Default |
|---|---|---|---|
| `startUrls` | array | Facebook Page URLs — required core input for this **Facebook pages scraper**. Bulk edit / remote lists supported. | example prefill |
| `pages` | array | Extra usernames, numeric IDs, or URLs merged with `startUrls`. | `[]` |
| `maxItems` | integer | Cap how many pages to process (`0` = no limit). | `0` |

#### 📦 Data Options

| Field | Type | Description | Default |
|---|---|---|---|
| `language` | string | UI locale for page text / number parsing (~110 locales). | `en-US` |
| `fetchAboutSubpages` | boolean | Pull deeper About / business details. | `true` |
| `includeAdLibrary` | boolean | Attach Ad Library / ads status signals. | `true` |
| `showVerifiedBadge` | boolean | Include verified badge when present. | `true` |
| `normalizeNumbers` | boolean | Normalize likes/followers to integers + display text. | `true` |
| `deduplicate` | boolean | Dedupe overlapping URLs / usernames. | `true` |

#### ⚡ Proxy & Performance

| Field | Type | Description | Default |
|---|---|---|---|
| `proxyConfiguration` | object | Optional; starts direct and can escalate if blocked. | no proxy |
| `concurrency` | integer | Parallel pages. | `5` |
| `requestDelay` | number | Polite delay between requests (seconds). | `0.3` |
| `maxRetries` | integer | Retries per request. | `3` |
| `requestTimeoutSecs` | integer | Per-request timeout. | `45` |

***

### 📦 Output Example

Each Facebook Page becomes **one JSON object** in your dataset as soon as it is scraped.

```json
{
  "pageName": "Humans of New York",
  "pageUsername": "humansofnewyork",
  "category": "Public figure",
  "likes": 18400000,
  "followers": 18500000,
  "talkingAbout": 12000,
  "verified": true,
  "email": null,
  "phone": null,
  "website": "https://www.humansofnewyork.com",
  "address": null,
  "intro": "New York City, one story at a time.",
  "profilePhotoUrl": "https://…",
  "coverPhotoUrl": "https://…",
  "pageUrl": "https://www.facebook.com/humansofnewyork",
  "adStatus": "Not currently running ads",
  "adLibraryUrl": "https://www.facebook.com/ads/library/?…",
  "success": true,
  "scrapedAt": "2026-09-15T12:00:00.000Z"
}
```

#### 🗂️ Dataset views

| View | What you see |
|---|---|
| 🔎 **Overview** | Name, stats, contact, ads status — at a glance |
| 📇 **Contact & Location** | Email, phone, website, address, Messenger |
| 📈 **Engagement & Stats** | Likes, followers, talking-about, rating, verified |
| 🏢 **Business Info** | Category, hours, price range, services |
| 🖼️ **Media** | Profile & cover photos |
| 🔗 **Social Links** | Instagram, TikTok, X, YouTube, and more |
| 🛡️ **Transparency & Ads** | Creation date, owner signals, Ad Library |
| ⚠️ **Issues** | Failed / not-found pages with reasons |

A combined ranked/ordered list is also saved to the run’s key-value store as **`OUTPUT`**.

***

### 🔗 Related Actors & Workflows

| Goal | How this Actor helps |
|---|---|
| **Bulk Facebook page scraper** for lead lists | Paste many `startUrls` / `pages` |
| **Facebook page email scraper** / phone enrichment | Use Contact view + CSV export |
| **Facebook competitor research tool** | Compare followers, ads status, categories |
| **Facebook ad library page scraper** signals | Keep `includeAdLibrary` on |
| Reels / short-video content (not page profiles) | Use the sibling **Facebook Reels Scraper** |

If you only need one page opened manually, Facebook itself is enough. This Actor is for teams that need structured **Facebook page details extractor** output, repeatable **Facebook page dataset Apify** runs, and automation — including **Facebook pages MCP** / API integrations.

***

### ❓ Frequently Asked Questions

#### 📘 What is a Facebook pages scraper?

A **Facebook pages scraper** collects public Page profile fields — contact, engagement, business info, and ads/transparency signals — into a structured dataset. This Actor is built to **scrape Facebook page data** for enrichment and research.

#### 📧 Can it find Facebook page emails and phone numbers?

When a Page publishes them publicly, yes — they appear in Contact fields. That covers common **Facebook page email scraper** and **Facebook page phone number scraper** needs. Many Pages simply do not publish contact fields.

#### 📈 Does it scrape Facebook page likes and followers?

Yes. Likes, followers, talking-about, and related stats are core **Facebook page likes scraper** / **Facebook page followers scraper** fields, returned as numbers and display text when normalization is on.

#### 🛡️ What about Facebook page transparency and Ad Library?

Enable Ad Library / transparency options to attach creation-date style signals, owner transparency cues, ad status, and an Ad Library URL — useful for **Facebook page transparency scraper** and **Facebook ad library page scraper** research.

#### 🔓 Can I scrape Facebook pages without login?

Yes for public Pages — this Actor is designed to **scrape Facebook pages without login**. Private or restricted content is out of scope.

#### 🧹 How do I run a bulk Facebook page scraper from a CRM list?

Paste many Page URLs or usernames, keep dedupe on, optionally set `maxItems`, and export CSV/Excel for CRM import. That is the standard **Facebook lead generation scraper** path.

#### 🛡️ Is scraping Facebook Pages legal?

This Actor works with **publicly available** Facebook Page information. You remain responsible for Facebook’s terms, applicable laws, and personal-data rules (GDPR/CCPA and similar). This is not legal advice.

#### ⏱️ Can I schedule ongoing Facebook page enrichment?

Yes. Apify Schedules refresh **Facebook local business data**, competitor profiles, and contact fields on any cron you set.

#### 🆔 Can I extract Facebook page IDs?

Yes — page id fields are included for **Facebook page id extractor** / matching workflows alongside username and URL.

***

### 🙋 Support & Contact

Found a bug, need a new field, or want a **custom solution** built around this **Facebook pages scraper** / **Facebook page contact scraper**?

Reach out via the **Issues** tab on this Actor’s Apify Store page, or email **[hello.dataminds@gmail.com ](mailto:hello.dataminds@gmail.com)** for custom builds, integrations, and feature requests.

Feedback is welcome — this Actor is actively maintained for teams that need reliable **Facebook page details**, **Facebook business page scraper** workflows, and clean **Facebook page enrichment** at scale.

# Changelog

This Actor's version history is a separate document: https://apify.com/data\_minds/facebook-pages-scraper/changelog.md

# Actor input Schema

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

✨ One or more Facebook Page URLs — e.g. <code>https://www.facebook.com/MrBean</code>. Bulk input supported: click <strong>Bulk edit</strong> to paste a whole list (one per line) or link a text file. Works with <code>facebook.com/\<username></code>, <code>profile.php?id=…</code> and <code>facebook.com/pages/…</code> links.

## `pages` (type: `array`):

Optional extra list — one entry per line, bulk-paste friendly. Accepts bare usernames (<code>humansofnewyork</code>), numeric page IDs (<code>100044139564343</code>) or full URLs. Merged with the URLs above.

## `maxItems` (type: `integer`):

Stop after this many pages (handy for a quick test run). <code>0</code> = no limit — scrape every page you provided.

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

Language Facebook renders the page in — changes the text of category names, ad status, dates and other labels in the output. Default: English (US).

## `fetchAboutSubpages` (type: `boolean`):

ON (recommended): also collects the page's About sections — email, phone, website, address, business hours, price range, services, rating, page creation date, ad status and confirmed owner. OFF: only the basic profile card (name, likes, followers, bio, photos) — roughly 3× faster per page.

## `includeAdLibrary` (type: `boolean`):

Adds the page's Ad Library ID, a ready-to-open Ad Library URL and the current ad-running status (<code>pageAdLibrary</code>, <code>pageAdLibraryUrl</code>, <code>ad\_status</code>).

## `showVerifiedBadge` (type: `boolean`):

Report whether the page carries Facebook's blue verified badge (<code>isVerified</code> / <code>verified</code>). Turn OFF to leave those fields empty.

## `normalizeNumbers` (type: `boolean`):

ON: likes/followers are returned as plain integers (<code>141854789</code>) with the display text kept alongside (<code>likesText</code>: "141,854,789 likes"). OFF: the counters keep their original display text.

## `deduplicate` (type: `boolean`):

Skip a page that appears more than once across your URL and username lists (e.g. <code>facebook.com/MrBean</code> and <code>MrBean</code>). Recommended.

## `proxyConfiguration` (type: `object`):

🚦 Default is NO proxy — the Actor talks to Facebook directly. If a request ever gets rejected or blocked, it automatically escalates step-by-step: 🚫 no proxy → 🖥️ datacenter proxy → 🏠 residential proxy (retrying up to 3× on residential), then sticks with residential for the rest of the run. Every escalation is logged clearly. Force a tier yourself here if you already know what you need.

## `concurrency` (type: `integer`):

How many pages are fetched at the same time. Higher = faster, but more likely to trip Facebook's rate limits. 3–8 is a good range.

## `requestDelay` (type: `number`):

Minimum pause between any two requests across the whole run. Raise it if you see rate-limit warnings in the log.

## `maxRetries` (type: `integer`):

How many times a failed/blocked request is retried (with backoff) on each proxy tier before escalating or giving up. On the residential tier at least 3 attempts are always made.

## `requestTimeoutSecs` (type: `integer`):

Give up on a single request after this many seconds.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.facebook.com/MrBean",
    "https://www.facebook.com/humansofnewyork"
  ],
  "pages": [
    "humansofnewyork",
    "nasaearth",
    "https://www.facebook.com/UNclimatechange"
  ],
  "maxItems": 0,
  "language": "en-US",
  "fetchAboutSubpages": true,
  "includeAdLibrary": true,
  "showVerifiedBadge": true,
  "normalizeNumbers": true,
  "deduplicate": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "concurrency": 5,
  "requestDelay": 0.3,
  "maxRetries": 3,
  "requestTimeoutSecs": 45
}
```

# Actor output Schema

## `pages` (type: `string`):

Every scraped Facebook Page, one JSON object per page with every field.

## `overview` (type: `string`):

Headline fields per page — name, category, likes, followers, rating, contact, ad status.

## `contact` (type: `string`):

Emails, phones, websites, Messenger, address and map link per page.

## `engagement` (type: `string`):

Likes, followers, following, talking-about, check-ins and rating per page.

## `business` (type: `string`):

Category, intro, business hours, price range and services per page.

## `media` (type: `string`):

Profile picture, cover photo and profile-photo permalink per page.

## `social` (type: `string`):

Instagram, TikTok, X, YouTube, LinkedIn and other linked profiles per page.

## `transparency` (type: `string`):

Page IDs, creation date, confirmed owner, ad status and Ad Library link per page.

## `issues` (type: `string`):

Scrape status and error message per page.

## `outputJson` (type: `string`):

Every page record from this run in one JSON array, in input order — the classic output.json shape — saved to the run's key-value store under the 'OUTPUT' key.

# 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": [
        "https://www.facebook.com/MrBean",
        "https://www.facebook.com/humansofnewyork"
    ],
    "pages": [],
    "language": "en-US",
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("data_minds/facebook-pages-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": [
        "https://www.facebook.com/MrBean",
        "https://www.facebook.com/humansofnewyork",
    ],
    "pages": [],
    "language": "en-US",
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("data_minds/facebook-pages-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 '{
  "startUrls": [
    "https://www.facebook.com/MrBean",
    "https://www.facebook.com/humansofnewyork"
  ],
  "pages": [],
  "language": "en-US",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call data_minds/facebook-pages-scraper --silent --output-dataset

```

## MCP server setup

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