# Facebook Page & Profile Scraper (`arisma_tech/facebook-profile-scraper`) Actor

Extract data from Facebook Pages and Profiles: name, categories, followers, likes, email, phone, address, websites, rating, About text, creation date, ad status, confirmed owner and Ad Library ID. No login or cookies needed. Export to JSON, CSV or Excel, or use via API.

- **URL**: https://apify.com/arisma_tech/facebook-profile-scraper.md
- **Developed by:** [Arishma](https://apify.com/arisma_tech) (community)
- **Stats:** 2 total users, 2 monthly users, 75.1% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.40 / 1,000 pages

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?

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

### What is Facebook Pages Scraper?

**Facebook Pages Scraper** pulls public information from Facebook Pages and personal Profiles and turns it into clean, structured data. Paste in the Page URLs, click **Start**, and get one record per Page with its contact details, audience numbers, categories, photos and transparency info. It goes beyond what the official Facebook Graph API lets you read about Pages you do not manage.

- 🗂 Scrape **many Facebook Pages in one run**
- 👥 Works on **both Pages and personal Profiles** ([see what each returns](#is-there-a-difference-between-scraping-a-facebook-page-and-a-profile))
- 📇 Get **contact details, followers, likes, ratings** and more
- 📢 See **when a Page was created, who owns it and whether it is running ads**
- 🔓 **No Facebook login or cookies** needed, so your accounts are never at risk
- 💾 Download the data as **JSON, CSV, Excel, XML or HTML**
- 🔗 Use it from **code (Python and Node.js SDKs), the API, webhooks, integrations or AI agents**

### What Facebook Page data can I extract?

| | |
| --- | --- |
| 📝 Page name and intro | 🔗 Page URL, vanity name and IDs |
| 🎨 Categories | 🌐 Websites |
| 📧 Email | 📞 Phone number |
| 📮 Address | 💬 Messenger link (when shown) |
| 👥 Followers and following | 👍 Likes (on Pages that still show them) |
| 🗣 "Talking about this" count | 📍 Check-ins ("were here") |
| ⭐ Rating and number of reviews | 🕒 Opening hours, services and price range |
| 📖 Full About text and its links | 🔗 Linked social accounts (Instagram, ...) |
| 📅 Page creation date | 📢 Ad status (running ads or not) |
| 🏢 Confirmed Page owner | 📚 Ad Library Page ID |
| 🌄 Profile picture and cover photo URLs | 👤 Name, gender and pictures of personal Profiles |

### How do I use Facebook Pages Scraper?

1. Create a free Apify account with your email.
2. Open **Facebook Pages Scraper**.
3. Add one or more Facebook Page URLs, for example `https://www.facebook.com/humansofnewyork/`.
4. Click **Start** and wait a few seconds per Page.
5. Download your data as JSON, CSV, Excel, XML or HTML, or fetch it through the API.

### How much does it cost to scrape Facebook Pages?

You pay **per Page scraped**, and the platform usage and residential proxies are included. Pages that fail (for example, Pages that do not exist) are not charged. With the free monthly credit of the Apify Free plan you can try the scraper on hundreds of Pages before you need to upgrade.

To control costs, set a maximum cost per run in the run options. The scraper stops as soon as that limit is reached.

### ⬇️ Input

The input is a list of Facebook Page URLs, such as `https://www.facebook.com/humansofnewyork/`. Add them one by one, paste a prepared list, upload a file, or set them through the API.

| Field | Description |
| --- | --- |
| `startUrls` | Page URLs, Profile URLs, `profile.php?id=` URLs or plain Page names. |
| `scrapeAbout` | Also load the About section: creation date, ad status, confirmed owner and full About text. Default `true`. Turn it off for faster, lighter runs. |
| `proxy` | Proxy settings. Residential proxies (the default) work best. You can also use your own proxies in `proxyUrls`. |

Example input:

```json
{
    "startUrls": [
        { "url": "https://www.facebook.com/ChrisBrecheensWritingAboutWriting" },
        { "url": "https://www.facebook.com/UNclimatechange" }
    ],
    "scrapeAbout": true,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    }
}
```

### ⬆️ Output

The results are stored in a dataset, which you can find in the **Storage** tab. Each Page is one item. Here is what you get for the input above (image URLs shortened):

```json
[
    {
        "facebookUrl": "https://www.facebook.com/ChrisBrecheensWritingAboutWriting",
        "categories": ["Page", "Interest"],
        "info": [
            "Writing About Writing. 1,181,507 followers",
            "11,889 talking about this. Macros, memes, quotes, puns and more as well as daily updates from the blog this page promotes: chri"
        ],
        "likes": 0,
        "messenger": null,
        "title": "Writing About Writing",
        "pageId": "100077736131324",
        "pageName": "ChrisBrecheensWritingAboutWriting",
        "pageUrl": "https://www.facebook.com/ChrisBrecheensWritingAboutWriting",
        "intro": "Macros, memes, quotes, puns and more as well as daily updates from the blog this page promotes: chri",
        "websites": ["http://chrisbrecheen.blogspot.com/"],
        "website": "http://chrisbrecheen.blogspot.com/",
        "followers": 1181507,
        "followings": 3,
        "talkingAbout": 11889,
        "wereHere": null,
        "email": "chris.brecheen@gmail.com",
        "phone": null,
        "address": null,
        "socialMedia": [],
        "profilePictureUrl": "https://scontent.xx.fbcdn.net/v/t39.30808-1/...jpg",
        "coverPhotoUrl": "https://scontent.xx.fbcdn.net/v/t39.30808-6/...jpg",
        "profilePhoto": "https://www.facebook.com/photo/?fbid=609196478348218&set=a.178389964762207",
        "category": "Interest",
        "creation_date": "October 7, 2012",
        "ad_status": "This Page isn't currently running ads.",
        "about_me": {
            "text": "Memes, macros infographics, and quotes about writing, art, creativity, inspiration, ...",
            "urls": []
        },
        "additionalProperties": { "...": "..." },
        "facebookId": "100077736131324",
        "pageAdLibrary": {
            "id": "290072384435404",
            "is_business_page_active": true,
            "pamv_comms_data": null
        }
    },
    {
        "facebookUrl": "https://www.facebook.com/UNclimatechange",
        "categories": ["Page", "Organisation"],
        "info": [
            "UN Climate Change, Bonn. 522,513 followers",
            "2,767 talking about this",
            "2,111 were here. The official Facebook page of the United Nations Framework Convention on Climate Change (UNFCCC)."
        ],
        "likes": 0,
        "messenger": null,
        "title": "UN Climate Change",
        "pageId": "100067499490396",
        "pageName": "UNclimatechange",
        "pageUrl": "https://www.facebook.com/UNclimatechange",
        "intro": "The official Facebook page of the United Nations Framework Convention on Climate Change (UNFCCC).",
        "websites": ["https://unfccc.int/"],
        "CONFIRMED_OWNER_LABEL": "United Nations Framework Convention on Climate Change (UNFCCC)",
        "website": "https://unfccc.int/",
        "followers": 522513,
        "followings": 118,
        "talkingAbout": 2767,
        "wereHere": 2111,
        "email": null,
        "phone": "+49 228 8151000",
        "address": "Platz der Vereinten Nationen 1 , Bonn, Germany",
        "socialMedia": [],
        "profilePictureUrl": "https://scontent.xx.fbcdn.net/v/t39.30808-1/...jpg",
        "coverPhotoUrl": "https://scontent.xx.fbcdn.net/v/t39.30808-6/...png",
        "profilePhoto": "https://www.facebook.com/photo/?fbid=587061196887192&set=a.587061156887196",
        "category": "Organisation",
        "creation_date": "January 26, 2009",
        "ad_status": "This Page isn't currently running ads.",
        "confirmed_owner": "United Nations Framework Convention on Climate Change (UNFCCC) is responsible for this Page.",
        "additionalProperties": { "...": "..." },
        "facebookId": "100067499490396",
        "pageAdLibrary": {
            "id": "63044235866",
            "is_business_page_active": false,
            "pamv_comms_data": null
        }
    }
]
```

Local businesses also get `rating`, `ratingOverall` (percent of people who recommend), `ratingCount`, `businessHours`, `services` and `priceRange` when the Page shows them. Any other intro item is still returned, under its Facebook name (for example `WORK` or `EDUCATION` on Profiles).

Image URLs are signed by Facebook and expire after a few days, so download the images if you need to keep them.

A summary of each run (which Pages succeeded, failed or were skipped, and why) is saved as `RUN_SUMMARY` in the run's key-value store.

When a Page cannot be scraped (deleted, age-restricted, not a Page URL, ...), the dataset gets one free item for it with `facebookUrl`, `error` (the code, e.g. `NOT_FOUND`) and `errorDescription`, shown in the **Errors** view. Such a run still ends as succeeded, with the reasons in its status message; it only fails when the scraper itself could not get through to Facebook.

### ❓ FAQ

#### Is there a difference between scraping a Facebook Page and a Profile?

Yes. **Pages** are made for businesses, brands, organizations and public figures. They usually have a category (such as *Retail company* or *Restaurant*) and are often run by several people. **Profiles** are personal accounts.

The scraper handles both, but Profiles share less data. For a Profile you typically get the name, URL, IDs, follower count, intro, profile and cover photos, the public intro items (work, education, city), and a `personalProfile` object with the name, gender and profile pictures in three sizes.

#### Why do I see less information for some Pages?

Facebook only shows what the Page owner has filled in, so brands often have no address or phone, and Pages without a confirmed owner have no `CONFIRMED_OWNER_LABEL`. Some Pages are also restricted (for example by age or country) and show little or nothing to visitors who are not logged in.

#### Why is `likes` 0?

Facebook replaced Page likes with followers on most Pages and no longer shows a like count for them. `likes` is filled in for the Pages that still show one.

#### Can I use the Facebook Pages Scraper through the API?

Yes. Every run can be started, scheduled and monitored through the [Apify API](https://docs.apify.com/api/v2), and you can fetch the results from the run's dataset. You need an Apify account and your API token, found under **Settings → API & Integrations** in Apify Console. For Node.js use the [`apify-client`](https://www.npmjs.com/package/apify-client) NPM package, and for Python the [`apify-client`](https://pypi.org/project/apify-client/) PyPI package. The **API** tab has ready-to-use code examples.

#### Can I use it with AI agents through MCP?

Yes. Through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) you can let AI assistants such as Claude, or your own agents, run the scraper and read its results.

#### Do I need proxies to scrape Facebook Pages?

Facebook blocks most server IPs, so proxies are needed. On the Apify platform residential proxies are used by default and you do not have to set anything up. You can also plug in your own proxies in the **Proxy configuration** input. If a request fails on your own proxy (blocked, rate-limited, out of traffic, wrong password) or you run without a proxy, the scraper gives it one more try on Apify residential proxy, so the Page is still scraped at no extra cost.

#### Can I connect the scraped data to other apps?

Yes. Through [Apify integrations](https://apify.com/integrations) you can send the results to Google Sheets, Google Drive, Slack, Make, Zapier, Airbyte, GitHub, Keboola and more. You can also set up [webhooks](https://docs.apify.com/platform/integrations/webhooks) to trigger an action whenever a run finishes, for example to get notified or start the next step of your pipeline.

#### Is it legal to scrape Facebook Pages?

This scraper collects only data that Pages and Profiles choose to show publicly, and it never logs in. However, your results may contain personal data, which is protected by regulations such as the GDPR in the European Union. Do not scrape personal data unless you have a legitimate reason to. If you are unsure, consult a lawyer. You can also read the Apify blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### Your feedback

We are always improving this scraper. If you have technical feedback or found a bug, please open an issue in the **Issues** tab and include the run link and the Pages you tried.

# Actor input Schema

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

Pages or Profiles to scrape. Add URLs one by one, paste a list, or upload a file. Accepts Page URLs (<code>https://www.facebook.com/humansofnewyork/</code>), <code>profile.php?id=</code> URLs and plain Page names (<code>humansofnewyork</code>). Personal Profiles return less data than Pages.

## `scrapeAbout` (type: `boolean`):

Also load the Page's About section to get the creation date, ad status, confirmed owner and full About text. Adds two requests per Page; turn it off for faster runs when you only need the main details.

## `proxy` (type: `object`):

Facebook blocks datacenter IPs quickly. Residential proxies give the most reliable results. You can also use your own proxies.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.facebook.com/ThePinkStuff.USA"
    }
  ],
  "scrapeAbout": true,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

One item per Facebook Page with its details.

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

Email, phone, address, websites and linked social accounts of each Page.

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

Which Pages succeeded, failed or were skipped, and why.

# 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/ThePinkStuff.USA"
        }
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("arisma_tech/facebook-profile-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/ThePinkStuff.USA" }],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("arisma_tech/facebook-profile-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": [
    {
      "url": "https://www.facebook.com/ThePinkStuff.USA"
    }
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call arisma_tech/facebook-profile-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,arisma_tech/facebook-profile-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/1vRM3CO109dVmn2gR/builds/xN8B0rHjKdWuYEGuU/openapi.json
