# Facebook Post Analytics - Video Views, Reactions & Shares PPR (`zaver.api/facebook-post-analytics`) Actor

Get detailed analytics for any public Facebook post, video or reel - no login. Paste URLs and get views, plays, reactions with a per-emoji breakdown, comments and shares. Export to CSV, JSON or Excel, run via API or on a schedule.

- **URL**: https://apify.com/zaver.api/facebook-post-analytics.md
- **Developed by:** [Zaver](https://apify.com/zaver.api) (community)
- **Features:** Limited permissions
- **Stats:** 95 total users, 13 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 facebook post analytics & metrics

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 Post Analytics 📘📊

**Facebook Post Analytics** gets **detailed metrics for any public Facebook post, video or reel** — **no login, no password**. Paste one or more Facebook URLs and get **views, plays, total reactions with a per-emoji breakdown, comments and shares**, plus the page name and post title. Export to **CSV, Excel or JSON**, or pull it via the **API**.

Built for **social media analytics, competitor benchmarking, campaign reporting and video-performance tracking**.

- ✅ **No login, no password** — public content read anonymously
- ✅ **Video views & plays** for watch pages
- ✅ **Reactions breakdown** — Like, Love, Haha, Wow, Sad, Angry counts, not just a total
- ✅ **Comments & shares**
- ✅ **Bulk** — analyze many posts in one run
- ✅ **CSV, Excel, JSON, XML** export + full API, scheduler and integrations

***

### What data does it extract?

One row per post/video:

| Field | Description | Example |
|---|---|---|
| `channel` | Page / owner name | `NASA` |
| `title` | Post or video title | `Launch highlights` |
| `view_count` | Video views | `250000` |
| `likes` | Total reactions | `4200` |
| `reactions_breakdown` | Per-reaction counts | `{"Like":3000,"Love":900,"Wow":300}` |
| `comments` | Comment count | `310` |
| `shares` | Share count | `25` |
| `post_url` | Canonical post URL | `https://www.facebook.com/watch/?v=…` |

### Why choose this Facebook analytics scraper?

- **Reactions breakdown, not just a total.** See exactly how an audience reacted — Love vs Haha vs Angry — which raw "like" totals hide. Useful for sentiment and creative testing.
- **Video views + plays.** For watch pages you get both the view count and play count, the numbers that matter for video performance.
- **No login, bulk, schedulable.** Feed a list of URLs and run on a schedule to track how posts perform over time. Your Facebook account is never used.

### How to analyze Facebook posts (step by step)

1. Paste one or more **post, video or reel URLs** (a `/watch/?v=…` link, a `/reel/<id>` link, or an `fb.watch` share link).
2. Click **Start**.
3. Download from the **Storage → Dataset** tab as **CSV, Excel, JSON or XML**, or read via the API.

#### Example input

```json
{
  "postUrls": [
    "https://www.facebook.com/watch/?v=1234567890",
    "https://www.facebook.com/reel/9876543210"
  ]
}
```

#### Example output

```json
{
  "channel": "NASA",
  "title": "Launch highlights",
  "view_count": 250000,
  "likes": 4200,
  "reactions_breakdown": {"Like": 3000, "Love": 900, "Wow": 300},
  "comments": 310,
  "shares": 25,
  "post_url": "https://www.facebook.com/watch/?v=1234567890"
}
```

#### Run it via the Apify API

```bash
curl "https://api.apify.com/v2/acts/YOUR~ACTOR/runs?token=YOUR_TOKEN" \
  -X POST -H "Content-Type: application/json" \
  -d '{"postUrls": ["https://www.facebook.com/watch/?v=1234567890"]}'
```

Works with the **Apify SDK**, **scheduled runs**, **webhooks**, and integrations for **Make, Zapier, n8n, Google Sheets and LangChain**.

### Pricing — pay only for results

You are billed **per post successfully analyzed**. Removed or login-gated posts return an error row and cost **nothing**.

| Result type | Price |
|---|---|
| Analyzed post / video | **$0.005 per post** ($5 / 1,000) |

### Frequently asked questions

#### Do I need to log in to Facebook?

No. The Actor reads public post pages anonymously — no login, no password.

#### Do I get the reaction breakdown or just a total?

Both. `likes` is the total reactions, and `reactions_breakdown` splits it into Like, Love, Haha, Wow, Sad and Angry where Facebook exposes them.

#### Which URL types work?

Public `/watch/?v=…` videos, `/reel/<id>` reels, and `fb.watch` share links. Reels use a reduced logged-out schema, so they return reactions/comments/shares but not always view counts.

#### Why did a post come back as "unavailable"?

The post may be removed, private, or require login to view. Those rows are not billed.

#### Is this legal?

The Actor collects only **publicly available** data. You are responsible for using it in compliance with the laws that apply to you and Facebook's terms.

### Support & roadmap

Open an issue on the Actor's **Issues** tab. On the roadmap: **page-level post discovery** (analyze a page's recent posts by URL) and **comment export**.

### 🔌 Use this Actor from Claude, ChatGPT or Cursor (MCP)

Add it as a tool in any MCP client - Claude Code, Claude Desktop, Cursor, VS Code or ChatGPT - through Apify's hosted MCP server. The client runs the Actor for you and reads the results back, so you never leave the chat.

**Actor-specific server URL**

```
https://mcp.apify.com/?tools=actors,docs,zaver.api/facebook-post-analytics
```

**Claude Code** - one command:

```bash
claude mcp add --transport http facebookpostanalytic "https://mcp.apify.com/?tools=actors,docs,zaver.api/facebook-post-analytics"
```

**Claude Desktop, Cursor or any client with a JSON config:**

```json
{
  "mcpServers": {
    "facebookpostanalytic": {
      "url": "https://mcp.apify.com/?tools=actors,docs,zaver.api/facebook-post-analytics"
    }
  }
}
```

The first connection opens a browser to sign in to Apify, so no API token sits in your config. If your client cannot do OAuth, send `Authorization: Bearer <YOUR_APIFY_TOKEN>` instead.

Then simply ask:

> Get the views and reactions for this Facebook reel

### Related actors

- [Social Media Metrics Scraper](https://apify.com/zaver.api/universal-social-media-metrics-scraper) — one API for Instagram, Facebook, YouTube and X metrics
- [Tweet Analytics Scraper](https://apify.com/zaver.api/tweet-analytics-scraper) — X post views, likes, reposts and bookmarks
- [Instagram Post Scraper](https://apify.com/zaver.api/instagram-post-scraper) — posts and carousels from profiles, hashtags or locations
- [Instagram Scraper](https://apify.com/zaver.api/instagram-scraper) — all-in-one: posts, reels, comments, profiles, hashtags, places and search
- [Pinterest Data Extractor](https://apify.com/zaver.api/pinterest-scraper-ppr) — pins, boards and keyword research

# Actor input Schema

## `postUrls` (type: `array`):

URLs of the Facebook posts, videos or reels to analyze. One per line, e.g. <code>https://www.facebook.com/watch/?v=1234567890</code>, a <code>/reel/\<id></code> link, or an <code>fb.watch</code> share link. Public content only.

## Actor input object example

```json
{
  "postUrls": [
    "https://www.facebook.com/watch/?v=1234567890"
  ]
}
```

# Actor output Schema

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

One dataset item per post, with views, reactions (and breakdown), comments and shares.

## `resultsCsv` (type: `string`):

The same records as a CSV download, ready for Excel or Sheets.

## `runSummary` (type: `string`):

Counts for the run: fetches, posts analyzed and errors.

# 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 = {
    "postUrls": [
        "https://www.facebook.com/watch/?v=1234567890"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zaver.api/facebook-post-analytics").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 = { "postUrls": ["https://www.facebook.com/watch/?v=1234567890"] }

# Run the Actor and wait for it to finish
run = client.actor("zaver.api/facebook-post-analytics").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 '{
  "postUrls": [
    "https://www.facebook.com/watch/?v=1234567890"
  ]
}' |
apify call zaver.api/facebook-post-analytics --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zaver.api/facebook-post-analytics"
        }
    }
}
```

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/QL64OQosQQ2sgoShm/builds/ycuePUcWbdU2CKl21/openapi.json
