Facebook Likes & Reactions Scraper
Pricing
from $10.00 / 1,000 post reaction counts
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
Maintained by CommunityActor stats
0
Bookmarked
15
Total users
4
Monthly active users
4 days ago
Last modified
Categories
Security
Limited permissionsShare
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
| Field | Type | Description |
|---|---|---|
postUrls | array of string | Public Facebook post or reel URLs. Each URL returns one row. |
maxResults | integer | Maximum 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:
| Field | Type | Description |
|---|---|---|
recordType | string | Always aggregate_metrics (a per-post count row). |
postUrl | string | The post or reel URL you supplied (normalized). |
postId | string or null | Facebook post identifier when the count source exposes it. |
reactionCount | integer | Total public reactions on the post, all reaction types combined. |
source | string | Route that read the count: count-api-primary, or count-api-secondary when the primary had no count. |
scrapedAt | string | ISO 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
PARTIALwhen other posts were saved, or fails withUPSTREAM_FAILEDwhen nothing was saved. It never reports success with no data after a source failure. - Every run writes
OUTPUTandRUN_SUMMARYrecords with the outcome (COMPLETE,PARTIAL,VALID_EMPTY,INVALID_INPUT,UPSTREAM_FAILEDorCONFIG_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
- Then use Facebook Page Scraper to collect Page details for the brands whose posts you are comparing.
- Then use Facebook Marketplace Scraper when the same research also needs public Marketplace listings.
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.