# Facebook Email Scraper: Page Contact Info, Phone & Address (`s_actors/facebook-email-scraper`) Actor

Get emails of public Facebook pages without login: the email on the page plus emails found on its website, mail server checked. Phone, website, address with coordinates, Instagram and other socials, category, rating. Pay only for pages with an email.

- **URL**: https://apify.com/s_actors/facebook-email-scraper.md
- **Developed by:** [Superior Actors](https://apify.com/s_actors) (community)
- **Categories:** Lead generation, Social media, AI
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.02 / 1,000 page with emails

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 Email Scraper: Page Contact Info, Phone & Address

**Get the emails of public Facebook pages without login or cookies.** For every page you get the **email it publishes on Facebook plus the emails found on its website** (home page, contact and imprint pages), each email domain **checked for a mail server**, and the best address to write to first. Also the **phone, website, address with coordinates**, Instagram, LinkedIn, X, TikTok, YouTube and other accounts, category, opening status, price range, rating and exact followers.

Many Facebook pages show no email at all: this scraper then opens the page's website and finds one there. You **pay only for pages that come back with an email**; pages without one are free.

Give it any mix of **page links, usernames or page IDs**. A Facebook page email finder and contact info API with clean JSON, CSV or Excel output: for lead generation, B2B outreach, local business lists and CRM enrichment.

#### What makes it different

| | |
| --- | --- |
| 🌐 **Email from Facebook and the website** | `facebookEmail` is the address on the page, `websiteEmails` the ones on its site; `email` is the best one, `emailSource` tells where it came from |
| ✅ **Mail server check** | Every email domain is checked for an MX record: dead addresses go to `invalidEmails`, never to `email` |
| 💸 **Pay only for emails** | A page without any email is free (and left out by default) |
| 📇 **Full contact card** | `phone`, `website`, `address` with `latitude` / `longitude`, `contactPageUrl`, opening status, price range, rating, reviews |
| 🔗 **Social profiles in columns** | `instagram`, `linkedin`, `x`, `tiktok`, `youtube`, `pinterest`, `yelp`, `whatsapp` from the page and its website |
| 🔢 **Exact followers** | `followers`, `talkingAbout`, `wereHere` as full numbers, to rank leads by audience size |
| 🔒 **No account, no cookies** | Only public pages, as any logged-out visitor sees them; your Facebook account is never used or at risk |

#### Example

Input: `https://www.facebook.com/katzsdeli`, `russanddaughters`, `https://www.facebook.com/zingermansdeli`. Real run, 11 Oct 2026:

| Page | Category | Email | From | Emails on website | Phone | Address | Instagram |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Katz's Delicatessen | Deli | cs@katzsdelicatessen.com | facebook | press@katzsdelicatessen.com | (212) 254-2246 | 205 E Houston St, New York, NY, United States, 10002 | @katzsdeli |
| Russ & Daughters | Bagel Shop | store@russanddaughters.com | facebook | info@russanddaughters.com | (212) 475-4880 | 179 E Houston St, New York, NY, United States, 10002 | @russanddaughters |
| Zingerman's Delicatessen | Deli | deli@zingermans.com | facebook | — | (734) 663-3354 | 422 Detroit St, Ann Arbor, MI, United States, 48104 | @zingermansdeli |

All three emails passed the mail server check. Katz's Delicatessen also returned coordinates (40.72222, -73.98751), 954,433 followers, "Open now", price range $$ and rating "98% recommend (52,495 reviews)"; for Zingerman's Delicatessen the website's contact page https://www.zingermansdeli.com/contact-us is in `contactPageUrl`.

On a larger run the same day, 6 of the 14 pages with an email got it **only from their website**, because the Facebook page shows none (Coca-Cola, PlayStation, Nintendo, Audi...).

#### Input

| Field | What it does |
| --- | --- |
| **Facebook pages** | One per line, any mix: `https://www.facebook.com/katzsdeli`, `katzsdeli`, `@katzsdeli`, `https://www.facebook.com/profile.php?id=100064530531036`, `/people/...` or `/pages/...` links, or a numeric page ID |
| **Also find emails on the page's website** | Opens the website listed on the page and adds its emails (on by default, included in the price) |
| **Only pages with an email** | Return and charge only pages with an email (on by default); off = also pages without one, free |
| **Check that the email domain receives mail** | MX lookup of every email domain (on by default) |
| **Contact pages to open per website** | When the home page has no email: how many contact / imprint / about pages to open (0-5, default 2) |
| **Parallel pages** | How many pages are processed at the same time (1-20) |

#### Output

| Field | Example |
| --- | --- |
| `name`, `category`, `url`, `username` | Katz's Delicatessen, Deli, https://www.facebook.com/katzsdeli/, katzsdeli |
| `email`, `emailSource`, `emailSourceUrl`, `emailMailServer` | cs@katzsdelicatessen.com, facebook, the page link, true |
| `emails`, `facebookEmail`, `websiteEmails`, `invalidEmails` | every valid email; the one on Facebook; the ones on the website; addresses whose domain has no mail server |
| `contactPageUrl`, `websiteReachable` | the website's contact page, true |
| `phone`, `website`, `websites` | (212) 254-2246, http://katzsdelicatessen.com/ |
| `address`, `latitude`, `longitude`, `serviceArea` | 205 E Houston St, New York, NY, United States, 10002, 40.72222, -73.98751 |
| `instagram`, `linkedin`, `x`, `tiktok`, `youtube`, `pinterest`, `yelp`, `whatsapp` | https://www.instagram.com/katzsdeli |
| `socialLinks` | accounts listed on the Facebook page: `[{"platform": "Instagram", "handle": "katzsdeli", "url": "..."}]` |
| `openStatus`, `priceRange`, `rating`, `recommendPercent`, `reviewCount` | Open now, $$, 98% recommend (52,495 reviews), 98, 52495 |
| `followers`, `talkingAbout`, `wereHere`, `verified` | 954362, 55661, 529779, false |
| `intro`, `pageId`, `profileId`, `profilePictureUrl` | New York City's most iconic deli., 89033874836, 100064806517961, image link |
| `input`, `checkedAt` | katzsdeli, 2026-10-11T13:02:20+00:00 |

A page that Facebook does not show (deleted, renamed, or restricted to logged-in users) returns a free row with `input` and `error`.

#### Pricing

Pay per event: **$0.001** per run and **$0.00127** per page with an email (**$1.27 per 1 000 pages**). Apify Scale plan: $1.14 per 1 000, Business plan and above: $1.02 per 1 000. The website search and the mail server check are included. Pages without an email and inputs not found are free.

| Example | Cost |
| --- | --- |
| 100 pages, 70 with an email | ~$0.09 |
| 1 000 pages, all with an email | ~$1.27 |
| 10 000 pages, 6 000 with an email | ~$7.62 |

#### Other Facebook tools

| Tool | What it does |
|---|---|
| [Facebook Page Scraper](https://apify.com/s_actors/facebook-page-scraper) | Exact followers and growth, page creation date, ads status, latest post |
| [Facebook Follower Count Checker](https://apify.com/s_actors/facebook-follower-count-checker) | Exact follower count of many pages and its growth over 7 and 30 days |
| [Facebook Page Search](https://apify.com/s_actors/facebook-page-search-scraper) | Facebook business pages by keyword and city, with exact followers, email, phone and address |

#### FAQ

**How do I find the email of a Facebook page?** Put the page link or username into **Facebook pages** and run. `email` is the address the page publishes on Facebook or, when it shows none, the best address from its website.

**Why do some pages have more than one email?** The page and its website often list different addresses (info@, sales@, press@). `emails` keeps them all; `email` is the one to write to first: the address on Facebook, otherwise one on the site's own domain, generic inboxes like info@ first.

**Are the emails valid?** Each domain is checked for a mail server (MX record). Addresses on domains that cannot receive mail are in `invalidEmails`. The check does not send any email, so it cannot tell whether one specific inbox exists.

**How do I get Facebook pages without an email too?** Turn off **Only pages with an email**: those pages come with phone, website and address, and they are free.

**Can it find pages by keyword or city?** Not this Actor: it takes page links, usernames or IDs. To find pages by a search like `dentist chicago` and get the same contacts, use [Facebook Page Search](https://apify.com/s_actors/facebook-page-search-scraper); for local businesses from Google Maps, the [Google Maps Email Extractor](https://apify.com/s_actors/google-maps-email-extractor).

**Do I need a Facebook account or cookies?** No. Only data that Facebook shows to any logged-out visitor is read.

#### Tips

- Use the *Leads* view for outreach lists and export it to CSV, Excel or a [Google Sheet](https://apify.com/s_actors/google-sheets-import-export).
- `emailSource` = `website` marks emails that other Facebook scrapers miss, because the page itself shows none.
- For a fast run without website visits, turn off **Also find emails on the page's website**: you get only the emails published on Facebook.

#### Limits

- Pages that Facebook gates for logged-out visitors (age or country: some brand pages) show no contacts and return an error row (free).
- Some websites block automated visitors or load their contacts only with JavaScript: then only the Facebook email is returned and `websiteReachable` may be false.
- Personal profiles rarely publish an email; the Actor is made for business and brand pages.
- Groups, events and Marketplace are not pages and return a free error row.

#### Ready-made tasks

| Task | What it does |
| --- | --- |
| [Facebook Page Email Finder: Emails of Business Pages](https://apify.com/s_actors/facebook-email-scraper/examples/facebook-page-email-finder) | Emails of a list of local business pages, from Facebook and their websites |

#### Related tools

| Tool | What it does |
|---|---|
| [Google Maps Email Extractor](https://apify.com/s_actors/google-maps-email-extractor) | Emails and social links of local businesses from Google Maps |
| [LinkedIn Company Scraper](https://apify.com/s_actors/linkedin-company-scraper) | Exact employee count and headcount growth of companies |
| [Threads Scraper](https://apify.com/s_actors/threads-scraper) | Profiles, posts, views and engagement of Threads accounts |
| [Google Sheets Import & Export](https://apify.com/s_actors/google-sheets-import-export) | Send the leads to a Google Sheet |

#### Use with the API and AI agents

Run it via the [Apify API](https://docs.apify.com/api/v2) from Python, Node.js or any HTTP client, or connect it to Claude, ChatGPT and other AI agents through the [Apify MCP server](https://mcp.apify.com): "Find the emails of these 50 restaurant pages and tell me which ones list an Instagram account."

```json
{
    "pages": ["https://www.facebook.com/katzsdeli", "russanddaughters", "https://www.facebook.com/zingermansdeli"],
    "searchWebsite": true,
    "onlyWithEmail": true,
    "checkMailServer": true
}
```

Each row is one page with `email`, `emailSource`, `emails`, `phone`, `website`, `address`, `instagram` and `url`; inputs not found have `error`.

#### Is it legal?

The Actor collects only public contact details that businesses publish on their Facebook pages and websites, without logging in. Use personal data such as names, emails and phone numbers in line with GDPR, CAN-SPAM and other privacy and anti-spam laws.

# Actor input Schema

## `pages` (type: `array`):

One per line, any mix: a page link (facebook.com/<name>, also profile.php?id=, /people/... and /pages/... links), the page username ("katzsdeli", "@katzsdeli") or its numeric page id. Groups, events and posts are not pages.

## `searchWebsite` (type: `boolean`):

Opens the website listed on the Facebook page (its home page and, while no email is found, its contact / imprint pages) and adds the emails found there. Finds an email for many pages that publish none on Facebook. Included in the price.

## `onlyWithEmail` (type: `boolean`):

Return only pages with at least one email (from Facebook or the website); you pay only for them. Turn off to also get pages without an email (phone, website, address...): they are free.

## `checkMailServer` (type: `boolean`):

Looks up the mail server (MX record) of every email domain: addresses on domains that cannot receive mail go to "invalidEmails", not to "email".

## `contactPages` (type: `integer`):

When the home page has no email: how many contact-like pages of the same site to open (contact, imprint, about...). 0 = home page only.

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

How many Facebook pages are processed at the same time.

## Actor input object example

```json
{
  "pages": [
    "https://www.facebook.com/katzsdeli",
    "russanddaughters",
    "https://www.facebook.com/zingermansdeli"
  ],
  "searchWebsite": true,
  "onlyWithEmail": true,
  "checkMailServer": true,
  "contactPages": 2,
  "maxConcurrency": 8
}
```

# Actor output Schema

## `leads` (type: `string`):

One row per page: best email, phone, website, address, category, rating, followers.

## `emails` (type: `string`):

Every email of the page: on Facebook, on the website, where it was found, mail server check.

## `social` (type: `string`):

Instagram, X, YouTube, TikTok, LinkedIn and the accounts listed on the page, from the page and its website.

## `location` (type: `string`):

Address with coordinates, opening status, price range, rating, check-ins.

## `all` (type: `string`):

Every field of every row.

# 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 = {
    "pages": [
        "https://www.facebook.com/katzsdeli",
        "russanddaughters",
        "https://www.facebook.com/zingermansdeli"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("s_actors/facebook-email-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 = { "pages": [
        "https://www.facebook.com/katzsdeli",
        "russanddaughters",
        "https://www.facebook.com/zingermansdeli",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("s_actors/facebook-email-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 '{
  "pages": [
    "https://www.facebook.com/katzsdeli",
    "russanddaughters",
    "https://www.facebook.com/zingermansdeli"
  ]
}' |
apify call s_actors/facebook-email-scraper --silent --output-dataset

```

## MCP server setup

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