# Facebook Public Profile Scraper · People Lookup by URL or ID (`data-slayer/facebook-profile-scraper`) Actor

Turn known public Facebook person-profile URLs, usernames, or numeric IDs into structured profile records with identity, bio, work, education, location, audience counts, verification, and images.

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

## Pricing

from $9.00 / 1,000 confirmed public person profiles

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 Public Profile Scraper · People Lookup by URL or ID

Turn known public Facebook person-profile URLs, usernames, or numeric IDs into structured records for research, review, and data workflows—without guessing private or hidden attributes.

### Watch the demo

YouTube video coming soon.

### What this Actor does

Use this Actor when you already know which person profiles you need to check. It validates and deduplicates up to 100 references, retrieves currently available public profile details, confirms that the target is a person rather than a business Page, and writes one clean dataset row per confirmed profile.

Typical uses include refreshing an approved lead list, reviewing public creator or partner context, creating timestamped research snapshots, and adding stable Facebook profile IDs to an existing dataset.

This Actor is separate from Facebook People Search. It does not discover people from names or keywords. It is also separate from Facebook Page Details: business and organization Pages are not emitted as person profiles.

### Input

| Field | Type | Required | Default | Limits and purpose |
| --- | --- | --- | --- | --- |
| `profiles` | array of strings | Yes | — | Known public person-profile references. Accepts a username, numeric ID, `facebook.com/<username>`, `profile.php?id=<number>`, or `/people/<name>/<id>`. One per line; 1–100 entries. |
| `maxProfiles` | integer | No | `100` | Hard cap on unique accepted references processed; 1–100. |

Valid input:

```json
{
  "profiles": [
    "https://www.facebook.com/zuck",
    "https://www.facebook.com/profile.php?id=4"
  ],
  "maxProfiles": 2
}
```

Post, group, event, Marketplace, login, search-result, and non-Facebook URLs are rejected before retrieval. Duplicate references are processed once.

### Output

Each successful dataset item is one confirmed public person profile:

| Field | Type | Nullable | Meaning |
| --- | --- | --- | --- |
| `record_type` | string | No | Always `profile`. |
| `status` | string | No | Always `ok` for a dataset row. |
| `entity_type` | string | No | Always `person`; Pages are not emitted. |
| `requested_input` | string | No | The accepted reference supplied by the user. |
| `profile_id` | string | Yes | Public numeric Facebook profile ID when available. |
| `username` | string | Yes | Public username when available. |
| `name` | string | Yes | Public display name. |
| `bio` | string | Yes | Public bio or intro text. |
| `work` | string\[] | No | Public work entries; empty when not available. |
| `education` | string\[] | No | Public education entries; empty when not available. |
| `current_city` | string | Yes | Public current-city text. |
| `hometown` | string | Yes | Public hometown text. |
| `followers_count` | integer | Yes | Public follower count at collection time. |
| `following_count` | integer | Yes | Public following count at collection time. |
| `is_verified` | boolean | Yes | Public verification state when available. |
| `profile_url` | string | Yes | Canonical public profile URL when available. |
| `profile_picture_url` | string | Yes | Public profile-picture URL. |
| `cover_photo_url` | string | Yes | Public cover-photo URL. |
| `external_links` | string\[] | No | Public non-Facebook links; empty when unavailable. |
| `collected_at` | ISO 8601 string | No | Retrieval timestamp in UTC. |

Example:

```json
{
  "record_type": "profile",
  "status": "ok",
  "entity_type": "person",
  "requested_input": "https://www.facebook.com/example.person",
  "profile_id": "123456789",
  "username": "example.person",
  "name": "Example Person",
  "bio": "Public profile biography.",
  "work": ["Founder at Example Studio"],
  "education": ["Example University"],
  "current_city": "Palo Alto, California",
  "hometown": "Dobbs Ferry, New York",
  "followers_count": 1200,
  "following_count": 42,
  "is_verified": true,
  "profile_url": "https://www.facebook.com/example.person",
  "profile_picture_url": "https://scontent.example/profile.jpg",
  "cover_photo_url": "https://scontent.example/cover.jpg",
  "external_links": ["https://example.com"],
  "collected_at": "2026-09-21T00:00:00Z"
}
```

The example illustrates the schema; it is not a live observation or a promise that every profile exposes every field.

### Empty, unavailable, and partial outcomes

Only confirmed person-profile rows go to the default dataset. Invalid inputs, duplicate profiles, business Pages, unavailable profiles, and safe functional failures are reconciled in `RUN_SUMMARY`. They do not become dataset-result charges. A run can therefore complete with fewer rows than submitted references.

Public visibility varies by profile, location, and time. Null values and empty arrays mean that a field was not available during that check; the Actor does not infer it.

### Pricing proposal

The proposed pricing is one small Actor-start event plus one result event for each confirmed person-profile row written to the default dataset. Unavailable, rejected, duplicate, and failed references have no result charge.

| Plan | Actor start | Per profile | Per 1,000 profiles |
| --- | ---: | ---: | ---: |
| Free | $0.002 | $0.01050 | $10.50 |
| Bronze | $0.002 | $0.01000 | $10.00 |
| Silver | $0.002 | $0.00950 | $9.50 |
| Gold | $0.002 | $0.00900 | $9.00 |
| Platinum | $0.002 | $0.00900 | $9.00 |
| Diamond | $0.002 | $0.00900 | $9.00 |

The final price must be confirmed on the Store listing before starting a paid run.

### What this Actor does not do

- It does not search for people by name or keyword.
- It does not return business Page records.
- It does not retrieve posts, comments, friends lists, followers lists, private contact details, private profiles, or friends-only content.
- It does not infer relationship, demographic, political, health, religious, or other sensitive attributes.
- It does not guarantee that a public image URL remains permanent.

No Facebook password, login cookie, or account token is accepted as input.

### Responsible use

Process public profile data only for a lawful, proportionate purpose. Apply data minimization, retention limits, access controls, and human review. Do not use the output for harassment, unlawful discrimination, sensitive-trait inference, credential collection, or decisions that require protected data. Facebook is used nominatively to identify the public source; this Actor is independent and is not endorsed or operated by Meta.

### FAQ

**How much does it cost to run this Actor?**
Pricing is listed in the Pricing section above, charged per row returned. You only pay for the rows
the Actor actually produces, so a small test run costs cents.

**Do I need cookies or a login?**
No. This Actor reads public data only - no cookies, no account, no browser automation.

**Can I schedule it?**
Yes. Run it from the Apify API, on a schedule, or via a webhook, and export results as JSON, CSV or Excel.

**What if I need a slightly different output?**
Open an issue on the Actor's Issues tab describing the shape you need.

### Related actors

More Facebook actors from the same portfolio. Apify only auto-recommends actors in the same category, so here are the rest of ours:

| Actor |
|---|
| [Facebook Ads Library Scraper](https://apify.com/data-slayer/facebook-ads-library-scraper) |
| [Facebook Comments & Replies Scraper](https://apify.com/data-slayer/facebook-comments-scraper) |
| [Facebook Events Scraper · No Cookies](https://apify.com/data-slayer/facebook-search-events) |
| [Facebook Group Posts Scraper · No Cookies](https://apify.com/data-slayer/facebook-group-posts) |
| [Facebook Keyword Post Search · Public Posts](https://apify.com/data-slayer/facebook-post-search) |
| [Facebook Marketplace Listing Scraper · No Cookies](https://apify.com/data-slayer/facebook-marketplace-details) |
| [Facebook Page Details Scraper · No Cookies](https://apify.com/data-slayer/facebook-page-details) |
| [Facebook Page Posts Scraper · No Cookies](https://apify.com/data-slayer/facebook-page-posts) |
| [Facebook Page Reviews Scraper · No Cookies](https://apify.com/data-slayer/facebook-page-reviews) |
| [Facebook Page Search Scraper · No Cookies](https://apify.com/data-slayer/facebook-search-pages) |
| [Facebook People Search Scraper · No Cookies](https://apify.com/data-slayer/facebook-search-people) |

# Actor input Schema

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

One known person profile per line. Accepts a username, a public profile URL, profile.php?id=..., a people permalink, or a numeric profile ID. Pages, groups, posts, search URLs, and Marketplace URLs are rejected.

## `maxProfiles` (type: `integer`):

Hard cap on unique accepted profile references processed in this run.

## Actor input object example

```json
{
  "profiles": [
    "https://www.facebook.com/zuck",
    "https://www.facebook.com/profile.php?id=4"
  ],
  "maxProfiles": 100
}
```

# Actor output Schema

## `profiles` (type: `string`):

No description

## `runSummary` (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 = {
    "profiles": [
        "https://www.facebook.com/zuck",
        "https://www.facebook.com/profile.php?id=4"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("data-slayer/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": [
        "https://www.facebook.com/zuck",
        "https://www.facebook.com/profile.php?id=4",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("data-slayer/facebook-profile-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 '{
  "profiles": [
    "https://www.facebook.com/zuck",
    "https://www.facebook.com/profile.php?id=4"
  ]
}' |
apify call data-slayer/facebook-profile-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,data-slayer/facebook-profile-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/aAojmx6sW3NeKv8K5/builds/hEgdpZCKTfJaRf3Ab/openapi.json
