Facebook Review Scraper avatar

Facebook Review Scraper

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Facebook Review Scraper

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

ScrapySpider

Maintained by Community

Actor 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

  1. Open the Actor on Apify Console.
  2. Go to the Input tab.
  3. Paste a Facebook page URL or a numeric page ID — use one, not both.
  4. Set maxReviews to the number of reviews you need. Leave it at 100 to start.
  5. Click Start. The Actor scrapes, paginates, and saves results automatically.
  6. When the run finishes, open the Output tab or Dataset to view and download results.

Supported URL formats for facebookPageUrl:

FormatExample
Reviews tab URLhttps://www.facebook.com/copperkettleyqr/reviews
Standard page URLhttps://www.facebook.com/copperkettleyqr
Numeric page-ID URLhttps://www.facebook.com/100064027242849
profile.php URLhttps://www.facebook.com/profile.php?id=100064027242849

Input

FieldTypeRequiredDescription
facebookPageUrlStringNo*Any supported Facebook page URL (see formats above).
pageIdStringNo*Numeric Facebook page ID, e.g. 100064027242849. Faster — skips URL resolution.
maxReviewsIntegerNoMaximum reviews to scrape. Default 100. Set 0 for unlimited.
docIdStringNoAdvanced: 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

FieldTypeDescription
postIdStringBase64-encoded internal Facebook Story ID for this review post.
pageIdStringNumeric ID of the Facebook page that was scraped.
reviewerStringDisplay name of the reviewer.
reviewerUrlString | nullFacebook profile URL of the reviewer. null for privacy-restricted accounts.
userIdStringFacebook user ID — numeric (e.g. 100008842841030) or pfbid-format for privacy-restricted profiles.
textStringFull review body text as written by the reviewer.
dateStringDate the review was posted in YYYY-MM-DD format.
postUrlString | nullDirect URL to this specific review post on Facebook.
isRecommendedBoolean | nulltrue = recommends the business, false = does not recommend, null = could not be determined.
scrapedAtStringISO 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:

  1. Open Chrome DevTools → Network tab on any Facebook reviews page.
  2. Filter for graphql.
  3. Click any POST request and look at the form body for doc_id=XXXXXXXXX.
  4. Copy that value and paste it into the docId input 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