# 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
- **Stats:** 2 total users, 1 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** for leads and local-business data: paste Facebook page links and get one clean row per
page with its **phones, emails, websites, full address with map pin, Instagram / TikTok / YouTube / X / LinkedIn
links, rating and review count, price range, services, opening status, followers and check-ins**, plus its **page
transparency**: creation date, whether it runs ads right now, the confirmed owner and its Ad Library id.
No login, no cookies, no browser.

| Name | Category | Followers | Rating | Phone | Email | Website | Address | Created |
|---|---|---|---|---|---|---|---|---|
| Joe's Stone Crab | Seafood Restaurant | 44,586 | 94% recommend (14,542 reviews) | (305) 673-0365 | marketing@joesstonecrab.com | http://joesstonecrab.com/ | 11 Washington Ave, Miami Beach, FL, United States, 33139 | 2010-03-08 |
| Fairmont Banff Springs | Hotel resort | 160,039 | 94% recommend (22,922 reviews) | +1 403-762-2211 | banffsprings@fairmont.com | https://www.fairmont.com/banff-springs | 405 Spray Avenue, Banff, AB, Canada, T1L 1J4 | 2009-06-29 |
| Café Central Wien | Cafe | 44,289 | 92% recommend (17,219 reviews) | +43 1 533376324 | cafe.central@palaisevents.at | https://www.cafecentral.wien/ | Herrengasse 14, Wien, Austria, 1010 | 2010-10-07 |

<sub>Collected 2026-10-18.</sub>

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

### How to use it

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. Optional: **Max pages** reads only the first N links.
3. Run. One row per page; the same page given twice is one row.

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.

# 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 page 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/3dQ5wTgHWwkFvYSLF/openapi.json
