# Facebook Reels Play Count & View Count Scraper (`karamelo/facebook-reels-videos-playcount-viewcount-scraper`) Actor

Extract exact play count, view count, and viewer retention engagement metrics from Facebook Reels and Watch URLs without login.

- **URL**: https://apify.com/karamelo/facebook-reels-videos-playcount-viewcount-scraper.md
- **Developed by:** [karamelo](https://apify.com/karamelo) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$3.50 / 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.

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 Reels & Videos Play Count and View Count Scraper

Extract exact play counts, meaningful video view counts, and viewer retention engagement rates from any public Facebook Reel, video, or watch link. Simply supply Facebook URLs to receive clean, structured performance data including engagement ratios, reactions, and author details without requiring account login, cookies, or complex proxy configuration. Built for social media analysts, media agencies, content creators, and brand marketers tracking true video reach and scroll-stop retention across Facebook.

### Quick Start

1. Open the Actor in the Apify Console.
2. Enter your target Facebook Reel or Video URLs in **Facebook Video / Reel URLs** (`startUrls`).
3. Click **Save & Start** to execute the run.
4. When finished, inspect the results in the dataset tab and export as JSON, CSV, Excel, or connect directly via API.

Minimal input example:

```json
{
  "startUrls": [
    {
      "url": "https://www.facebook.com/reel/2141054613462232/"
    }
  ]
}
```

### Understanding Play Count vs. Video View Count

Facebook evaluates video engagement using two distinct metrics that represent completely different viewer behaviors:

#### Play Count (`play_count`): The Intent to Watch

Tracks every single time the video player initializes and starts rendering video frames. This triggers the instant the video begins moving, which includes automatic playback while a user quickly scrolls through their news feed or Reels tab—even if they only glance at it for a fraction of a second. Because autoplay triggers instantly, the play count is always significantly higher.

#### Video View Count (`video_view_count`): Meaningful 3-Second Retention

Tracks verified, deliberate engagement. For Facebook Watch and standard videos, Facebook officially defines a "view" as a user watching the video continuously for at least 3 seconds (or 10 seconds / 97% completion for certain ad metrics).

#### Why Both Metrics Matter

Facebook maintains both metrics in its backend architecture for two critical reasons:

1. **Retention & Hook Analytics:** By comparing `play_count` (e.g. 750,971) to `video_view_count` (e.g. 364,822), you can immediately measure what percentage of users who scrolled past actually stopped to watch for 3+ continuous seconds (e.g. 48.58% retention).
2. **True Audience Reach & Advertiser Transparency:** Advertisers and brand sponsors want to evaluate and pay for qualified views rather than accidental autoplay impressions.

This scraper automatically calculates `views_engagement_rate` (formatted percentage string, e.g. `48.58%`) for every video.

### What Data You Get

Each dataset record preserves your inputted URL and returns full performance metrics:

```json
{
  "url": "https://www.facebook.com/reel/2141054613462232/",
  "video_id": "2141054613462232",
  "play_count": 751094,
  "video_view_count": 364883,
  "views_engagement_rate": "48.58%",
  "reaction_count": 19579,
  "comment_count": 839,
  "author_name": "Humans of New York",
  "author_id": "102099916530784",
  "title": "Henry might be the nicest shopkeeper in NYC. You can visit his Army and Navy Bags store at 177 E Houston.",
  "status": "ok"
}
```

#### Output Field Reference

| Field | Type | Description |
|---|---|---|
| `url` | string | User-inputted Facebook URL. |
| `video_id` | string | Extracted numeric Facebook video identifier. |
| `play_count` | integer | Total play starts (all frame render triggers including instant autoplay). |
| `video_view_count` | integer | Meaningful view count (viewed continuously for at least 3 seconds). |
| `views_engagement_rate` | string | Formatted viewer retention engagement rate string (e.g. `48.58%`). |
| `reaction_count` | integer | Total public reaction count (Likes, Loves, Cares, etc.). |
| `comment_count` | integer | Total public comment count on the post. |
| `author_name` | string | Display name of the page or creator profile. |
| `author_id` | string | Numeric Facebook ID of the owner profile or page. |
| `title` | string | Text caption or post message. |
| `status` | string | Resolution status: `ok`, `invalid_video_id`, `metrics_not_found`, or `request_failed`. |

### Input Parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `startUrls` | array | `[]` | Structured list of Facebook video, reel, or watch URLs. |

### Supported URL Formats

The Actor accepts any public Facebook video or reel format:

- Reels: `https://www.facebook.com/reel/2141054613462232/`
- Watch URLs: `https://www.facebook.com/watch/?v=2141054613462232`
- Page Video URLs: `https://www.facebook.com/{page_name}/videos/{video_id}/`
- Mobile/Web URLs: `https://web.facebook.com/reel/2141054613462232`
- Share shortlinks: `https://www.facebook.com/share/r/{video_id}/` and `https://www.facebook.com/share/v/{video_id}/`

### Use Cases

- **Campaign Auditing & Benchmarking:** Measure true video watch engagement instead of superficial impression counts for sponsored influencer posts.
- **Content Performance Optimization:** Calculate hook retention rates across different video intros and video lengths to discover what keeps audiences watching past 3 seconds.
- **Competitor Intelligence:** Track competitor video view counts, play counts, and comment engagement at scale.
- **Social Media Reporting:** Automate weekly and monthly video performance reports into Google Sheets, Airtable, or BI dashboards via webhooks or API.

### Performance and Execution Speed

This Actor runs lightweight HTTP requests without resource-heavy browser automation, keeping execution fast and predictable.

- Runs on standard 1024 MB memory.
- Typical URL processing takes 1 to 3 seconds.

### Limitations

- **Public Videos Only:** The Actor extracts metrics for public Facebook posts, reels, and videos. Private groups, restricted profile posts, or age-gated videos requiring login are not accessible.
- **Live Streams in Progress:** Counts are finalized after the video stream has completed and archived as a video post.

### Frequently Asked Questions

#### Do I need to configure proxies or settings?

No. The Actor automatically routes requests through high-reputation residential proxies built into the platform without requiring manual setup.

#### Do I need a Facebook account or cookies?

No. This Actor requires zero login credentials, cookies, or user tokens. All data is gathered purely from public video pages.

#### What does status `invalid_video_id` mean?

This status indicates that the supplied URL did not match any recognizable Facebook video or reel URL format containing a numeric identifier. Check that your URL points directly to an individual post or reel rather than a general page feed.

# Actor input Schema

## `startUrls` (type: `array`):

List of Facebook video, reel, or watch URLs to scrape play counts and view counts for.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.facebook.com/reel/2141054613462232/"
    }
  ]
}
```

# Actor output Schema

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

View the video and reel play count and view count records returned by this run.

# 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 = {
    "startUrls": [
        {
            "url": "https://www.facebook.com/reel/2141054613462232/"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("karamelo/facebook-reels-videos-playcount-viewcount-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 = { "startUrls": [{ "url": "https://www.facebook.com/reel/2141054613462232/" }] }

# Run the Actor and wait for it to finish
run = client.actor("karamelo/facebook-reels-videos-playcount-viewcount-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 '{
  "startUrls": [
    {
      "url": "https://www.facebook.com/reel/2141054613462232/"
    }
  ]
}' |
apify call karamelo/facebook-reels-videos-playcount-viewcount-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,karamelo/facebook-reels-videos-playcount-viewcount-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/IfOskVWhhdynqx148/builds/y9sbem6VOQklSrz3m/openapi.json
