# Facebook Pages Scraper: Contacts & Business Details (`deepmine/facebook-pages-scraper`) Actor

Facebook pages scraper: paste page links and get phones, emails, websites, address with map pin, social links, rating, price range, services, hours, followers and check-ins, plus page transparency (creation date, ad status, owner). No login, no cookies, no browser.

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

## Pricing

from $2.69 / 1,000 facebook 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 & Business Details

**Facebook pages scraper** that turns page links into a business contact list: paste links and get one row per page
with its **emails, phone numbers, websites, addresses with map pin and social links**, plus rating, followers and
page transparency (creation date, ad status, owner), in a table you export to **CSV, Excel or JSON**. No Facebook
account, no cookies, no browser.

| Name | Category | Followers | Rating | Phone | Email | Website | Address | Created |
|---|---|---|---|---|---|---|---|---|
| Joe's Stone Crab | Seafood Restaurant | 44,656 | 94% recommend (14,542 reviews) | +1 305-673-0365 | marketing@joesstonecrab.com | http://joesstonecrab.com/ | 11 Washington Ave, Miami Beach, FL, United States, 33139 | 2010-03-08 |
| Commander's Palace | Cajun & creole restaurant | 87,736 | 96% recommend (23,252 reviews) | +1 504-899-8221 | feedback@commanderspalace.com | https://www.commanderspalace.com/ | 1403 Washington Avenue, New Orleans, LA, United States, 70130 | 2009-01-26 |
| Katz's Delicatessen | Deli | 964,362 | 98% recommend (52,490 reviews) | +1 212-254-2246 | cs@katzsdelicatessen.com | http://katzsdelicatessen.com/ | 205 E Houston St, New York, NY, United States, 10002 | 2009-06-12 |

<sub>Collected 2026-10-24 with the prefilled input (run lGqBeeKzIGUZDhlf7, build 0.1.10; 3 of its 24 rows).</sub>

**What that run delivered:** 24 pages in 26 s. 19 had an email, 17 a phone number, 14 an address and 17 a rating;
all 24 had a website, followers and the page's creation date. Pages differ in what they list, and a field a page
doesn't show comes back empty.

**$3.99 per 1,000 pages on the Starter plan** ($4.78 Free, $3.19 Scale, $2.69 Business). The prefilled 24 pages cost
about $0.10 on Starter. No start fee, nothing per run.

**Researching advertisers?** [Meta Ad Library](https://apify.com/deepmine/meta-ad-library), [Facebook Video Ads](https://apify.com/deepmine/facebook-video-ads) and [Facebook Ads Monitor](https://apify.com/deepmine/facebook-ads-monitor) return each ad's `pageUrl`; paste those links here for the brands' contacts. Then [Facebook Posts Scraper](https://apify.com/deepmine/facebook-posts-scraper) reads the same pages' posts and [Facebook Comments Scraper](https://apify.com/deepmine/facebook-comments-scraper) the comments under them.

### What you get

- **Contacts:** every phone, email and website the page lists (Facebook's redirect links undone), the business
  address with its map link and latitude/longitude, and every social profile it links to.
- **Business details:** categories, rating ("94% recommend (201 reviews)") with the percentage and review count as
  numbers, price range, services (dine-in, delivery, outdoor seating...), opening status, languages, founding date.
- **Audience:** exact followers, following, people talking about the page, check-ins.
- **Page transparency:** creation date, ad status ("This Page is currently running ads.") with an `isRunningAds`
  flag, the organisation Facebook confirms owns the page, the page's Ad Library id.
- **Identity:** name, handle, intro, profile and cover pictures, verified badge, page id.

### Start in three steps

1. **Paste page links** (`https://www.facebook.com/copperkettleyqr`, `facebook.com/profile.php?id=...`, or just the
   page name). The form comes with 24 real businesses to try.
2. **Run.** One row per page; the same page given twice is one row.
3. **Export.** Open the dataset's 📇 Contacts view and download CSV, Excel or JSON, or schedule the run.

Copy/paste input for the API (Actor id `deepmine/facebook-pages-scraper`), with three of the example pages:

```json
{
  "startUrls": [
    {"url": "https://www.facebook.com/joesstonecrab"},
    {"url": "https://www.facebook.com/commanderspalace"},
    {"url": "https://www.facebook.com/KatzsDeli"}
  ],
  "maxPages": 3
}
```

**Maximum supplied page links** (`maxPages`) reads only the first N of the links you paste; it never looks for more
pages. The form's 100 is a ceiling above its 24 example links; leave it empty to read every link.
This Actor reads the pages you list: it doesn't search Facebook for businesses by keyword or city.

A link Facebook shows as "content isn't available" (a deleted page, or one restricted for logged-out visitors, such
as some alcohol brands) fails its input and costs nothing. A post link isn't a page: use the Facebook Posts Scraper.

### Pricing

Pay per page in your dataset, nothing else: no start fee.

| Plan | Free | Starter | Scale | Business |
|---|---|---|---|---|
| Per 1,000 pages | $4.78 | $3.99 | $3.19 | $2.69 |

Each page is charged once per run, also across restarts. Summary records (OUTPUT) are never charged.

### Output fields

One line per key, in row order.

- `profilePictureUrl`: profile picture (signed Facebook CDN link: it expires after a few days)
- `title`: page name
- `pageName`: the page's handle (facebook.com/<handle>)
- `intro`: short bio as Facebook shows it logged out (long ones are cut by Facebook)
- `category`, `categories`: first category, every category
- `pageUrl`: the page's Facebook link
- `followers`, `followings`, `likes`, `talkingAbout`, `wereHere`: audience counts (`likes` only where Facebook still
  shows page likes; most pages now show followers only)
- `rating`, `ratingOverall`, `ratingCount`: rating line, percent who recommend, number of reviews
- `phone`, `phones`, `email`, `emails`, `website`, `websites`: first one and every one
- `address`, `addressUrl`, `latitude`, `longitude`: business address, its map link and pin
- `businessHours`: opening status ("Open now", "Closed now", "Always open")
- `priceRange`, `services`, `languages`, `foundingDate`
- `instagramUrl`, `tiktokUrl`, `youtubeUrl`, `xUrl`, `linkedinUrl`, `socialLinks`, `alternativeSocialMedia`
- `messenger`: a Messenger link when the page lists one
- `creationDate`, `adStatus`, `isRunningAds`, `confirmedOwner`: page transparency
- `isVerified`, `coverPhotoUrl`, `profilePhotoUrl`
- `info`: the page's summary lines (name and city, counts, bio)
- `otherInfo`: any other About field the page shows, as "Label: value"
- `pageId`, `facebookId`, `pageAdLibraryId`, `isBusinessPageActive`: ids
- `aboutTabsRead`: which About tabs the row comes from (a tab Facebook refused is missing here)
- `facebookUrl`, `inputUrl`, `scrapedAt`: provenance

Views: 📊 Overview, 📇 Contacts, 🏪 Business, 📈 Stats, 🔎 Transparency.

### Coming from apify/facebook-pages-scraper?

Same input (`startUrls`), same key names where they exist (`title`, `categories`, `info`, `likes`, `followers`,
`rating`, `ratingOverall`, `ratingCount`, `email`, `phone`, `address`, `website`, `websites`, `messenger`, `intro`,
`priceRange`, `services`, `alternativeSocialMedia`, `pageId`, `facebookId`, `profilePictureUrl`, `coverPhotoUrl`).
Their nested or snake_case keys are flat here: `creation_date` → `creationDate` (YYYY-MM-DD), `ad_status` →
`adStatus`, `confirmed_owner` / `CONFIRMED_OWNER_LABEL` → `confirmedOwner`, `profilePhoto` → `profilePhotoUrl`,
`pageAdLibrary.id` → `pageAdLibraryId`, `pageAdLibrary.is_business_page_active` → `isBusinessPageActive`. None of
the pages we checked shows Wi-Fi or payment options on its About tabs; if a page shows any About field we don't
name, it lands in `otherInfo`.

### Limits

- Public pages only, as a logged-out visitor sees them. `businessHours` is the open/closed status the About tab
  shows; the weekly schedule isn't read yet.
- Picture links are signed by Facebook and expire after a few days: download them if you need to keep them.
- `coverPhotoUrl` is Facebook's own link-preview link for the cover photo, not a direct image file: a browser
  opening it lands on the cover photo's Facebook page.
- When Facebook won't show a page's header, the counts and bio come from its link preview (`followers`,
  `talkingAbout`, `wereHere`, `intro`), and `followings` and `coverPhotoUrl` stay empty on that row.

### More Facebook Actors

- [Facebook Posts Scraper](https://apify.com/deepmine/facebook-posts-scraper): the posts of the same pages (text, reactions, comments and shares).
- [Facebook Comments Scraper](https://apify.com/deepmine/facebook-comments-scraper): every comment and reply under a post, reel or video.
- [Facebook Groups Scraper](https://apify.com/deepmine/facebook-groups-scraper): the posts of public groups.
- [Facebook Marketplace Scraper](https://apify.com/deepmine/facebook-marketplace-scraper): Marketplace listings and their sellers.
- [Facebook Reels Scraper](https://apify.com/deepmine/facebook-reels-scraper): every reel of the same pages, with plays and MP4 links.
- [Meta Ad Library](https://apify.com/deepmine/meta-ad-library), [Facebook Video Ads](https://apify.com/deepmine/facebook-video-ads) and [Facebook Ads Monitor](https://apify.com/deepmine/facebook-ads-monitor): the ads a page runs; each ad row has the `pageUrl` to paste here.
- [Google Maps Scraper](https://apify.com/deepmine/google-maps-scraper): find local businesses by category and city first, with their phones, websites, ratings and (optionally) emails.

### Did it help?

A short review on the Actor's Store page helps other people find it. Something missing or wrong? Open an issue in the Issues tab.

# Actor input Schema

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

Public Facebook pages: <code>https://www.facebook.com/copperkettleyqr</code>, <code>facebook.com/profile.php?id=...</code> or just the page name. One row per page.

## `maxPages` (type: `integer`):

Read only the first this many of the page links you list above; it does not look for more pages. The prefilled 100 is a ceiling above the 24 example links (empty: all of them).

## `maxConcurrency` (type: `integer`):

Calls at once (two a page).

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

Apify Proxy datacenter IPs by default: they find each page and read its header.

## `residentialFallback` (type: `boolean`):

On: each page's About fields are read on residential IPs (Facebook answers that query only there), and calls every datacenter IP refused are asked again there. Off: datacenter only (slower; Facebook refuses more pages).

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.facebook.com/copperkettleyqr"
    },
    {
      "url": "https://www.facebook.com/HiltonGardenInnMontrealAirport"
    },
    {
      "url": "https://www.facebook.com/KatzsDeli"
    },
    {
      "url": "https://www.facebook.com/joesstonecrab"
    },
    {
      "url": "https://www.facebook.com/commanderspalace"
    },
    {
      "url": "https://www.facebook.com/fairmontbanffsprings"
    },
    {
      "url": "https://www.facebook.com/goldsgymvenice"
    },
    {
      "url": "https://www.facebook.com/cafecentralwien"
    },
    {
      "url": "https://www.facebook.com/boroughmarket"
    },
    {
      "url": "https://www.facebook.com/russanddaughters"
    },
    {
      "url": "https://www.facebook.com/lukeslobster"
    },
    {
      "url": "https://www.facebook.com/franklinbbq"
    },
    {
      "url": "https://www.facebook.com/magnoliabakery"
    },
    {
      "url": "https://www.facebook.com/strandbookstore"
    },
    {
      "url": "https://www.facebook.com/stumptowncoffee"
    },
    {
      "url": "https://www.facebook.com/portosbakery"
    },
    {
      "url": "https://www.facebook.com/powellsbooks"
    },
    {
      "url": "https://www.facebook.com/levainbakery"
    },
    {
      "url": "https://www.facebook.com/RotoRooter"
    },
    {
      "url": "https://www.facebook.com/bluebottlecoffee"
    },
    {
      "url": "https://www.facebook.com/shakeshack"
    },
    {
      "url": "https://www.facebook.com/theritzlondon"
    },
    {
      "url": "https://www.facebook.com/intelligentsiacoffee"
    },
    {
      "url": "https://www.facebook.com/UNclimatechange"
    }
  ],
  "maxPages": 100,
  "maxConcurrency": 16,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "residentialFallback": true
}
```

# Actor output Schema

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

No description

## `summary` (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/copperkettleyqr"
        },
        {
            "url": "https://www.facebook.com/HiltonGardenInnMontrealAirport"
        },
        {
            "url": "https://www.facebook.com/KatzsDeli"
        },
        {
            "url": "https://www.facebook.com/joesstonecrab"
        },
        {
            "url": "https://www.facebook.com/commanderspalace"
        },
        {
            "url": "https://www.facebook.com/fairmontbanffsprings"
        },
        {
            "url": "https://www.facebook.com/goldsgymvenice"
        },
        {
            "url": "https://www.facebook.com/cafecentralwien"
        },
        {
            "url": "https://www.facebook.com/boroughmarket"
        },
        {
            "url": "https://www.facebook.com/russanddaughters"
        },
        {
            "url": "https://www.facebook.com/lukeslobster"
        },
        {
            "url": "https://www.facebook.com/franklinbbq"
        },
        {
            "url": "https://www.facebook.com/magnoliabakery"
        },
        {
            "url": "https://www.facebook.com/strandbookstore"
        },
        {
            "url": "https://www.facebook.com/stumptowncoffee"
        },
        {
            "url": "https://www.facebook.com/portosbakery"
        },
        {
            "url": "https://www.facebook.com/powellsbooks"
        },
        {
            "url": "https://www.facebook.com/levainbakery"
        },
        {
            "url": "https://www.facebook.com/RotoRooter"
        },
        {
            "url": "https://www.facebook.com/bluebottlecoffee"
        },
        {
            "url": "https://www.facebook.com/shakeshack"
        },
        {
            "url": "https://www.facebook.com/theritzlondon"
        },
        {
            "url": "https://www.facebook.com/intelligentsiacoffee"
        },
        {
            "url": "https://www.facebook.com/UNclimatechange"
        }
    ],
    "maxPages": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("deepmine/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/copperkettleyqr" },
        { "url": "https://www.facebook.com/HiltonGardenInnMontrealAirport" },
        { "url": "https://www.facebook.com/KatzsDeli" },
        { "url": "https://www.facebook.com/joesstonecrab" },
        { "url": "https://www.facebook.com/commanderspalace" },
        { "url": "https://www.facebook.com/fairmontbanffsprings" },
        { "url": "https://www.facebook.com/goldsgymvenice" },
        { "url": "https://www.facebook.com/cafecentralwien" },
        { "url": "https://www.facebook.com/boroughmarket" },
        { "url": "https://www.facebook.com/russanddaughters" },
        { "url": "https://www.facebook.com/lukeslobster" },
        { "url": "https://www.facebook.com/franklinbbq" },
        { "url": "https://www.facebook.com/magnoliabakery" },
        { "url": "https://www.facebook.com/strandbookstore" },
        { "url": "https://www.facebook.com/stumptowncoffee" },
        { "url": "https://www.facebook.com/portosbakery" },
        { "url": "https://www.facebook.com/powellsbooks" },
        { "url": "https://www.facebook.com/levainbakery" },
        { "url": "https://www.facebook.com/RotoRooter" },
        { "url": "https://www.facebook.com/bluebottlecoffee" },
        { "url": "https://www.facebook.com/shakeshack" },
        { "url": "https://www.facebook.com/theritzlondon" },
        { "url": "https://www.facebook.com/intelligentsiacoffee" },
        { "url": "https://www.facebook.com/UNclimatechange" },
    ],
    "maxPages": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("deepmine/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": [
    {
      "url": "https://www.facebook.com/copperkettleyqr"
    },
    {
      "url": "https://www.facebook.com/HiltonGardenInnMontrealAirport"
    },
    {
      "url": "https://www.facebook.com/KatzsDeli"
    },
    {
      "url": "https://www.facebook.com/joesstonecrab"
    },
    {
      "url": "https://www.facebook.com/commanderspalace"
    },
    {
      "url": "https://www.facebook.com/fairmontbanffsprings"
    },
    {
      "url": "https://www.facebook.com/goldsgymvenice"
    },
    {
      "url": "https://www.facebook.com/cafecentralwien"
    },
    {
      "url": "https://www.facebook.com/boroughmarket"
    },
    {
      "url": "https://www.facebook.com/russanddaughters"
    },
    {
      "url": "https://www.facebook.com/lukeslobster"
    },
    {
      "url": "https://www.facebook.com/franklinbbq"
    },
    {
      "url": "https://www.facebook.com/magnoliabakery"
    },
    {
      "url": "https://www.facebook.com/strandbookstore"
    },
    {
      "url": "https://www.facebook.com/stumptowncoffee"
    },
    {
      "url": "https://www.facebook.com/portosbakery"
    },
    {
      "url": "https://www.facebook.com/powellsbooks"
    },
    {
      "url": "https://www.facebook.com/levainbakery"
    },
    {
      "url": "https://www.facebook.com/RotoRooter"
    },
    {
      "url": "https://www.facebook.com/bluebottlecoffee"
    },
    {
      "url": "https://www.facebook.com/shakeshack"
    },
    {
      "url": "https://www.facebook.com/theritzlondon"
    },
    {
      "url": "https://www.facebook.com/intelligentsiacoffee"
    },
    {
      "url": "https://www.facebook.com/UNclimatechange"
    }
  ],
  "maxPages": 100
}' |
apify call deepmine/facebook-pages-scraper --silent --output-dataset

```

## MCP server setup

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