# Facebook Pages Scraper: Contacts, Followers & Ratings (`luzivanlt/facebook-pages-scraper`) Actor

Facebook Page details from links: exact follower count, phone, email, address, websites. $4 per 1,000 pages. Rating, category, intro and owner.

- **URL**: https://apify.com/luzivanlt/facebook-pages-scraper.md
- **Developed by:** [Luzi](https://apify.com/luzivanlt) (community)
- **Categories:** Social media, Lead generation
- **Stats:** 2 total users, 1 monthly users, 58.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.30 / 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

## Facebook Pages Scraper: Contacts, Followers & Ratings

Get Facebook Page details from a list of links for $4 per 1,000 pages: the
exact follower count, phone, email, address, websites, rating and reviews,
category, intro, the Page's other accounts and its owner. One row per Page.
No Facebook account, login or cookies needed.

Tested daily. Latest check: 5 of 5 Pages on the daily check, and 102 of 107
brand and local Pages in one run (the other 5 links answered only Facebook's
sign-in page).

### What does this Actor do?

You give it Facebook Page links (or just the names after `facebook.com/`). For
each Page it reads the Page as anyone who is not signed in sees it, and saves
one row with everything on it:

- name, the Page's title, username, category and intro
- **the exact follower count** ("28,742,860"), plus the rounded one Facebook
  shows ("28M followers"), how many accounts the Page follows, and, where
  the Page shows them, its "talking about this" and "were here" counts
- **contact details** from the Intro card: phone, email, address (with its
  map link), every website, and the Page's other accounts (Instagram and
  others) with their links
- **rating**: the text ("94% recommend (201 reviews)"), the percentage that
  recommends the Page, the number of reviews and the reviews page
- for businesses: price range, services ("Delivery", "Outdoor seating") and
  the opening-hours status ("Open now", "Always open")
- the city a local Page names, and the confirmed owner ("is responsible for
  this Page") when Facebook shows one
- profile picture and cover photo (with its size), verified badge, whether the
  Page is live or has a story, its tabs, and Facebook's restriction status
- the Page's Facebook id and Page id, and a link to its ads in the Meta Ad
  Library
- any other fact the Intro card shows, kept under `other_intro_items`

### Why use it?

- **Leads with contact details.** Phone, email, address and websites in one
  row, ready for a CRM or a spreadsheet.
- **Exact numbers.** The follower count to the last digit, not "28M".
- **Any Page link.** Name links, `profile.php?id=` links, `/people/…`, `/p/…`
  and `/pages/…` links, on any Facebook subdomain, or just the name.
- **Use the data anywhere.** Download as JSON, CSV or Excel, or send it to
  your own tools through Apify's API and integrations.

### How to use it

1. Paste one or more **Pages**: links such as
   `https://www.facebook.com/nasa`, or names such as `starbucks`.
2. Click **Start**. When the run ends, open the **Output** tab to view the
   Pages or download them.

Run it with no input to see a sample: five Pages: NASA, Coca-Cola, Starbucks,
The Ritz London and Highlands Coffee, charged as usual.

#### Links that work

Any Page link: `facebook.com/<name>`, `facebook.com/profile.php?id=<id>`,
`facebook.com/people/<name>/<id>`, `facebook.com/p/<name>-<id>`,
`facebook.com/pages/<name>/<id>`, on any Facebook subdomain (`m.`, `web.`,
`vi-vn.`…), with or without tracking parts or a tab such as `/about/` or
`/posts/`. Group links, share links (`facebook.com/share/…`), photo, video and
event links, and other sites stop the run before anything is read, naming the
link.

### Input

| Field                   | What it does                                                        | Default |
| ----------------------- | ------------------------------------------------------------------- | ------- |
| **Pages** (`startUrls`) | Page links or names, one row each. A Page listed twice is read once | —       |

Example input:

```json
{
  "startUrls": ["https://www.facebook.com/nasa", "starbucks"]
}
```

### Output

One row per Page. An example, with made-up values:

```json
{
  "facebook_id": "100064000000001",
  "page_id": "851600000000001",
  "name": "Example Pizza",
  "title": "Example Pizza | Springfield",
  "username": "examplepizza",
  "page_url": "https://www.facebook.com/examplepizza/",
  "input_url": "https://www.facebook.com/ExamplePizza",
  "city": "Springfield",
  "category": "Pizza place",
  "intro": "Wood-fired pizza since 1990.",
  "followers": 3308,
  "followers_text": "3.3K followers",
  "following": 430,
  "following_text": "430 following",
  "likes": null,
  "likes_text": null,
  "talking_about": 161,
  "were_here": 1166,
  "phone": "+1 555-0100",
  "email": "hello@example.com",
  "address": "1 Example Street, Springfield",
  "address_url": "https://maps.google.com/maps?q=…",
  "website": "http://www.example.com/",
  "websites": ["http://www.example.com/"],
  "other_accounts": [{ "name": "examplepizza", "url": "https://www.instagram.com/examplepizza" }],
  "price_range": "$$",
  "services": ["Delivery", "Outdoor seating"],
  "hours_status": "Open now",
  "rating_text": "94% recommend (201 reviews)",
  "rating_percent": 94,
  "rating_value": null,
  "rating_count": 201,
  "reviews_url": "https://www.facebook.com/examplepizza/reviews",
  "confirmed_owner": null,
  "other_intro_items": [],
  "profile_picture_url": "https://scontent.xx.fbcdn.net/v/…",
  "profile_photo_id": "436700000000001",
  "profile_photo_url": "https://www.facebook.com/photo/?fbid=436700000000001&set=a.1",
  "cover_photo_url": "https://scontent.xx.fbcdn.net/v/…",
  "cover_photo_id": "436700000000002",
  "cover_photo_width": 960,
  "cover_photo_height": 641,
  "cover_photo_focus": { "x": 0.5, "y": 0.48 },
  "cover_photo_page_url": "https://www.facebook.com/photo/?fbid=436700000000002&set=a.2",
  "is_verified": false,
  "is_business_page_active": false,
  "is_memorialized": false,
  "is_live": false,
  "has_story": true,
  "is_profile_plus": true,
  "alternate_name": null,
  "restriction_status": "No Violations.",
  "tabs": ["About", "Reviews", "Photos"],
  "ad_library_url": "https://www.facebook.com/ads/library/?active_status=all&ad_type=all&country=ALL&view_all_page_id=851600000000001"
}
```

| Field                                                          | What it holds                                                                                                                                     |
| -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `facebook_id`                                                  | The Page's Facebook id (the id in `profile.php?id=`). One Page, one row                                                                           |
| `page_id`                                                      | The Page's own id, as Page transparency and the Ad Library name it                                                                                |
| `name`, `title`, `username`                                    | The Page's name, the title it shows to search engines (sometimes with its city) and the name in its link                                          |
| `page_url`, `input_url`                                        | The Page's own link, and the link or name you gave                                                                                                |
| `city`, `category`, `intro`                                    | The city a local Page names, its category and its intro text                                                                                      |
| `followers`, `likes`, `talking_about`, `were_here`             | Exact counts, where the Page shows them (`likes` only on a Page that shows likes instead of followers: none of the 102 measured did)              |
| `followers_text`, `following`, `following_text`, `likes_text`  | The counts as the Page's header shows them, and how many accounts it follows                                                                      |
| `phone`, `email`, `address`, `address_url`                     | Contact details from the Intro card                                                                                                               |
| `website`, `websites`, `other_accounts`                        | The first website, every website, and the Page's other accounts (name and link)                                                                   |
| `price_range`, `services`, `hours_status`                      | Business details: "$$", the services listed, and the opening-hours status                                                                         |
| `rating_text`, `rating_percent`, `rating_value`                | The rating as shown, the percentage that recommends the Page, and a star rating on a Page that shows stars instead (none of the 102 measured did) |
| `rating_count`, `reviews_url`                                  | The number of reviews and the reviews page                                                                                                        |
| `confirmed_owner`                                              | The organisation Facebook names as responsible for the Page                                                                                       |
| `other_intro_items`                                            | Any other fact the Intro card shows: its kind, text and link                                                                                      |
| `profile_picture_url`, `profile_photo_id`, `profile_photo_url` | The profile picture, and the photo it comes from                                                                                                  |
| `cover_photo_*`                                                | The cover photo, its id, size, focus point and photo page                                                                                         |
| `is_verified`, `is_memorialized`, `is_live`, `has_story`       | The verified badge, a memorialized Page, a live video now, a story up                                                                             |
| `is_business_page_active`, `is_profile_plus`                   | Facebook's flags for the Page's business account and for the newer Pages experience                                                               |
| `alternate_name`, `restriction_status`, `tabs`                 | A second name, Facebook's restriction status ("No Violations.") and the Page's tabs                                                               |
| `ad_library_url`                                               | The Page's ads in the Meta Ad Library                                                                                                             |

A field the Page does not show is `null` (or an empty list).

### How much does it cost?

No surcharges and no paid options; an item that fails is not charged.

You pay for what you get:

- **$4 per 1,000 pages** ($0.004 a Page). A Page that could not be read is not charged.
- No start fee.

So 500 Pages cost $2. If you set a maximum cost for a run, the Actor stops when it reaches it and keeps every Page saved so far.

### How long does a run take?

Seconds for a few Pages: 5 in about 10 seconds. 107 took about 7 minutes,
most of it spent trying the 5 links that never opened.

### Good to know

- **Page creation date and ad status** (Page transparency) are not included.
- **Contact and business details come only when the Page shows them.** Local
  businesses usually do; big brands often do not. In the 107-link check, the
  102 Pages read had a website on 100, a phone on 17, an email on 13 and a
  rating on 18.
- **A link that cannot be read** (a Page that does not exist, was removed, or
  is shown only to signed-in visitors) is reported in the run's status; the
  other Pages carry on. The run fails only when none could be read.
- **One Page, one row.** A Page listed twice, or under its name and its
  `profile.php?id=` link, is saved once.
- **Language.** Pages are read in English, so categories and the rating text
  come in English whatever the Page's country.

### More Actors from us

- [Facebook Ads Library Scraper: Meta Ads by Keyword or Page](https://apify.com/luzivanlt/facebook-ads-library-scraper): Meta Ad Library ads by keyword, Page or Ad Library link, with text, images, videos and dates.
- [Facebook Comments Scraper: With Replies](https://apify.com/luzivanlt/facebook-comments-scraper): Comments and replies from public Facebook posts, reels and videos, with reactions by type.
- [Facebook Posts Scraper: Groups, Pages & Profiles](https://apify.com/luzivanlt/facebook-posts-scraper): Posts from public Facebook groups, Pages and profiles with reaction, comment and share counts.
- [AliExpress Product Scraper: Search Results & Prices](https://apify.com/luzivanlt/aliexpress-products-scraper): Every product of an AliExpress search to its last page, with exact sold counts and ratings.
- [Amazon Product Scraper: Search Results & Prices](https://apify.com/luzivanlt/amazon-products-scraper): Every product on Amazon's search pages to the last page, sponsored marked, with monthly sales.
- [App Store Reviews Scraper: All Reviews, Not 500](https://apify.com/luzivanlt/app-store-reviews-scraper): Every written App Store review of an app, not just the newest 500.
- [Google Play Reviews Scraper: Device, Star Filter & Replies](https://apify.com/luzivanlt/google-play-reviews-scraper): Google Play reviews with the device each was written on, a star filter and the developer's reply.
- [Instagram Posts Scraper: Likes, Comments & Dates](https://apify.com/luzivanlt/instagram-posts-scraper): A public Instagram profile's posts, newest first, each with its like count, comment count and exact date.
- [Lazada Reviews Scraper: Newest First, Sub-Ratings & Photos](https://apify.com/luzivanlt/lazada-reviews-scraper): The newest reviews of any Lazada product first, with separate stars for product, seller and delivery.

### Use it from an AI agent or the API

One call starts a run and returns its items (Apify waits up to 300 seconds; for a
longer run, start it with `POST /v2/acts/…/runs` and read its dataset):

```text
POST https://api.apify.com/v2/acts/luzivanlt~facebook-pages-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>
```

With the sample input as its JSON body:

```json
{
  "startUrls": [
    "https://www.facebook.com/nasa",
    "https://www.facebook.com/cocacola",
    "https://www.facebook.com/starbucks",
    "https://www.facebook.com/theritzlondon",
    "https://www.facebook.com/highlandscoffeevietnam"
  ]
}
```

Its inputs, in the order of the input form:

| Input               | What it takes                                                                                                                                         | Default |
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| `startUrls` (Pages) | Facebook Page links (facebook.com/\<name>, profile.php?id=…, /people/…, /p/…, /pages/…, any subdomain) or Page names (the part after facebook.com/). | —       |

Apify's MCP server, `https://mcp.apify.com`, lists it as `luzivanlt/facebook-pages-scraper`. To give an
AI agent this Actor as a tool, add the server to the agent's MCP config:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=luzivanlt/facebook-pages-scraper"
    }
  }
}
```

The client signs in with OAuth, or add `"headers": { "Authorization": "Bearer <APIFY_TOKEN>" }`.

Charged per Page delivered; the sample input above costs at most $0.02.

### FAQ

**Do I need a Facebook account or cookies?**
No. The Actor reads what anyone can see on Facebook without signing in.

**Can I get a Page's posts?**
Not with this Actor: it reads the Page's details. Posts are a separate kind
of row.

**Can I run it from my own code, on a schedule, or with other apps?**
Yes. Like any Apify Actor, you can start it through the Apify API, run it on a
schedule, and connect it to other apps with Apify's integrations and webhooks.

### Is it legal to scrape Facebook?

This Actor reads only public Pages. A Page's contact details can be personal
data (a small business's owner, for example): check Facebook's terms and the
laws that apply to you (such as the GDPR) before you use it, and use it only
for a purpose those laws allow. If you are unsure, ask a lawyer.

### Support

Found a problem or missing a feature? Open an issue on the **Issues** tab and
include the run's link.

***

This Actor is not affiliated with, endorsed by or sponsored by Facebook or
Meta.

# Changelog

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

# Actor input Schema

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

Facebook Page links (facebook.com/<name>, profile.php?id=…, /people/…, /p/…, /pages/…, any subdomain) or Page names (the part after facebook.com/). One row per Page; a Page listed twice is read once. A Page id, @name, fb.com or fb.me link, or a tab such as /about/ works too; group, share, photo and video links stop the run. Up to 5,000 Pages a run, at $0.004 a Page read. Example: https://www.facebook.com/nasa

## Actor input object example

```json
{
  "startUrls": [
    "https://www.facebook.com/nasa",
    "https://www.facebook.com/cocacola",
    "https://www.facebook.com/starbucks",
    "https://www.facebook.com/theritzlondon",
    "https://www.facebook.com/highlandscoffeevietnam"
  ]
}
```

# Actor output Schema

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

Every Page the run saved, one row per Page.

## `allFields` (type: `string`):

The same rows with every field.

# 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/nasa",
        "https://www.facebook.com/cocacola",
        "https://www.facebook.com/starbucks",
        "https://www.facebook.com/theritzlondon",
        "https://www.facebook.com/highlandscoffeevietnam"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("luzivanlt/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/nasa",
        "https://www.facebook.com/cocacola",
        "https://www.facebook.com/starbucks",
        "https://www.facebook.com/theritzlondon",
        "https://www.facebook.com/highlandscoffeevietnam",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("luzivanlt/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/nasa",
    "https://www.facebook.com/cocacola",
    "https://www.facebook.com/starbucks",
    "https://www.facebook.com/theritzlondon",
    "https://www.facebook.com/highlandscoffeevietnam"
  ]
}' |
apify call luzivanlt/facebook-pages-scraper --silent --output-dataset

```

## MCP server setup

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