# Facebook Reels Scraper — Competitor Reels, View Count, No Login (`k1ra/facebook-reels-scraper`) Actor

Facebook reel cover download, Facebook content monitoring, Facebook Reels API, Facebook video views scraper, Facebook social media analytics, Facebook Reels JSON, Facebook engagement rate, Facebook Reels Make, Facebook competitor monitoring, Facebook brand monitoring, Facebook no cookies scraper.

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

## Pricing

from $2.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

## Facebook Reels Scraper — Competitor Reels, View Count, No Login

Enumerate every Reel on a public Facebook profile — **no login, no cookies, zero account risk**. Get exact play counts, likes, comments, shares, captions, timestamps, durations, and video URLs for every reel, paginated all the way to the end of the collection. Also resolves bare reel share URLs to exact engagement and owner. Use it as a Facebook Reels analytics scraper, a competitor/creator monitor, or a view-count tracker.

***

### Use Cases

#### Facebook Reels Analytics Scraper

Pull play counts, likes, comments, and shares for every reel on a profile in one run — a **Facebook Reels analytics scraper** for tracking content performance without manually opening each reel.

#### Facebook Reels View Count Scraper

Get exact **view/play counts** for every reel on a public profile — the single most requested feature this niche is missing elsewhere. Note: plays are only available via a **profile** input; a bare reel share URL structurally carries no play count on Facebook (see Honest Limitations).

#### Facebook Reels Monitor for New Content Alerts

Schedule this actor with `onlyNewReels` and a `monitoringId` and it becomes a **Facebook Reels monitor** — only reels never seen in a previous run for that watch-list are returned, so you're alerted the moment a tracked profile posts something new. Follow-up runs stop as soon as they reach reels they already reported, so a daily monitor costs a small fraction of the first run.

#### Competitor & Creator Reels Tracking

Point it at any competitor, brand, or creator's public profile and get their full Reels history with engagement — built for **social listening**, trend research, and content-strategy benchmarking.

#### Full-Profile Reels Enumeration

Most tools only echo URLs you already have. This actor walks a profile's entire Reels collection page by page to its true end — a **bulk Facebook Reels scraper** for profiles with hundreds of reels.

#### No-Login Facebook Scraper

No account, cookies, or session tokens required, ever — this actor never asks for Facebook credentials and carries zero ban risk to any account.

#### Facebook Reels API for Developers

Use it as a **Facebook Reels API** — call it over the Apify API and get clean JSON back, with no Facebook app review required.

#### Facebook Reels CSV, Excel & JSON Export

Every run writes a dataset you can download as **Facebook Reels CSV**, Excel, or JSON, or push straight into Google Sheets — ready for reporting without reformatting.

#### Trending & Viral Facebook Reels Research

Sort a creator's catalogue by play count to surface **trending Facebook Reels** and viral outliers, then benchmark them against your own output.

#### Facebook Reels Automation for n8n & Make

Wire runs into **Facebook Reels automation** flows — n8n, Make, Zapier, or a plain webhook — so new reels land in your stack the moment they're published.

***

### Who Uses This

| Use Case | Who It's For |
|---|---|
| Competitor content & engagement tracking | Social media managers, agencies |
| Trend and viral-content research | Social listening teams, researchers |
| Creator/influencer vetting and reporting | Talent agencies, brand partnerships teams |
| New-content alerts for a tracked account | Marketing teams, PR/comms |
| Academic and market-sizing research | Analysts, researchers |

***

### What's New

**Initial release**

- Full-profile Reels enumeration, paginated to the collection's true end.
- Exact play counts, likes, comments, and shares per reel.
- Bare reel-URL resolution to exact engagement and owner.
- New-reel monitoring mode for scheduled content alerts.

***

### Output

```json
{
  "id": "1234567890123456",
  "url": "https://www.facebook.com/reel/1234567890123456",
  "caption": "Behind the scenes at the launch 🚀",
  "playCount": { "reduced": "797K", "numeric": 797000 },
  "likes": 12453,
  "comments": 341,
  "sharesReduced": "2.1K",
  "creationTime": "2026-06-02T14:31:07Z",
  "durationMs": 18320,
  "width": 720,
  "height": 1280,
  "thumbnailUrl": "https://scontent.xx.fbcdn.net/…",
  "videoSdUrl": "https://video.xx.fbcdn.net/…",
  "videoHdUrl": "https://video.xx.fbcdn.net/…",
  "owner": { "id": "20446254070", "name": "National Geographic", "url": "https://www.facebook.com/20446254070/", "verified": true },
  "isReshare": false,
  "aiGenerated": false,
  "sourceProfile": "natgeo"
}
```

`likes` and `comments` are exact counts read live from Facebook. `playCount.reduced` is Facebook's own rounded display string ("797K"); `playCount.numeric` is a parsed estimate for filtering and sorting. `videoSdUrl`/`videoHdUrl` carry Facebook's CDN access tokens and **expire** — download promptly if you need the files.

Fields are properly typed, and a reel missing an expected field simply ships `null` for it — the run never crashes on one malformed record.

***

### How to Use

**1.** In the **Input** tab, add one or more `profiles` (page names or URLs) and/or `reelUrls` for specific reels.

**2.** Set `maxReelsPerProfile` as a cost guard, and optionally `onlyNewerThan` or `minPlays` to filter.

**3.** Click **Start** — results stream into the **Dataset** tab as they're found, so you can start using them before the run finishes.

**Input format:**

| Field | Type | Example |
|---|---|---|
| `profiles` | array of strings | `["natgeo", "https://www.facebook.com/LADbible"]` |
| `reelUrls` | array of strings | `["https://www.facebook.com/reel/1234567890123456"]` |
| `maxReelsPerProfile` | integer | `100` |
| `onlyNewerThan` | `YYYY-MM-DD` string | `"2026-01-01"` |
| `minPlays` | integer | `10000` |
| `includeVideoUrls` | boolean | `true` |
| `onlyNewReels` + `monitoringId` | boolean + string | `true` + `"natgeo-reels"` |

**Full profile Reels history:**

```json
{
  "profiles": ["natgeo"],
  "maxReelsPerProfile": 500
}
```

**Top-performing reels only:**

```json
{
  "profiles": ["natgeo"],
  "minPlays": 100000
}
```

**New-reel alerts (schedule daily):**

```json
{
  "profiles": ["natgeo"],
  "onlyNewReels": true,
  "monitoringId": "natgeo-reels"
}
```

**Specific reels by URL:**

```json
{
  "reelUrls": ["https://www.facebook.com/reel/1234567890123456"]
}
```

***

### Proxy

The actor comes with a built-in proxy that works out of the box — no configuration needed. Just run it.

***

### Pricing

**$3 per 1,000 reels scraped ($0.003 per reel) — one price, everything included.**

No actor-start fee. No add-on charge for profile details, engagement, video URLs, or monitoring.
You're charged only for reels actually returned — an empty run costs nothing.

| Reels scraped | Cost |
|---|---|
| 100 | $0.30 |
| 1,000 | $3.00 |
| 10,000 | $30.00 |

Every reel includes play count, exact likes, comments and shares, caption, timestamp, duration,
thumbnail, video URLs, and owner details.

***

### Schedule & Automate

Use Apify's built-in **Scheduler** to run this actor on a cron — daily, weekly, or hourly — for new-reel monitoring or recurring engagement snapshots. Connect the dataset to Google Sheets, Zapier, Make, or any webhook via the Apify API.

***

### Integrations & Automation

Plugs into the entire Apify integrations ecosystem and any tool that speaks HTTP:

- **Make** ([docs](https://docs.apify.com/platform/integrations/make)) — trigger Reels pulls from any Make scenario.
- **Zapier** ([docs](https://docs.apify.com/platform/integrations/zapier)) — pipe reels into CRMs, alerts, or spreadsheets.
- **Google Sheets** — auto-export every run's dataset to a live content-tracking Sheet.
- **Slack** ([docs](https://docs.apify.com/platform/integrations/slack)) — get notified when a scheduled monitoring run finds new reels.
- **Airbyte** ([docs](https://docs.apify.com/platform/integrations/airbyte)) — sync reels to your data warehouse (Snowflake, BigQuery, Redshift, Postgres).
- **Apify API** — full programmatic control via the [`apify-client`](https://docs.apify.com/api/v2) SDKs for Node.js and Python, or direct REST calls.
- **Webhooks** ([docs](https://docs.apify.com/platform/integrations/webhooks)) — fire an HTTP endpoint when a run finishes, fails, or finds new reels.

***

### Honest Limitations

- **Play counts are not available on bare reel share URLs.** Facebook doesn't publish a play count for an individual reel — plays are only available from the owner's profile. Provide `profiles` to get plays; `reelUrls` still return exact likes, comments, caption, and owner.
- **Play counts are rounded, not exact.** Facebook itself only publishes a rounded figure ("797K"); `playCount.numeric` is a parsed estimate from that string, not an exact integer.
- Some profiles publish no Reels at all, or restrict them entirely — those return zero reels, which is a genuine profile setting, not a scraper limitation.
- **One profile is capped at 4,000 reels per run.** Profiles with a deeper back catalogue need more than one run.
- A profile Facebook refuses to return is skipped with a warning and the rest of the run still delivers — you're never charged for a profile that returned nothing.

***

### FAQ

**Do I need to log in or provide cookies?**
No. The actor works with no Facebook account, cookies, or session tokens, and carries zero risk to any account.

**Why don't I see a play count when I use a reel URL?**
Facebook doesn't publish play counts on an individual reel's page, for anyone. Use `profiles` instead — a profile's Reels always include plays.

**Can I get every reel a profile has ever posted?**
Yes, up to 4,000 reels per profile per run — set `maxReelsPerProfile` high enough (or omit it for the default cap) and the actor works through the profile's Reels to the end.

**Can I monitor a profile for new reels?**
Yes. Enable `onlyNewReels` with a `monitoringId` and schedule the actor — each run returns only reels never seen before under that monitor.

**Do the video URLs work forever?**
No — they carry Facebook's CDN access tokens and expire. Download the files promptly after the run if you need them.

**Do I need my own proxy?**
No. The actor works out of the box — a built-in proxy handles it automatically.

**Can I export results to a spreadsheet?**
Yes. After the run completes, go to **Storage** → **Dataset** → **Export** → choose CSV, Excel, or JSON, or auto-export to Google Sheets via the Apify integration.

**Can I run this via API?**
Yes — use the Apify API or the official Node.js/Python SDKs to trigger runs and retrieve results programmatically.

**Is it legal to scrape public Facebook Reels?**
The actor only extracts **publicly available data** — what Facebook displays to any visitor without an account. It does not bypass login walls or extract private data. You are responsible for compliance with Facebook's Terms of Service and applicable laws when using the extracted data.

***

### ⭐ Bookmark This Actor & Leave a Review

If this actor saves you time:

- **⭐ Click the star** at the top of the actor page to bookmark it — it makes the actor easier for you to find later and helps other Apify users discover it.
- **📝 Leave a review** — even one sentence on what you use it for helps prioritize the next feature.

Your bookmarks and reviews directly improve this actor's discoverability across the Apify Store.

***

### Related Apify Actors

Looking for more scraping power? You may also like:

- [Facebook Scrapers](https://apify.com/store?search=facebook%20scraper) — the full catalog of Facebook data actors
- [Social Media Scrapers](https://apify.com/store?category=SOCIAL_MEDIA) — Instagram, TikTok, and more
- [Automation Actors](https://apify.com/store?category=AUTOMATION) — monitoring and scheduled-run building blocks

***

### Support & Feedback

Found a bug or want a new field or input option supported?

- **Open an issue** on the actor's Issues tab in the Apify Console.
- **Feature requests** are welcome — especially for new enrichment fields or filters.

# Actor input Schema

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

Public Facebook page/profile names or URLs to enumerate all Reels from (e.g. 'natgeo' or 'https://www.facebook.com/natgeo'). This is the primary input — play counts are only available this way. A profile that can't be fetched is skipped; the rest of the run still returns.

## `reelUrls` (type: `array`):

Bare reel share URLs to resolve individually (e.g. 'https://www.facebook.com/reel/123456789'). Returns exact likes/comments/caption/owner — Facebook doesn't publish a play count for an individual reel, so use Profiles above to get plays.

## `maxReelsPerProfile` (type: `integer`):

Stop after this many reels per profile. This is the main cost guard — set it to what you actually need. A single profile is capped at 4,000 reels per run.

## `onlyNewerThan` (type: `string`):

Only keep reels posted on or after this date (ISO format, e.g. '2026-01-01'). The run stops once it is past this window instead of walking the whole profile.

## `minPlays` (type: `integer`):

Only keep reels with at least this many plays (parsed from Facebook's rounded play count).

## `includeVideoUrls` (type: `boolean`):

Include SD/HD video URLs in the output. These carry Facebook's CDN access tokens and expire — download promptly if you need the files.

## `onlyNewReels` (type: `boolean`):

Remember every reel across runs and only output ones never seen before. Schedule this actor and get ONLY fresh reels each run — no repeats. Follow-up runs stop once they reach reels already reported, so they finish far faster than the first one.

## `monitoringId` (type: `string`):

Optional name for the monitoring memory. Use different IDs to keep separate watch-lists (e.g. 'natgeo-reels' and 'competitor-reels').

## Actor input object example

```json
{
  "profiles": [
    "natgeo"
  ],
  "maxReelsPerProfile": 100,
  "includeVideoUrls": true,
  "onlyNewReels": false
}
```

# Actor output Schema

## `id` (type: `string`):

Facebook reel id.

## `url` (type: `string`):

Direct link to the reel.

## `caption` (type: `string`):

Reel caption text.

## `plays` (type: `string`):

Play count as Facebook displays it, e.g. '797K'.

## `playsNumeric` (type: `string`):

Play count parsed to a number for sorting and filtering.

## `likes` (type: `string`):

Exact like count.

## `comments` (type: `string`):

Exact comment count.

## `sharesReduced` (type: `string`):

Share count as Facebook displays it.

## `creationTime` (type: `string`):

ISO 8601 timestamp of when the reel was posted.

## `durationMs` (type: `string`):

Reel length in milliseconds.

## `width` (type: `string`):

Video width in pixels.

## `height` (type: `string`):

Video height in pixels.

## `thumbnailUrl` (type: `string`):

Cover image URL.

## `videoSdUrl` (type: `string`):

Standard-definition video URL; expires shortly after the run.

## `videoHdUrl` (type: `string`):

High-definition video URL; expires shortly after the run.

## `ownerName` (type: `string`):

Name of the profile that posted the reel.

## `ownerUrl` (type: `string`):

Link to the profile that posted the reel.

## `ownerVerified` (type: `string`):

True when the owning profile is verified.

## `isReshare` (type: `string`):

True when the reel is a reshare of someone else's video.

## `aiGenerated` (type: `string`):

True when Facebook marks the reel as AI-generated.

## `sourceProfile` (type: `string`):

The input profile this reel was found on.

# 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": [
        "natgeo"
    ]
};

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

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,k1ra/facebook-reels-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/6c0YKVR8jTQLiZ7hs/builds/GjiC2phkzOTerjs4F/openapi.json
