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

Export public Facebook Page profile data, contacts, follower and like counts, profile images, and visible post links from URLs or handles.

- **URL**: https://apify.com/fetch\_cat/facebook-pages-scraper.md
- **Developed by:** [Hanna Nosova](https://apify.com/fetch_cat) (community)
- **Categories:** Social media, Lead generation, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.07 / 1,000 facebook page or post records

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.

- **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 Pages Scraper

Export public Facebook Page profile data, contacts, follower and like counts, profile images, and visible public post links from Facebook Page URLs or handles.

Use Facebook Pages Scraper to build clean datasets for lead generation, brand monitoring, competitor research, social reporting, and AI workflows without Facebook cookies, logins, or app tokens.

### At a glance

- **Input:** Facebook Page URLs or handles such as `NASA`, `Meta`, or `https://www.facebook.com/NASA`.
- **Output:** Page profile rows plus optional visible public post-link rows.
- **Best for:** Public Page directories, competitor monitoring, contact discovery, and follower or like tracking.
- **Exports:** Apify dataset formats including JSON, CSV, Excel, XML, HTML, RSS, API, webhooks, and MCP.
- **Access model:** Public logged-out data only; no private pages, comments, reactions, or login-only fields.

### Ready-to-run examples

Use these saved Store examples as starting points. Open any example to prefill the Actor input, then adjust URLs, keywords, limits, or filters for your own run.

- **[Scrape Restaurant Brand Facebook Pages](https://apify.com/fetch_cat/facebook-pages-scraper/examples/scrape-restaurant-brand-facebook-pages)**
- **[Scrape Nonprofit Facebook Page Profiles](https://apify.com/fetch_cat/facebook-pages-scraper/examples/scrape-nonprofit-facebook-pages)**
- **[Scrape Sports Team Facebook Page Profiles](https://apify.com/fetch_cat/facebook-pages-scraper/examples/scrape-sports-team-facebook-pages)**
- **[Scrape Museum Facebook Page Profiles](https://apify.com/fetch_cat/facebook-pages-scraper/examples/scrape-museum-facebook-pages)**
- **[Scrape University Facebook Page Profiles](https://apify.com/fetch_cat/facebook-pages-scraper/examples/scrape-university-facebook-pages)**
- **[Scrape Airline Facebook Page Profiles](https://apify.com/fetch_cat/facebook-pages-scraper/examples/scrape-airline-facebook-pages)**
- **[View all ready-to-run examples](https://apify.com/fetch_cat/facebook-pages-scraper/examples)** (10 examples)

### What can it do?

- **Export Facebook Page data:** collect public Page names, handles, IDs, descriptions, categories, images, and source URLs.
- **Collect public contact signals:** save websites, phones, emails, and addresses when Facebook exposes them to logged-out visitors.
- **Track Page metrics:** keep raw and parsed likes, followers, and talking-about counts for monitoring.
- **Download visible post links:** save public post URLs and IDs when links are visible, without claiming full post text, comments, reactions, or shares.
- **Use as a Facebook Pages API workflow:** run through Apify API, export CSV/Excel/JSON, schedule monitoring, or connect AI agents through Apify MCP.

### Input example

```json
{
  "startUrls": [
    { "url": "https://www.facebook.com/NASA" },
    { "url": "https://www.facebook.com/Meta" }
  ],
  "pageUrls": ["NatGeo"],
  "includePosts": true,
  "maxPostsPerPage": 5,
  "proxyConfiguration": { "useApifyProxy": false }
}
```

### Output example

Page profile record:

```json
{
  "recordType": "page",
  "input": "https://www.facebook.com/NASA",
  "url": "https://www.facebook.com/NASA",
  "handle": "NASA",
  "pageId": "100044561550831",
  "name": "NASA - National Aeronautics and Space Administration",
  "description": "Explore the universe and discover our home planet.",
  "likesText": "28,636,250 likes",
  "likesCount": 28636250,
  "talkingAboutText": "114,817 talking about this",
  "talkingAboutCount": 114817,
  "profileImageUrl": "https://...",
  "postUrl": null,
  "scrapedAt": "2026-06-22T00:00:00.000Z"
}
```

Visible post-link record:

```json
{
  "recordType": "post",
  "input": "https://www.facebook.com/NASA",
  "url": "https://www.facebook.com/NASA",
  "name": "NASA - National Aeronautics and Space Administration",
  "postUrl": "https://www.facebook.com/NASA/posts/123456789",
  "postId": "123456789",
  "text": null,
  "reactionCount": null,
  "commentCount": null,
  "shareCount": null,
  "scrapedAt": "2026-06-22T00:00:00.000Z"
}
```

### Common workflows

- **Export Facebook Page data:** Add public Page URLs or handles and get structured records for names, titles, descriptions, profile images, visible counts, and audit timestamps.
- **Collect business contacts:** Save public websites, phones, and emails when Facebook exposes them to logged-out visitors.
- **Monitor competitors:** Schedule recurring runs and compare page names, descriptions, follower counts, and visible post links over time.
- **Track engagement metrics:** Keep both raw text and parsed counts for likes, followers, and talking-about metrics.
- **Use as an API alternative:** Run through Apify Console, API, SDKs, webhooks, schedules, and the official Apify MCP server.

### Data extracted

| Data group | Fields |
| --- | --- |
| Profile | `recordType`, `input`, `url`, `handle`, `pageId`, `name`, `title`, `description`, `category` |
| Contacts | `website`, `phone`, `email`, `address` |
| Engagement | `likesText`, `likesCount`, `followersText`, `followersCount`, `talkingAboutText`, `talkingAboutCount` |
| Images | `profileImageUrl`, `coverImageUrl` |
| Post links | `postUrl`, `postId` for visible public post-link records |
| Audit | `scrapedAt` |

Reserved post-detail fields such as `text`, `timestampText`, `timestampIso`, `mediaUrls`, `reactionCount`, `commentCount`, and `shareCount` are currently null or empty. They are included for output stability and future expansion, not as a promise of full post extraction.

### Input configuration

| Setting | JSON key | What to enter | Notes |
| --- | --- | --- | --- |
| Facebook Page URLs | `startUrls` | Full public Facebook Page URLs | Best for prepared URL lists and Apify's request-list editor |
| Facebook Page handles or URLs | `pageUrls` | Handles such as `NASA` or full URLs | Useful for quick API, SDK, and manual input |
| Include visible public post links | `includePosts` | `true` or `false` | Saves post-link records only when links are visible publicly |
| Maximum post links per Page | `maxPostsPerPage` | Number from `0` to `50` | Set to `0` for page profile records only |
| Proxy configuration | `proxyConfiguration` | Optional Apify Proxy settings | Start without residential proxy unless target pages are blocked |

### Output fields

| Field | Description |
| --- | --- |
| `recordType` | `page` for profile records or `post` for visible post-link records |
| `input` | Original URL or handle you entered |
| `url` | Canonical Facebook Page URL |
| `handle` | Facebook Page handle when parseable |
| `pageId` | Page or profile ID when visible |
| `name` / `title` | Public Page name and full public page title |
| `description` / `category` | Public intro/about text and category when visible |
| `website`, `phone`, `email`, `address` | Public contact fields when visible |
| `likesText`, `likesCount` | Raw and parsed Page likes |
| `followersText`, `followersCount` | Raw and parsed Page followers |
| `talkingAboutText`, `talkingAboutCount` | Raw and parsed talking-about metric |
| `profileImageUrl`, `coverImageUrl` | Public image URLs when exposed |
| `postUrl`, `postId` | Visible public post link and parsed ID for post-link records |
| `scrapedAt` | ISO timestamp when the record was saved |

### Pricing

This Actor uses Apify pay-per-event pricing. The prices below come from the current Actor pricing configuration. Apify public plans map to Store discount tiers, so the table shows both the user-facing plan context and the pricing tier name. The final price shown in Apify depends on the user account plan and any custom agreement.

| Event | What is charged | Price |
| --- | --- | ---: |
| `start` | One-time fee charged when a run starts. Covers fixed startup cost. | $0.005 |

| Event | What is charged | Free / no discount | Starter / Bronze | Scale / Silver | Business / Gold | Custom / Platinum | Custom / Diamond |
| --- | --- | ---: | ---: | ---: | ---: | ---: | ---: |
| `result` | Charged per public Page profile or visible post record saved to the dataset. | $0.1409 / 1,000 | $0.12252 / 1,000 | $0.09557 / 1,000 | $0.07351 / 1,000 | $0.04901 / 1,000 | $0.03431 / 1,000 |

Apify may also charge platform usage for compute, storage, proxies, or data transfer outside this Actor pricing. Check the Actor run and the Apify Pricing tab for the exact cost shown to your account.

### Tips for best results

- **Use Page URLs or handles:** Personal profiles and groups are out of scope.
- **Test small first:** Run two or three Pages before scaling a large list.
- **Check logged-out visibility:** Use Pages that open in a browser without logging in.
- **Profile-only runs:** Set `maxPostsPerPage` to `0` if you only need Page metadata.
- **Recurring monitoring:** Schedule weekly or monthly runs and compare datasets by `url` and `scrapedAt`.
- **Proxy choice:** Try datacenter proxy first; use residential only if your target pages are blocked.

### Limits and caveats

- **Public data only:** The actor does not bypass logins, privacy settings, CAPTCHAs, age gates, regional restrictions, or other access controls.
- **Logged-out markup changes:** Facebook changes public HTML frequently, so fields can become unavailable.
- **Nullable fields:** Empty fields mean the data was not visible in the public logged-out response.
- **Post links only:** This version saves visible post URLs and IDs, not full post bodies, comments, reactions, shares, or media extraction.

### API usage

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/facebook-pages-scraper').call({
  pageUrls: ['NASA'],
  includePosts: true,
  maxPostsPerPage: 5
});
console.log(run.defaultDatasetId);
```

```bash
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~facebook-pages-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"pageUrls":["NASA"],"includePosts":true,"maxPostsPerPage":5}'
```

### MCP and AI agents

Use the official Apify MCP server for AI workflows. The default server can search and run Actors; the focused URL exposes only this Actor.

```text
https://mcp.apify.com?tools=fetch_cat/facebook-pages-scraper
```

Example prompts:

- "Export public Facebook Page data for NASA and Meta."
- "Collect Facebook business page contact details for this list of Page URLs."
- "Monitor competitor Facebook Pages weekly and summarize profile changes."

### FAQ

**Is this a Facebook Pages API alternative?** Yes, for public Facebook Page data visible without logging in. Use the Apify API, SDKs, schedules, webhooks, and MCP tools.

**Can I export to CSV, Excel, JSON, or API?** Yes. Apify datasets can be downloaded as JSON, CSV, Excel, XML, HTML, and RSS, or consumed through the Dataset API.

**Does it require Facebook cookies, login, or an access token?** No. The actor does not request Facebook credentials, cookies, app tokens, or user tokens.

**Can I scrape private Facebook data?** No. This actor is for public Facebook Page data visible without logging in.

**Why did a Page return no data?** The Page may be private, unavailable in your region, redirected to login, age-restricted, or temporarily blocked for logged-out visitors.

**Why are some fields empty?** Facebook often shows different data to logged-in users than it exposes publicly. Empty fields mean the data was not visible in the public response.

### Related actors

- [Instagram Stories & Highlights Scraper](https://apify.com/fetch_cat/instagram-stories-highlights-scraper)
- [TikTok Profile Scraper](https://apify.com/fetch_cat/tiktok-profile-scraper)
- [Threads Profile & Posts Scraper](https://apify.com/fetch_cat/threads-profile-posts-scraper)
- [YouTube Channel Details Scraper](https://apify.com/fetch_cat/youtube-channel-details-scraper)
- [Website Contact Finder](https://apify.com/fetch_cat/website-contact-finder)

### Support

If a run fails, returns no data, or a field looks wrong, open an issue from the Actor page.

Please include the Apify run ID or run URL, input JSON, one example public URL, query, or input item, what you expected, and what the dataset returned. Small reproducible inputs make parsing or site-layout issues much faster to fix.

### Changelog

#### 0.3

- Added a `RUN_SUMMARY` output with run status, input counts, saved record counts, skipped inputs, and timing.

#### 0.2

- Added dataset views for Page overview, public contact details, engagement metrics, visible post links, and complete output.
- Clarified that post-link records include visible public Facebook post URLs only, not full post text, comments, reactions, or shares.

#### 0.1

- Initial public Facebook Page profile scraper with optional visible public post link records.

### Privacy and data handling

This Actor only requests the permissions needed to run the input you provide. It uses your input (such as URLs, search terms, identifiers, filters, and limits) only to fetch the requested public data from the relevant source site or API for this Actor, then writes results to your Apify dataset/key-value store.

Data may pass through Apify platform services and Apify Proxy during the run, and requests are sent only to the target site or public data provider required for this Actor's results. FetchCat does not send your inputs or outputs to advertising networks, data brokers, or model-training services, and does not retain run data outside Apify storage after the run except when you explicitly share run details for transient support debugging.

You are responsible for using this Actor lawfully, respecting the target site's terms, and avoiding unnecessary personal or sensitive data in inputs. Review the output before storing, sharing, or combining it with other data.

# Actor input Schema

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

Public Facebook Page URLs to export. Use pages that are visible without logging in, such as https://www.facebook.com/NASA.

## `pageUrls` (type: `array`):

Optional simple list of Facebook Page handles or URLs. Examples: NASA, Meta, or https://www.facebook.com/NASA.

## `includePosts` (type: `boolean`):

When enabled, the actor saves recent public post link records if Facebook exposes those links in logged-out HTML. It does not extract full post text, comments, or reactions.

## `maxPostsPerPage` (type: `integer`):

Maximum visible public post link records to save per Page. Set to 0 for page profile records only.

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

Optional Apify Proxy settings. Datacenter proxy is recommended first; use residential only if your target pages are blocked.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.facebook.com/NASA"
    },
    {
      "url": "https://www.facebook.com/Meta"
    }
  ],
  "pageUrls": [
    "NASA"
  ],
  "includePosts": true,
  "maxPostsPerPage": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `runSummary` (type: `string`):

No description

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

No description

## `contacts` (type: `string`):

No description

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

No description

## `postLinks` (type: `string`):

No description

## `complete` (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/NASA"
        },
        {
            "url": "https://www.facebook.com/Meta"
        }
    ],
    "pageUrls": [
        "NASA"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("fetch_cat/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": [
        { "url": "https://www.facebook.com/NASA" },
        { "url": "https://www.facebook.com/Meta" },
    ],
    "pageUrls": ["NASA"],
}

# Run the Actor and wait for it to finish
run = client.actor("fetch_cat/facebook-pages-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/NASA"
    },
    {
      "url": "https://www.facebook.com/Meta"
    }
  ],
  "pageUrls": [
    "NASA"
  ]
}' |
apify call fetch_cat/facebook-pages-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/Vo1vdazXk4YKQGBUd/builds/DknlNyTKuXyVYgXoV/openapi.json
