Facebook Likes & Reactions Scraper avatar

Facebook Likes & Reactions Scraper

Pricing

from $10.00 / 1,000 post reaction counts

Go to Apify Store
Facebook Likes & Reactions Scraper

Facebook Likes & Reactions Scraper

Get the public reaction count for Facebook post and reel URLs: one row per post with total reactions, post ID and route. No Facebook cookies. MCP-ready.

Pricing

from $10.00 / 1,000 post reaction counts

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

15

Total users

4

Monthly active users

4 days ago

Last modified

Security

Limited permissions

Share

What is Facebook Post Reactions Scraper?

Facebook Post Reactions Scraper returns the total public reaction count for Facebook post and reel URLs. You give it one or more public facebook.com post or reel URLs; it returns one row per post with the total reaction count, the post ID, the route that read it and a timestamp. No Facebook login or cookies are needed.

It does not list the people who reacted. Facebook shows reactor names only to logged-in users, and this Actor does not log in, so every row is a count, never a person.

Best fit and connected workflows

This Actor fits workflows that start with specific public Facebook posts or reels and need their reaction totals in a consistent schema:

  • compare reaction totals across several campaign posts or reels,
  • track how a post's public reaction count changes between scheduled runs,
  • feed structured reaction metrics into analytics or AI workflows.

If you need the names or profiles of individual reactors, this Actor is not the right tool.

Practical scenario

A social media analyst has five campaign reel URLs and wants their reaction totals in one table. They put the URLs in postUrls. The run returns five rows, each with reactionCount, postId, source and scrapedAt, ready to sort or chart. Running the same input weekly gives a simple trend line per post.

Input

FieldTypeDescription
postUrlsarray of stringPublic Facebook post or reel URLs. Each URL returns one row.
maxResultsintegerMaximum posts to save (one row each). Posts beyond the cap are not read. Defaults to 50, accepts 1 through 500.

Older saved inputs may still carry maxResultsPerPost or sourceMode; they are accepted and have no effect on the one-row-per-post output.

Input example

{
"postUrls": [
"https://www.facebook.com/reel/753347914167361"
],
"maxResults": 10
}

Output

One row per post:

FieldTypeDescription
recordTypestringAlways aggregate_metrics (a per-post count row).
postUrlstringThe post or reel URL you supplied (normalized).
postIdstring or nullFacebook post identifier when the count source exposes it.
reactionCountintegerTotal public reactions on the post, all reaction types combined.
sourcestringRoute that read the count: count-api-primary, or count-api-secondary when the primary had no count.
scrapedAtstringISO 8601 time the row was saved.

The total is not split by reaction type (like, love, haha and so on).

Example output record

{
"recordType": "aggregate_metrics",
"postUrl": "https://www.facebook.com/reel/753347914167361",
"postId": "753347914167361",
"reactionCount": 2068,
"source": "count-api-primary",
"scrapedAt": "2026-10-22T10:00:00.000Z"
}

How it works

For each post, the Actor asks a managed post-metrics API for the public post and saves one row with the total reaction count. If that API has no count for the post, a second managed API is tried. There is no other route.

  • A post that both APIs report as missing, private or unsupported produces no row and is not charged.
  • If a post could not be read because the sources were blocked or unavailable, the run ends PARTIAL when other posts were saved, or fails with UPSTREAM_FAILED when nothing was saved. It never reports success with no data after a source failure.
  • Every run writes OUTPUT and RUN_SUMMARY records with the outcome (COMPLETE, PARTIAL, VALID_EMPTY, INVALID_INPUT, UPSTREAM_FAILED or CONFIG_ERROR), routeServed, per-route counts, source attempts per post and the charged event counts.

Pricing

This Actor uses Pay per event plus Apify platform usage. The live Pricing tab on the Actor page shows the current event prices; check it before running.

  • Actor start: charged once when the run starts, one event per GB of run memory (minimum one).
  • Reaction record (reaction-scraped): one event per saved row, so one per post that returned a count.

Example: a run with ten post URLs that all return a count is charged the start event(s) plus ten reaction events, plus Apify platform usage. Posts with no public count, invalid input and failed runs are not charged reaction events. maxResults caps the number of reaction events.

Use with AI agents (MCP)

Actor identity: khadinakbar/facebook-likes-scraper

Get the total public reaction count for these Facebook post URLs. Return one row per post with reactionCount, postId and scrapedAt.

Each row is a count for one post. Read OUTPUT.outcome after the run: VALID_EMPTY means no supplied post had a public count, UPSTREAM_FAILED means the sources could not be reached. Set maxResults to the number of posts to bound cost.

Apify API example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const run = await client.actor('khadinakbar/facebook-likes-scraper').call({
postUrls: ['https://www.facebook.com/reel/753347914167361'],
maxResults: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Best results

Use direct public post or reel URLs. Page URLs and search URLs are not post URLs and return no count. Set maxResults to at least the number of posts you submit.

Continue the workflow

Design note

I designed this Actor around the question it can answer reliably without logging in: how many people reacted to a public post. Reactor identities need a logged-in Facebook session, so the Actor does not return them.

FAQ

Can I use a public reel URL?
Yes. Post and reel URLs on facebook.com are accepted.

Does it list everyone who reacted?
No. Each row is the post's total reaction count.

Does it split reactions by type?
No. reactionCount is the combined total.

What if I submit several URLs?
Each post is read separately and returns one row.

Responsible use

Use this Actor for public Facebook posts and reels relevant to your research, analysis or automation workflow. It reads public reaction totals only and does not collect information about the people who reacted. Keep downstream use aligned with applicable law and Facebook's policies.