# Best Facebook Phone Number Scraper (`solid-scraper/best-facebook-phone-number-scraper`) Actor

📱🔎 Best Facebook Phone Number Scraper—extract targeted phone numbers from Facebook with speed and precision. Perfect for lead gen, marketers, and agencies seeking verified contact data. 🚀📈 Get results faster!

- **URL**: https://apify.com/solid-scraper/best-facebook-phone-number-scraper.md
- **Developed by:** [SolidScraper](https://apify.com/solid-scraper) (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.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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 Phone Number Scraper 📱🔎

**Facebook Phone Number Scraper** extracts phone numbers from Facebook profiles, groups, and pages using your keyword inputs and country targeting. If you’re looking for a **facebook phone number scraper**, a **facebook scraper for phone numbers**, or an **extract phone numbers from facebook** workflow for lead lists, this actor helps you collect relevant contact-style phone numbers from **public web data**—saving you hours of manual work.

Whether you’re a marketer, recruiter, or data enthusiast, you can use Facebook Phone Number Scraper as a **facebook lead scraper phone number** tool to gather phone contacts at scale, then export the results for further enrichment, outreach, and analysis.

***

### Why choose Facebook Phone Number Scraper?

| Feature | Benefit |
| --- | --- |
| ✅ **All-in-one phone number extraction** | Extracts phone numbers along with page context like title, description text, and source URL in one run |
| ✅ **Configurable targeting** | Focuses results using **Search Terms**, a **Country** dial code, and a **Source Type** filter |
| ✅ **Reliability with resilient scraping** | Includes retries and fallback behavior for improved continuity during runs |
| ✅ **Structured dataset output** | Produces consistent fields like `phone_number`, `country`, `dial_code`, `url`, and `source_type` |
| ✅ **Scale controls** | Lets you stop at your defined `maxPhoneNumbers` limit to match your project scope |
| ✅ **Automation-ready** | Pushes results incrementally to the output dataset for easy exporting and downstream processing |

***

### Key features

- 📊 **Structured phone number dataset**: Saves each discovered number with context fields such as `keyword`, `title`, `description`, `url`, and `source_type`
- 🔍 **Keyword-driven discovery**: Uses your provided `searchTerms` to find relevant Facebook contacts and phone numbers
- 🌍 **Country dial code targeting**: Formats numbers using the selected country’s dial code mapping and stores both `country` and `dial_code`
- 🧩 **Source type filtering**: Choose from **All**, **Profiles**, **Reels**, **Posts**, **Groups**, **Videos**, **Photos**, **Events**, or **Marketplace** to better match your data needs (great for “facebook groups phone number scraper” style use cases)
- 🛡️ **Resilient operation**: Includes retry logic and stopping rules to keep runs stable over time
- 💾 **Incremental saving to dataset**: Pushes each row immediately, so you can export results even if you stop early
- 🧹 **De-duplication across runs**: Tracks and avoids pushing phone numbers already seen during the run (unique collection for your “facebook phone number extraction tool” workflow)
- 🎯 **Hard limit protection**: Stops automatically once `maxPhoneNumbers` is reached (useful for controlled lead list building and “facebook lead scraper phone numbers” projects)

***

### Input

Provide input via an `input.json` file. Example structure:

```json
{
  "country": "United States (+1)",
  "maxPhoneNumbers": 50,
  "searchTerms": [
    "fitness coaches",
    "real estate agents"
  ],
  "sourceRegion": "Groups"
}
```

#### Input Fields

| Field | Required | Description |
| --- | --- | --- |
| `country` | Yes | Select the country to target for results. This also controls the dial code used for phone number formatting. |
| `maxPhoneNumbers` | Yes | Stop scraping after this many phone numbers are found (helps you keep runs focused and predictable). |
| `searchTerms` | Yes | Enter keywords to find relevant Facebook profiles/pages (for example: “Fitness Coaches”, “Real Estate”). |
| `sourceRegion` | Yes | Choose the type of Facebook content to target: `All`, `Profiles`, `Reels`, `Posts`, `Groups`, `Videos`, `Photos`, `Events`, or `Marketplace`. |

***

### Output

The actor saves each discovered phone number row into a dataset as JSON-compatible records with the following fields.

Example output row:

```json
[
  {
    "keyword": "fitness coaches",
    "title": "No title",
    "description": "No data",
    "phone_number": "+14155552671",
    "country": "United States",
    "dial_code": "+1",
    "url": "https://www.facebook.com/example",
    "source_type": "Groups"
  }
]
```

#### Output Fields

| Field | Type | Description |
| --- | --- | --- |
| `keyword` | string | The keyword from `searchTerms` that led to this result |
| `title` | string | The title text captured from the result page block (may be “No title”) |
| `description` | string | Extracted text from the result description area (may be “No data”) |
| `phone_number` | string | The formatted phone number in E.164 style |
| `country` | string | Target country name (derived from your selected `country`) |
| `dial_code` | string | Dial code string for the selected country |
| `url` | string | Source URL where the phone number context was found |
| `source_type` | string | The selected `sourceRegion` value used for targeting |

You can export the dataset after the run in common formats like **JSON** and **CSV** (depending on your Apify workflow).

***

### How to use Facebook Phone Number Scraper (via Apify Console)

1. **Open Apify Console**\
   Log in at https://console.apify.com and open the **Actors** tab.

2. **Find the actor**\
   Search for **Facebook Phone Number Scraper** and open its details page.

3. **Go to the INPUT section**\
   Use the built-in input form (or switch to editing `input.json`).

4. **Set your targeting**\
   Choose `country`, pick a `sourceRegion` (for example, `Groups` if you want “facebook groups phone number scraper” style results), and add your `searchTerms`.

5. **Set your limit**\
   Adjust `maxPhoneNumbers` to control how many phone numbers the run should collect.

6. **Run the actor**\
   Click **Run**. Watch the logs for progress like discovered numbers being pushed to the dataset and when the max limit is reached.

7. **Review results in the dataset**\
   Open the **OUTPUT** tab, open the dataset (scraped phone numbers), then export to JSON or CSV for your CRM, spreadsheet, or enrichment pipeline.

No coding required—get accurate results in minutes with **Facebook Phone Number Scraper**.

***

### Advanced features & SEO optimization

- 🔍 **Engineered for “facebook phone number scraper” lead workflows**: Works as a dedicated **facebook contact scraper** for phone-number discovery using your keyword and phone-targeting settings
- 🔄 **Resilience-focused execution**: Designed to continue smoothly using retries, fallbacks, and controlled stopping conditions (helpful when running larger keyword batches)
- 🧠 **Automatic normalization & parsing**: Formats discovered numbers into E.164 and attaches consistent metadata for analysis and deduping
- 💾 **Incremental dataset publishing**: Each result is pushed as it’s found, which makes “facebook page phone number scraper” and similar use cases easier to monitor and export
- 🌐 **Consistent output for “facebook email and phone number scraper” workflows**: Even though this actor outputs phone numbers, it includes enough page context fields (`title`, `description`, `url`) to support combined research tasks

***

### Best use cases

- 📈 **Sales teams building lead lists**: Quickly gather phone contacts tied to niche keywords and a chosen `sourceRegion`, then import into your outreach workflow
- 🎓 **Market researchers analyzing regional contact availability**: Compare phone presence across countries using the actor’s `country` + `dial_code` targeting
- 🏢 **Agency enrichment for local businesses**: Use `searchTerms` to focus on business types and capture phone numbers for follow-up research
- 🧑‍💼 **Recruiters sourcing community contacts**: Find contact phone numbers relevant to role-related keywords using consistent dataset fields
- 🧩 **Data analysts creating structured contact datasets**: Convert the dataset into a clean table for deduplication, segmentation by `source_type`, and quality checks
- 💻 **CRM automation pipelines**: Feed the exported dataset into a system that enriches and sequences outreach leads over time

***

### Technical specifications

**Supported Input Formats**

- ✅ `searchTerms` as an array of strings
- ✅ `country` as a single selected value (e.g., “United States (+1)”)
- ✅ `sourceRegion` as one of: `All`, `Profiles`, `Reels`, `Posts`, `Groups`, `Videos`, `Photos`, `Events`, `Marketplace`
- ✅ `maxPhoneNumbers` as an integer from 1 to 10000

**Proxy Support**

- ✅ Built-in proxy support for reliable scraping

**Retry Mechanism**

- ✅ Includes retries and fallbacks for resilience

**Dataset Structure**

- ✅ JSON records containing: `keyword`, `title`, `description`, `phone_number`, `country`, `dial_code`, `url`, `source_type`

**Rate Limits & Performance**

- ✅ Use `maxPhoneNumbers` to control runtime scope
- ✅ Results are pushed incrementally, so you can export mid-run if needed

**Limitations**

- ❌ Only collects phone numbers that can be found in **publicly available sources**
- ❌ Results depend on how phone numbers appear on target pages for the chosen `sourceRegion` and `country`

***

### FAQ

#### Does Facebook Phone Number Scraper collect phone numbers from private Facebook profiles?

❌ No. Facebook Phone Number Scraper collects information only from publicly available sources. It does not access private or restricted profile data.

#### What should I put in `searchTerms`?

✅ Use keywords related to the businesses or communities you want to target, such as “fitness coaches” or “real estate agents”. These help the actor find relevant Facebook pages and associated phone numbers.

#### Which `sourceRegion` is best for finding more business contacts?

💡 Many users prefer `Groups` or `Marketplace` when building outreach lists, since those categories often surface contact-style phone numbers. You can compare runs across `sourceRegion` values to find what works best for your niche.

#### How does `maxPhoneNumbers` work?

✅ `maxPhoneNumbers` stops the run once the actor has collected that many unique phone numbers (it will stop early if your limit is reached).

#### Does the actor export results automatically?

✅ The actor saves results incrementally to the dataset. You can then export the dataset (for example to JSON or CSV) from the Apify console output.

#### Can I resume a run if it gets interrupted?

✅ The actor stores progress internally and uses it to resume by continuing from prior state (including the set of already seen phone numbers).

#### Do I need any code to use this actor?

💻 No. You can run it directly from Apify Console by filling out the input fields and clicking **Run**.

#### Is the output suitable for lead generation and CRM import?

✅ Yes. Each row includes `phone_number` plus supporting fields like `url`, `title`, `description`, and `source_type`, which makes it easier to validate and route leads in downstream systems.

***

### Support & feature requests

Want to improve Facebook Phone Number Scraper or request enhancements for your “facebook phone number scraper” workflow? 💡 Share your ideas and feedback.

- 💡 **Feature Requests**: Examples include adding more export-friendly fields, improving dataset formatting, or supporting additional targeting modes for “facebook page phone number scraper” use cases
- 📧 **Contact**: Email <dataforleads@gmail.com>

Your feedback helps shape the roadmap for Facebook Phone Number Scraper.

***

### Closing CTA / Final thoughts

*If you need the most practical **Facebook Phone Number Scraper** for structured phone leads, start with your `searchTerms`, set a realistic `maxPhoneNumbers`, and let the actor build your dataset automatically.* 🚀

***

### Disclaimer

**This tool accesses publicly accessible sources only.** It does not access private profiles, authenticated data, or password-protected pages.

It is your responsibility to comply with applicable laws and regulations (including GDPR/CCPA where relevant), spam rules, and platform terms of service while using the data. For data removal requests, contact <dataforleads@gmail.com>.

Use Facebook Phone Number Scraper responsibly, ethically, and for legitimate purposes only.

# Actor input Schema

## `country` (type: `string`):

Select the country to target for Google search results.

## `maxPhoneNumbers` (type: `integer`):

Stop scraping after this many phone numbers are found.

## `searchTerms` (type: `array`):

Enter keywords to find Facebook profiles/pages (e.g., 'Fitness Coaches', 'Real Estate').

## `sourceRegion` (type: `string`):

Select the type of Facebook page to target.

## Actor input object example

```json
{
  "country": "United States (+1)",
  "maxPhoneNumbers": 20,
  "searchTerms": [
    "fitness coaches",
    "real estate agents"
  ],
  "sourceRegion": "All"
}
```

# 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 = {
    "searchTerms": [
        "fitness coaches",
        "real estate agents"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("solid-scraper/best-facebook-phone-number-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 = { "searchTerms": [
        "fitness coaches",
        "real estate agents",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("solid-scraper/best-facebook-phone-number-scraper").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 '{
  "searchTerms": [
    "fitness coaches",
    "real estate agents"
  ]
}' |
apify call solid-scraper/best-facebook-phone-number-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/2cHst7V46dv6Ed7WM/builds/gFA9LPmvDK3zlXF6X/openapi.json
