ParseForge Scrapers

Facebook Likes & Reactions Scraper - Who Reacted, By Type

parseforge/facebook-likes-scraper

Social mediaAutomationLead generation

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.

Run this scraper See the API call
Total runs
6
Bookmarked
0
Last modified
2 days ago

This scraper was last updated on .

What does the Facebook Likes & Reactions Scraper - Who Reacted, By Type return?

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 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

  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.

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

  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.

๐Ÿ”— Recommended Actors

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

What input does the Facebook Likes & Reactions Scraper - Who Reacted, By Type accept?

FieldTypeWhat it doesDefault
startUrls required array Links to public Facebook posts, photos, videos or reels. Accepted forms: 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. Facebook shows reactor names to logged-out visitors on posts of pages and profiles up to roughly 1 million followers; larger pages return the reaction totals only. [{"url":"https://www.facebook.com/WBBPos
maxItems integer Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000 10
reactionTypes array Reaction types to collect. Leave empty for all seven. ["like","love","care","haha","wow","sad"
profilePictureSize string (3 options) Size of the reactor's profile picture in the imageUrl column. 120
proxyConfiguration object Apify Proxy settings. Keep the default; datacenter IPs work for both the post pages and the reactions query. {"useApifyProxy":true}

How much does the Facebook Likes & Reactions Scraper - Who Reacted, By Type cost?

from $2.50 per 1,000 results

Charged forWhat it isPrice each
Reactor row One person or page that reacted to a post, with the reaction type and the post's reaction totals. Free rows (hidden names, errors) are never charged. $0.0025 to $0.004

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

How do I call the Facebook Likes & Reactions Scraper - Who Reacted, By Type API?

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST ยท run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~facebook-likes-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "startUrls": [
      {
        "url": "https://www.facebook.com/WBBPosts/posts/pfbid02j21mpxEygikxxqKh3AaQxsct5vByRpuZVTgpBMELoKArJT6oJjvek8Y3TdRdDgvYl"
      },
      {
        "url": "https://www.facebook.com/katzsdeli/posts/1571258365044366"
      },
      {
        "url": "https://www.facebook.com/shakeshack/posts/1504712025023134"
      }
    ],
    "maxItems": 10,
    "reactionTypes": [
      "like",
      "love",
      "care",
      "haha",
      "wow",
      "sad",
      "angry"
    ],
    "profilePictureSize": "120",
    "proxyConfiguration": {
      "useApifyProxy": true
    }
  }'

What example inputs can I use?

Use these inputs to see how a run is configured.

input.json
{
  "startUrls": [
    {
      "url": "https://www.facebook.com/WBBPosts/posts/pfbid02j21mpxEygikxxqKh3AaQxsct5vByRpuZVTgpBMELoKArJT6oJjvek8Y3TdRdDgvYl"
    },
    {
      "url": "https://www.facebook.com/katzsdeli/posts/1571258365044366"
    },
    {
      "url": "https://www.facebook.com/shakeshack/posts/1504712025023134"
    }
  ],
  "maxItems": 10,
  "reactionTypes": [
    "like",
    "love",
    "care",
    "haha",
    "wow",
    "sad",
    "angry"
  ],
  "profilePictureSize": "120",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}

What do users say about the Facebook Likes & Reactions Scraper - Who Reacted, By Type?

No reviews yet. Be the first.

How do I report an issue with the Facebook Likes & Reactions Scraper - Who Reacted, By Type?

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

What related scrapers can I use?

Run Facebook Likes & Reactions Scraper - Who Reacted, By Type on Apify All scrapers