Facebook Business Page Recommendation & Review Scraper
Pricing
from $0.49 / 1,000 results
Facebook Business Page Recommendation & Review Scraper
Get Facebook business page reviews by direct URL, business name search, or Page ID, with Recommended/Not Recommended status, owner replies, and filters for date, keyword, and recommendation status.
Pricing
from $0.49 / 1,000 results
Rating
0.0
(0)
Developer
Nimbryxo-studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 days ago
Last modified
Categories
Features
Share
Extract Facebook business page recommendations and reviews from public pages without logging in. Paste a page URL, a numeric Page ID, or a username, and get review text, Recommended / Not Recommended status, author details, reactions, recommendation tags, comments and owner replies — plus a page-summary row with the recommendation percentage, review count, follower count and talking-about count. Reviews are collected newest-first, deduplicated by review ID, and can be filtered by date, keyword, or recommendation status.
What this actor does
- Two input styles: full Facebook page or
/reviewsURLs, and numeric Page IDs or page usernames - Deep review history: returns up to 2,000 reviews per run; Facebook serves roughly 2–3 reviews per request, so depth comes from pagination rather than a login session
- Rich review fields: recommendation status, full text, author name/profile/photo, reaction counts and breakdowns, recommendation tags, share and comment counts, top comments, and business owner replies
- Page-summary row: one
recordType: pagerecord per page with recommend %, total review count, followers, and talking-about count - Filters and monitor mode: date range, keyword, Recommended / Not Recommended, and an incremental mode that returns only reviews newer than the saved state
- Empty fields are omitted: missing values are left out instead of being returned as
null
Output per review
reviewId— stable Facebook review IDpageId,pageName,pageUrl— the page the review belongs totext— full review textisRecommended—truefor Recommended,falsefor Not RecommendedcreatedAt— ISO-8601 UTC timestamptimestamp— Unix timestamp in secondsauthorName,authorProfileUrl,authorProfileImageUrl,authorIdType— author identity;authorIdTypeispfbidornumericreactionCount,reactionBreakdown— total reactions and per-type counts (Like, Love, Wow, Haha, Sad, Angry, Care)shareCount,commentCountreviewTags— structured tags such asDisappointing foodorFast deliverytopComments— visible comments (with attachedphotoswhen present), includingisOwnerReplyon business repliesownerReplies— the subset of comments written by the business itselfreviewUrl— permalink to the review postreviewPhotos— present only when Facebook exposes review media (currently rare on this surface)page— page metadata object retained for compatibilityrecordType: "review",scrapedAt
Output per page
One row per page with recordType: "page":
pageId,pageName,pageUrlrecommendPercent— Facebook's own recommendation percentage (not recalculated from returned reviews)reviewCount— total reviews shown by Facebook for the pagefollowerCounttalkingAboutCountscrapedAt
Error rows
Unavailable pages produce a row with recordType: "error", an errorType, a readable error, the page identity when known, and scrapedAt. Error types include INVALID_INPUT, PAGE_UNAVAILABLE, PAGE_NOT_FOUND, BLOCKED, DOC_ID_UNAVAILABLE, REQUEST_FAILED, NO_REVIEWS, TIME_BUDGET_EXCEEDED, and SCRAPE_ERROR.
Input
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | [] | Facebook page URLs or /reviews URLs. /reviews is added automatically when missing |
pageIds | array | [] | Numeric Page IDs or page usernames |
maxItems | integer | 100 | Maximum review rows across all pages (1–2000) |
maxPerPage | integer | – | Optional per-page cap for multi-page runs (1–2000) |
includeReplies | boolean | true | Include top comments and owner replies |
includePageSummary | boolean | true | Emit one page-summary row per page |
onlyNew | boolean | false | Monitor mode: return only reviews not in the saved state |
stateKey | string | – | Optional prefix for the monitor state key |
recommendation | string | all | all / recommended / not |
dateFrom | string | – | Only reviews on or after this date (YYYY-MM-DD) |
dateTo | string | – | Only reviews on or before this date (YYYY-MM-DD) |
keyword | string | – | Only reviews containing this word or phrase (case-insensitive) |
requestDelayMs | integer | 600 | Pause between requests in milliseconds (0–5000) |
maxRuntimeSecs | integer | 1800 | Stop collecting after this many seconds |
failOnEmpty | boolean | false | Fail the run when no review rows are returned |
proxyConfiguration | object | automatic | Optional connection override; leave empty and the actor picks a working connection, escalating only when Facebook blocks a request |
cookies | array | [] | Optional Facebook cookies; not required and not needed for depth |
Legacy keys from earlier versions (maxReviews, maxReviewsPerPage, filterByRecommendation, filterByDateFrom, filterByDateTo, filterByKeyword) are still accepted and mapped internally. Business-name-plus-city search has been removed because it resolved to guessed, often dead page URLs.
Example: scrape one page
{"startUrls": [{ "url": "https://www.facebook.com/mcdonalds/reviews" }],"maxItems": 200}
Example: multiple pages by Page ID or username
{"pageIds": ["100064458773195", "portosbakery"],"maxItems": 500,"maxPerPage": 50,"includeReplies": true}
Example: only negative reviews from a date range
{"startUrls": [{ "url": "https://www.facebook.com/IHOP/reviews" }],"recommendation": "not","dateFrom": "2026-06-01","maxItems": 100}
Example: daily monitor for new reviews
{"pageIds": ["100064458773195"],"onlyNew": true,"stateKey": "mcdonalds-monitor","maxItems": 200}
Use cases
- Reputation monitoring — track new Recommended / Not Recommended reviews and owner replies for a brand or franchise location
- Competitor analysis — compare recommendation percentages, review volume, and recurring complaint keywords across competing businesses
- Local business research — pull reviews for restaurants, hotels, or service providers before choosing where to eat, stay, or book
- Customer feedback analysis — export review text and recommendation tags for sentiment or NLP pipelines
- Franchise tracking — scrape many location-specific Page IDs in one run and compare performance
- Market research — measure follower and talking-about counts alongside review trends
FAQ
Does this require a Facebook account or cookies? No. The actor reads publicly visible reviews from public business pages without logging in. Cookies are optional. They do not increase review depth: Facebook serves the same 2–3 reviews per request either way.
How many reviews can I get? Up to 2,000 per run. Facebook returns about 2–3 reviews per request even when asked for more, so 100 reviews typically needs around 35–40 requests. Earlier versions of this actor described a 10–15-review limit; that was a browser-UI ceiling, not a server-side cap, and no longer applies to this collection path.
Why is there no star rating?
Facebook business pages use binary Recommended / Not Recommended, so there is no per-review star rating. isRecommended tells you which one the reviewer chose.
Does recommendPercent match the reviews I received?
No. It is Facebook's own page-level figure and is not recalculated from the returned sample, which may be a small slice of the page's full review history.
Can I get the business's replies?
Yes. Visible comments appear in topComments, and ownerReplies contains only the comments written by the page itself. Both are omitted when includeReplies is off, while commentCount remains.
Can I get review photos, a language filter, or a rating distribution? Not from this surface today. Review photos are effectively absent on current Facebook review pages, review text has no language metadata, and no rating distribution is exposed — only the recommendation percentage and total review count. The actor does not fabricate those fields.
Do I need to configure a proxy?
No. The actor works without a proxy and selects a working connection automatically. The proxyConfiguration field is only for users who need a specific setup.
How does monitor mode know what is new?
It stores the review IDs it has seen in a named key-value store that persists across runs, one key per page. Scheduled runs with onlyNew return only reviews that were not in that saved set. Use stateKey if you want separate monitor streams for the same page.
What happens for a dead or private page?
The actor validates the page before collecting and writes a single recordType: "error" row. It does not guess a page URL from a business name, and it does not retry a dead page repeatedly.
Limitations
- 2,000-review cap per run — a deliberate ceiling that keeps one run bounded
- Public business pages only — private pages, personal profiles, groups, and Marketplace listings are not supported
- No rating distribution or language filter — Facebook does not expose either on the reviews surface
- Review photos are rare — the field is kept for compatibility but is usually absent
- Reviewer identity is not always stable —
authorIdTypereports whether the author ID is a stable numeric ID or a rotatingpfbidtoken - Facebook can change its internal review operation — the actor detects a rotated operation identifier and refreshes it, but a major upstream change can still require an actor update