Facebook Reels Scraper With Engagement Analytics
Pricing
$14.99/month + usage
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
Maintained by CommunityActor stats
1
Bookmarked
27
Total users
9
Monthly active users
a day ago
Last modified
Categories
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.235000from235K) + the rawplayCountText. - 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 computedengagementRate/virality. - Optional raw (
includeRawData) βrawVideoDeliverywith the DASH manifest + every bitrate variant.
π How it works
- Add profile/page URLs, plain usernames, or direct
/reel/{id}URLs. - For a profile, the actor opens the Reels tab and paginates newest-first up to
resultsLimit. - Requests use Chrome TLS impersonation (curl_cffi) through your proxy β required, because Facebook fingerprint-blocks plain requests from datacenter and residential IPs.
- 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
| Field | Type | Description |
|---|---|---|
startUrls | array | Profile/page URLs, usernames, or /reel/{id} URLs. |
resultsLimit | integer | Max reels per profile (newest first). Default 20. |
includeEngagement | boolean | Add reaction/comment/share counts (one extra request per reel). Default false. |
onlyPostsNewerThan | string | Absolute date or relative window (7 days, 2 weeks). |
keywords | array | Keep reels whose caption contains any of these. |
excludeKeywords | array | Drop reels whose caption contains any of these. |
minPlays | integer | Minimum (rounded) play count. |
minReactions / minComments | integer | Minimum engagement (requires includeEngagement). |
includeRawData | boolean | Include the raw DASH/video-delivery blob. Default false. |
proxyConfiguration | object | Apify 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/shareCountare Facebook's rounded values. Facebook only exposes reels reach and shares as abbreviated strings (235K,1.4K).playCount/shareCountre-express that rounded value as an integer;playCountText/shareCountTextkeep the original string. They are approximate by design.reactionCountandcommentCountare 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.
playCountis 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.