# Facebook Likes Scraper — Public Reactions & Profiles (`khadinakbar/facebook-likes-scraper`) Actor

Extract public Facebook likes and reaction previews with display names, profile URLs, reaction types, and truthful source diagnostics. No Facebook cookies required. MCP-ready.

- **URL**: https://apify.com/khadinakbar/facebook-likes-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Social media, AI, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 public reaction records

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Facebook Likes Scraper

Extract public Facebook likes and reactions from post or reel URLs without Facebook cookies. The actor returns structured public reaction previews: reaction type, display name, profile URL, identifiers when Facebook exposes them, source, and scrape time. It is designed for social listening, competitor engagement analysis, research, and agent workflows that need a clean dataset rather than a browser session.

Use this actor for public Facebook post and reel reaction data. Do not use it for private posts, closed groups, complete private audience graphs, or Facebook Page follower counts. Facebook itself determines which reaction identities it exposes publicly; the actor never claims to reveal hidden likes.

### What you get

| Field | Meaning |
| --- | --- |
| `postUrl` | Public Facebook post or reel that was inspected |
| `reactionType` | Like, love, care, wow, sad, angry, haha, or another public label |
| `reactorName` | Public display name when Facebook shows one |
| `reactorProfileUrl` | Public profile URL when available |
| `reactorId` | Source-provided Facebook identifier, when available |
| `reactionCount` | Count-only fallback metric; `null` for individual reactor previews |
| `recordType` | `public_reactor` or `aggregate_metrics` so agents can distinguish the shape |
| `source` | Native Apify path, ScrapeCreators, or SociaVault |

The default source mode uses the native, no-cookie Apify reaction path first. If it cannot return public reactor previews, the actor tries configured provider endpoints. Providers are deliberately allowed to return only `aggregate_metrics` when they expose a verified reaction count. They are never used to fabricate a person’s identity.

### Pricing

This actor uses **Pay per event + usage**. It charges **$0.00005 per actor start** and **$0.01 for each persisted public reaction or aggregate fallback record**. Apify platform compute and network usage are charged separately by Apify. Set `maxResults` before running: a run capped at 50 records has a maximum event charge of $0.50005, excluding platform usage.

### Input

Provide one or more public Facebook post or reel URLs in `postUrls`. `maxResults` is a global cap from 1 to 500; `maxResultsPerPost` limits how much a single URL can consume in a batch. Keep `sourceMode` as `auto` for the recommended native-first behavior. Choose `apifyNative` if you require only individual public reactor previews. `scrapeCreators` and `sociaVault` are advanced fallback modes and can only produce count-level data if their documented post response includes a reaction count.

Example input:

```json
{
  "postUrls": ["https://www.facebook.com/WBBPosts/posts/pfbid02j21mpxEygikxxqKh3AaQxsct5vByRpuZVTgpBMELoKArJT6oJjvek8Y3TdRdDgvYl"],
  "maxResults": 25,
  "sourceMode": "auto"
}
````

### Use from JavaScript

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('khadinakbar/facebook-likes-scraper').call({
  postUrls: ['https://www.facebook.com/reel/753347914167361'],
  maxResults: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### Use from Python

```python
from apify_client import ApifyClient

client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('khadinakbar/facebook-likes-scraper').call(run_input={
    'postUrls': ['https://www.facebook.com/reel/753347914167361'],
    'maxResults': 10,
})
for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

### For AI agents

Use this actor when an agent needs public engagement identities or reaction labels for specific Facebook posts. It returns one structured dataset item per publicly exposed reactor, not a prose summary. Inspect `recordType`: a `public_reactor` record has an individual public preview; an `aggregate_metrics` record is a count-only fallback. The `OUTPUT` key reports `COMPLETE`, `PARTIAL`, `VALID_EMPTY`, `INVALID_INPUT`, `UPSTREAM_FAILED`, or `CONFIG_ERROR` and includes billing and warning diagnostics.

### Limits and responsible use

Only process data that is publicly visible and relevant to your legitimate research or analytics workflow. Facebook can change what it renders publicly, limit visible reaction previews, or return no identities for a post. A valid post with no visible reactions is a truthful `VALID_EMPTY` result, not a hidden error. If one post in a batch is blocked but other records are saved, the actor returns `PARTIAL` and preserves the useful data.

The actor uses owner-configured provider secrets only for fallback post metrics. API keys are never accepted through input or included in datasets, logs, `OUTPUT`, or `RUN_SUMMARY`. The fallback cannot bypass Facebook privacy controls, and neither fallback provider is advertised as a source of private liker identities.

### FAQ

**Why did I get fewer people than the post’s reaction total?** Facebook often exposes only a public preview of reactors. The total can be larger than the preview, and availability can vary by post, region, audience, and Facebook changes.

**Does this need my Facebook cookie?** No. The default route is designed for public, no-cookie data. It does not accept Facebook credentials.

**Why is `reactionCount` sometimes null?** Individual `public_reactor` rows represent one person, so a count would be misleading. `reactionCount` is only used on a clearly labeled count-only fallback row.

**Can I scrape any Facebook URL?** No. Use a public `facebook.com` post or reel URL. Pages, groups, search pages, malformed URLs, and private content are outside the actor’s contract.

### Legal note

You are responsible for ensuring your use complies with applicable law, Facebook policies, and the rights of the people whose public data you process. Do not use this actor to make high-impact decisions about individuals or to circumvent platform privacy controls.

# Actor input Schema

## `postUrls` (type: `array`):

Public Facebook post or reel URLs to inspect, for example 'https://www.facebook.com/reel/753347914167361'. Use one URL for a focused reaction audit or several URLs for comparison. The actor accepts facebook.com URLs only and does not open private posts. This is not a Facebook Page URL or a search query.

## `maxResults` (type: `integer`):

Global cap for dataset rows, for example 50. Defaults to 50 and accepts 1 through 500. This cap controls billed reaction records; platform usage is charged separately. It is not a guarantee that Facebook exposes this many public reactors.

## `maxResultsPerPost` (type: `integer`):

Per-post cap used when multiple URLs are supplied, for example 25. Defaults to 50 and accepts 1 through 100. The global maximum still wins if it is lower. This is not a filter for reaction type.

## `sourceMode` (type: `string`):

Choose how the actor obtains public data. 'auto' tries the native no-cookie Apify reaction path before provider fallbacks; 'apifyNative' uses only that path. Provider modes can only return declared aggregate reaction metrics, never hidden liker identities. This is not a Facebook login or cookie setting.

## Actor input object example

```json
{
  "postUrls": [
    "https://www.facebook.com/WBBPosts/posts/pfbid02j21mpxEygikxxqKh3AaQxsct5vByRpuZVTgpBMELoKArJT6oJjvek8Y3TdRdDgvYl"
  ],
  "maxResults": 10,
  "maxResultsPerPost": 50,
  "sourceMode": "auto"
}
```

# Actor output Schema

## `reactions` (type: `string`):

One public reactor preview or a count-only fallback record per item.

## `output` (type: `string`):

Stable terminal outcome and billing summary.

## `runSummary` (type: `string`):

Detailed terminal source, validation, and billing diagnostics.

# 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 = {
    "postUrls": [
        "https://www.facebook.com/WBBPosts/posts/pfbid02j21mpxEygikxxqKh3AaQxsct5vByRpuZVTgpBMELoKArJT6oJjvek8Y3TdRdDgvYl"
    ],
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/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 = {
    "postUrls": ["https://www.facebook.com/WBBPosts/posts/pfbid02j21mpxEygikxxqKh3AaQxsct5vByRpuZVTgpBMELoKArJT6oJjvek8Y3TdRdDgvYl"],
    "maxResults": 10,
}

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

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

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

```

## CLI example

```bash
echo '{
  "postUrls": [
    "https://www.facebook.com/WBBPosts/posts/pfbid02j21mpxEygikxxqKh3AaQxsct5vByRpuZVTgpBMELoKArJT6oJjvek8Y3TdRdDgvYl"
  ],
  "maxResults": 10
}' |
apify call khadinakbar/facebook-likes-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=khadinakbar/facebook-likes-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Facebook Likes Scraper — Public Reactions & Profiles",
        "description": "Extract public Facebook likes and reaction previews with display names, profile URLs, reaction types, and truthful source diagnostics. No Facebook cookies required. MCP-ready.",
        "version": "1.0",
        "x-build-id": "0hjETznOrVumB8HCf"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~facebook-likes-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-facebook-likes-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/khadinakbar~facebook-likes-scraper/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-facebook-likes-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/khadinakbar~facebook-likes-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-facebook-likes-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "postUrls"
                ],
                "properties": {
                    "postUrls": {
                        "title": "Facebook post or reel URLs",
                        "type": "array",
                        "description": "Public Facebook post or reel URLs to inspect, for example 'https://www.facebook.com/reel/753347914167361'. Use one URL for a focused reaction audit or several URLs for comparison. The actor accepts facebook.com URLs only and does not open private posts. This is not a Facebook Page URL or a search query.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Maximum reaction records",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Global cap for dataset rows, for example 50. Defaults to 50 and accepts 1 through 500. This cap controls billed reaction records; platform usage is charged separately. It is not a guarantee that Facebook exposes this many public reactors.",
                        "default": 50
                    },
                    "maxResultsPerPost": {
                        "title": "Maximum records per post",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Per-post cap used when multiple URLs are supplied, for example 25. Defaults to 50 and accepts 1 through 100. The global maximum still wins if it is lower. This is not a filter for reaction type.",
                        "default": 50
                    },
                    "sourceMode": {
                        "title": "Data source mode",
                        "enum": [
                            "auto",
                            "apifyNative",
                            "scrapeCreators",
                            "sociaVault"
                        ],
                        "type": "string",
                        "description": "Choose how the actor obtains public data. 'auto' tries the native no-cookie Apify reaction path before provider fallbacks; 'apifyNative' uses only that path. Provider modes can only return declared aggregate reaction metrics, never hidden liker identities. This is not a Facebook login or cookie setting.",
                        "default": "auto"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
