# Facebook Comments Scraper: Posts, Reels, Videos, Replies (`themineworks/facebook-comments-scraper`) Actor

Scrape comments of public Facebook posts, videos and reels: text, author, profile link, time, reactions, reply count, replies and parent comment id. Post links in, one row per comment. No login.

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

## Pricing

from $1.26 / 1,000 comments

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

## Facebook Comments Scraper: Posts, Reels, Videos, Replies

[![30 Facebook comments with reactions and reply counts in 5 seconds](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/facebook-comments-scraper-hero.png)](https://console.apify.com/actors/trZDjlkzXeUW7rRRj/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

From **The Mine Works**, makers of [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) and [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), with over 140,000 runs across 170+ public actors.

### Why choose this actor?

- **Every field a comment has, in columns.** Comment text, author name and profile link, exact time, reactions with their split, reply count, and for replies the `parent_comment_id` and `depth`. Each row also names the post it came from: `post_id`, `post_url`, the Page that posted and the post's comment total.
- **Posts, videos and reels.** Paste the link of a post, a `/videos/` link, a `/watch/?v=` link or a `/reel/` link. Share links and `m.facebook.com` links work too.
- **Replies on a switch.** Turn on `includeReplies` and every reply becomes its own row, billed like a comment, linked to its parent. Replies to replies come back at `depth` 2.
- **Honest about depth.** Facebook shows a logged out visitor the comment list of a post in pages of 10. On a post with 3,215 comments and replies we read all 2,725 top level comments, no login. The run summary lists, per post, how many comments Facebook counts next to how many were delivered. You pay only for rows you receive.
- **No Facebook account.** No login, no cookies of yours, no browser and no CAPTCHA solving. Links that are private, removed or login walled get a free `error` row with the reason and are never charged.

[![Run it on Apify](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/button-run.png)](https://console.apify.com/actors/trZDjlkzXeUW7rRRj/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Part of The Mine Works Social media and video family:** [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Instagram Followers & Following](https://apify.com/themineworks/instagram-followers-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Reddit Search Scraper](https://apify.com/themineworks/reddit-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

### Try it in one minute

Paste this into the JSON tab of the input page. It returns 30 comments of one public post. It took 5 seconds in our test.

```json
{
  "startUrls": [{ "url": "https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl" }],
  "maxCommentsPerPost": 30
}
```

Apify's free plan includes $5 of credit every month, which covers about 2,200 comments at this actor's price.

#### Copy to your AI assistant

```text
themineworks/facebook-comments-scraper on Apify. Reads comments of public Facebook posts, videos and reels as a logged out visitor and returns one flat row per comment or reply: comment_id, comment_url, text, author_name, author_id, author_url, author_url_is_vanity, author_picture_url, created_at, reactions_count, reactions, replies_count, depth, is_reply, parent_comment_id, attachment_urls, and the post: post_id, post_url, post_owner_name, post_owner_id, post_comments_total. Call ApifyClient("TOKEN").actor("themineworks/facebook-comments-scraper").call(run_input={"startUrls": [{"url": "https://www.facebook.com/reel/1803909017420449/"}], "maxCommentsPerPost": 100}), then client.dataset(run["defaultDatasetId"]).list_items().items. Give startUrls (post, video or reel links). Optional: maxCommentsPerPost (default 50, applies to each post, 0 means all that Facebook shows), sortBy (relevant, newest, oldest, all), includeReplies (default false), maxRepliesPerComment (default 20), onlyCommentsNewerThan (YYYY-MM-DD). Skip rows with a _type field (summary, info, error: never charged). Page and profile links are rejected; photo and group posts usually ask for a login. Full spec: GET https://api.apify.com/v2/acts/themineworks~facebook-comments-scraper/builds/default (Bearer TOKEN). Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
```

### Key features

- **Four orders.** `relevant` is Facebook's default, `newest` starts with the latest comment, `oldest` with the first, `all` adds the comments Facebook filters out as likely spam.
- **Stop at a date.** `onlyCommentsNewerThan` switches to newest first and ends paging at the first older comment, so a weekly run reads only the new ones.
- **Reply threads.** `parent_comment_id` ties each reply to the comment it answers; `replies_count` tells you which comments have threads.
- **Reactions with their split.** `reactions_count` is every reaction; `reactions` lists type and count (Like, Love, Haha, Wow, Sad, Angry, Care).
- **Photos and stickers.** `attachment_urls` holds the links of images, stickers and GIFs in a comment. Comments that are only a sticker have no `text`.
- **Many posts, one run.** Up to 2,000 links; three posts are read at the same time. Two links to the same post give one set of rows.
- **Stops cleanly.** The run stops before its time limit, on your max cost, after repeated refusals by Facebook, or when two answers in a row bring nothing new, and it keeps every row it read.

### How to use it

#### Brand and campaign monitoring

Schedule a daily run on your latest posts with `sortBy` set to `newest` and `onlyCommentsNewerThan` set to yesterday. Rows with a question in `text` and `replies_count` of 0 are the comments nobody answered.

```json
{
  "startUrls": [{ "url": "https://www.facebook.com/reel/1803909017420449/" }],
  "sortBy": "newest",
  "maxCommentsPerPost": 0,
  "onlyCommentsNewerThan": "2026-10-24"
}
```

#### Giveaways and contests

Export every comment of the giveaway post with `maxCommentsPerPost` set to 0 and draw winners from `author_id`. Each commenter appears once per comment, so de-duplicate on `author_id` if one entry per person is the rule.

#### Sentiment and topic datasets

Pull 500 comments from each of 20 competitor posts with `includeReplies` off, then run your own classifier on `text`. The `reactions_count` column is a ready made weight.

#### Conversation threads

Turn on `includeReplies`. Group the rows by `parent_comment_id` to rebuild each thread; a row with `depth` 0 is the start of one.

```json
{
  "startUrls": [{ "url": "https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl" }],
  "maxCommentsPerPost": 200,
  "includeReplies": true,
  "maxRepliesPerComment": 20
}
```

### Input parameters

| Parameter | Type | Default | What it does |
|---|---|---|---|
| `startUrls` | array | the sample post | Links of public Facebook posts, videos and reels. |
| `maxCommentsPerPost` | integer | `50` | Most comments from each post (not the run total). Replies count toward it. `0` means every comment Facebook shows. |
| `sortBy` | string | `relevant` | `relevant`, `newest`, `oldest` or `all` (includes comments Facebook filters). |
| `includeReplies` | boolean | `false` | Return replies as their own rows with `parent_comment_id`. |
| `maxRepliesPerComment` | integer | `20` | Most replies read under one comment, when replies are on. |
| `onlyCommentsNewerThan` | string | empty | `YYYY-MM-DD`. Uses newest first and stops at the first older comment. |
| `proxyConfiguration` | object | `{"useApifyProxy": true}` | Apify datacenter proxy, which is all this actor needs. Residential is not used, even if selected. |

Up to 2,000 links per run. A Page or profile link is not a post: it gets a free error row that asks for a post link.

### What data do you get?

One row per comment or reply. Fields that a comment does not have are left out of that row.

| Field | What it is |
|---|---|
| `comment_id`, `comment_url` | Facebook's id of the comment and its permalink |
| `text` | The comment; absent for a photo, sticker or GIF only |
| `author_name`, `author_id` | The commenter. Most ids are `pfbid` tokens |
| `author_url`, `author_url_is_vanity` | Profile link. Facebook's own link when the profile has a username (`true`); otherwise `facebook.com/` plus the id (`false`), which opens when you are signed in to Facebook |
| `author_picture_url` | Profile picture link (expires after a few days) |
| `created_at` | ISO 8601 UTC |
| `reactions_count`, `reactions` | All reactions and the split by type |
| `replies_count`, `replies_visible` | Replies Facebook counts under the comment, and how many of them it shows a logged out visitor |
| `depth`, `is_reply`, `parent_comment_id` | 0 for a comment, 1 for a reply, 2 for a reply to a reply; the id of the comment answered |
| `attachment_urls` | Images, stickers and GIFs in the comment |
| `post_id`, `post_url` | The post, video or reel |
| `post_owner_name`, `post_owner_id` | The Page or profile that posted (the name is empty for reels) |
| `post_comments_total` | Comments and replies Facebook counts on the post |
| `input`, `scraped_at` | The link you gave, and when the row was written |

**Summary row** (`_type: "summary"`, never charged, also saved as the `OUTPUT` record): `posts_requested`, `posts_read`, `posts_failed`, `posts_without_comments`, `comments_delivered`, `charged_for`, `transport` (requests, megabytes, `block_rate`) and `per_post`, one entry per post with `advertised_comments`, `comments_delivered`, `top_level`, `replies`, `reached_end` and `status` (`all_reachable_delivered`, `max_comments_reached`, `older_than_cutoff`, `partial`, `max_cost`, `no_comments`, `not_available`, `blocked`).

**Error rows** (`_type: "error"`, never charged): one per link that gave no comments, with `error_type`, `identifier` and `reason`.

#### Output examples

A top level comment (test run, 25 Oct 2026, trimmed):

```json
{
  "comment_id": "354937476306913",
  "comment_url": "https://www.facebook.com/humansofnewyork/posts/pfbid02FDxUjViiqP6bhiBCRxbrj3qyz6PaKjdRRDGq8GXGH6Q4irYqPEsxx6rmCkjfken6l?comment_id=354937476306913",
  "text": "This is so inspiring and an example of one drop turning into a wave.",
  "author_name": "Linda Josey",
  "author_id": "pfbid06jRPBvQRAGv9nscgT9kHJSmqBRUcW5GTr8FcTmw1zNEtLFuiJYtqN9cdWQTU2mo2l",
  "author_url": "https://www.facebook.com/pfbid06jRPBvQRAGv9nscgT9kHJSmqBRUcW5GTr8FcTmw1zNEtLFuiJYtqN9cdWQTU2mo2l",
  "author_url_is_vanity": false,
  "created_at": "2021-08-15T20:16:39.000Z",
  "reactions_count": 8,
  "reactions": [{ "type": "Like", "count": 6 }, { "type": "Love", "count": 2 }],
  "replies_count": 0,
  "depth": 0,
  "is_reply": false,
  "post_id": "6375219342552112",
  "post_owner_name": "Humans of New York",
  "post_comments_total": 3215
}
```

A reply:

```json
{
  "comment_id": "387509826375077",
  "text": "Debra Reed I can't stop crying. I love this so much",
  "author_name": "Rejane Davis",
  "created_at": "2021-09-04T21:38:17.000Z",
  "reactions_count": 0,
  "depth": 1,
  "is_reply": true,
  "parent_comment_id": "642502280106374",
  "post_id": "6375219342552112"
}
```

The per post entry of the summary for a run on a reel:

```json
{ "owner": null, "status": "all_reachable_delivered", "advertised_comments": 82, "comments_delivered": 10, "top_level": 10, "reached_end": true }
```

### Pricing

Pay per event: you pay for the comments you receive, plus a flat $0.003 per run, whatever memory you choose.

| Event | When it is charged | Free plan | Bronze (Starter) | Silver (Scale) | Gold (Business) |
|---|---|---|---|---|---|
| `comment-scraped` | Once per comment or reply row stored in your dataset | $2.25 per 1,000 | $1.80 per 1,000 | $1.53 per 1,000 | $1.26 per 1,000 |
| `run-start` | Once per run, when the first comments are stored | $0.003 | $0.003 | $0.003 | $0.003 |

The price of one comment is the price per 1,000 divided by 1,000. Replies cost the same as comments. There is no extra charge for sorting, dates or replies.

Never charged:

- links that are not posts, private or removed posts, login walled posts and posts without comments (each gets an error row);
- the summary, info and error rows;
- comments past `maxCommentsPerPost` or older than `onlyCommentsNewerThan`;
- a run with no valid input or whose posts returned no comments: the start fee is charged only when the first comments are stored;
- anything past your "Max cost per run". The actor checks the budget before each batch and stops while the total is still below your limit, so the run ends SUCCEEDED with a partial result and a status message saying so.

### Run it on a schedule

1. Open the actor in Apify Console, set your input and click **Save as a new task**.
2. In the task, open **Schedules**, click **Add schedule** and pick how often.
3. Compare runs on `comment_id` to find new comments, or use `sortBy: "newest"` with `onlyCommentsNewerThan` so each run reads only recent ones.
4. Optional: add an integration (Google Sheets, Slack, a webhook) so new comments reach your team.

### FAQ

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

No. The actor reads each post as a visitor who is not logged in.

#### How many comments can I get per post?

Facebook gives a logged out visitor most of a post's comment list, not all of it. Test runs on 25 Oct 2026: a post Facebook counts at 3,215 comments and replies gave all 2,725 top level comments in 272 requests (about 5 minutes); a post counted at 313 gave 153 top level comments and a reel counted at 82 gave 39. Facebook's count includes replies, hidden comments and replies it does not show to visitors who are not logged in. The summary shows `advertised_comments` and `comments_delivered` for every post, so you know what you got.

#### Why do I get fewer rows than the number on the post?

Facebook's count includes replies, and from other kinds of hidden comments. The summary shows `advertised_comments` next to `comments_delivered` and `top_level` for every post. With `includeReplies` on, the gap closes further.

#### Which links work?

Posts (`/<page>/posts/...`, `permalink.php`, `story.php`), videos (`/<page>/videos/<id>`, `/watch/?v=`, `fb.watch`), reels (`/reel/<id>`) and `/share/p|v|r/` links. Photo links, group posts and posts that Facebook limits by age or country usually send a visitor to the login page; those get a free error row. A Page link is not a post and is rejected.

#### Why is the profile link sometimes a long id?

Facebook gives a profile link only when the person has a username. For the rest the row carries `facebook.com/` plus Facebook's own id for the profile (`author_url_is_vanity` is `false`). That link opens when you are signed in to Facebook.

#### Are replies included?

Only when `includeReplies` is on. Each reply is a row with `parent_comment_id` and `depth`, and it is billed like a comment. Replies are read 10 per request. Facebook hides many replies from visitors who are not logged in (`replies_visible` is lower than `replies_count`), and the actor only asks for replies that are visible, so those hidden ones are not in the data.

#### How fast is it and what does a run cost me?

Facebook sends 10 comments per request, roughly one request per second. A post of 100 comments takes about 12 seconds, and 800 comments with replies took 143 seconds. Three posts are read at the same time. In our tests none of about 1,000 post and comment requests was refused.

#### Which formats can I download?

JSON, CSV, Excel, XML, RSS and HTML from the run's Storage tab or through the API. In CSV and Excel the nested `reactions` and `attachment_urls` are flattened into columns such as `reactions/0/type`; use JSON to keep them whole.

#### Can I use it from Claude, ChatGPT or Cursor (MCP)?

Yes, through Apify's MCP server. Connector URL: https://mcp.apify.com/?tools=themineworks/facebook-comments-scraper

- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: turn on developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code: `claude mcp add -t http facebook-comments-scraper "https://mcp.apify.com/?tools=themineworks/facebook-comments-scraper"`

#### Is it legal to scrape Facebook comments?

The actor reads only comments that anyone can see without logging in. Comments are their authors' words and contain personal data (names, profile links). You are responsible for how you use the data, including Facebook's terms and data protection law such as GDPR and CCPA. This is general information, not legal advice.

### Integrations

- **Google Sheets**: send each run's comments to a sheet with Apify's Google Sheets integration; one row per comment fits a sheet as is.
- **Make, Zapier and n8n**: start a run and read its dataset, for example "new comments on our latest post every morning to Slack".
- **Webhooks**: have Apify call your URL when a run succeeds, then fetch the dataset.
- **API and SDKs**: run it from Python or JavaScript with the Apify client (see "Copy to your AI assistant" above).
- **MCP clients**: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.

### More from The Mine Works

**Social media and video**

- [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Followers & Following](https://apify.com/themineworks/instagram-followers-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Search Scraper](https://apify.com/themineworks/reddit-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Twitter / X Scraper](https://apify.com/themineworks/twitter-x-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [YouTube Transcript](https://apify.com/themineworks/youtube-transcript-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Xiaohongshu (RED) Scraper](https://apify.com/themineworks/xiaohongshu-explore-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Telegram Channel Scraper](https://apify.com/themineworks/telegram-channel-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Telegram Channel Finder](https://apify.com/themineworks/telegram-channel-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Pinterest Profile Scraper](https://apify.com/themineworks/pinterest-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Leads and business directories**

- [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Skip Trace Lookup](https://apify.com/themineworks/skip-trace-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [2GIS Places Scraper](https://apify.com/themineworks/2gis-places-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Marketing, SEO and reviews**

- [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google News Scraper](https://apify.com/themineworks/google-news?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**LinkedIn**

- [LinkedIn Company Scraper](https://apify.com/themineworks/linkedin-company-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Post Scraper](https://apify.com/themineworks/linkedin-post-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Profile Scraper](https://apify.com/themineworks/linkedin-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Real estate**

- [Zillow Rentals Scraper](https://apify.com/themineworks/zillow-rental-listings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Sold Comps Scraper](https://apify.com/themineworks/zillow-recently-sold?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Science, health and government data**

- [Academic Research MCP](https://apify.com/themineworks/academic-research-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [CourtListener Scraper](https://apify.com/themineworks/courtlistener-court-records?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Socrata Open Data Scraper](https://apify.com/themineworks/socrata-open-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [OpenAlex Scraper](https://apify.com/themineworks/openalex-scholarly-works?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Jobs and hiring**

- [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Company and business data**

- [Company Domain Finder](https://apify.com/themineworks/company-domain-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GST Taxpayer Lookup](https://apify.com/themineworks/gst-taxpayer-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Company KYB Resolver](https://apify.com/themineworks/company-identity-resolver?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [SEC EDGAR Filings Scraper](https://apify.com/themineworks/sec-edgar-filings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**E-commerce and marketplaces**

- [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Etsy Listings Scraper](https://apify.com/themineworks/etsy-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Food and local services**

- [NoBroker Scraper](https://apify.com/themineworks/nobroker-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Swiggy Restaurant Scraper](https://apify.com/themineworks/swiggy-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zomato Scraper](https://apify.com/themineworks/zomato-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Developer and AI tools**

- [Website to Markdown Crawler](https://apify.com/themineworks/rag-crawler?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Skill Finder](https://apify.com/themineworks/github-skill-discovery?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Repo Scraper](https://apify.com/themineworks/github-repo-intelligence?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Trending Scraper](https://apify.com/themineworks/github-trending-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**More tools**

- [G2 Reviews Scraper](https://apify.com/themineworks/g2-reviews-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naver Blog Scraper](https://apify.com/themineworks/naver-blog-posts-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [WeChat Article Scraper 微信公众号文章](https://apify.com/themineworks/wechat-article-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Taobao Products Scraper 淘宝 天猫](https://apify.com/themineworks/taobao-products-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

### Support

Found a post that returns fewer comments than you can see, or a field that comes back empty? Open an issue in the Issues tab with the input and the run ID, and we will look at it. For a field you need or a new source, email dmineworks@gmail.com.

*Paste the link of a public Facebook post, video or reel and get every comment back as one row, with author, profile link, time, reactions, reply count and replies, no login.*

# Actor input Schema

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

Links of public posts, videos and reels, for example https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl or https://www.facebook.com/reel/1803909017420449/. Up to 2,000 links per run. List each post once.

## `maxCommentsPerPost` (type: `integer`):

Stop after this many comments from each post (not the run total). Replies count toward the limit when they are switched on. 0 means every comment Facebook shows a logged out visitor, which can be thousands on a busy post. Example: 100.

## `sortBy` (type: `string`):

Most relevant is Facebook's default. Newest starts with the latest comment, which is the one to use for monitoring. All comments adds the ones Facebook filters out as likely spam.

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

On: replies to each comment are returned as their own rows, with the id of the comment they answer in parent_comment_id. Every reply is billed like a comment and counts toward the limit. Off: only top level comments, with replies_count.

## `maxRepliesPerComment` (type: `integer`):

Only used when Include replies is on. Replies are read 10 per request, so a long thread costs time. Example: 20.

## `onlyCommentsNewerThan` (type: `string`):

Date as YYYY-MM-DD. Switches the order to newest first and stops at the first older comment, so you are not charged for history you did not ask for. Example: 2026-10-01.

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

Apify datacenter proxy, which is all this actor needs. Each post goes out as a new anonymous visitor. Residential proxy is not used, even if selected.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl"
    }
  ],
  "maxCommentsPerPost": 30,
  "sortBy": "relevant",
  "includeReplies": false,
  "maxRepliesPerComment": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

## `summary` (type: `string`):

No description

# API

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

## JavaScript example

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

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

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl"
        }
    ],
    "maxCommentsPerPost": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/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 = {
    "startUrls": [{ "url": "https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl" }],
    "maxCommentsPerPost": 30,
}

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

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl"
    }
  ],
  "maxCommentsPerPost": 30
}' |
apify call themineworks/facebook-comments-scraper --silent --output-dataset

```

## MCP server setup

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