Facebook Likes & Reactions Scraper - Who Reacted, By Type
Pricing
from $2.50 / 1,000 reactor rows
Facebook Likes & Reactions Scraper - Who Reacted, By Type
Scrape who reacted to public Facebook posts, photos, videos and reels: name, profile URL, picture and reaction type, plus exact Like, Love, Care, Haha, Wow, Sad and Angry totals. No login. Export CSV, Excel, JSON, XML.
Pricing
from $2.50 / 1,000 reactor rows
Rating
0.0
(0)
Developer
ParseForge
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share

๐ Facebook Likes & Reactions Scraper
๐ Export who reacted to a Facebook post in seconds, with the reaction they gave. Paste post links and get the names, profile links and pictures of the people who liked, loved, laughed or got angry, plus the post's exact reaction split. 107 named reactors from 4 posts came back in 14 seconds in our test, and every row carries the post's Like, Love, Care, Haha, Wow, Sad and Angry totals.
This Actor opens the reactions dialog that Facebook shows to anyone who clicks the reaction count on a public post, without logging in, and reads it once per reaction type. Facebook shows up to 10 reactors per type to a logged-out visitor, so a post with all seven reaction types yields up to 70 named rows, each with the reactor's name, profile URL, picture, ID and the reaction they chose. The post itself is read from its public page: text, date, author page, comment and share counts.
Every row has 27 fields: the reactor (picture, name, reaction, profile URL, ID, type), the post (URL, ID, text, date, author name, ID and URL) and the engagement (total reactions and the seven reaction counts, comments, shares). Posts, photos, videos and reels are all accepted, in every URL form Facebook uses. No login, no cookie, no browser.
| ๐ฏ Target Audience | ๐ก Primary Use Cases |
|---|---|
| Social media managers | See who engages with a page's posts and with which reaction |
| Community and brand teams | Find the fans who love a post, not just the count |
| Marketing agencies | Compare reaction splits across a client's and competitors' posts |
| Sales and partnership teams | Spot pages and people reacting to a competitor's launch |
| Researchers and journalists | Study how audiences react to specific posts, with the exact counts |
| Data and AI teams | Build engagement datasets with reaction types as labels |
๐ What the Facebook Likes & Reactions Scraper does
- Accepts links to public Facebook posts, photos, videos and reels:
facebook.com/{page}/posts/{id},/{page}/videos/{id},watch/?v={id},/reel/{id},/{page}/photos/{id},photo.php?fbid={id},permalink.php?story_fbid={id}&id={pageId}and share links. - Opens each post as a logged-out visitor and reads its text, date, author page, comment and share counts.
- Opens the post's reactions dialog once per reaction type you selected, the same request Facebook's website makes when you click the reaction count.
- Writes one row per reactor with the reaction they gave, deduplicated per post, and the post's exact totals per reaction type on every row.
- When Facebook hides the names (pages above roughly 1 million followers show names only to the reactor's friends), writes one free row per post with the reaction totals and says so in
reactorListStatus. - Posts that do not exist or are not public come back as a free error row that says why.
๐ก Why it matters: a reaction count tells you how much a post resonated; the reactor list tells you with whom. The people who react to a competitor's posts, or who love rather than like your own, are the warmest audience a page has, and Facebook shows them to anyone who clicks. This Actor turns that click into a spreadsheet.
๐ฌ Full Demo (๐ง Coming soon)
๐ Output
Each dataset row is one reactor of one post. 27 columns per row.
| Field | Type | Description |
|---|---|---|
๐ผ imageUrl | string | Reactor's profile picture (40, 80 or 120 px, your choice) |
๐ค reactorName | string | Name of the person or page that reacted |
๐ reaction | string | like, love, care, haha, wow, sad or angry |
๐ reactorUrl | string | Profile URL, or Not Disclosed when the profile is private |
๐ reactorId | string | Facebook ID of the reactor (numeric, or a privacy-scoped pfbid ID) |
๐ท reactorType | string | User or Page |
๐ reactorListStatus | string | Public, or why Facebook withheld the names for this post |
๐ฐ postUrl | string | Canonical link to the post |
๐งพ postId | string | Numeric post ID |
๐ฌ postText | string | Text of the post |
๐
postDate | string | When the post was published, ISO 8601 UTC |
๐ authorName | string | Page or profile that published the post |
๐ข authorId | string | Numeric ID of that page |
๐ authorUrl | string | URL of that page |
โค๏ธ reactionsCount | number | Total reactions on the post |
๐ likeCount | number | Like reactions |
๐ loveCount | number | Love reactions |
๐ค careCount | number | Care reactions |
๐ hahaCount | number | Haha reactions |
๐ฎ wowCount | number | Wow reactions |
๐ข sadCount | number | Sad reactions |
๐ angryCount | number | Angry reactions |
๐ญ commentsCount | number | Comments on the post |
๐ sharesCount | number | Shares of the post, Not Disclosed on video posts where Facebook does not publish it |
๐ฅ inputUrl | string | The input this row came from |
๐ scrapedAt | string | When the row was collected |
โ error | string | Populated only on failed rows |
Real sample records
{"imageUrl": "https://scontent-dfw5-2.xx.fbcdn.net/v/t1.30497-1/453178253_471506465671661_2781666950760530985_n.png?stp=dst-png&cstp=mx2048x2048&...","reactorName": "Jeffory Decker","reaction": "like","reactorUrl": "https://www.facebook.com/itsyaboi9160","reactorId": "61581730538776","reactorType": "User","reactorListStatus": "Public","postUrl": "https://www.facebook.com/reel/1888904568756224/","postId": "1571258365044366","postText": "Sebastian has been making sandwiches at Katz's for over 7 years!\n\nThis beauty of a combination has:\nPastrami,\nCorned beef,\nMelted Swiss,\nMustard and Russian dressing on club!\n\nWhat do you think and what's in your sandwich?","postDate": "2026-09-20T17:14:09.000Z","authorName": "Katz's Delicatessen","authorId": "100064806517961","authorUrl": "https://www.facebook.com/katzsdeli","reactionsCount": 6620,"likeCount": 5952,"loveCount": 582,"careCount": 21,"hahaCount": 3,"wowCount": 59,"sadCount": 0,"angryCount": 3,"commentsCount": 141,"sharesCount": "Not Disclosed","inputUrl": "https://www.facebook.com/katzsdeli/posts/1571258365044366","scrapedAt": "2026-09-25T21:41:38.008Z","error": null}
{"imageUrl": "https://scontent.faep22-1.fna.fbcdn.net/v/t39.30808-1/783162378_122138706033045529_6680529975714218343_n.jpg?stp=cp0_dst-jpg_tt6&cstp=mx864x871&...","reactorName": "Ahsan Brand","reaction": "love","reactorUrl": "https://www.facebook.com/people/Ahsan-Brand/pfbid02hGRhCtns3tnNuq7sKrTrcXuBF167AFikonmyt1VkADyjSN5LnmHoRpVF7HjBrwVKl/","reactorId": "pfbid02hGRhCtns3tnNuq7sKrTrcXuBF167AFikonmyt1VkADyjSN5LnmHoRpVF7HjBrwVKl","reactorType": "User","reactorListStatus": "Public","postUrl": "https://www.facebook.com/WBBPosts/posts/pfbid0fNTEC2fycV9XAeYq2AVCwoX8SGxBV1LEseT28fgyDUofY37buaPVHkqLrZH76br8l","postId": "1230893832410400","postText": "With all due respect,\n\nIf you ever betrayed me when my intentions were pure, don't expect me to look at you the same way. \n\nYou have made your way out, so don't expect me to open the same door for you. You can never have me twice. You created your own monster. Apologies accepted, but access denied. \n\nYou are no longer welcome to sit at my table. Period.\n\nAuthor: unknown โ๏ธ #fblifestyle","postDate": "2025-10-12T07:39:06.000Z","authorName": "We Bare Bears Philippines","authorId": "100064693839187","authorUrl": "https://www.facebook.com/WBBPosts","reactionsCount": 2071,"likeCount": 1027,"loveCount": 861,"careCount": 176,"hahaCount": 1,"wowCount": 2,"sadCount": 4,"angryCount": 0,"commentsCount": 45,"sharesCount": 872,"inputUrl": "https://www.facebook.com/permalink.php?story_fbid=1230893832410400&id=100064693839187","scrapedAt": "2026-09-25T21:40:12.689Z","error": null}
{"imageUrl": "N/A","reactorName": "Not Disclosed","reaction": "N/A","reactorUrl": "Not Disclosed","reactorId": "Not Disclosed","reactorType": "Not Disclosed","reactorListStatus": "Hidden by Facebook: on pages this large only friends of a reactor can see their name","postUrl": "https://www.facebook.com/reel/1023344310547434/","postId": "1565523918276312","postText": "Come watch a spacewalk with us!\n\nNASA astronauts Chris Williams and Jessica Meir are stepping outside the International Space Station for about six and a half hours to make repairs to the station's Canadarm2 robotic arm. Tune in: https://youtu.be/D0dd8X4g3Eg","postDate": "2026-06-30T14:00:41.000Z","authorName": "NASA - National Aeronautics and Space Administration","authorId": "100044561550831","authorUrl": "https://www.facebook.com/NASA","reactionsCount": 279365,"likeCount": 253341,"loveCount": 20007,"careCount": 2116,"hahaCount": 1834,"wowCount": 2025,"sadCount": 17,"angryCount": 25,"commentsCount": 3230,"sharesCount": "Not Disclosed","inputUrl": "https://www.facebook.com/NASA/videos/1023344310547434/","scrapedAt": "2026-09-25T21:40:10.563Z","error": null}
The third record is a free summary row: NASA's page is far above the size at which Facebook stops showing reactor names to visitors, so the Actor keeps the exact totals and tells you why the names are missing. Image URLs are shortened here with .... The dataset holds the complete, working links.
โจ Why choose this Actor
- Exact reaction split on every row. Facebook's own per-type counts (Like 5,952, Love 582, Wow 59 and so on), read from the reactions dialog, not estimated from a preview. In our tests the seven types always add up exactly to the total.
- Every reaction type, not just likes. One request per type means you get the 10 people who got angry as well as the 10 who liked. Choose the types you care about in the input.
- The post comes with the reactors. Text, date, author page, comment and share counts sit on every row, so a multi-post export is a ready analysis table without a second Actor.
- Every URL form Facebook uses. Posts by pfbid or numeric ID, permalinks, photos, videos, watch links, reels and share links are normalized to the one form Facebook serves without a login, and two links to the same post are read once.
- Honest about the ceiling. Facebook shows 10 reactors per type to logged-out visitors and hides names entirely on pages above roughly 1 million followers. The Actor says which case you are in, in
reactorListStatus, and never charges for a row without a reactor. - Pay only for reactors. Summary rows for large pages, posts with no reactions and error rows are free.
- Profile pictures at the size you want. 40, 80 or 120 pixels, straight from Facebook's CDN.
- No credentials, no browser. Plain HTTP with automatic IP rotation. You never hand over a Facebook login, and your account is never at risk.
๐ How it compares to alternatives
| This Actor | Typical likes scrapers | Cookie based scrapers | Clicking the reaction count by hand | |
|---|---|---|---|---|
| Requires your Facebook login | No | No | Yes | Yes |
| Reactors named per type, per post | Up to 10 per type (70 per post) | About 20 per post on average, per their own docs | More, with your account's visibility | Scroll as far as Facebook lets you |
| Reaction type on each row | Yes | Yes | Varies | Yes |
| Exact count per reaction type | Yes, 7 columns | No | Varies | Read off the dialog |
| Post text, date, author, comments, shares | Yes | No | Varies | Copy by hand |
| Photos, videos, reels, permalinks, share links | Yes | Posts only | Varies | Yes |
| Large pages (names hidden by Facebook) | Free row with the totals | Empty result | Names of your friends only | Names of your friends only |
| Account risk | None | None | Your account can be flagged | None |
The Actor sees what a logged-out visitor sees. Facebook shows the reactions dialog with names for pages and profiles up to roughly 1 million followers (we tested pages from 900 to 941,000 followers with names, and pages from 1.8 million up without), and shows 10 reactors per reaction type without a login. Those are Facebook's limits, and the Actor reports them per post instead of returning an empty dataset.
๐ How to use
- Create a free Apify account. New accounts include $5 of free platform credit, which is plenty to try this out: console.apify.com/sign-up
- Open the Actor and go to the Input tab.
- Paste post links into Facebook post URLs. Photo, video, reel, permalink and share links work too.
- Set Max Items to the total number of reactor rows you want across all posts.
- Optionally pick the Reaction types to collect and the Profile picture size.
- Click Start, then open the Dataset tab and download as CSV, Excel, JSON or XML, or pull it from the API.
{"startUrls": [{ "url": "https://www.facebook.com/katzsdeli/posts/1571258365044366" },{ "url": "https://www.facebook.com/shakeshack/posts/1504712025023134" }],"maxItems": 200,"reactionTypes": ["love", "care", "angry"],"profilePictureSize": "120"}
๐ผ Business use cases
Warm audience lists from competitor posts
Run a competitor's last ten posts and collect the people and pages that reacted with Love or Care. reactorUrl and reactorName give you a list of engaged fans of the category, and reaction tells you how warm they are.
Reaction-split reporting
The seven count columns turn a list of posts into a sentiment table: which posts drew Haha and Angry, which drew Love, and how the mix changed over time. postDate and authorName make it a cross-page report in one run.
Community management
See who keeps reacting to a page's posts week after week. The same names in reactorName across runs are the page's core community, the people to thank, feature or invite.
Influencer and partner discovery
Rows with reactorType set to Page are other pages reacting to a post. Those are brands and creators already paying attention, a ready shortlist for partnership outreach.
๐ Automating Facebook Likes & Reactions Scraper
- Make and Zapier: run the Actor on a schedule for a list of posts and append new reactors to a sheet or a CRM.
- Slack: post a message when a tracked post crosses a reaction threshold or gets its first Angry reactions.
- Airbyte: sync datasets into Snowflake, BigQuery or Postgres to keep a history of who reacts to what.
- GitHub: schedule runs from Actions and keep versioned snapshots of a campaign's reactions.
- Google Drive: drop a CSV or Google Sheet into a shared folder after every run.
- API and webhooks: every run emits a dataset ID; subscribe to the run succeeded webhook and process the rows wherever you need them.
๐ Beyond business use cases
- Research: study how audiences react to news, campaigns or announcements, with exact per-type counts across many posts.
- Personal: keep track of who reacted to the posts of a community page you run.
- Non-profit: find the supporters who love a cause's posts and the pages that amplify them.
- Experimentation: reaction types make a natural label for sentiment or engagement models built on post text.
๐ค Ask an AI assistant about this scraper
Paste this into ChatGPT, Claude or any assistant to get help designing your run:
I am using the ParseForge Facebook Likes & Reactions Scraper on Apify. It takes links to public Facebook posts, photos, videos or reels and returns one row per reactor with 27 fields, including imageUrl, reactorName, reaction, reactorUrl, reactorId, reactorType, reactorListStatus, postUrl, postId, postText, postDate, authorName, authorId, authorUrl, reactionsCount, likeCount, loveCount, careCount, hahaCount, wowCount, sadCount, angryCount, commentsCount and sharesCount. Facebook shows up to 10 reactors per reaction type to logged-out visitors and hides names on pages above roughly 1 million followers, where the Actor still returns the exact totals. Help me design a run to answer this question: [your question here].
โ Frequently Asked Questions
๐ Do I need a Facebook account or cookie? No. The Actor reads only what Facebook shows to a logged-out visitor. You never supply credentials, so no account of yours is exposed.
๐ฅ How many reactors do I get per post? Up to 10 per reaction type, which is what Facebook's reactions dialog shows without a login, so up to 70 for a post with all seven types. The exact count per type is on every row, so you always know the coverage.
๐ Why did a post return one row with Not Disclosed as the reactor?
Facebook hides reactor names on very large pages. Its own message reads: "You can see the total number of people who reacted to this post, but only the names of friends who have reacted will be shown." In our tests every page above roughly 1 million followers behaved this way and every page below it showed names. The Actor keeps the totals in a free row and explains it in reactorListStatus.
๐ Why is reactorUrl sometimes "Not Disclosed"?
The reactor's profile is private, so Facebook publishes the name and picture but no link. The reactorId is still there, as a privacy-scoped pfbid ID.
๐ฐ Which links can I paste?
Any public post, photo, video or reel: /{page}/posts/{id} with a pfbid or numeric ID, permalink.php?story_fbid=...&id=..., /{page}/videos/{id}, watch/?v=..., /reel/{id}, /{page}/photos/{id}, photo.php?fbid=... and share links. Two links to the same post are read once.
๐ Why is sharesCount "Not Disclosed" on some posts?
Facebook does not publish a share count on video and reel posts to logged-out visitors. Every other count on the row is exact.
๐ฅ Can I get reactions from a private group or profile? No. Groups, private profiles and age-restricted pages are not visible without a login and return a free error row.
๐ Can I collect only some reaction types? Yes. Pick them in Reaction types. Collecting only Love and Care, for example, is a quick way to find a post's warmest audience and saves requests.
๐ผ Can I choose the picture size? Yes: 40, 80 or 120 pixels. The links are signed by Facebook and expire after a few days, so download the pictures you need.
๐ Do I need a proxy? Keep the default Apify Proxy. Facebook shows a login wall to an IP after a few dozen page views, so the Actor uses a fresh IP for every attempt and moves to residential IPs by itself when the default pool is walled.
โฑ How fast is it? About two to four seconds per post: one page read plus one request per reaction type present. 107 reactors from 4 posts took 14 seconds in our test.
๐ฅ What export formats are supported? CSV, Excel, JSON, XML, plus direct API access and integrations with Make, Zapier, Airbyte, Slack, Google Drive and more.
โ๏ธ Is this legal? The Actor collects names, reactions and counts that Facebook publishes to everyone. You remain responsible for how you use the data, including privacy law such as GDPR and CCPA, and Facebook's terms. Reactors are individuals, so treat the rows as personal data.
๐ Integrate with any app
Every run writes to an Apify dataset reachable through a REST API, so the output drops into whatever you already use. Native integrations cover Make, Zapier, Airbyte, Slack, Google Drive, GitHub, Google Sheets and webhooks, and the API covers everything else.
๐ Recommended Actors
- Facebook Posts Scraper - 33 Fields, Reaction Split - collect the posts of a page first, then feed their links here.
- Facebook Comments Scraper - Replies & Reactions - the comments behind
commentsCount. - Facebook Pages Scraper - 30 Fields, Followers & Info - page profiles and follower counts.
- Facebook Search Scraper - Posts by Keyword - find the posts to analyze by keyword.
- Facebook Groups Scraper - Posts & Member Counts - posts from public groups.
๐ก Pro Tip: browse the complete ParseForge collection.
๐ Need Help? Open our contact form
โ ๏ธ Disclaimer: independent tool, not affiliated with Facebook or Meta; only publicly available data.