Facebook Reels Scraper avatar

Facebook Reels Scraper

Pricing

from $3.00 / 1,000 reel results

Go to Apify Store
Facebook Reels Scraper

Facebook Reels Scraper

Scrape public Facebook Reels from profile and reel URLs.

Pricing

from $3.00 / 1,000 reel results

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Extract public Facebook Reels from page/profile Reels tabs, usernames, and direct reel URLs. The Actor returns structured rows with reel URLs, IDs, visible play counts, owner/page metadata, and diagnostics for inputs that Facebook does not expose publicly.

Use it for social media research, creator monitoring, competitor content tracking, and repeatable exports to CSV, JSON, Excel, API, or automation workflows.

At a glance

  • Primary job: Collect public Facebook Reels URLs and visible metrics from one or more public pages/profiles.
  • Input: Public Facebook page URLs, /reels/ URLs, direct /reel/<id> URLs, or usernames.
  • Output: One dataset row per reel, plus explicit diagnostic rows for invalid, blocked, private, or empty inputs.
  • Best for: Brand monitoring, competitor short-form research, influencer discovery, content planning, and reporting.

Common workflows

  • Monitor a brand page: Schedule a run for a public Facebook page Reels tab and export newly seen reel URLs and play counts.
  • Analyze competitors: Add several public page/profile Reels URLs, cap results per profile, and compare visible play counts in a spreadsheet.
  • Check direct reels: Submit direct facebook.com/reel/<id> URLs to normalize IDs and keep a consistent dataset shape.
  • Automate reporting: Trigger runs through the Apify API, webhooks, or MCP and send dataset rows to BI tools or a database.

Input recipes

  • Small smoke test: startUrls: [{ "url": "https://www.facebook.com/9GAGCute/reels/" }], maxItems: 3, maxReelsPerProfile: 3.
  • Direct reel metadata: startUrls: [{ "url": "https://www.facebook.com/reel/3292750537522330/" }], maxItems: 1.
  • Username convenience mode: usernames: ["9GAGCute", "Cristiano"], maxItems: 20, maxReelsPerProfile: 10.
  • Monitoring run: Use one public page URL, keep maxReelsPerProfile low, and schedule daily or weekly runs to compare fresh datasets.

What data can you extract?

FieldDescription
inputUrlOriginal URL or username submitted by the user.
normalizedUrlCanonical Facebook URL processed by the Actor.
sourceTypeprofile_reels, direct_reel, username, or unknown.
statusok, invalid_url, no_reels_found, blocked_or_empty, private_or_unavailable, unsupported_or_changed, or failed.
reelIdFacebook reel ID when available.
reelUrlCanonical public reel URL.
postUrlPublic post/reel URL for the same item.
textPublic reel caption/text when exposed in the rendered page.
timestampPublic timestamp when exposed.
ownerNameVisible owner/page name.
ownerUrlOwner/page URL used for extraction.
playCountVisible reel play count, normalized to a number.
likeCountLike count when available publicly.
commentCountComment count when available publicly.
shareCountShare count when available publicly.
durationSecondsDuration when available publicly.
thumbnailUrlThumbnail URL when exposed publicly.
videoUrlBest-effort public video URL when exposed; not guaranteed archival media.
pageNameVisible page/profile name.
pageUrlPage/profile URL.
pageIdPage ID when exposed publicly.
followerCountVisible follower count, normalized to a number.
likesCountVisible page like count, normalized to a number.
categoryPage category when visible.
missingFieldsOptional fields not exposed for this row.
errorDiagnostic message for non-ok rows.

Input configuration

SettingJSON keyUse it forExample
Facebook URLsstartUrlsPublic page/profile URLs, /reels/ tabs, and direct reel URLs.https://www.facebook.com/9GAGCute/reels/
Facebook usernamesusernamesConveniently convert public usernames to Reels tab URLs.9GAGCute
Maximum reelsmaxItemsCap saved reel result rows and control spend.20
Maximum reels per profilemaxReelsPerProfilePrevent one profile from consuming the whole run limit.10
Include page/profile metadataincludePageProfileMetadataAdd visible page name, URL, followers, and likes when available.true
Proxy configurationproxyConfigurationUse Apify Proxy; residential proxies are recommended for Facebook.{ "useApifyProxy": true }

Example input

{
"startUrls": [
{ "url": "https://www.facebook.com/9GAGCute/reels/" },
{ "url": "https://www.facebook.com/reel/3292750537522330/" }
],
"usernames": ["Cristiano"],
"maxItems": 20,
"maxReelsPerProfile": 10,
"includePageProfileMetadata": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Example output

{
"inputUrl": "https://www.facebook.com/9GAGCute/reels/",
"normalizedUrl": "https://www.facebook.com/9GAGCute/reels/",
"sourceType": "profile_reels",
"status": "ok",
"reelId": "27749977914588421",
"reelUrl": "https://www.facebook.com/reel/27749977914588421/",
"postUrl": "https://www.facebook.com/reel/27749977914588421/",
"text": null,
"timestamp": null,
"ownerName": "9GAG Cute",
"ownerUrl": "https://www.facebook.com/9GAGCute/reels/",
"playCount": 58000,
"likeCount": null,
"commentCount": null,
"shareCount": null,
"durationSeconds": null,
"thumbnailUrl": null,
"videoUrl": null,
"pageName": "9GAG Cute",
"pageUrl": "https://www.facebook.com/9GAGCute/reels/",
"pageId": null,
"followerCount": 3700000,
"likesCount": null,
"category": null,
"missingFields": [],
"error": null
}

Pricing

This Actor uses pay-per-event pricing. The final platform pricing is configured with volume-discount tiers:

EventFreeBronzeSilverGoldPlatinumDiamondCharged when
Run start$0.005$0.005$0.005$0.005$0.005$0.005Once when the Actor starts.
Reel result$0.00575$0.005$0.0039$0.003$0.002$0.0014Each successful row with status: "ok"; invalid/blocked diagnostics are not charged as reel results.

Higher Apify subscription tiers get additional volume discounts. Pricing was benchmarked against direct Facebook Reels competitors before QA handoff.

Tips for best results

  • Use public pages only: This Actor does not accept cookies or scrape private/logged-in data.
  • Start small: Test with maxItems: 3 to confirm a page exposes public Reels in your run environment.
  • Prefer Reels tabs: URLs ending in /reels/ are the most direct input for profile/page scraping.
  • Expect optional fields: Facebook does not expose every metric on every surface; unavailable fields stay null and appear in missingFields when relevant.
  • Use proxies in cloud: Facebook can vary responses by IP. Residential Apify Proxy is recommended for production runs.

API usage

Node.js:

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("fetch_cat/facebook-reels-scraper").call({
startUrls: [{ url: "https://www.facebook.com/9GAGCute/reels/" }],
maxItems: 3,
maxReelsPerProfile: 3
});
console.log(run.defaultDatasetId);

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("fetch_cat/facebook-reels-scraper").call(run_input={
"startUrls": [{ "url": "https://www.facebook.com/9GAGCute/reels/" }],
"maxItems": 3,
"maxReelsPerProfile": 3,
})
print(run["defaultDatasetId"])

cURL:

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~facebook-reels-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls":[{"url":"https://www.facebook.com/9GAGCute/reels/"}],"maxItems":3,"maxReelsPerProfile":3}'

MCP and AI agents

Use this Actor from MCP-compatible tools through the official Apify MCP Server.

$claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/facebook-reels-scraper"
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/facebook-reels-scraper"
}
}
}

Example prompt: "Run Facebook Reels Scraper for this public Facebook page URL with maxItems 5 and summarize the reel URLs and visible play counts."

Limits and caveats

  • Public data only: No account login, cookies, private profiles, private groups, or access-token scraping.
  • Facebook changes often: Public markup and visibility can change. Non-empty public smoke tests are part of QA.
  • Metrics are best effort: Play counts are usually visible on Reels tabs; likes, comments, shares, video URLs, and timestamps may be absent.
  • No video archiving guarantee: videoUrl is populated only if Facebook exposes a stable public URL in the same page context.
  • Diagnostics are explicit: Invalid or blocked inputs produce status rows instead of silently returning an empty dataset.

Legality and responsible use

Process only data you are allowed to access. Follow Facebook's terms, Apify's terms, robots and platform restrictions, and all applicable privacy and data-protection laws. Do not use this Actor to bypass access controls or collect private personal data.

FAQ

Does this Actor require Facebook login?

No. It is public-only and intentionally does not accept cookies, sessions, passwords, or access tokens.

Why are some fields empty?

Facebook does not expose every field on every public page or reel. The Actor leaves unavailable fields as null instead of guessing.

Will blocked or invalid inputs be charged as reel results?

No. The Actor only charges the item event for successful status: "ok" reel rows.

Can I export results?

Yes. Apify datasets support JSON, CSV, Excel, XML, RSS, and API access.

Support

Open an issue from the Actor page if a run fails or output looks wrong. Include the run ID or run URL, input JSON, expected output, actual output, and a reproducible public URL.