Facebook Review Scraper
Pricing
from $0.50 / 1,000 results
Facebook Review Scraper
Scrape public reviews from Facebook business pages using Facebook’s internal GraphQL API. Extract reviewer names, review text, dates, and post URLs in structured JSON. No login required.
Pricing
from $0.50 / 1,000 results
Rating
0.0
(0)
Developer
ScrapySpider
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Share
What does Facebook Review Scraper do?
Facebook Review Scraper extracts public Facebook business page reviews through Facebook's internal GraphQL API. The Actor sends lightweight HTTP POST requests directly to /api/graphql/, parses the response, and saves each review as a structured record in your Apify dataset — including the reviewer name, recommendation status, review text, date, and profile link.
Because it works entirely over HTTP (no Playwright, no visible browser, no Facebook login), it is faster and cheaper than browser-based scrapers. You get full API access, scheduling, proxy rotation, dataset exports in multiple formats, and easy integration with spreadsheets, BI tools, CRMs, or AI pipelines on the Apify platform.
Try it live on a public reviews page like The Copper Kettle.
Why use Facebook Review Scraper?
- Reputation monitoring — Track new customer feedback for your own business page automatically.
- Competitor analysis — Compare review sentiment and volume across competing businesses.
- Customer research — Export review text for NLP, sentiment analysis, or topic clustering.
- Multi-location reporting — Collect reviews from franchise or branch pages into one dataset.
- Lead qualification — Check what customers praise or complain about before sales outreach.
- Market intelligence — Spot recurring service issues, pricing concerns, or brand perception trends.
How to use Facebook Review Scraper
- Open the Actor on Apify Console.
- Go to the Input tab.
- Paste a Facebook page URL or a numeric page ID — use one, not both.
- Set
maxReviewsto the number of reviews you need. Leave it at100to start. - Click Start. The Actor scrapes, paginates, and saves results automatically.
- When the run finishes, open the Output tab or Dataset to view and download results.
Supported URL formats for facebookPageUrl:
| Format | Example |
|---|---|
| Reviews tab URL | https://www.facebook.com/copperkettleyqr/reviews |
| Standard page URL | https://www.facebook.com/copperkettleyqr |
| Numeric page-ID URL | https://www.facebook.com/100064027242849 |
| profile.php URL | https://www.facebook.com/profile.php?id=100064027242849 |
Input
| Field | Type | Required | Description |
|---|---|---|---|
facebookPageUrl | String | No* | Any supported Facebook page URL (see formats above). |
pageId | String | No* | Numeric Facebook page ID, e.g. 100064027242849. Faster — skips URL resolution. |
maxReviews | Integer | No | Maximum reviews to scrape. Default 100. Set 0 for unlimited. |
docId | String | No | Advanced: GraphQL document ID override. Change only if Facebook rotates their internal API. |
* Provide exactly one of facebookPageUrl or pageId.
Example input
{"facebookPageUrl": "https://www.facebook.com/copperkettleyqr/reviews","maxReviews": 50}
Output
Each dataset item is one review. Below is a real example from a live scrape:
{"postId": "UzpfSTEwMDAwODg0Mjg0MTAzMDozNDMzNTYyNDMzNjE1MTUxOjM0MzM1NjI0MzM2MTUxNTE=","pageId": "100064027242849","reviewer": "Daniel Masih","reviewerUrl": "https://www.facebook.com/daniel.masih.313","userId": "100008842841030","text": "They offers a cozy atmosphere, friendly service, and a menu of tasty comfort food at reasonable prices. It's a great spot for casual dining.","date": "2024-09-11","postUrl": "https://www.facebook.com/daniel.masih.313/posts/pfbid0bWGvcZQ9v4qNexM8r68BsjKi9dTe2tLFxouJ4E4pfgSQtSW1YgBdcpsBDzCduCi2l","isRecommended": true,"scrapedAt": "2026-05-09T11:31:42.508Z"}
You can download the dataset in JSON, CSV, Excel, XML, RSS, and other formats from the Apify Console.
Data table
| Field | Type | Description |
|---|---|---|
postId | String | Base64-encoded internal Facebook Story ID for this review post. |
pageId | String | Numeric ID of the Facebook page that was scraped. |
reviewer | String | Display name of the reviewer. |
reviewerUrl | String | null | Facebook profile URL of the reviewer. null for privacy-restricted accounts. |
userId | String | Facebook user ID — numeric (e.g. 100008842841030) or pfbid-format for privacy-restricted profiles. |
text | String | Full review body text as written by the reviewer. |
date | String | Date the review was posted in YYYY-MM-DD format. |
postUrl | String | null | Direct URL to this specific review post on Facebook. |
isRecommended | Boolean | null | true = recommends the business, false = does not recommend, null = could not be determined. |
scrapedAt | String | ISO 8601 timestamp of when this record was saved by the Actor. |
Pricing / Cost estimation
This Actor uses a lightweight HTTP + GraphQL approach with no browser. There is no Playwright startup, no page rendering, and no login flow. Compute costs are significantly lower than browser-based scrapers.
Typical runs scraping 100 reviews finish in under 30 seconds. The Apify free tier is more than enough for initial testing and small recurring jobs.
Tips and advanced options
Finding the numeric page ID
If URL resolution fails, you can get the numeric page ID from:
- findmyfbid.com — paste the page URL and it returns the ID.
- The Facebook page source — search for
"pageID"in the raw HTML. - Your browser's Network tab — intercept a GraphQL request and look at
variables.id.
What to do if docId breaks
Facebook assigns numeric IDs to all their internal GraphQL queries at build time. If the Actor suddenly returns no reviews, the docId may have changed. To get the new value:
- Open Chrome DevTools → Network tab on any Facebook reviews page.
- Filter for
graphql. - Click any POST request and look at the form body for
doc_id=XXXXXXXXX. - Copy that value and paste it into the
docIdinput field.
Private reviewer profiles
Some reviewers have privacy-restricted Facebook accounts. For these, userId will be in pfbid-format (e.g. pfbid02GUAEzN8WfhZ...) and reviewerUrl will be derived from the post URL slug rather than the profile directly. This is normal Facebook behaviour, not a scraper error.
Author
ScrapySpider
- Website: ScrapySpider.com
- Email: ScrapySpider@protonmail.com


