# Facebook Reactions Scraper (`maximedupre/facebook-reactions-scraper`) Actor

Get reaction counts and public details for people who reacted to public Facebook posts. Use post links or public profile and page URLs. No Facebook login is needed.

- **URL**: https://apify.com/maximedupre/facebook-reactions-scraper.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Social media, Marketing, For creators
- **Stats:** 5 total users, 1 monthly users, 95.2% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.80 / 1,000 reaction summaries

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

### 👍 See how people reacted to public Facebook posts

Facebook Reactions Scraper gives social media managers, marketers, creators, and researchers a clear view of how people reacted to public Facebook posts. For each post it reads, you get the reaction counts Facebook shows, such as Like, Love, and Care. You also get the public details of people who reacted, when Facebook lists them. Each item comes back as one row in a dataset. No Facebook login is needed.

Use it to:

- Compare reaction counts across a Page's most recent posts to see which ones drew the strongest response.
- Check the reaction mix on one public post, such as how many Likes, Loves, and Cares it got.
- Pull the public names and profile links of people who liked or loved a post, where Facebook shows them.
- Read each post's text, publish date, creator, and comment and share counts next to its reactions, when Facebook shows them.
- Limit a run to the most recent posts from each profile or page, so you only collect the posts you need.

#### 📊 Reaction counts, reactors, and post details

Each result is one public Facebook post, photo, video, or reel that the Actor read successfully. A result can include:

- **Reaction counts:** how many Like, Love, Care, Haha, Wow, Sad, and Angry reactions Facebook shows.
- **Reactors:** the public name, profile link or ID, profile picture, and reaction type of each person Facebook lists.
- **Post details:** the text, publish date, creator, comment count, and share count. It also includes photo links, video view counts, or reel play counts when Facebook shows them.

Reactor lists are often shorter than the reaction counts. The Actor reads only the first page of reactors for each reaction category, which holds about 10 entries per category.

#### 🚀 Start a run from post links or profile pages

1. Choose a source in **Find reactions from**: Content links, Profile posts, or Profile reels.
2. Paste public post links, or add public profile or page URLs.
3. Choose a **Reaction category** if you want reactors from one category only.
4. Set any limits you want, then start the run.
5. Open the **Results** link in the Output tab to see your rows.

#### ⚙️ Input

Choose one source option and add its links. The values for the other options stay visible, but the Actor ignores them. Reaction settings apply to every option.

**Input fields**

| Field | Type | What it does |
|---|---|---|
| Find reactions from (`discoveryMethod`) | string | Choose `contentLinks` for Content links, `profilePosts` for Profile posts, or `profileReels` for Profile reels. Content links is the prefilled choice. |
| Links to posts or media (`contentUrls`) | array of objects | Public Facebook links to posts, photos, videos, reels, permalinks, or share links to reels. Each item has one `url`. Share links to posts are not available. Use this field with Content links. |
| Profile or page URLs (`profileUrls`) | array of objects | Public Facebook profile or page URLs for Profile posts or Profile reels. Each item has one `url`. |
| Maximum items per profile (`maxProfileItems`) | integer | For Profile posts, how many of the most current posts to collect from each profile or page. For Profile reels, how many current reels to collect from each profile or page. Leave blank to collect all available results until Facebook has no more current items to show. |
| Reaction category (`reactionType`) | string | Which reactors to include: `all` (default), `like`, `love`, `care`, `haha`, `wow`, `sad`, or `angry`. Reaction counts still show every category Facebook publishes. |
| Maximum reactor entries (`maxReactors`) | integer | A total limit on reactor entries across the run. Use a whole number of 1 or more. The Actor reads only the first page of reactors for each reaction category on each item, about 10 entries per category. Leave blank for no total limit beyond those first pages. The form prefills 50. |

**Example input**

This example uses the form's default settings and reads one public post.

```json
{
  "discoveryMethod": "contentLinks",
  "contentUrls": [
    {
      "url": "https://www.facebook.com/WBBPosts/posts/pfbid02j21mpxEygikxxqKh3AaQxsct5vByRpuZVTgpBMELoKArJT6oJjvek8Y3TdRdDgvYl"
    }
  ],
  "reactionType": "all",
  "maxReactors": 50
}
```

#### 🧾 Output

The Actor saves one row for each public Facebook content item that has reaction data from Facebook. Each row has a Content ID or a source URL, plus reaction counts or a reactor list. Open the **Results** link in the Output tab to see the rows as a table.

**Output fields**

| Field | Type | What it does |
|---|---|---|
| `contentId` | string | Facebook's ID for the content item, when available. Use it to match or check the item on Facebook. |
| `url` | string | Link to the public content item, when available. |
| `contentType` | string | The kind of item: `post`, `photo`, `video`, or `reel`. |
| `text` | string | Text published with the item, when available. |
| `publishedAt` | string (date and time) | When Facebook shows the item was published. |
| `creator` | object | The profile or page that published the item. |
| `creator.name` | string | Displayed name of that profile or page. |
| `creator.url` | string | Link to that profile or page. |
| `reactionCounts` | object | How many of each reaction Facebook shows for the item. |
| `reactionCounts.like` | integer | Like reactions. |
| `reactionCounts.love` | integer | Love reactions. |
| `reactionCounts.care` | integer | Care reactions. |
| `reactionCounts.haha` | integer | Haha reactions. |
| `reactionCounts.wow` | integer | Wow reactions. |
| `reactionCounts.sad` | integer | Sad reactions. |
| `reactionCounts.angry` | integer | Angry reactions. |
| `reactors` | array of objects | People Facebook publicly lists as reactors. Only the first page of reactors for each category is read. |
| `reactors[].name` | string | Displayed name of a person who reacted. |
| `reactors[].profileUrl` | string | Link to the person's public profile, when Facebook shows it. |
| `reactors[].profileId` | string | Facebook's profile ID for the person, when Facebook shows it. Each reactor has a profile link or an ID. |
| `reactors[].profilePictureUrl` | string | Link to the profile picture Facebook shows for the person. |
| `reactors[].reactionType` | string | The reaction the person chose: `like`, `love`, `care`, `haha`, `wow`, `sad`, or `angry`. |
| `commentCount` | integer | Number of comments Facebook shows for the item. |
| `shareCount` | integer | Number of shares Facebook shows for the item. |
| `photoUrls` | array of strings | Links to photos attached to the item. |
| `videoViewCount` | integer | Number of video views Facebook shows for the item. |
| `reelPlayCount` | integer | Number of reel plays Facebook shows for the item. |

**Example row**

This row comes from a successful run that used the default input. It is shortened. Only some reactors are shown, and each `"..."` marks where other reactors were left out.

```json
{
  "contentId": "1230893832410400",
  "contentType": "post",
  "url": "https://www.facebook.com/WBBPosts/posts/with-all-due-respectif-you-ever-betrayed-me-when-my-intentions-were-pure-dont-ex/1230893832410400/",
  "text": "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",
  "publishedAt": "2025-10-12T07:39:06.000Z",
  "creator": {
    "name": "We Bare Bears Philippines",
    "url": "https://www.facebook.com/WBBPosts"
  },
  "reactionCounts": {
    "like": 1027,
    "love": 861,
    "care": 176,
    "sad": 4,
    "wow": 2,
    "haha": 1,
    "angry": 0
  },
  "reactors": [
    {
      "name": "Umar Keke",
      "profileUrl": "https://www.facebook.com/people/Umar-Keke/61588615048269/",
      "profileId": "61588615048269",
      "profilePictureUrl": "https://scontent-dfw5-2.xx.fbcdn.net/v/t39.30808-1/813362458_122121834993287168_3714288259473677507_n.jpg?stp=cp0_dst-jpg_tt6&cstp=mx654x666&ctp=p40x40&_nc_cat=104&ccb=1-7&_nc_sid=1d2534&_nc_ohc=Rcg22o9pXsYQ7kNvwHGrpS1&_nc_oc=AdpJys3pwsljSf2MbpCGa0lo7jC6k3lBBrmukuG55PS5rl5npILLXcl12Ic2QAD1Gq8&_nc_zt=24&_nc_ht=scontent-dfw5-2.xx&_nc_gid=NfTCR9uccMc87NqllWvgDA&_nc_ss=78180&oh=00_AQPObsTvhOi73ogtBSt73oJjyoqJ9lWjYAJoa2AnuOFI3A&oe=6AD510AA",
      "reactionType": "like"
    },
    {
      "name": "Albert Zsolt",
      "profileUrl": "https://www.facebook.com/people/Albert-Zsolt/pfbid0kDF1pjSxbnikVKg5GYG6o5XTvMLjVVrDZZN7XvDuGq13GMZ6PN9xzgTzgsWm8s8Jl/",
      "profileId": "pfbid0kDF1pjSxbnikVKg5GYG6o5XTvMLjVVrDZZN7XvDuGq13GMZ6PN9xzgTzgsWm8s8Jl",
      "profilePictureUrl": "https://scontent-dfw6-2.xx.fbcdn.net/v/t39.30808-1/818761532_122273145242036143_7736853593235963201_n.jpg?stp=cp0_dst-jpg_tt6&cstp=mx1086x1086&ctp=s40x40&_nc_cat=108&ccb=1-7&_nc_sid=e99d92&_nc_ohc=QP4VWqLYjYYQ7kNvwHT45U8&_nc_oc=Adpm_kKbcCafV9IGEghvHGVppzprsIWljjlP-v_hN2YQp6T18mJV8KPoiTdEa6IhROQ&_nc_zt=24&_nc_ht=scontent-dfw6-2.xx&_nc_gid=NfTCR9uccMc87NqllWvgDA&_nc_ss=78180&oh=00_AQMCWoMvYRqR-7c5LCW69KaUwFbtCRT7SwIC5KY77J5ZgA&oe=6AD534F0",
      "reactionType": "like"
    },
    "...",
    {
      "name": "Austin Chirelli",
      "profileUrl": "https://www.facebook.com/people/Austin-Chirelli/pfbid09xbqE14idS8C745h93uo7HdLwoC7ZYLGvP1Jyjv6CiYwvwv2HwSUsDTi7RwkC33Al/",
      "profileId": "pfbid09xbqE14idS8C745h93uo7HdLwoC7ZYLGvP1Jyjv6CiYwvwv2HwSUsDTi7RwkC33Al",
      "profilePictureUrl": "https://scontent-dfw5-1.xx.fbcdn.net/v/t39.30808-1/836897056_122102962605496981_8984095993735804148_n.jpg?stp=c0.0.637.637a_cp0_dst-jpg_tt6&cstp=mx637x637&ctp=s40x40&_nc_cat=106&ccb=1-7&_nc_sid=e99d92&_nc_ohc=ZpACRdldxbMQ7kNvwFCSABK&_nc_oc=Adqly0vWqv0hunNHv5QQjxIBflVg2JyYyVSry_mDe8dffjwL9iQQ73-J3UfUuipn55I&_nc_zt=24&_nc_ht=scontent-dfw5-1.xx&_nc_gid=KcwFp-Q-Rh_Gu1U7sq4Ctw&_nc_ss=78180&oh=00_AQMI53s2h1j4w9UdhODZDEY0xUkqe1BRxHiZOxBowIJZmQ&oe=6AD527DE",
      "reactionType": "love"
    },
    "...",
    {
      "name": "Sahim Brandify",
      "profileId": "61555167717657",
      "profilePictureUrl": "https://scontent-dfw5-2.xx.fbcdn.net/v/t39.30808-1/842936021_122283814874172257_8447588421473024073_n.jpg?stp=cp0_dst-jpg_tt6&cstp=mx1254x1254&ctp=s40x40&_nc_cat=100&ccb=1-7&_nc_sid=1d2534&_nc_ohc=MbVRAHXfq4cQ7kNvwGEw5Er&_nc_oc=AdryxMsm-Lw9yYIssbqccolVGybktavDwHbXS06XdL2e4zS4uyun68Ao1vy38BUIrTM&_nc_zt=24&_nc_ht=scontent-dfw5-2.xx&_nc_gid=SdoumYG6B7kx992aUs2Xkg&_nc_ss=78180&oh=00_AQOo1lQPi3Bq7XHWaoOTCtZlNMf9xuhUpYLJvjmKNkDAyw&oe=6AD530D3",
      "reactionType": "care"
    },
    "...",
    {
      "name": "Trang Phuong",
      "profileUrl": "https://www.facebook.com/buihuonggiangh",
      "profileId": "pfbid0rXeD8gaqHNPjDQUkv9SGGDd4gdPcSQUThi6pswSbmETFPS38fMHfG843KU7oGwJil",
      "profilePictureUrl": "https://scontent-dfw6-2.xx.fbcdn.net/v/t1.30497-1/453178253_471506465671661_2781666950760530985_n.png?stp=cp0_dst-png&cstp=mx2048x2048&ctp=s40x40&_nc_cat=110&ccb=1-7&_nc_sid=136b72&_nc_ohc=xbZPQ_IVpFwQ7kNvwGhGraT&_nc_oc=AdrCKOUjlxLrJ24Y-hquYpaiIZrXOxQBNfC06ZxvPWaGtf2j1OoL5yVDcqVmLTFXGfg&_nc_zt=24&_nc_ht=scontent-dfw6-2.xx&_nc_ss=78180&oh=00_AQPZYEXDEz5V5BNmvKjiFWE9PcqScSOCP-yaQmsAmvDGcg&oe=6AF6D03A",
      "reactionType": "haha"
    },
    {
      "name": "Ian Dela Cruz",
      "profileId": "pfbid029SEsLSMD7NK6ZUpfCH6RL2Z5HpeCmgBkK97jUAEye6LSMMjiX5PxXgS7f8YJGMqhl",
      "profilePictureUrl": "https://scontent-dfw5-2.xx.fbcdn.net/v/t39.30808-1/580832536_2017242542367398_6185337466832319991_n.jpg?stp=cp0_dst-jpg_tt6&cstp=mx1001x1001&ctp=s40x40&_nc_cat=100&ccb=1-7&_nc_sid=e99d92&_nc_ohc=DOa8mdvKkJgQ7kNvwG41I3_&_nc_oc=AdoDxHC2ymf0EjTQvVLiMNyIB-l9wpalP38aAypgzJ110varirSHRLdaxhm4AhFZimU&_nc_zt=24&_nc_ht=scontent-dfw5-2.xx&_nc_gid=UJgW-99a8OpRNB5qBxQxKw&_nc_ss=78180&oh=00_AQMWGATQLDGFhnUL74d8syJwQP4JorpK8_cw_bVwbOPnmw&oe=6AD53948",
      "reactionType": "wow"
    },
    "...",
    {
      "name": "Min Shen",
      "profileId": "pfbid0T1cDuMwjwio9z5g8mMKZk9SMZz3gERTrQcK1qfJrJ9frYr5aLYrpxvrHczgjMfmpl",
      "profilePictureUrl": "https://scontent-dfw5-2.xx.fbcdn.net/v/t39.30808-1/460357883_10163882489278448_3293035828462055585_n.jpg?stp=cp0_dst-jpg_tt6&cstp=mx320x320&ctp=s40x40&_nc_cat=100&ccb=1-7&_nc_sid=e99d92&_nc_ohc=iaCJZJyEc4oQ7kNvwFQ7m47&_nc_oc=AdpNIihJfui60rFpWqKfZ23xkr2QzvX3PzsksT7RAzunRxdOvvJjWPTPMjpKnMcvQos&_nc_zt=24&_nc_ht=scontent-dfw5-2.xx&_nc_gid=XMRMCxKERwzj4zqIQFfb-A&_nc_ss=78180&oh=00_AQMaWfGESKu-u1qF_LwLyCuTOCmWXnRKsyu8I_Cf10upFQ&oe=6AD5113C",
      "reactionType": "sad"
    },
    "..."
  ],
  "commentCount": 45,
  "shareCount": 874,
  "photoUrls": [
    "https://scontent-dfw5-2.xx.fbcdn.net/v/t51.82787-15/564992493_18296360545265776_4116024900611746856_n.webp?stp=dst-jpg_tt6&cstp=mx1440x1623&ctp=s1080x2048&_nc_cat=100&ccb=1-7&_nc_sid=127cfc&_nc_ohc=TClq_Z04mf4Q7kNvwHTyxne&_nc_oc=Adol_pSn1T6EvpFw7CwdJ7Sp39EVK3TtZAnRRTNSnTluO9e_KTXs823Tsw-gTYxvmH4&_nc_zt=23&_nc_ht=scontent-dfw5-2.xx&_nc_gid=nmWR2wr_9NKTo1Fcyw3vDQ&_nc_ss=78289&oh=00_AQN9NtsY9hZVuKBRSvpi1quqzXAW-c6SXVhaFZOGL2Qt2g&oe=6AD53A13"
  ]
}
```

#### 💳 Pricing

This Actor uses pay-per-event pricing. Each public post, photo, video, or reel that the Actor reads successfully is charged as one event, named **Reaction summary**. The price for each event depends on your Apify pricing tier, so check this Actor's pricing on its Apify Store page for the exact amount.

#### 🔌 Integrations

Results are saved to an Apify dataset. You can download that dataset in common formats or read it through the Apify API.

Watch this video:

https://www.youtube.com/watch?v=bNACk1_S_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### Why are there fewer reactors than reaction counts?

The counts are the totals Facebook shows for each reaction type. The Actor reads only the first page of reactors for each reaction category. That page holds about 10 entries per category. Facebook can also limit a list or hide some names while still showing the counts.

##### Which reaction category should I choose?

Choose **All reactions** to include reactors from every category. Choose one category, such as Love, to include only those reactors. Reaction counts still show every category Facebook publishes, whichever category you choose.

##### Should I use Content links or Profile posts?

Use Content links when you already have the post links. Use Profile posts when you want the most current posts from a public profile or page. Use Profile reels for reels from a public profile or page.

##### What happens to a link that is private, blocked, or unreadable?

The Actor does not add it to your results. The run's warning log lists it instead.

##### Why does a row have a Content ID but no URL?

Facebook does not always show a link for an item. When a row has no URL, use its Content ID to find the item on Facebook.

##### Does the Actor return comments?

No. It returns the number of comments and shares that Facebook shows for each item, but not the comment text.

##### Does the Actor track reactions over time or send alerts?

No. Each run reads what Facebook shows at that time. The Actor does not keep reaction history, watch posts, or send change alerts.

##### Can I search Facebook by keyword?

No. Facebook keyword search is not supported. Give the Actor public post links, or public profile and page URLs, to read.

##### Do I need a Facebook account?

No. The Actor reads public Facebook content and does not ask for your Facebook login or account credentials.

##### How am I charged?

Each public post, photo, video, or reel that the Actor reads successfully is charged at the price for your Apify pricing tier.

##### Are there other Facebook reaction scrapers?

Yes. Some are listed in Related Actors below. Each one has its own inputs, outputs, and prices, so compare them before you run.

### 📝 Changelog

**v0.0** (14-10-2026)

- Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~facebook-reactions-scraper/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [Facebook User Posts Scraper](https://apify.com/maximedupre/facebook-user-posts-scraper): Collect a profile's or Page's public posts with engagement counts, then check who reacted to the posts you pick here.
- [Facebook Reactions (Likes) Scraper](https://apify.com/scraper_one/facebook-reactions-scraper): Use it for audience analysis of who reacted to posts and which reaction each person chose.
- [Facebook Likes Scraper - Who Reacted, Reaction Type & Totals](https://apify.com/parseforge/facebook-likes-scraper): Export reactor names, profile links, and exact reaction totals for public posts, photos, videos, and reels to CSV or Excel.
- [Facebook Likes and Reactions Scraper](https://apify.com/apify/facebook-likes-scraper): Pull liker names and profile URLs from one or more posts into spreadsheets, apps, or reports.
- [Facebook Posts Reactions Scraper](https://apify.com/alpha-scraper/facebook-posts-reactions-scraper): Measure engagement on a Page's posts, with counts for each reaction type plus comments, shares, post text, and photos.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `discoveryMethod` (type: `string`):

Choose Content links to analyze public post, photo, video, reel, permalink, or share links to reels. Choose Profile posts or Profile reels to find those items from profile or page URLs.

## `contentUrls` (type: `array`):

Add public Facebook links to posts, photos, videos, reels, permalinks, or share links to reels. Share links to posts are not available. Use this field when Content links is selected.

## `profileUrls` (type: `array`):

Add public Facebook profile or page URLs. Use this field for Profile posts or Profile reels.

## `maxProfileItems` (type: `integer`):

For Profile posts, set how many of the most current posts to collect from each profile or page. For Profile reels, set how many current reels to collect from each profile or page. Leave blank to collect all available results until Facebook has no more current items to show.

## `reactionType` (type: `string`):

Choose which reactors to include. All reactions includes every visible category. Reaction counts still show every category Facebook publishes.

## `maxReactors` (type: `integer`):

Set a total limit for reactor entries across this run. Use a whole number of 1 or more. The Actor reads only the first page of reactors for each reaction category on each post, photo, video, or reel. That page holds up to about 10 entries per category. The limit is used up in order, so later posts, photos, videos, reels, and categories can get fewer entries or none. Leave blank for no total limit beyond those first pages.

## Actor input object example

```json
{
  "discoveryMethod": "contentLinks",
  "contentUrls": [
    {
      "url": "https://www.facebook.com/WBBPosts/posts/pfbid02j21mpxEygikxxqKh3AaQxsct5vByRpuZVTgpBMELoKArJT6oJjvek8Y3TdRdDgvYl"
    }
  ],
  "reactionType": "all",
  "maxReactors": 50
}
```

# Actor output Schema

## `dataset` (type: `string`):

Open the successful Facebook content results.

# 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 = {
    "discoveryMethod": "contentLinks",
    "contentUrls": [
        {
            "url": "https://www.facebook.com/WBBPosts/posts/pfbid02j21mpxEygikxxqKh3AaQxsct5vByRpuZVTgpBMELoKArJT6oJjvek8Y3TdRdDgvYl"
        }
    ],
    "maxReactors": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/facebook-reactions-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 = {
    "discoveryMethod": "contentLinks",
    "contentUrls": [{ "url": "https://www.facebook.com/WBBPosts/posts/pfbid02j21mpxEygikxxqKh3AaQxsct5vByRpuZVTgpBMELoKArJT6oJjvek8Y3TdRdDgvYl" }],
    "maxReactors": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/facebook-reactions-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 '{
  "discoveryMethod": "contentLinks",
  "contentUrls": [
    {
      "url": "https://www.facebook.com/WBBPosts/posts/pfbid02j21mpxEygikxxqKh3AaQxsct5vByRpuZVTgpBMELoKArJT6oJjvek8Y3TdRdDgvYl"
    }
  ],
  "maxReactors": 50
}' |
apify call maximedupre/facebook-reactions-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maximedupre/facebook-reactions-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/ErFoTWxvr210VZj2G/builds/UuIzqAecMabZwnoL9/openapi.json
