# Facebook Page Details Scraper – Business Data (`scrapingmonkey/facebook-page-details-scraper`) Actor

Extract public Facebook Page identity, contacts, categories, audience counts and available business information. Export one row per Page without Facebook login.

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

## Pricing

from $1.00 / 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/actors/running/actors-in-store.md#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

Extract public business information, contact details and audience counts from known Facebook Pages. **Facebook Page Details Scraper** turns a Page username or URL into one record with identity, About information, available transparency details and business fields.

Use it to enrich company records, compare public Page information or keep a directory up to date. No Facebook login or cookies are required, and optional fields reflect what the Page makes publicly available.

| At a glance | Details |
|---|---|
| 📥 Input | Page usernames, numeric IDs as strings, or Page URLs |
| 📤 Output | Page identity, contacts, categories, audience, ratings and business information |
| 🔐 Login required | No Facebook credentials or cookies |
| 📄 Collection | One detail lookup per target; no pagination setting |
| 💾 Delivery | One row per processed Page; JSON, CSV, Excel or API |

### What the Facebook Page Details Scraper extracts 🔎

Collect the public information used to understand a business Page, with one consistent set of columns across different categories and locations.

- Page and profile IDs, username, name, URL, profile picture and cover image
- Description, About text, category and additional categories
- Follower, following, like, discussion and check-in counts when available
- Public address, phone numbers, email addresses and websites
- Recommendation summary, review count, opening status, services and price range
- Available creation date, manager-location summary, ad status and additional business details

### How to scrape Facebook Page details 🚀

1. Add Page usernames such as `Meta`, or full Page URLs such as `https://www.facebook.com/NASA/`.
2. Put each target in a separate `inputList` item.
3. Start the Actor and inspect the dataset’s `status` column.
4. Export successful rows or connect the results to your workflow.

```json
{
  "inputList": [
    "Meta",
    "https://www.facebook.com/NASA/"
  ]
}
```

### Facebook Page details data fields and output 📦

| Field group | Included data |
|---|---|
| Identity | IDs, username, name, URL, profile and cover pictures, verification |
| Description | Description, About text, category and categories |
| Audience | Followers, following, likes, people talking about the Page and check-ins |
| Contacts | Address, primary and additional phones, emails and websites |
| Business | Ratings, recommendations, review count, hours, services and price range |
| Transparency | Creation-date text, manager-location summary and ad status |
| Additional fields | Aligned `business_fields.path` and `business_fields.value` lists |

Complete representative success item. All names, counts and media addresses below are illustrative, not a live result; every current output field is included.

```json
{
  "input": "HarborCoffee",
  "status": "success",
  "id": "100091234567890",
  "page_id": "104567890123456",
  "username": "HarborCoffee",
  "name": "Harbor Coffee",
  "url": "https://www.facebook.com/HarborCoffee/",
  "profile_picture_url": "https://media.example.com/harbor-coffee-profile.jpg",
  "cover_picture_url": "https://media.example.com/harbor-coffee-cover.jpg",
  "is_verified": false,
  "description": "Harbor Coffee. 2,400 likes. 85 talking about this. 320 were here.",
  "about": "Seasonal coffee, fresh pastries and a place to meet by the harbor.",
  "category": "Coffee shop",
  "categories": [
    "Coffee shop",
    "Bakery"
  ],
  "followers_count": 2800,
  "followers_text": "2.8K followers",
  "following_count": 34,
  "following_text": "34 following",
  "likes_count": 2400,
  "talking_about_count": 85,
  "were_here_count": 320,
  "address": "12 Harbor Lane, Portland, ME",
  "phone": "+1 207-555-0142",
  "phones": [
    "+1 207-555-0142"
  ],
  "email": "hello@harborcoffee.example",
  "emails": [
    "hello@harborcoffee.example"
  ],
  "website": "https://harborcoffee.example/",
  "websites": [
    "https://harborcoffee.example/"
  ],
  "rating_text": "96% recommend (125 reviews)",
  "recommend_percent": 96,
  "reviews_count": 125,
  "hours_status": "Open until 6:00 PM",
  "services": [
    "Dine-in",
    "Takeout"
  ],
  "price_range": "$",
  "creation_date": "May 12, 2018",
  "admin_info": "This Page has managers in the United States.",
  "ad_status": "This Page is not currently running ads.",
  "is_running_ads": false,
  "business_fields.path": [
    "/business_hours/value",
    "/business_hours/url",
    "/business_hours/details/0"
  ],
  "business_fields.value": [
    "Open until 6:00 PM",
    "",
    "Monday–Friday: 8:00 AM–6:00 PM"
  ]
}
```

The table and JSON use the same flat keys and values, with one row per result. Dots in keys such as `business_fields.path` are literal parts of the field name.

`business_fields.path` identifies each additional source field using a JSON Pointer; `business_fields.value` holds the scalar value at the matching list index. An empty collection uses empty lists, and an unavailable collection uses `null`.

Successful rows may contain empty strings, zeroes, false flags, empty lists or nulls when optional information is unavailable. Do not interpret a default count or flag as a confirmed source fact. Failed rows retain `input`, set `status` to `failed`, and use null result fields.

### Input requirements and coverage ⚙️

| Parameter | Type | Required | Rules |
|---|---|---|---|
| `inputList` | array of strings | Yes | At least one Page username, numeric ID as a string, or supported Page URL; no default target. |

Page usernames, numeric IDs entered as strings, standard Page URLs, `profile.php?id=...` URLs and legacy `/pages/NAME/ID` links are accepted. Use a Page address rather than a post, Reel, group or event link. There is no page-count parameter: each input is a detail lookup.

Provide an array of strings, not URL objects. An invalid overall input structure stops processing without dataset rows; an invalid target within a valid list is recorded as a failed result. The input schema does not set a maximum list length; choose batch sizes appropriate to your run limits.

### Facebook Page details use cases 🎯

#### Company record enrichment

Add a public website, category, address and contact channels to business records that already have a Facebook Page.

#### Location directory maintenance

Compare opening-status text, services and published phone numbers across a list of local business Pages.

#### Page monitoring

Use scheduled runs to compare descriptions, audience figures, recommendations and available transparency information over time.

### Pricing and billable Page rows 💰

Check the Actor’s **Pricing** tab for the current model and rate. That configuration is authoritative.

Under dataset-item pricing, saved success and failed rows can count toward charges. Each successfully extracted Page saves one success row. Invalid or unavailable targets can save failed rows. Retries do not independently add dataset rows. All details remain in their result row.

### Facebook Page Details Scraper API and integrations 🔌

Replace `$ACTOR_ID` with the ID shown in the Actor’s API tab and `$APIFY_TOKEN` with your Apify token.

```bash
curl -X POST "https://api.apify.com/v2/acts/$ACTOR_ID/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"inputList":["Meta","https://www.facebook.com/NASA/"]}'
```

Start runs through the Apify API, schedules or client libraries. Use webhooks for completion events and export the dataset to spreadsheets, Make, Zapier, storage or your own application.

### Reliability and limits ⚠️

Available About, transparency and additional details are combined into one Page result. If optional transparency or business sections cannot be retrieved, the Actor can retain the Page information already obtained. A successful row therefore does not mean every optional field is present.

Facebook can rename Pages, restrict public access or change the information it returns. Temporary request failures are retried; an unavailable Page or invalid target can produce a failed row.

### Frequently asked questions ❓

#### Can I get public email addresses and phone numbers?

Yes, when the Page publishes them. The Actor does not discover hidden contact information.

#### Does this download the Page’s posts?

No. It extracts Page information; use a content-specific actor for Reels, photos or reviews.

#### Why are `id` and `page_id` separate?

The returned profile identifier and delegated Page identifier can differ. Both remain strings so you can use the identifier required by your workflow.

#### Can a successful Page have missing fields?

Yes. Contacts, transparency details and some counts depend on the Page and public response. A default zero or false flag is not proof that Facebook explicitly reported that value.

#### Does it require a Facebook account?

No Facebook credentials or cookies are requested.

### Support, responsible use, and related actors 🛟

For help with missing or unexpected results, open an Issue on this Actor’s Apify page with the run link, a public example input and the fields you expected. Keep tokens and credentials out of support messages.

Use public data only for purposes you are authorized to pursue, respecting privacy, platform terms and content rights.

# Actor input Schema

## `inputList` (type: `array`):

Add one Facebook Page username or full Page URL per item. Every input produces success or failed output.

## Actor input object example

```json
{
  "inputList": [
    "Meta"
  ]
}
```

# Actor output Schema

## `results` (type: `string`):

Actor dataset results with input and status columns.

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

// Run the Actor and wait for it to finish
const run = await client.actor("scrapingmonkey/facebook-page-details-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 = { "inputList": ["Meta"] }

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapingmonkey/facebook-page-details-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/2P1uYpZVna0x8OLZB/builds/gkKbNVQXaIkf3lK2K/openapi.json
