Facebook Page Review & Rating Scraper avatar

Facebook Page Review & Rating Scraper

Pricing

from $1.30 / 1,000 results

Go to Apify Store
Facebook Page Review & Rating Scraper

Facebook Page Review & Rating Scraper

Get a Facebook business page's recommendation rating and its individual reviews: percent who recommend, total review count, and per review the author, the recommend vote, the written text, Facebook's experience tags, the timestamp and the engagement. Missing pages are reported as errors.

Pricing

from $1.30 / 1,000 results

Rating

0.0

(0)

Developer

Faisal Ahdan naufal

Faisal Ahdan naufal

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

23 days ago

Last modified

Categories

Security

Limited permissions

Share

Get a Facebook business page's rating and the reviews behind it: the headline percentage, the total review count, and for each review the author, the recommend / do-not-recommend vote, the written text, Facebook's own experience tags, the timestamp and the engagement.

No login, no cookies to paste, no proxy required.

The rating is a percentage, not stars

Facebook retired star ratings for pages. What a page has now is a recommendation vote, and its summary line looks like this:

30% recommend (12,651 reviews)

So recommendPercent: 30.0 and reviewCount: 12651 are the rating. There is no 4.3-out-of-5 hidden in the payload, and this actor does not manufacture one from the percentage.

What you get

One PAGE_RATING row per page

FieldExample
ratingSummaryText30% recommend (12,651 reviews)
recommendPercent30.0
reviewCount12651
reviewsEnabledtrue
reviewsCollectedhow many this run actually kept

One REVIEW row per review

FieldExample
reviewerName, reviewerId, reviewerUrlMike Phipps, …
isRecommendedfalse
reviewTitleMike Phipps doesn't recommend Domino's Pizza.
reviewTextEvery time I order, there is something that goes wrong…
tags["Disappointing food", "Casual"]
createdAtIso2026-09-20T00:03:50Z
reactionCount, commentCountengagement on the review itself
reviewUrlpermalink

Plus a RUN_SUMMARY: reviews collected, how many recommend, how many do not, how many carry written text, and the sample's own recommend percentage next to the page's official one.

Input example

{
"pages": ["dominos", "https://www.facebook.com/starbucks"],
"maxReviewsPerPage": 100,
"onlyNotRecommended": true,
"onlyWithText": true,
"exportFormats": ["xlsx"]
}

That is the complaints workflow: every negative review with text, for two pages, in a spreadsheet.

Pacing

Facebook streams the reviews tab about three reviews per request. 100 reviews is roughly 34 requests, so set maxReviewsPerPage to what you actually need. The rating summary is read in the very first request and is returned no matter how low you set the cap.

Honest limits

  • isRecommended is read from Facebook's own sentence ("… doesn't recommend …"), because the payload carries no boolean for it. The actor requests en-US so that sentence is in English; if it ever comes back in another language the vote is reported as null rather than guessed.
  • A page with reviews switched off returns reviewsEnabled: false and no review rows. That is the real answer, not a failure.
  • A slug that does not exist returns an ERROR row saying so. Facebook answers HTTP 200 for missing pages, so a status-code check would report every typo as a successful empty scrape; this actor checks the payload instead.
  • Replies from the business are comments on the review post. The commentCount includes them; their text is not collected.
  • reviewerId is an opaque pfbid… token for newer accounts. That is Facebook's own identifier format.

Running it on Apify: use a residential proxy for pagination

Facebook serves the rendered first page to any IP, including Apify's. But the first pagination request from a datacenter IP comes back with Rate limit exceeded, so a platform run with no proxy stops at the first few reviews.

The rate limit is on Facebook's GraphQL endpoint, which every actor in this family uses for its second page onwards. It was measured on 2026-09-20 with the Ad Library actor, three runs of the same search within a minute:

RunResult
Apify, no proxy30 results, 1 page — log: Rate limit exceeded
Apify, RESIDENTIAL proxy60 results, 4 pages
Local machine, no proxy70 results, 5 pages

So: switch the Apify proxy on and pick the RESIDENTIAL group whenever you want more than the first page. Running from your own machine needs no proxy at all.

The actor logs a warning naming the rate limit when it hits one, so a short run is never silently mistaken for a short result set.