# Facebook Reviews Scraper: Recommends, Text, Replies, Rating (`themineworks/facebook-reviews-scraper`) Actor

Scrape reviews of public Facebook Pages: reviewer, recommends or not, text, tags, date, reactions, comments, Page replies and the Page rating. Page links in, one row per review. No login.

- **URL**: https://apify.com/themineworks/facebook-reviews-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 reviews

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 Reviews Scraper: Recommends, Text, Page Replies, Rating

[![30 Facebook reviews with Page replies and the Page rating in 23 seconds](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/facebook-reviews-scraper-hero.png)](https://console.apify.com/actors/FI53gwaFrNgbjNtCX/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 review has, in columns.** Reviewer, the recommend or not recommend verdict as `true` or `false`, the review text, the tags the reviewer picked, the exact date, reactions with their split, the comment count, and whether the Page replied, with the reply text and date. Each row also carries the Page's overall rating line, for example `94% recommend (201 reviews)`, split into `page_recommend_percent` and `page_review_count`.
- **Honest about depth.** Facebook shows a logged out visitor only part of a Page's reviews. In our test on 23 October 2026 that was 62 of the 201 a small restaurant advertises, 88 of 603 for a Page with more, and 113 of 1,955 for a busy venue. The run summary tells you, per Page, how many were reachable next to the number Facebook advertises. You pay only for rows you receive.
- **No Facebook account.** No login, no cookies of yours, no browser and no CAPTCHA solving. Pages that do not exist, personal profiles and Pages with no reviews 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/FI53gwaFrNgbjNtCX/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Part of The Mine Works Marketing, SEO and reviews family:** [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), [Trustpilot Reviews Scraper](https://apify.com/themineworks/trustpilot-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Google Trends Scraper](https://apify.com/themineworks/google-trends-pro?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 reviews of one restaurant Page, with the Page's replies. It took 23 seconds in our test.

```json
{
  "startUrls": [{ "url": "https://www.facebook.com/copperkettleyqr/reviews" }],
  "maxReviewsPerPage": 30
}
```

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

#### Copy to your AI assistant

```text
themineworks/facebook-reviews-scraper on Apify. Reads reviews of public Facebook Pages as a logged out visitor and returns one flat row per review: reviewer_name, reviewer_id, reviewer_url, recommends (true or false), verdict_text, text, tags, created_at, reactions_count, likes_count, reactions, comments_count, owner_replied, owner_reply_text, owner_reply_date, owner_replies, comments, photo_urls, review_id, review_url and the Page: page_name, page_id, page_url, page_rating_text, page_recommend_percent, page_review_count. Call ApifyClient("TOKEN").actor("themineworks/facebook-reviews-scraper").call(run_input={"startUrls": [{"url": "https://www.facebook.com/copperkettleyqr/reviews"}], "maxReviewsPerPage": 100}), then client.dataset(run["defaultDatasetId"]).list_items().items. Give startUrls (Page or /reviews links) and or pages (usernames or numeric ids). Optional: maxReviewsPerPage (default 50, applies to each Page, 0 means all that Facebook shows), onlyReviewsNewerThan (YYYY-MM-DD), includeComments (default true). Skip rows with a _type field (summary, info, error: never charged). Facebook shows a logged out visitor only part of a Page's reviews, so fewer rows than page_review_count is normal; the summary row (and the OUTPUT record) lists reviews_delivered and advertised_reviews per Page. Full spec: GET https://api.apify.com/v2/acts/themineworks~facebook-reviews-scraper/builds/default (Bearer TOKEN). Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
```

### Key features

- **Recommend verdict as a boolean.** Facebook replaced star ratings with recommend or not recommend in 2018. `recommends` is `true` or `false`; `verdict_text` keeps Facebook's own sentence ("Jay Enn doesn't recommend The Copper Kettle Restaurant.").
- **Page replies marked.** A comment under a review is the Page's reply when its author is the Page. `owner_replied`, `owner_reply_text` and `owner_reply_date` give the first reply; `owner_replies` lists all of them; `comments` holds the whole visible thread with replies nested and `is_page_owner` on each comment.
- **Review tags and photos.** Tags such as `Child-friendly` or `Fast delivery` when the reviewer picked any, and the links of photos attached to the review.
- **Reactions with their split.** `reactions_count` is every reaction; `reactions` lists type and count (Like, Love, Haha, Wow and so on), and `likes_count` is Likes only.
- **Stop at a date.** `onlyReviewsNewerThan` ends paging at the first older review.
- **Many Pages, one run.** Up to 5,000 Pages; four are read at the same time. The input accepts Page links, `/reviews` links, `m.facebook.com` links, `profile.php?id=` links, usernames and numeric ids.
- **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

#### Reputation monitoring

Schedule a weekly run with `onlyReviewsNewerThan` set to a week ago. Rows with `recommends: false` and `owner_replied: false` are the unanswered complaints.

```json
{
  "startUrls": [{ "url": "https://www.facebook.com/copperkettleyqr" }],
  "maxReviewsPerPage": 0,
  "onlyReviewsNewerThan": "2026-10-01"
}
```

#### Compare competitors

Put several Pages in one run and sort the rows by `page_name`. `page_recommend_percent` and `page_review_count` repeat on every row, so a combined sheet needs no second lookup.

```json
{
  "startUrls": [
    { "url": "https://www.facebook.com/copperkettleyqr" },
    { "url": "https://www.facebook.com/kissatanto" }
  ],
  "maxReviewsPerPage": 100
}
```

#### Sentiment datasets

`text` with the binary `recommends` label, `tags` and `created_at` make a labelled set. Many rows have no text (the reviewer only gave a verdict); filter on `text` if you need words.

#### Light export

```json
{
  "pages": ["copperkettleyqr", "kissatanto"],
  "maxReviewsPerPage": 200,
  "includeComments": false
}
```

Off, rows carry `comments_count` and the first Page reply but not the `comments` and `owner_replies` lists. Same price either way.

### Input parameters

| Parameter | Type | Default | What it does |
|---|---|---|---|
| `startUrls` | array | the sample Page | Facebook Page or `/reviews` links. |
| `pages` | array of strings | empty | Usernames (`copperkettleyqr`, `@copperkettleyqr`) or numeric Page ids. |
| `maxReviewsPerPage` | integer | `50` | Most reviews from each Page (not the run total). `0` means every review Facebook shows. |
| `onlyReviewsNewerThan` | string | empty | `YYYY-MM-DD`. Paging stops at the first older review. |
| `includeComments` | boolean | `true` | Include the `comments` thread and `owner_replies` list. |
| `proxyConfiguration` | object | `{"useApifyProxy": true}` | Apify datacenter proxy, which is all this actor needs. Residential is not used, even if selected. |

Give `startUrls`, `pages` or both. Up to 5,000 Pages per run. List each Page once; two links to the same Page give one set of rows.

### What data do you get?

One row per review. Fields that a review does not have are left out of that row.

| Field | What it is |
|---|---|
| `review_id`, `review_url` | Facebook's id of the review post and its permalink |
| `reviewer_name`, `reviewer_id`, `reviewer_url` | The reviewer. The URL is present when the profile is public |
| `recommends`, `verdict_text` | `true` or `false`, and Facebook's sentence |
| `text` | The review; absent when the reviewer gave only a verdict |
| `tags` | Review tags the reviewer picked |
| `created_at` | ISO 8601 UTC |
| `reactions_count`, `likes_count`, `reactions` | All reactions, Likes only, and the split by type |
| `comments_count` | Comments and replies Facebook counts under the review |
| `owner_replied`, `owner_reply_text`, `owner_reply_date` | The Page's first reply |
| `owner_replies` | Every reply by the Page: `text`, `created_at`, `reactions_count` |
| `comments` | The comments Facebook includes, replies nested: `id`, `author_name`, `author_id`, `author_url`, `text`, `created_at`, `reactions_count`, `is_page_owner`, `replies` |
| `photo_urls` | Photos attached to the review (signed links that expire within hours) |
| `page_name`, `page_id`, `page_url` | The Page |
| `page_rating_text`, `page_recommend_percent`, `page_review_count` | The Page's overall rating line and its parts |
| `input`, `scraped_at` | The entry you gave, and when the row was written |

**Summary row** (`_type: "summary"`, never charged, also saved as the `OUTPUT` record): `pages_requested`, `pages_read`, `pages_failed`, `pages_without_reviews`, `reviews_delivered`, `charged_for`, `transport` (requests, megabytes, `block_rate`) and `per_page`, one entry per Page with `advertised_reviews`, `reviews_delivered`, `reached_end` and `status` (`all_reachable_delivered`, `max_reviews_reached`, `older_than_cutoff`, `partial`, `not_available`, `personal_profile`, `no_reviews`, `blocked`).

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

#### Output examples

A review with a Page reply (test run, 23 Oct 2026, trimmed):

```json
{
  "review_id": "10159367163365044",
  "review_url": "https://www.facebook.com/jayna.nicholson/posts/pfbid0FSQcQb26G1WcLGW2AmuuogpjgEatGc8rodR2qSD8HoP1moQG5cG3sMYtHPDEZ4sul",
  "reviewer_name": "Jay Enn",
  "recommends": false,
  "verdict_text": "Jay Enn doesn't recommend The Copper Kettle Restaurant.",
  "text": "Normally the food from here is really good but we got pizza last night and it was somewhere in the range of sub par to just really not good. ...",
  "tags": [],
  "created_at": "2024-04-11T17:40:55.000Z",
  "reactions_count": 1,
  "reactions": [{ "type": "Haha", "count": 1 }],
  "comments_count": 1,
  "owner_replied": true,
  "owner_reply_text": "Thank you for sharing your feedback with us, Jay. We're sorry to hear that your recent experience with our pizza was disappointing. ...",
  "owner_reply_date": "2024-04-15T14:44:58.000Z",
  "page_name": "The Copper Kettle Restaurant",
  "page_rating_text": "94% recommend (201 reviews)",
  "page_recommend_percent": 94,
  "page_review_count": 201
}
```

A review with tags:

```json
{
  "review_id": "10163596241145646",
  "reviewer_name": "Jill Schmidt",
  "recommends": true,
  "text": "We had the Christmas platter and it was fantastic! Enough food for easily 2 meals. ...",
  "tags": ["Large menu"],
  "created_at": "2020-05-24T02:15:54.000Z",
  "comments_count": 1,
  "owner_replied": true,
  "owner_reply_date": "2020-05-25T23:02:07.000Z"
}
```

The per Page entry of the summary for a full run on that Page:

```json
{ "page_name": "The Copper Kettle Restaurant", "status": "all_reachable_delivered", "advertised_reviews": 201, "reviews_delivered": 62, "reached_end": true }
```

### Pricing

Pay per event: you pay for the reviews 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) |
|---|---|---|---|---|---|
| `review-scraped` | Once per review 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 reviews are stored | $0.003 | $0.003 | $0.003 | $0.003 |

The price of one review is the price per 1,000 divided by 1,000.

Never charged:

- Pages that do not exist, personal profiles, Pages without reviews, and entries that are not Pages (each gets an error row);
- the summary, info and error rows;
- reviews past `maxReviewsPerPage` or older than `onlyReviewsNewerThan`;
- a run with no valid input or whose Pages returned no reviews: the start fee is charged only when the first reviews 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 `review_id` to find new reviews, or use `onlyReviewsNewerThan` so each run reads only recent ones.
4. Optional: add an integration (Google Sheets, Slack, a webhook) so new complaints reach your team.

### FAQ

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

No. The actor reads each Page's public Reviews tab as a visitor who is not logged in.

#### How many reviews can I get per Page?

Fewer than the Page advertises. Facebook gives a logged out visitor a limited list: 62 of 201, 88 of 603 and 113 of 1,955 on the three Pages we tried, the same on datacenter and residential proxy. The list reaches back years (2016 on the first Page), and includes reviews with no text. The summary row shows `advertised_reviews` and `reviews_delivered` for every Page, so you know what you got.

#### Why is there no star rating?

Facebook removed star ratings in 2018. A review is a recommend or a do not recommend, which is `recommends`. The Page level equivalent is `page_recommend_percent`.

#### Are the Page's replies included?

Yes, when Facebook includes the comments under a review. For some reviews Facebook reports a comment count but sends no comment text; `comments_count` is then higher than the number of items in `comments`. On the three Pages we tried, 34 of 36 reviews with comments on one Page carried them, 16 of 57 on another and none on the third.

#### Why do some rows have no text?

A recommendation can be a verdict alone. About one review in five in our test had no text. Filter on `text` if you only want written reviews.

#### Is the language fixed?

The verdict is read from Facebook's English sentence, requested in English. Review text is returned in whatever language the reviewer used.

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

Facebook sends three reviews per request, so a full Page of 60 reviews takes 20 requests and about 50 seconds. Four Pages are read at the same time. In our tests none of about 300 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 `comments` and `owner_replies` are flattened into columns such as `comments/0/text`; use JSON to keep the thread.

#### 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-reviews-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-reviews-scraper "https://mcp.apify.com/?tools=themineworks/facebook-reviews-scraper"`

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

The actor reads only reviews that anyone can see without logging in. Reviews 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 reviews to a sheet with Apify's Google Sheets integration; one row per review fits a sheet as is.
- **Make, Zapier and n8n**: start a run and read its dataset, for example "new negative reviews without a reply every Monday 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

**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)
- [Trustpilot Reviews Scraper](https://apify.com/themineworks/trustpilot-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Trends Scraper](https://apify.com/themineworks/google-trends-pro?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Semrush Scraper](https://apify.com/themineworks/semrush-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [App Reviews Scraper](https://apify.com/themineworks/app-reviews-monitor?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Trustpilot Business Search](https://apify.com/themineworks/trustpilot-business-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [TripAdvisor Reviews Scraper](https://apify.com/themineworks/tripadvisor-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Username Checker](https://apify.com/themineworks/username-checker?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Backlink Building Agent](https://apify.com/themineworks/backlink-building-agent?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**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)

**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)

**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)

# Actor input Schema

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

Page links such as https://www.facebook.com/copperkettleyqr or the /reviews link of the Page. A username or numeric Page id works too (use Pages below). Up to 5,000 Pages per run. List each Page once.

## `pages` (type: `array`):

Usernames like copperkettleyqr, @copperkettleyqr, or numeric Page ids, one per line.

## `maxReviewsPerPage` (type: `integer`):

Stop after this many reviews from each Page (not the run total). 0 means every review Facebook shows a logged out visitor, which is usually 60 to 120 per Page. Example: 100.

## `onlyReviewsNewerThan` (type: `string`):

Date as YYYY-MM-DD. Paging stops at the first older review, so you are not charged for history you did not ask for. Example: 2024-01-01.

## `includeComments` (type: `boolean`):

On: each row carries the comments Facebook includes with the review, replies nested, and the Page's own replies marked. Off: only the counts and the first Page reply. Same price either way.

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

Apify datacenter proxy, which is all this actor needs. Each try of a Page 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/copperkettleyqr/reviews"
    }
  ],
  "maxReviewsPerPage": 30,
  "includeComments": true,
  "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/copperkettleyqr/reviews"
        }
    ],
    "maxReviewsPerPage": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/facebook-reviews-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/copperkettleyqr/reviews" }],
    "maxReviewsPerPage": 30,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/facebook-reviews-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/copperkettleyqr/reviews"
    }
  ],
  "maxReviewsPerPage": 30
}' |
apify call themineworks/facebook-reviews-scraper --silent --output-dataset

```

## MCP server setup

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