# Facebook Likes & Reactions Scraper - Who Reacted, By Type (`parseforge/facebook-likes-scraper`) Actor

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.

- **URL**: https://apify.com/parseforge/facebook-likes-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Social media, Automation, Lead generation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 reactor rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

![ParseForge Banner](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner-v4.webp)

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

```json
{
  "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
}
```

```json
{
  "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
}
```

```json
{
  "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](https://console.apify.com/sign-up?fpr=vmoqkp)
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.

```json
{
  "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](https://apify.com/parseforge/facebook-posts-scraper) - collect the posts of a page first, then feed their links here.
- [Facebook Comments Scraper - Replies & Reactions](https://apify.com/parseforge/facebook-comments-scraper) - the comments behind `commentsCount`.
- [Facebook Pages Scraper - 30 Fields, Followers & Info](https://apify.com/parseforge/facebook-pages-scraper) - page profiles and follower counts.
- [Facebook Search Scraper - Posts by Keyword](https://apify.com/parseforge/facebook-search-scraper) - find the posts to analyze by keyword.
- [Facebook Groups Scraper - Posts & Member Counts](https://apify.com/parseforge/facebook-groups-scraper) - posts from public groups.

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge).

**🆘 Need Help?** [Open our contact form](https://tally.so/r/BzdKgA)

> **⚠️ Disclaimer:** independent tool, not affiliated with Facebook or Meta; only publicly available data.

# Actor input Schema

## `startUrls` (type: `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.

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `reactionTypes` (type: `array`):

Reaction types to collect. Leave empty for all seven.

## `profilePictureSize` (type: `string`):

Size of the reactor's profile picture in the imageUrl column.

## `proxyConfiguration` (type: `object`):

Apify Proxy settings. Keep the default; datacenter IPs work for both the post pages and the reactions query.

## Actor input object example

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

# Actor output Schema

## `overview` (type: `string`):

Reactor, reaction type, profile link and post totals

## `fullData` (type: `string`):

Complete dataset with all 27 fields

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "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,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/facebook-likes-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "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,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/facebook-likes-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "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,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call parseforge/facebook-likes-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/facebook-likes-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/KtW21XhQSKIynQ9YJ/builds/fqloufFhyH3WM2mM9/openapi.json
