# Facebook Comments Scraper (`parseforge/facebook-comments-scraper`) Actor

Collect public Facebook post comments at scale. Export author name, profile link, comment text, timestamp, reaction counts, reply threads, verified badges, attached media, mentions and language. Pass any post URL and pull thousands of comments into clean JSON, CSV or Excel files.

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

## Pricing

Pay per event

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

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 💬 Facebook Comments Scraper

> 🚀 **Pull every public comment from any Facebook post.** Export threaded replies, author profiles, reaction counts, timestamps, mentions, attachments and language detection into clean JSON, CSV or Excel.

> 🕒 **Last updated:** 2026-04-24 · **📊 22 fields** per comment · **💬 Threaded replies** · **🌍 Language auto-detect** · **🔗 Author profile links**

The **Facebook Comments Scraper** visits any public Facebook post and returns a full tree of comments, replies, reactions and author metadata. Each record carries the comment text, author name, author profile URL and profile picture, timestamp, reaction totals broken down by type, reply threads, attachment type and URL (sticker, GIF, image, video), verified badge, edited flag, mentions tagged in the comment, detected language and the parent comment id for replies.

The scraper paginates through comment sections the same way the native UI does, so popular posts with tens of thousands of comments export end to end. You pass one or more post URLs, set a cap per post, and the dataset lands ready for downstream sentiment analysis, audience research, review mining or lead scoring.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Social media analysts, brand monitoring teams, marketing researchers, product managers, customer support leads, agencies | Sentiment tracking, audience feedback mining, crisis detection, competitor monitoring, influencer identification, UGC analysis |

---

### 📋 What the Facebook Comments Scraper does

Five common workflows in a single run:

- 💬 **Full comment thread export.** Every top-level comment plus nested replies, with parent pointers that rebuild the tree on your side.
- 👥 **Author metadata.** Name, profile URL, profile picture, and a verified-badge flag where Facebook exposes it.
- ❤️ **Reaction intelligence.** Total reaction count plus a breakdown across love, laugh, wow, sad, angry and like.
- 🧵 **Attachments and mentions.** Sticker, GIF, image and video attachments with source URLs, plus a mentions array with @-tagged profile names and ids.
- 🌐 **Language detection.** Each comment tagged with its detected two-letter language code for multilingual filtering.

> 💡 **Why it matters:** Facebook's native export tools strip almost every field you actually need for analysis. Rebuilding a parser yourself means handling GraphQL pagination, reaction breakdown decoding, and reply-depth tracking by hand. This Actor gives you the full comment graph, typed and cleaned, on every run.

---

### ⚙️ Input

<table>
<thead>
<tr><th>Input</th><th>Type</th><th>Default</th><th>Behavior</th></tr>
</thead>
<tbody>
<tr><td><code>startUrls</code></td><td>array of URLs</td><td>required</td><td>One or more Facebook post URLs. Accepts the full desktop URL or the /posts/{id} form.</td></tr>
<tr><td><code>maxItems</code></td><td>integer</td><td>10</td><td>Cap total comments returned across all posts. Free plan tops out at 10.</td></tr>
<tr><td><code>maxCommentsPerPost</code></td><td>integer</td><td>50</td><td>Per-post cap applied before the global maxItems.</td></tr>
<tr><td><code>includeReplies</code></td><td>boolean</td><td>true</td><td>Expand reply threads under each top-level comment.</td></tr>
<tr><td><code>proxyConfiguration</code></td><td>object</td><td>residential</td><td>Override the proxy group if you need a specific country.</td></tr>
</tbody>
</table>

---

### 📊 Output

Every comment is returned as a flat JSON record with 22 fields.

#### 🧾 Key fields

<table>
<thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead>
<tbody>
<tr><td><code>commentId</code></td><td>string</td><td>Stable Facebook comment id, usable for dedup and linking.</td></tr>
<tr><td><code>text</code></td><td>string</td><td>The comment body as plain text.</td></tr>
<tr><td><code>authorName</code></td><td>string</td><td>Display name of the commenter.</td></tr>
<tr><td><code>authorUrl</code></td><td>string</td><td>Full profile URL.</td></tr>
<tr><td><code>authorPicUrl</code></td><td>string</td><td>Profile picture URL.</td></tr>
<tr><td><code>timestamp</code></td><td>ISO 8601</td><td>When the comment was posted.</td></tr>
<tr><td><code>reactionsCount</code></td><td>integer</td><td>Total reactions across all types.</td></tr>
<tr><td><code>reactionBreakdown</code></td><td>object</td><td>Counts for love, laugh, wow, sad, angry, like.</td></tr>
<tr><td><code>repliesCount</code></td><td>integer</td><td>Number of replies under this comment.</td></tr>
<tr><td><code>replies</code></td><td>array</td><td>Flattened reply tree when <code>includeReplies</code> is true.</td></tr>
<tr><td><code>attachmentType</code></td><td>string</td><td>Sticker, photo, video, gif, link or null.</td></tr>
<tr><td><code>attachmentUrl</code></td><td>string</td><td>Direct URL to the attached media.</td></tr>
<tr><td><code>mentions</code></td><td>array</td><td>Tagged profiles, with name and id.</td></tr>
<tr><td><code>language</code></td><td>string</td><td>Two-letter ISO code like <code>en</code>, <code>es</code>, <code>pt</code>.</td></tr>
<tr><td><code>isAuthorVerified</code></td><td>boolean</td><td>Blue-badge flag when Facebook exposes it.</td></tr>
<tr><td><code>isEdited</code></td><td>boolean</td><td>True when the comment has an edit history entry.</td></tr>
<tr><td><code>parentCommentId</code></td><td>string</td><td>For replies, the id of the comment they reply to.</td></tr>
<tr><td><code>postId</code></td><td>string</td><td>The parent post id.</td></tr>
<tr><td><code>postUrl</code></td><td>string</td><td>Canonical URL of the original post.</td></tr>
<tr><td><code>scrapedAt</code></td><td>ISO 8601</td><td>Run timestamp.</td></tr>
</tbody>
</table>

#### 📦 Sample record

```json
{
  "commentId": "1201234567890",
  "text": "Love this campaign, the breathing exercises are great.",
  "authorName": "Baron Walker",
  "authorUrl": "https://www.facebook.com/profile.php?id=100002347523434",
  "authorPicUrl": "https://scontent.fqfd1-1.fna.fbcdn.net/v/t1.6435-1/p200x200/...",
  "timestamp": "2026-04-12T14:22:03.000Z",
  "reactionsCount": 42,
  "reactionBreakdown": {"love": 28, "laugh": 0, "wow": 4, "sad": 0, "angry": 0, "like": 10},
  "repliesCount": 8,
  "replies": [],
  "attachmentType": null,
  "attachmentUrl": null,
  "mentions": [{"name": "Alperen", "id": "100055234090912"}],
  "language": "en",
  "isAuthorVerified": false,
  "isEdited": false,
  "parentCommentId": null,
  "postId": "1393461115481927",
  "postUrl": "https://www.facebook.com/nike/posts/1393461115481927",
  "scrapedAt": "2026-04-24T12:00:00.000Z"
}
````

***

### ✨ Why choose this Actor

- **Complete fields.** 22 columns covering author identity, reaction breakdown, attachment type, mentions and threading.
- **Real threading.** Reply trees preserved with parent pointers, not flattened into one stream.
- **Language tagging.** Native auto-detection saves you a separate NLP pass.
- **No tokens, no auth.** Pass a post URL and a cap, the Actor handles session setup.
- **Ready for BI tools.** Output opens directly in Sheets, Looker, BigQuery or Tableau.

***

### 🚀 How to use

1. Copy a Facebook post URL from your browser.
2. Paste it into the `startUrls` field.
3. Set `maxItems` to your budget, and toggle `includeReplies` if you want nested threads.
4. Run the Actor and download JSON, CSV or Excel from the dataset tab.

***

### 🎯 Business Use Cases

- 📊 **Social Media Analysts** - Track sentiment shifts, reaction breakdowns, and reply spikes across brand posts to flag PR risks before they trend
- 💼 **Marketing Agencies** - Pull commenter profiles, mentions, and verified-badge signals to build influencer outreach lists from real engagement data
- 🔬 **Product Managers** - Mine product launch posts for praise, complaints, and feature requests clustered by reaction volume and language
- 🛡️ **Brand Safety Teams** - Monitor coordinated activity, repeated language, and reaction patterns on owned pages to detect harassment or coordinated campaigns

***

### 🔌 Automating Facebook Comments Scraper

- Schedule the Actor every hour, day or week from the Apify console.
- Send results to Slack, Google Sheets, BigQuery, Webflow or your own webhook.
- Trigger runs from n8n, Make or Zapier through the official Apify integrations.
- Call the Apify REST API directly from your backend to fire runs on demand.

***

### 🌟 Beyond business use cases

Data like this powers more than commercial workflows. The same structured records support research, education, civic projects, and personal initiatives.

<table>
<tr>
<td width="50%">

#### 🎓 Research and academia

- Comment corpora for sociology, media studies, and linguistics
- Longitudinal sentiment studies across snapshots over time
- Reproducible research with cited, versioned dataset pulls
- Classroom exercises on NLP, ethics, and digital methods

</td>
<td width="50%">

#### 🎨 Personal and creative

- Side projects, portfolio demos, and indie app launches
- Audience analytics dashboards for creators and podcasters
- Content research for bloggers and YouTubers
- Fan communities archiving threads before pages disappear

</td>
</tr>
<tr>
<td width="50%">

#### 🤝 Non-profit and civic

- Transparency reporting on public figure and campaign pages
- Investigative journalism backed by public comment evidence
- Civic watchdog projects tracking coordinated behavior
- Community accountability databases with verifiable sources

</td>
<td width="50%">

#### 🧪 Experimentation

- Train sentiment, toxicity, and moderation classifiers
- Validate product hypotheses against real audience reactions
- Prototype agent pipelines that read public discourse
- Test dashboard concepts with live engagement data

</td>
</tr>
</table>

***

### 🤖 Ask an AI assistant about this scraper

Open a ready-to-send prompt about this ParseForge actor in the AI of your choice:

- 💬 [**ChatGPT**](https://chat.openai.com/?q=How%20do%20I%20use%20the%20Facebook%20Comments%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🧠 [**Claude**](https://claude.ai/new?q=How%20do%20I%20use%20the%20Facebook%20Comments%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🔍 [**Perplexity**](https://perplexity.ai/search?q=How%20do%20I%20use%20the%20Facebook%20Comments%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🅒 [**Copilot**](https://copilot.microsoft.com/?q=How%20do%20I%20use%20the%20Facebook%20Comments%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)

***

### ❓ Frequently Asked Questions

**Does this work on private or group posts?**
No. Only public Facebook posts are supported. The Actor does not sign in and cannot access content gated by login or group membership.

**How many comments can I pull from a single post?**
Paid plans support pulling every public comment a post exposes, up to 1,000,000 per run. Free plan caps at 10 comments per run for preview purposes.

**Do I need a Facebook account or cookies?**
No. The Actor runs anonymously against public endpoints.

**Can I filter by language or keyword?**
The Actor returns a `language` field so you can filter downstream. Keyword search is best run on the output JSON since it preserves original casing and mentions.

**How fresh is the data?**
Every run hits Facebook live, so the dataset reflects whatever comments and reactions exist at the moment the run finishes.

**Does the output include reactions by type?**
Yes. `reactionBreakdown` has counts for love, laugh, wow, sad, angry and like.

**What happens to emoji and non-Latin scripts?**
They are preserved as-is in the `text` field. No transliteration or stripping.

**Can I rebuild the reply tree?**
Yes. Every reply carries `parentCommentId`, so a quick `groupBy(parentCommentId)` reconstructs the thread structure.

***

### 🔌 Integrate with any app

The Actor plugs into [Make](https://apify.com/integrations), [Zapier](https://apify.com/integrations), [n8n](https://apify.com/integrations), [Slack](https://apify.com/integrations), [LangChain](https://apify.com/integrations), and [100+ other platforms](https://apify.com/integrations) through Apify's integration library. You can also call the [Apify REST API](https://docs.apify.com/api/v2) directly from your backend.

***

### 🔗 Recommended Actors

| Actor | What it does |
|---|---|
| [Facebook Groups Scraper](https://apify.com/parseforge/facebook-groups-scraper) | Pulls member count, privacy, rules and admin info from public Facebook groups. |
| [Facebook Marketplace Scraper](https://apify.com/parseforge/facebook-marketplace-scraper) | Exports listings, prices and sellers from Facebook Marketplace by city and query. |
| [Instagram Scraper](https://apify.com/parseforge/instagram-scraper) | Posts, reels and profile data from public Instagram accounts. |
| [TikTok Comments Scraper](https://apify.com/parseforge/tiktok-comments-scraper) | Same depth of comment extraction for TikTok videos. |
| [YouTube Transcript Scraper](https://apify.com/parseforge/youtube-transcript-scraper) | Turn YouTube videos into searchable transcripts and metadata. |

***

### 💡 Tips

- Start with `maxItems=10` on a single URL to confirm field coverage before scaling.
- Posts with millions of comments will paginate for a while; run during off-hours and keep `maxCommentsPerPost` set so one post doesn't exhaust your budget.
- Save the JSON output alongside the `postUrl` and `scrapedAt` fields so you can diff reaction counts over time.

***

### 🆘 Support

Open a ticket at [tally.so/r/BzdKgA](https://tally.so/r/BzdKgA) and include the run id. We reply same day on weekdays.

**New to Apify?** [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) and your first run is on the house.

***

### ⚠️ Disclaimer

This Actor collects only publicly accessible data. You are responsible for complying with Facebook's Terms of Service, local data-protection laws, and any applicable research or journalism ethics. We recommend reviewing your use case against GDPR, CCPA and Facebook's Platform Policy before archiving or redistributing personal data.

# Actor input Schema

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

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

## `startUrls` (type: `array`):

List of Facebook post URLs to scrape comments from. Supported formats: https://www.facebook.com/{user}/posts/{id}, https://www.facebook.com/permalink.php?story\_fbid=..., https://www.facebook.com/groups/{id}/posts/{id}.

## `maxComments` (type: `integer`):

Maximum number of comments to scrape per post. Leave empty to use maxItems as the global limit.

## `includeReplies` (type: `boolean`):

Include nested replies for each comment. When enabled, replies array is populated (billed as premium reply-included event).

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

Residential proxies recommended for reliable extraction.

## Actor input object example

```json
{
  "maxItems": 10,
  "startUrls": [
    {
      "url": "https://www.facebook.com/MrBeast/posts/pfbid0PYGe82yNLYiwuKb3xHUbSqkr3nNoKsYT77zevBMd5nUn51ewN5mbLxNLCFkeaTxul"
    }
  ],
  "maxComments": 50,
  "includeReplies": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset with scraped Facebook comments

# 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 = {
    "maxItems": 10,
    "startUrls": [
        {
            "url": "https://www.facebook.com/MrBeast/posts/pfbid0PYGe82yNLYiwuKb3xHUbSqkr3nNoKsYT77zevBMd5nUn51ewN5mbLxNLCFkeaTxul"
        }
    ],
    "maxComments": 50,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/facebook-comments-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 = {
    "maxItems": 10,
    "startUrls": [{ "url": "https://www.facebook.com/MrBeast/posts/pfbid0PYGe82yNLYiwuKb3xHUbSqkr3nNoKsYT77zevBMd5nUn51ewN5mbLxNLCFkeaTxul" }],
    "maxComments": 50,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/facebook-comments-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 '{
  "maxItems": 10,
  "startUrls": [
    {
      "url": "https://www.facebook.com/MrBeast/posts/pfbid0PYGe82yNLYiwuKb3xHUbSqkr3nNoKsYT77zevBMd5nUn51ewN5mbLxNLCFkeaTxul"
    }
  ],
  "maxComments": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call parseforge/facebook-comments-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Facebook Comments Scraper",
        "description": "Collect public Facebook post comments at scale. Export author name, profile link, comment text, timestamp, reaction counts, reply threads, verified badges, attached media, mentions and language. Pass any post URL and pull thousands of comments into clean JSON, CSV or Excel files.",
        "version": "1.0",
        "x-build-id": "2ltqb9xFbd3iI3YAM"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~facebook-comments-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-facebook-comments-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/parseforge~facebook-comments-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-facebook-comments-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/parseforge~facebook-comments-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-facebook-comments-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",
                "properties": {
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    },
                    "startUrls": {
                        "title": "Facebook Post URLs",
                        "type": "array",
                        "description": "List of Facebook post URLs to scrape comments from. Supported formats: https://www.facebook.com/{user}/posts/{id}, https://www.facebook.com/permalink.php?story_fbid=..., https://www.facebook.com/groups/{id}/posts/{id}.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxComments": {
                        "title": "Max Comments Per Post",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of comments to scrape per post. Leave empty to use maxItems as the global limit."
                    },
                    "includeReplies": {
                        "title": "Include Replies",
                        "type": "boolean",
                        "description": "Include nested replies for each comment. When enabled, replies array is populated (billed as premium reply-included event).",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Residential proxies recommended for reliable extraction."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
