Facebook Metrics Scraper avatar

Facebook Metrics Scraper

Pricing

from $2.00 / 1,000 facebook content metrics

Go to Apify Store
Facebook Metrics Scraper

Facebook Metrics Scraper

Collect public Facebook engagement metrics from post, reel, watch, video, photo, and profile/page URLs without login or cookies. Get views, plays, reactions, likes, comments, shares, author follower counts, content IDs, availability statuses, and clean run summaries.

Pricing

from $2.00 / 1,000 facebook content metrics

Rating

5.0

(1)

Developer

Chronometrica

Chronometrica

Maintained by Community

Actor stats

3

Bookmarked

5

Total users

3

Monthly active users

5 days ago

Last modified

Categories

Share

๐Ÿ“Š What does Facebook Metrics Scraper do?

Facebook Metrics Scraper extracts public engagement metrics from Facebook post, reel, watch, video, photo, and profile/page URLs. Paste known Facebook content URLs to measure them directly, or paste profile/page URLs to discover recent public content first.

Use it for repeatable public engagement monitoring: views, plays, reactions, likes, comments, shares, author audience counts, content IDs, and clear availability statuses in one dataset. Rows can also include public collaboration profile context when available.

This Actor does not log in, use cookies, scrape private content, collect comments, collect liker identities, or bypass Facebook access controls. It only returns data that is publicly visible without logging in.

With Facebook Metrics Scraper, you can:

  • ๐Ÿ“ˆ Collect public views, plays, reactions, likes, comments, and shares.
  • ๐ŸŽฌ Measure reels, watch URLs, videos, posts, photos, permalink URLs, and pfbid post URLs.
  • ๐Ÿ‘ค Add best-effort author/profile follower and page-like counts.
  • ๐Ÿค Capture public owner and collaboration profile context when available.
  • ๐Ÿ”Ž Discover public content URLs from Facebook profile/page URLs.
  • ๐Ÿ†” Extract normalized content and profile fields such as contentUrl, contentId, contentType, profileUsername, and profileName.
  • ๐Ÿšฆ Get structured statuses when a URL resolves but public metrics are not available.
  • ๐Ÿ“ฆ Export results as JSON, JSONL, CSV, Excel, XML, RSS, or HTML.

๐Ÿ“ฆ What Facebook metric data can I extract?

Each dataset row represents one Facebook content URL. The row is flattened and grouped for scanning: input, content, profile, media text, metrics, collaboration context, profile metrics, and row status.

Data groupExample fields
๐Ÿ”— Source attemptplatform, inputUrl
๐Ÿ†” Content entitycontentUrl, contentId, contentType
๐Ÿ‘ค Author/profile entityprofileUrl, profileId, profileUsername, profileName
๐Ÿงพ Media detailsdescription
๐Ÿ“Š Engagement metricsviews, plays, reactions, likes, comments, shares
๐ŸŽฏ Content metric qualitycontentMetricStatus
๐Ÿค Collaboration bridgecollaborationCount, collaborationProfiles
๐Ÿ‘ฅ Author/profile metricsprofileFollowers, profilePageLikes, profileMetricStatus
๐Ÿšฆ Row statusstatus, statusReason, scrapedAt

Metric availability depends on what Facebook exposes publicly for each URL. Reels, watch URLs, and videos usually provide the strongest metric coverage. Static posts can be partial. URLs with no public content metrics are counted in OUTPUT and skipped from the dataset by default.

contentType describes the kind of Facebook content resolved for the row:

Additional source-specific IDs can appear in full JSON exports for API users, but they are omitted from the default dataset table view to keep the main output focused.

Facebook Stories URLs, such as facebook.com/stories/..., are not supported.

Content typeMeaning
reelReel-style Facebook video content.
videoStandard Facebook video or watch content.
postStatic Facebook post, including pfbid posts.
photoDirect Facebook photo content.
unknownThe URL resolved, but type was unclear.

For video-like content, views represents the public video view counter when Facebook exposes it. plays is a broader public play counter when available, and can be higher than views. Keep both when you care about video measurement details.

contentMetricStatus and profileMetricStatus include status, precision, and source details for each public metric. The metric values live in the dedicated metric fields, not repeated inside the status arrays. Precision values include:

Precision valueMeaning
exactThe count was available as a full public number.
exact_or_displayedThe count appeared as a complete displayed number, such as 31,557 views.
compact_roundedThe count came from public shorthand, such as 3.3M views or 437K plays.

For compact_rounded values, the dataset stores the expanded numeric value. For example, 3.3M views becomes 3300000. Treat those values as useful approximations, not exact counters.

Author/profile metrics are separate from content engagement metrics. profileFollowers and profilePageLikes describe the public profile/page audience. likes, comments, and shares describe the individual content row.

collaborationProfiles contains public owner/byline profile context when it is available. The first profile is marked owner; additional profiles are marked collaborator.

โš™๏ธ Can I use this Actor through an API?

Yes. You can run Facebook Metrics Scraper manually in Apify Console or use it through:

  • Apify API
  • Python SDK
  • Node.js SDK
  • Webhooks
  • Scheduled runs
  • Apify integrations

This makes it useful for social listening workflows, creator dashboards, competitive intelligence, campaign reporting, content audits, warehouse loads, and automated market research.

๐ŸŽฏ Why scrape Facebook post and reel metrics?

Facebook public engagement data helps you understand which posts, reels, and videos are gaining traction across creators, brands, campaigns, and competitors.

Use caseHow Facebook metric data helps
๐Ÿ“ˆ Track creator performanceMonitor public engagement across known creator URLs.
๐ŸŽฌ Compare content formatsCompare reels, videos, and posts side by side.
๐Ÿ“ฃ Measure campaign activityCollect repeatable metrics for known campaign or brand content URLs.
๐Ÿ•ต๏ธ Run competitive intelligenceTrack public engagement on competitor posts and reels you already know.
๐Ÿ“Š Build reporting workflowsFeed normalized Facebook metrics into dashboards and client reports.
๐Ÿ”Ž Audit URL availabilitySeparate available, partial, unavailable, and failed rows cleanly.

๐Ÿ’ต How much does scraping Facebook metrics cost?

Facebook Metrics Scraper uses Apify Actor pricing. If the Actor is monetized, you are charged according to the current price shown on the Pricing tab.

Start with a small batch of 3 to 10 URLs when testing. The run summary shows how many URLs resolved, how many dataset rows were produced, how many returned no public metrics, and whether any URLs failed.

๐Ÿš€ How do I use Facebook Metrics Scraper?

  1. Create or log in to your Apify account.
  2. Open Facebook Metrics Scraper.
  3. Choose Auto-detect mixed URLs, Content URLs only, or Profile/page discovery only.
  4. Paste Facebook content URLs, profile/page URLs, or both.
  5. Leave the default settings for your first run.
  6. Click Start.
  7. Open the Output tab to inspect the dataset and run summary.
  8. Download your data in JSON, JSONL, CSV, Excel, XML, RSS, or HTML.

โฌ‡๏ธ Input

The main input is startUrls. Paste at least one supported Facebook URL. https:// is optional, so www.facebook.com/reel/... works too. Extra spaces around pasted URLs are ignored. In Auto-detect mixed URLs mode, you can paste content URLs and profile/page URLs into the same list. Facebook Stories URLs are rejected by the input form and runtime validation.

{
"mode": "knownUrls",
"startUrls": ["https://www.facebook.com/reel/2645452435840671"],
"maxItemsPerProfile": 20,
"includePosts": true,
"includeReels": true,
"includeVideos": true,
"includePhotos": false,
"includeAuthorProfileMetrics": true,
"maxConcurrency": 3,
"requestDelayMillis": 250,
"maxFetchRetries": 3,
"requestTimeoutSecs": 20
}

๐Ÿ”— Facebook URLs

Supported content URL shapes include:

www.facebook.com/reel/2645452435840671
https://www.facebook.com/reel/2645452435840671
https://www.facebook.com/watch/?v=1203714368298095
https://www.facebook.com/{page}/posts/{post-id-or-pfbid}
https://www.facebook.com/{page}/videos/{video-id}
https://www.facebook.com/{page}/videos/{slug}/{video-id}
https://www.facebook.com/photo?fbid={photo-id}
https://www.facebook.com/photo.php?fbid={photo-id}
https://www.facebook.com/{page}/photos/{photo-id}
https://www.facebook.com/permalink.php?story_fbid={post-id}&id={page-id}
https://fb.watch/{short-code}/

Best results usually come from direct reel, watch, video, and photo URLs that open publicly in a logged-out browser.

permalink.php?story_fbid=... is a regular Facebook post permalink shape, not a Facebook Stories URL.

Facebook Stories URLs such as facebook.com/stories/... are not supported.

๐Ÿ‘ค Profile/Page Discovery

Use profile/page discovery when you want the Actor to find public content URLs before collecting metrics.

{
"mode": "profileUrls",
"startUrls": ["https://www.facebook.com/ThomasSandersOfficial"],
"maxItemsPerProfile": 20,
"includePosts": true,
"includeReels": true,
"includeVideos": true,
"includePhotos": false,
"includeAuthorProfileMetrics": true,
"maxConcurrency": 3,
"requestDelayMillis": 250,
"maxFetchRetries": 3,
"requestTimeoutSecs": 20
}

Use maxItemsPerProfile to control how many discovered URLs are resolved from each profile/page. The default is conservative for routine runs, and larger values are accepted for high-volume jobs.

๐ŸŽ›๏ธ Settings

OptionWhat it does
modeauto to detect mixed URLs, knownUrls for content URLs only, or profileUrls for profile/page discovery.
startUrlsFacebook content and/or profile/page URLs. Paste at least one URL.
maxItemsPerProfileMaximum discovered content URLs to resolve per profile/page.
includePostsInclude discovered post URLs.
includeReelsInclude discovered reel URLs.
includeVideosInclude discovered video URLs.
includePhotosInclude public photo URLs found during profile/page discovery. Direct photo URLs are always accepted.
includeAuthorProfileMetricsFetch each public author/profile once and add best-effort follower and page-like counts.
maxConcurrencyControls how many URLs are resolved at the same time.
requestDelayMillisAdds a minimum delay between public Facebook requests.
maxFetchRetriesRetries transient public request failures before marking a URL failed.
requestTimeoutSecsMaximum wait time for each public Facebook request.

โฌ†๏ธ Output sample

The results are stored in the default dataset. Each result is one Facebook content URL with at least one public content metric.

{
"platform": "facebook",
"inputUrl": "https://www.facebook.com/reel/2098858540985362/",
"contentUrl": "https://www.facebook.com/reel/2098858540985362/",
"contentId": "2098858540985362",
"contentType": "reel",
"profileUrl": "https://www.facebook.com/ExampleCreator",
"profileId": "123456789",
"profileUsername": "ExampleCreator",
"profileName": "Example Creator",
"description": "Example public reel description",
"views": 277000,
"plays": 660000,
"reactions": 21424,
"likes": 21424,
"comments": 267,
"shares": 553,
"contentMetricStatus": [
{
"metric": "views",
"status": "present",
"precision": "exact",
"source": "public_content"
},
{
"metric": "plays",
"status": "present",
"precision": "exact",
"source": "public_content"
},
{
"metric": "reactions",
"status": "present",
"precision": "exact",
"source": "public_content"
},
{
"metric": "likes",
"status": "present",
"precision": "exact",
"source": "public_content"
},
{
"metric": "comments",
"status": "present",
"precision": "exact",
"source": "public_content"
},
{
"metric": "shares",
"status": "present",
"precision": "exact_or_displayed",
"source": "public_content"
}
],
"collaborationCount": 1,
"collaborationProfiles": [
{
"id": "123456789",
"name": "Example Creator",
"url": "https://www.facebook.com/ExampleCreator",
"role": "owner",
"type": "Page"
}
],
"profileFollowers": 1200000,
"profilePageLikes": 840000,
"profileMetricStatus": [
{
"metric": "profileFollowers",
"status": "present",
"precision": "compact_rounded",
"source": "public_profile"
},
{
"metric": "profilePageLikes",
"status": "present",
"precision": "compact_rounded",
"source": "public_profile"
}
],
"status": "ok",
"statusReason": null,
"scrapedAt": "2026-06-21T22:15:00.000Z"
}

๐Ÿ“Œ Run summary

Facebook Metrics Scraper also saves an OUTPUT summary in the default key-value store.

{
"actorName": "facebook-metrics-scraper",
"mode": "auto",
"providedUrls": 3,
"contentUrls": 2,
"profileUrls": 1,
"inputUrls": 22,
"discoveredUrls": 20,
"resolvedUrls": 21,
"datasetRows": 18,
"skippedDatasetRows": 3,
"skippedFailedRows": 0,
"skippedInvalidRows": 0,
"skippedNoPublicMetricRows": 3,
"metricRows": 18,
"noPublicMetricRows": 3,
"failedRows": 0,
"invalidRows": 0,
"statusCounts": {
"ok": 18,
"resolved_no_public_metrics": 3
},
"postTypeCounts": {
"reel": 12,
"video": 5,
"post": 4
},
"authorProfileMetricsStatusCounts": {
"ok": 17,
"no_public_profile_metrics": 4
}
}

โ“ Why did I get fewer metrics than expected?

The Actor returns only metrics that Facebook exposes publicly without login. A successful URL resolution does not guarantee that every metric is available.

Common reasons include:

  • Facebook exposed preview-level counts but not richer engagement counters.
  • A static post exposed only partial metrics, such as shares.
  • Some static posts did not expose public counts.
  • The content requires login, is private, removed, region-limited, age-gated, or otherwise unavailable to logged-out users.
  • The rendered Facebook UI rounds or updates counters differently from public data available at collection time.

Use contentMetricStatus, profileMetricStatus, and statusReason to decide whether a row is suitable for your reporting workflow.

โœ… Tips for scraping Facebook metrics

  • Start with a small test run and inspect the dataset before increasing volume.
  • Use direct Facebook content URLs whenever possible.
  • Prefer reel, watch, and video URLs for richer public metric availability.
  • Leave includeAuthorProfileMetrics on when you want follower/page-like context.
  • Keep maxConcurrency modest for steadier large runs.
  • Leave network and retry settings at their defaults unless you have a specific reason to change them.
  • Failed, invalid, and no-public-metric input rows are counted in OUTPUT and SKIPPED_DATASET_ROWS but are not pushed to the dataset by default.
  • Treat resolved_no_public_metrics as an audit status in OUTPUT, not a failed run.

โš–๏ธ Is it legal to scrape Facebook post and reel metrics?

This Actor extracts public Facebook data that is available without login. You are responsible for making sure your use case complies with applicable laws, platform terms, and privacy rules.

Facebook content can sometimes include personal data, names, profile details, or other sensitive information. Do not scrape, store, or process personal data unless you have a legitimate reason and the right legal basis. If you're unsure, consult your lawyers.

Facebook is a trademark of its owner. This Actor is independent and is not affiliated with, endorsed by, or sponsored by Facebook or Meta.

๐Ÿ›Ÿ Support

If a run does not return what you expected, open an issue with the run ID and the input URLs you used. Include the dataset row for the affected URL when possible. The row-level status, statusReason, contentMetricStatus, and profileMetricStatus fields make support specific.

Related searches: Facebook scraper, Facebook posts scraper, Facebook reels scraper, Facebook post metrics scraper, Facebook reel metrics scraper, Facebook post engagement scraper, Facebook video metrics scraper, Facebook public metrics, Facebook likes scraper, Facebook comments count scraper, Facebook shares scraper, Facebook views scraper, no-cookie Facebook scraper.