# Facebook Pages Scraper — Emails, Phones & Contact Details (`scrapesmith/facebook-pages-scraper-api`) Actor

🔥$1.4/1000 results🔥Extract emails, phone numbers, addresses, websites, categories, followers and ratings from any Facebook Page. No login or cookies needed. Bulk-scrape thousands of business Pages to JSON, CSV or Excel.

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

## Pricing

from $1.40 / 1,000 results

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 — Extract Contact Details, Emails & Phone Numbers From Any Facebook Business Page

**Turn any list of Facebook Pages into a clean, sales-ready database.** Paste in URLs, handles, or Page IDs and get back verified business emails, phone numbers, street addresses, websites, categories, follower counts, ratings and opening hours — as JSON, CSV or Excel.

No login. No cookies. No Facebook account. No API key. Just paste and run. ⚡

***

### 🎯 What You Can Do With It

Facebook is the largest business directory on the planet — over **200 million business Pages**, most of them publishing a phone number and email that exist nowhere else online. This scraper turns that into structured data you can actually use.

#### 💼 Build B2B lead lists that convert

Scrape thousands of local businesses in your niche and get straight to a spreadsheet of decision-maker emails and direct phone lines. Restaurants, dentists, gyms, law firms, contractors, salons — if it has a Facebook Page, it has contact details waiting.

#### 📊 Run competitor and market research

Track how many followers your competitors have, what price bracket they sit in, how customers rate them, and how many people are talking about them. Re-run weekly and you have a trend line nobody else has.

#### 🏢 Enrich your CRM with data you're missing

Already have a company list? Match it against Facebook and fill the blanks — the phone number that isn't on their website, the email that isn't in your CRM, the address that's out of date in your records.

#### 🗺️ Map an entire local market

Every dental practice in Chicago. Every craft brewery in Belgium. Every yoga studio in Sydney. Pull the whole category, complete with ratings and opening status, and see the market at a glance.

#### 🤖 Feed AI and data pipelines

Clean, consistent JSON with stable field names. Drop it straight into your enrichment pipeline, your RAG index, or your outreach tool.

***

### ✨ Why This Scraper

| | |
|---|---|
| 🔓 **No login required** | Public data only. Nothing to configure, no account to burn, no session to babysit. |
| 💸 **You only pay for real results** | Deleted Pages, typos and dead handles are detected and skipped — they never hit your dataset or your invoice. |
| 🧹 **Zero junk rows** | No blank records, no `null` placeholders, no "Facebook" rows where a Page should be. Every row is a real business. |
| ⚡ **Fast at scale** | Hundreds of Pages per minute, thousands per run. |
| 🔁 **Never loses work** | If a run is interrupted it resumes exactly where it stopped. You are never billed twice for the same Page. |
| 🛡️ **Bad input is caught early** | Feed it a broken list and it tells you within seconds instead of burning through your credit. |

***

### 🚀 Getting Started In 30 Seconds

Paste your Pages in any format — full URLs, `@handles`, or bare names. Mix them freely, duplicates are removed automatically.

```json
{
  "startUrls": [
    "https://www.facebook.com/JoesStoneCrab",
    "@nike",
    "seizieme"
  ]
}
```

Hit **Start**, and results stream into your dataset as they arrive. Download as **JSON, CSV, Excel, XML or HTML**, or pull them live from the API.

#### ⚙️ Options

| Setting | Default | What it does |
|---|---|---|
| **Facebook Page URLs** | — | The Pages to scrape. URLs, handles, or IDs. |
| **Max results** | unlimited | Hard stop after N Pages, so you stay in control of spend. |
| **Concurrency** | 60 | How many Pages to process at once. |
| **Proxy country** | `CA` | Residential exit country. |
| **Proxy** | Residential | Required — Facebook blocks datacenter IPs. |

***

### 📦 What You Get For Every Page

#### 📇 Contact details — the reason you're here

| Field | Description |
|---|---|
| `email` | Public business email address |
| `phone` | Public contact phone number |
| `address` | Full street address including city, region and postcode |
| `website` | The business's main website |
| `websites` | Every link the Page lists — booking pages, menus, shops |
| `socials` | Instagram, X and other handles the Page links to |

#### 🏷️ Business profile

| Field | Description |
|---|---|
| `pageName` | The Page's display name |
| `categories` | What kind of business it is — "Seafood Restaurant", "Law Firm" |
| `intro` | The Page's own description of itself |
| `priceRange` | Price bracket, `$` to `$$$$` |
| `services` | Amenities offered — delivery, curbside pickup, online booking |
| `openStatus` | Open now, Closed now, Opening soon, Permanently closed |

#### 📈 Audience and reputation

| Field | Description |
|---|---|
| `followers` | Follower count |
| `likes` | Page likes |
| `talkingAbout` | People currently talking about the Page |
| `wereHere` | Check-in count — a strong signal for physical businesses |
| `rating` | Star rating out of 5 |
| `recommendPercent` | Percentage of reviewers who recommend it |
| `reviewsCount` | Number of reviews |
| `isVerified` | Whether the Page carries Facebook's verified badge |

#### 🆔 Identifiers and media

| Field | Description |
|---|---|
| `pageUrl` | Canonical Facebook URL |
| `slug` | The Page handle |
| `profileId` | Stable numeric ID that survives renames |
| `profilePicUrl` | Full-resolution profile picture |
| `coverPhotoUrl` | Full-resolution cover photo |

***

### 📄 Example Output

```json
{
  "pageName": "Joe's Stone Crab",
  "slug": "JoesStoneCrab",
  "pageUrl": "https://www.facebook.com/JoesStoneCrab/",
  "profileId": "100064737608769",
  "categories": ["Seafood Restaurant"],
  "intro": "For more than 100 years, no visit to Miami has been complete without stopping here.",
  "phone": "+1 305-673-0365",
  "email": "marketing@joesstonecrab.com",
  "address": "11 Washington Ave, Miami Beach, FL, United States, 33139",
  "website": "joesstonecrab.com",
  "likes": 44383,
  "rating": 4.7,
  "recommendPercent": 94,
  "reviewsCount": 14571,
  "priceRange": "$$",
  "openStatus": "Closed now",
  "services": ["Dine-in", "Outdoor seating", "Online booking"]
}
```

***

### ❓ Frequently Asked Questions

**Do I need a Facebook account or login?**
No. This collects only public information — exactly what any visitor sees without signing in. Nothing is logged into and no credentials are required.

**Is this legal?**
It collects publicly available business information. Scraping public data is broadly permitted, but how you use personal data is governed by GDPR, CCPA and similar laws. Use business contact details for legitimate business purposes and honour opt-outs.

**What if a Page has no email or phone?**
Those fields come back empty. Many Pages simply don't publish contact details — the scraper reports what exists rather than guessing. On a typical business list, expect roughly 7 in 10 Pages to have an email and around half to have a phone number.

**What happens if some of my URLs are wrong?**
They're detected and skipped, and you aren't charged for them. If most of your list turns out not to be real Pages, the run stops early and tells you, so a bad export doesn't quietly drain your credit.

**Can I scrape posts, reviews or followers with this?**
No — this one is built for Page profile and contact data. Use a dedicated Posts, Reviews or Followers scraper for those.

**Why is a residential proxy required?**
Facebook serves a login wall to datacenter IPs. Residential proxy is enabled by default and you don't need to configure anything.

**Are age-restricted Pages supported?**
Pages for alcohol, gambling and similar categories aren't publicly viewable without logging in, so they're reported as unavailable rather than returned empty.

**How fast is it?**
Hundreds of Pages per minute. A 1,000-Page job typically finishes in about five minutes.

***

### 💡 Tips

- **Start small.** Run 10–20 Pages first to confirm the output matches what you need, then scale up.
- **Use `Max results`** to cap spend when experimenting.
- **Handles beat URLs.** `@nike` works just as well as the full URL and is easier to paste from a spreadsheet.
- **Schedule it.** Set a weekly run to watch follower counts and ratings move over time.
- **Feed it from another scraper.** Pair it with a Facebook Page Search scraper to build the URL list first, then enrich every result here.

***

### 🆘 Support

Found a Page that should work but doesn't? Open an issue on the Actor page with the URL and it'll be looked into.

# Actor input Schema

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

Full URLs (https://facebook.com/nike), handles (@nike) or bare slugs (nike). Duplicates are removed automatically.

## `maxItems` (type: `integer`):

Stop after this many pages. Leave empty for no limit.

## Actor input object example

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

# 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/JoesStoneCrab",
        "seizieme"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesmith/facebook-pages-scraper-api").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/JoesStoneCrab",
        "seizieme",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("scrapesmith/facebook-pages-scraper-api").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": [
    "https://www.facebook.com/JoesStoneCrab",
    "seizieme"
  ]
}' |
apify call scrapesmith/facebook-pages-scraper-api --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/KMCcCxn1h5skhOibr/builds/shRV4bMzUlcrbJKdZ/openapi.json
