# Facebook Profile Scraper (`datapilot/facebook-profile-scraper`) Actor

Extract names, profile URLs, descriptions, follower counts, profile images, and Open Graph metadata from usernames or profile links. Supports  Apify Proxy, batch processing, and structured dataset export.

- **URL**: https://apify.com/datapilot/facebook-profile-scraper.md
- **Developed by:** [Data Pilot](https://apify.com/datapilot) (community)
- **Categories:** Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 scraped 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 Profile** Scraper is a powerful Apify Actor designed to discover, track, and collect public **Facebook Profile** data directly from Facebook's own profile pages using a full browser engine. This tool provides comprehensive **Facebook Profile** intelligence including display name, description, follower/likes count, profile picture, and canonical profile URL for any accessible **Facebook Profile**. Whether you're building a brand-monitoring dashboard, tracking public pages, or conducting social media research, the Facebook Profile Scraper delivers actionable **Facebook Profile** insights efficiently.

With direct browser automation, OpenGraph metadata extraction, username/URL normalization, and reliable Apify Dataset delivery, the Facebook Profile Scraper ensures comprehensive **Facebook Profile** coverage across any list of usernames or profile links. It focuses on key **Facebook Profile** signals including name, description, followers, and profile picture, making it an essential tool for social media research and brand intelligence.

***

### 📋 Table of Contents

- [Features](#-features)
- [Data Source](#-data-source)
- [How It Works](#-how-it-works)
- [Input](#-input)
- [Output](#-output)
- [Technical Stack](#-technical-stack)
- [Data Fields](#-data-fields-explained)
- [Use Cases](#-use-cases)
- [Quick Start](#-quick-start)
- [Configuration](#-configuration)
- [Performance](#-performance)
- [Billing](#-billing)
- [Important Notes](#-important-notes)
- [Changelog](#-changelog)
- [Support](#-support--feedback)
- [License & Legal](#-license--legal)

***

### 🔥 Features

- **Real Browser Rendering** –  with headless Chromium to load each **Facebook Profile** exactly as a real visitor would.
- **Flexible Input Handling** – Accepts plain usernames, `@handles`, or full **Facebook Profile** URLs and normalizes them automatically.
- **OpenGraph Metadata Extraction** – Pulls name, description, image, and canonical URL straight from each **Facebook Profile**'s meta tags.
- **Follower/Likes Detection** – Parses follower or "people follow this" counts directly out of the **Facebook Profile** description text.
- **404 Detection** – Automatically detects and skips **Facebook Profile** pages that no longer exist.
- **Residential Proxy Support** – Apify residential proxy routed through  for reliable **Facebook Profile** access.
- **Realistic Browser Fingerprint** – Custom user agent and viewport to reduce detection while loading each **Facebook Profile**.
- **Batch Processing** – Scrape any number of **Facebook Profile** entries in a single run.
- **Human-Like Pacing** – Built-in delay between **Facebook Profile** page loads to reduce blocking.
- **Real-Time Dataset Push** – Pushes all collected **Facebook Profile** records to Apify Dataset in a single batch.
- **Detailed Logging** – Comprehensive per-username **Facebook Profile** navigation and status logging.
- **Graceful Error Handling** – Skips a failing **Facebook Profile** without stopping the whole run.

***

### 📊 Data Source

#### **Facebook Public Profile Pages**

- **Authority**: Facebook's own public-facing profile and page pages
- **Access Method**: Headless Chromium browser via , rendering `facebook.com/{username}`
- **Coverage**: Any public **Facebook Profile** or Page reachable without login
- **Data**: OpenGraph metadata — name, description, image, URL, and follower/likes count
- **Access**: Public pages, no API key required
- **Update Frequency**: Reflects each **Facebook Profile**'s current live state at time of run

***

### ⚙️ How It Works

The Facebook Profile Scraper accepts a list of usernames or profile URLs, normalizes each into a clean username, and drives a real headless Chromium browser to each **Facebook Profile** page. Once the page loads, the Actor parses the rendered HTML with BeautifulSoup to extract OpenGraph meta tags — title, description, image, and canonical URL — and applies a regular expression to pull a follower or likes count out of the description text where available. Every successfully scraped **Facebook Profile** record is collected and pushed to the Apify Dataset in a single batch at the end of the run.

**Key Processing Steps:**

1. **Input Parsing** – Accept a list of usernames, handles, or full **Facebook Profile** URLs
2. **Username Normalization** – Strip `@` symbols and extract the username from full URLs
3. **Proxy Setup** – Configure Apify residential proxy and pass credentials into
4. **Browser Launch** – Start headless Chromium with a realistic user agent and viewport
5. **Profile Loop** – Iterate through each normalized **Facebook Profile** username
6. **Page Navigation** – Load `facebook.com/{username}` and wait for DOM content
7. **404 Check** – Detect and skip missing **Facebook Profile** pages
8. **HTML Parsing** – Extract OpenGraph meta tags with BeautifulSoup
9. **Follower Extraction** – Regex-match a follower/likes count from the description
10. **Timestamp Tagging** – Record scrape time per entry
11. **Rate Limiting** – Apply a short delay between **Facebook Profile** loads
12. **Dataset Push** – Push all collected records from the run in a single batch

**Key Benefits:**

- Pull **Facebook Profile** data for any public account or page without manual visits
- Detect missing or deactivated **Facebook Profile** pages automatically
- Monitor brand pages and public figures' **Facebook Profile** metadata over time
- Feed social media dashboards, research pipelines, or brand-monitoring tools
- Automate recurring **Facebook Profile** checks as descriptions or follower counts change

***

### 📥 Input

The Actor accepts the following input parameters:

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `profiles` | array | *(required)* | List of **Facebook Profile** usernames, `@handles`, or full profile URLs. |
| `useApifyProxy` | boolean | `true` | Enable Apify residential proxies. |
| `apifyProxyGroups` | array | `["RESIDENTIAL"]` | Proxy group configuration. |

**Example Input:**

```json
{
  "profiles": [
    "zuck",
    "@nasa",
    "https://www.facebook.com/natgeo"
  ],
  "useApifyProxy": true,
  "apifyProxyGroups": ["RESIDENTIAL"]
}
```

**Scrape a Single Facebook Profile:**

```json
{
  "profiles": ["natgeo"]
}
```

**Scrape from Full Profile URLs:**

```json
{
  "profiles": [
    "https://www.facebook.com/nasa",
    "https://www.facebook.com/natgeo"
  ]
}
```

***

### 📤 Output

The Actor pushes **Facebook Profile** records with the following structure:

| Field | Type | Description |
|-------|------|-------------|
| `username` | string | The normalized **Facebook Profile** username used for the request |
| `full_name` | string | Display name extracted from the OpenGraph title tag |
| `profile_url` | string | Canonical **Facebook Profile** URL from OpenGraph metadata |
| `description` | string | OpenGraph description text for the **Facebook Profile** |
| `followers_count` | string/null | Follower or likes count parsed from the description, if present |
| `profile_pic` | string | URL of the **Facebook Profile** picture from OpenGraph image metadata |
| `scraped_at` | string | ISO 8601 timestamp of when the record was scraped |

**Example Facebook Profile Record:**

```json
{
  "username": "natgeo",
  "full_name": "National Geographic",
  "profile_url": "https://www.facebook.com/natgeo/",
  "description": "National Geographic. 45M likes. Experience the world through the eyes of National Geographic photographers.",
  "followers_count": "45M",
  "profile_pic": "https://scontent.xx.fbcdn.net/...",
  "scraped_at": "2026-08-05T09:00:00+00:00"
}
```

***

### 🧰 Technical Stack

- \*\*Browser Automation:\*\*with headless Chromium for real **Facebook Profile** rendering
- **HTML Parsing:** BeautifulSoup for OpenGraph metadata extraction
- **Pattern Matching:** Regular expressions for follower/likes count parsing
- **Date Handling:** `datetime` with timezone-aware UTC timestamps
- **Async:** `asyncio` for non-blocking, multi-profile processing
- **Proxy:** Apify Proxy with `RESIDENTIAL` configuration, wired into 's proxy settings
- **Logging:** Apify Actor logging system
- **Platform:** Apify Actor serverless environment

***

### 📊 Data Fields Explained

#### **Identity**

- **username**: The normalized handle used to build the **Facebook Profile** URL
- **full\_name**: The public display name shown on the **Facebook Profile**

#### **Profile Details**

- **description**: The OpenGraph description summarizing the **Facebook Profile**
- **profile\_url**: The canonical link to the **Facebook Profile**
- **profile\_pic**: Direct link to the **Facebook Profile** picture

#### **Engagement**

- **followers\_count**: Follower or "likes"/"people follow this" figure extracted from the description, when Facebook exposes it publicly

***

### 🎯 Use Cases

- **Brand Monitoring** – Track how a company's **Facebook Profile** or Page presents itself publicly
- **Competitor Research** – Compare follower counts and descriptions across competing **Facebook Profile** pages
- **Public Figure Tracking** – Monitor **Facebook Profile** metadata for politicians, creators, or organizations
- **Social Media Auditing** – Verify that a **Facebook Profile** is active and correctly configured
- **Marketing Analytics** – Feed **Facebook Profile** metadata into campaign or reputation dashboards
- **Lead Generation** – Identify public business pages matching a target market
- **Academic Research** – Study public **Facebook Profile** trends at scale
- **OSINT Research** – Gather publicly available **Facebook Profile** metadata for investigations

***

### 🚀 Quick Start

#### **1. Prepare Input**

Go to Apify Console and enter:

```json
{
  "profiles": ["nasa", "natgeo"]
}
```

#### **2. Run the Actor**

Click **Start**. The Actor will:

- Normalize each username or URL into a clean **Facebook Profile** handle
- Launch a headless browser and visit each **Facebook Profile** page
- Extract OpenGraph metadata and follower counts
- Push all results to the Dataset

#### **3. Monitor Progress**

Console shows:

```
Initializing  Facebook Scraper for 2 account(s)...
[Facebook Scraper] Navigating to: 'https://www.facebook.com/nasa'
[Facebook Scraper] Navigating to: 'https://www.facebook.com/natgeo'
Done! Successfully saved 2 Facebook profile(s) to Dataset.
```

#### **4. View & Download Results**

- **Results Tab**: All **Facebook Profile** records
- **Export**: JSON, CSV, Excel, or HTML
- **Filter**: By follower count or username
- **API Access**: Available via the Apify API

***

### ⚙️ Configuration

Single Facebook Profile:

```json
{
  "profiles": ["natgeo"]
}
```

Mixed usernames and URLs:

```json
{
  "profiles": [
    "@nasa",
    "https://www.facebook.com/natgeo"
  ]
}
```

Run without proxy:

```json
{
  "profiles": ["natgeo"],
  "useApifyProxy": True 
}
```

***

### 📈 Performance

#### **Processing Speed**

- One full browser page load per **Facebook Profile**
- Fixed ~3 second settle time per page load plus a 2 second delay between profiles
- Scales linearly with the number of usernames/URLs submitted

#### **Resource Usage**

- Memory: Moderate, due to running a real Chromium browser instance
- Network: One page navigation per **Facebook Profile**, plus associated page assets
- Proxy: One residential proxy session shared across the browser context for the run

***

### 💰 Billing

#### **Batch Billing**

- **Billing Model:** Batch push (not per-record PPE)
- **Typical Cost:** Proportional to total **Facebook Profile** pages successfully scraped
- **Efficiency:** Single shared browser session across all profiles in a run keeps overhead low

***

### ⚠️ Important Notes

#### **Legal & Compliance**

- **Fair Use**: Respects Facebook's public pages and applies pacing delays between requests
- **Public Data Only**: Retrieves only publicly visible **Facebook Profile** metadata exposed via OpenGraph tags
- **Privacy**: Collecting profile data may be subject to privacy regulations and Facebook's Terms of Service — use only for legitimate purposes
- **Legal**: Not legal advice — consult qualified professionals before using this data for compliance-sensitive decisions

#### **Data Quality**

- **Freshness**: Reflects each **Facebook Profile**'s live state at time of run
- **Completeness**: Follower/likes counts are only available when Facebook exposes them in the public description text
- **Accuracy**: Sourced directly from Facebook's own rendered pages
- **Verification**: Cross-check high-stakes figures against the live Facebook app or website

#### **Best Practices**

- Always configure a residential proxy for the most reliable **Facebook Profile** access
- Use full profile URLs when a username alone is ambiguous
- Keep batch sizes reasonable, since each **Facebook Profile** requires a full browser page load
- Re-run periodically to track changes in description or follower counts
- Expect `followers_count` to be `null` for **Facebook Profile** pages that don't expose it publicly

***

### 📦 Changelog

#### v1.0.0 (August 2026)

**Initial Release:**

- headless Chromium browser automation
- Username/URL normalization for flexible input
- OpenGraph metadata extraction via BeautifulSoup
- Follower/likes count regex parsing
- 404 detection for missing profiles
- Apify residential proxy support wired into
- Real-time Dataset push
- Asyncio-based batch processing

***

### 🧑‍💻 Support & Feedback

- **Issues:** Submit via Apify console with the username or URL used
- **Documentation:** Check the Actor details page
- **Community:** Apify forum discussions
- **Feature Requests:** Suggest additional **Facebook Profile** fields to extract
- **Bug Reports:** Include the username/URL, expected result, and error details

***

### 📄 License & Legal

**Terms of Use:**

- Use for legitimate research, marketing, and analytics purposes
- Respect Facebook's Terms of Service
- Do not use for unsolicited contact, harassment, or unlawful surveillance
- Use **Facebook Profile** data responsibly and in compliance with applicable privacy laws

**Disclaimer:**
Facebook Profile Scraper is provided as-is for research and analytics purposes. Users are responsible for compliance with Facebook's ToS and all applicable laws. This is not legal advice.

***

### 🎉 Get Started Today

**Deploy now for Facebook Profile research!**

Use for:

- 📘 Brand & Page Monitoring
- 🔍 Competitor Account Tracking
- 💡 Social Media Analytics
- 📈 Public Figure Tracking
- 🎯 OSINT & Reputation Research

**Perfect for:**

- Social Media Marketers
- Brand Monitoring Teams
- Growth & Analytics Teams
- OSINT Researchers

***

**Last Updated:** August 2026
**Version:** 1.0.0
**Status:** Production Ready
**Platform:** Apify Actor
**Architecture:** Async/Await
**Data Source:** Facebook Public Profile Pages
----------------------------------------------

### 📚 Related Tools

- Instagram Profile Scraper
- Twitter/X Profile Collector
- TikTok Profile Scraper

***

### ⚖️ Facebook Profile Excellence

This Actor is optimized for **Facebook Profile** research with:

- ✅ Real browser rendering for accurate data
- ✅ Flexible username/URL input handling
- ✅ OpenGraph metadata extraction
- ✅ 404 and missing-profile detection
- ✅ Real-time Dataset push
- ✅ Production-ready code

# Actor input Schema

## `profiles` (type: `array`):

Enter Facebook profile URLs or usernames (e.g. zuck or https://www.facebook.com/zuck).

## `useApifyProxy` (type: `boolean`):

Recommended to bypass Facebook rate limits.

## `apifyProxyGroups` (type: `array`):

Select proxy networks (RESIDENTIAL is highly recommended).

## Actor input object example

```json
{
  "profiles": [
    "zuck"
  ],
  "useApifyProxy": true,
  "apifyProxyGroups": [
    "RESIDENTIAL"
  ]
}
```

# 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 = {
    "profiles": [
        "zuck"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("datapilot/facebook-profile-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 = { "profiles": ["zuck"] }

# Run the Actor and wait for it to finish
run = client.actor("datapilot/facebook-profile-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 '{
  "profiles": [
    "zuck"
  ]
}' |
apify call datapilot/facebook-profile-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/0LoFGRIucK6NNAGi4/builds/fFlXQVvpV67pFcATu/openapi.json
