Facebook Likes & Reactions Scraper - Who Reacted, By Type avatar

Facebook Likes & Reactions Scraper - Who Reacted, By Type

Pricing

from $2.50 / 1,000 reactor rows

Go to Apify Store
Facebook Likes & Reactions Scraper - Who Reacted, By Type

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

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

2 days ago

Last modified

Share

ParseForge Banner

๐Ÿ‘ 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 managersSee who engages with a page's posts and with which reaction
Community and brand teamsFind the fans who love a post, not just the count
Marketing agenciesCompare reaction splits across a client's and competitors' posts
Sales and partnership teamsSpot pages and people reacting to a competitor's launch
Researchers and journalistsStudy how audiences react to specific posts, with the exact counts
Data and AI teamsBuild engagement datasets with reaction types as labels

๐Ÿ“‹ What the Facebook Likes & Reactions Scraper does

  1. 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.
  2. Opens each post as a logged-out visitor and reads its text, date, author page, comment and share counts.
  3. 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.
  4. 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.
  5. 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.
  6. 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.

FieldTypeDescription
๐Ÿ–ผ imageUrlstringReactor's profile picture (40, 80 or 120 px, your choice)
๐Ÿ‘ค reactorNamestringName of the person or page that reacted
๐Ÿ˜€ reactionstringlike, love, care, haha, wow, sad or angry
๐Ÿ”— reactorUrlstringProfile URL, or Not Disclosed when the profile is private
๐Ÿ†” reactorIdstringFacebook ID of the reactor (numeric, or a privacy-scoped pfbid ID)
๐Ÿท reactorTypestringUser or Page
๐Ÿ‘ reactorListStatusstringPublic, or why Facebook withheld the names for this post
๐Ÿ“ฐ postUrlstringCanonical link to the post
๐Ÿงพ postIdstringNumeric post ID
๐Ÿ’ฌ postTextstringText of the post
๐Ÿ“… postDatestringWhen the post was published, ISO 8601 UTC
๐Ÿ“„ authorNamestringPage or profile that published the post
๐Ÿ”ข authorIdstringNumeric ID of that page
๐ŸŒ authorUrlstringURL of that page
โค๏ธ reactionsCountnumberTotal reactions on the post
๐Ÿ‘ likeCountnumberLike reactions
๐Ÿ˜ loveCountnumberLove reactions
๐Ÿค— careCountnumberCare reactions
๐Ÿ˜† hahaCountnumberHaha reactions
๐Ÿ˜ฎ wowCountnumberWow reactions
๐Ÿ˜ข sadCountnumberSad reactions
๐Ÿ˜  angryCountnumberAngry reactions
๐Ÿ’ญ commentsCountnumberComments on the post
๐Ÿ” sharesCountnumberShares of the post, Not Disclosed on video posts where Facebook does not publish it
๐Ÿ“ฅ inputUrlstringThe input this row came from
๐Ÿ•’ scrapedAtstringWhen the row was collected
โŒ errorstringPopulated 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 ActorTypical likes scrapersCookie based scrapersClicking the reaction count by hand
Requires your Facebook loginNoNoYesYes
Reactors named per type, per postUp to 10 per type (70 per post)About 20 per post on average, per their own docsMore, with your account's visibilityScroll as far as Facebook lets you
Reaction type on each rowYesYesVariesYes
Exact count per reaction typeYes, 7 columnsNoVariesRead off the dialog
Post text, date, author, comments, sharesYesNoVariesCopy by hand
Photos, videos, reels, permalinks, share linksYesPosts onlyVariesYes
Large pages (names hidden by Facebook)Free row with the totalsEmpty resultNames of your friends onlyNames of your friends only
Account riskNoneNoneYour account can be flaggedNone

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

  1. 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
  2. Open the Actor and go to the Input tab.
  3. Paste post links into Facebook post URLs. Photo, video, reel, permalink and share links work too.
  4. Set Max Items to the total number of reactor rows you want across all posts.
  5. Optionally pick the Reaction types to collect and the Profile picture size.
  6. 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.

๐Ÿ’ก 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.