Facebook Reels Scraper With Engagement Analytics avatar

Facebook Reels Scraper With Engagement Analytics

Pricing

$14.99/month + usage

Go to Apify Store
Facebook Reels Scraper With Engagement Analytics

Facebook Reels Scraper With Engagement Analytics

Scrapes Facebook Reels at scale, extracting video URLs, captions, creators, engagement metrics, hashtags, audio details, and publish dates. Ideal for trend analysis, content research, influencer tracking, and automated short-form video insights

Pricing

$14.99/month + usage

Rating

0.0

(0)

Developer

Scrapio

Scrapio

Maintained by Community

Actor stats

1

Bookmarked

27

Total users

9

Monthly active users

a day ago

Last modified

Share

🎬 Facebook Reels Scraper Plus

Scrape public Facebook Reels into clean, flat, ready-to-use rows. Point it at a profile/page (its Reels tab is expanded automatically) or at a single reel URL, and get one row per reel with the media URLs, dimensions, duration, owner, play count, hashtags and derived metrics β€” plus optional reaction, comment and share counts.

Every field below is extracted from Facebook's own response. When a value is genuinely absent, the field is null β€” nothing is invented or padded.

✨ What you get

  • Clean media columns β€” videoUrlHD, videoUrlSD, thumbnailUrl, durationSeconds, width, height.
  • Owner β€” ownerId, ownerName, ownerUrl, ownerVerified, ownerAvatar, pageId, videoOwnerType.
  • Reach β€” playCount (Facebook's rounded value, e.g. 235000 from 235K) + the raw playCountText.
  • Flags β€” isReshare, isRemixable, isSponsored.
  • Derived (local, free) β€” publishedAt (ISO), ageDays, hashtags, mentions, emojis, externalLinks, captionLength, wordCount.
  • Optional engagement (includeEngagement) β€” reactionCount (exact), commentCount (exact), shareCount (Facebook-rounded) and computed engagementRate / virality.
  • Optional raw (includeRawData) β€” rawVideoDelivery with the DASH manifest + every bitrate variant.

πŸš€ How it works

  1. Add profile/page URLs, plain usernames, or direct /reel/{id} URLs.
  2. For a profile, the actor opens the Reels tab and paginates newest-first up to resultsLimit.
  3. Requests use Chrome TLS impersonation (curl_cffi) through your proxy β€” required, because Facebook fingerprint-blocks plain requests from datacenter and residential IPs.
  4. Rows stream to the dataset as they are parsed; the default dataset view shows them as a table.

Use an Apify Residential proxy for reliable results.

🧾 Input

FieldTypeDescription
startUrlsarrayProfile/page URLs, usernames, or /reel/{id} URLs.
resultsLimitintegerMax reels per profile (newest first). Default 20.
includeEngagementbooleanAdd reaction/comment/share counts (one extra request per reel). Default false.
onlyPostsNewerThanstringAbsolute date or relative window (7 days, 2 weeks).
keywordsarrayKeep reels whose caption contains any of these.
excludeKeywordsarrayDrop reels whose caption contains any of these.
minPlaysintegerMinimum (rounded) play count.
minReactions / minCommentsintegerMinimum engagement (requires includeEngagement).
includeRawDatabooleanInclude the raw DASH/video-delivery blob. Default false.
proxyConfigurationobjectApify proxy (Residential recommended).

Example input

{
"startUrls": [
"https://www.facebook.com/LeonardoDiCaprio/",
"https://www.facebook.com/reel/1137009575037474"
],
"resultsLimit": 20,
"includeEngagement": true,
"onlyPostsNewerThan": "3 months",
"keywords": [],
"minPlays": 0,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

πŸ“€ Output

One row per reel. Example (with includeEngagement: true):

{
"type": "reel",
"reelId": "1137009575037474",
"url": "https://www.facebook.com/reel/1137009575037474",
"caption": "One Battle After Another #OneBattleAfterAnother",
"publishedAt": "2025-10-02T21:58:53.000Z",
"ageDays": 272.69,
"durationSeconds": 102.728,
"width": 1080,
"height": 1920,
"videoUrlHD": "https://video.xx.fbcdn.net/o1/v/t2/f2/...mp4",
"videoUrlSD": "https://video.xx.fbcdn.net/o1/v/t2/f2/...mp4",
"thumbnailUrl": "https://scontent.xx.fbcdn.net/v/t51.../thumb.jpg",
"ownerId": "100044203430980",
"ownerName": "Leonardo DiCaprio",
"ownerUrl": "https://www.facebook.com/LeonardoDiCaprio",
"ownerVerified": true,
"ownerAvatar": "https://scontent.xx.fbcdn.net/v/.../avatar.jpg",
"pageId": "9085937115",
"videoOwnerType": "FACEBOOK_USER",
"playCount": 1400000,
"playCountText": "1.4M",
"isReshare": false,
"isRemixable": false,
"isSponsored": false,
"hashtags": ["OneBattleAfterAnother"],
"mentions": [],
"emojis": [],
"externalLinks": [],
"captionLength": 63,
"wordCount": 14,
"reactionCount": 25724,
"commentCount": 8264,
"shareCount": 1400,
"shareCountText": "1.4K",
"totalEngagement": 35388,
"engagementRate": 0.025277,
"virality": 129.8,
"inputUrl": "https://www.facebook.com/LeonardoDiCaprio/",
"scrapedAt": "2026-07-02T00:00:00.000Z"
}

πŸ“ Field notes (honest coverage)

  • playCount / shareCount are Facebook's rounded values. Facebook only exposes reels reach and shares as abbreviated strings (235K, 1.4K). playCount/shareCount re-express that rounded value as an integer; playCountText/shareCountText keep the original string. They are approximate by design.
  • reactionCount and commentCount are exact integers from the reel's feedback object.
  • No per-reaction-type breakdown. Facebook does not expose per-type reaction counts for reels (the aggregate is available, the Like/Love/Haha… split is not), so it is intentionally not included rather than faked.
  • playCount is null in single-reel mode, because a reel's own page doesn't carry the play count β€” it only appears in the profile Reels listing.
  • Comment text / commenter details are not collected in this version.

βš–οΈ Compliance

Scrape only public reels. Do not collect private or login-gated content or sensitive personal data. Use the data for analytics, research, archiving and monitoring, and respect rate limits.

❓ FAQ

Do I need a proxy? Yes β€” a Residential Apify proxy is strongly recommended; Facebook blocks datacenter IPs.

Why are reactions/comments empty? They are only fetched when includeEngagement is enabled.

Can I scrape one specific reel? Yes β€” put a /reel/{id} URL (or bare reel ID) in startUrls.