Facebook Review Scraper By Multiple Pages
Pricing
from $3.99 / 1,000 results
Facebook Review Scraper By Multiple Pages
Facebook Review Scraper: Scrape reviews from multiple Facebook pages, including ratings, reviewer names, dates, review text, page details, and engagement data. Compare customer feedback, sentiment, and reputation across businesses for market and competitor research.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
ScrapeDrift
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Share
Scrape Facebook reviews from one or many Facebook pages in a single run. Point it at a page's /reviews URL and it returns each reviewer's name, review text, profile picture, review link, and a unique review ID — and, unlike a single-page Facebook review scraper, it can pull the same fields from a whole list of pages at once, tagging every review with the exact page it came from.
This is a Facebook page review scraper, Facebook review extractor, and Facebook review data export tool built around Facebook's own internal GraphQL review-feed API (no login required), with automatic pagination, proxy rotation, and soft-block retries so runs stay reliable when scraping Facebook reviews at scale — across a single business page or a whole competitor set.
What it does
- Accepts a primary Facebook page reviews URL plus an optional list of additional page reviews URLs, and scrapes all of them in one run.
- For each page it resolves a fresh
doc_id, page ID, and session token directly from that page's own HTML/JS — every page gets its own pagination session, so results from different pages never bleed into each other. - Paginates through each page's review feed via Facebook's internal
ratings_list_feed_unitsGraphQL query until the review cap is hit or Facebook reports no more pages. - Detects soft blocks (an HTTP 200 response whose payload carries GraphQL
errorsinstead of review data) and retries automatically on a fresh proxy IP, instead of silently reporting "no more reviews." - Applies your chosen Apify Proxy configuration to every request (page HTML, JS bundle lookup, and GraphQL calls), rotating to a fresh IP on connection failures before any rows have been written for that page, so a proxy hiccup never produces duplicate rows.
- Optionally removes duplicate reviews (same
story_id) that show up more than once across the pages scraped in the same run.
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
startUrl | string | Yes | https://www.facebook.com/buladiradda/reviews | Primary Facebook page reviews URL to scrape (e.g. https://www.facebook.com/<page>/reviews). |
additionalStartUrls | array of strings | No | [] | Extra Facebook page reviews URLs to scrape in the same run, alongside the primary URL. Each gets its own review budget. |
maxReviews | integer | No | 100 | Maximum number of reviews to scrape from each page. This cap is per page, not shared — 3 pages capped at 50 each can return up to 150 reviews total. |
dedupeAcrossPages | boolean | No | true | When on, drops a review whose story_id was already pushed earlier in the run (e.g. the same page listed twice). When off, every review is pushed even if it repeats. |
proxyConfiguration | object | No | {"useApifyProxy": true} | Apify Proxy configuration, applied to every request across every page scraped in the run. |
Example input
{"startUrl": "https://www.facebook.com/target/reviews","additionalStartUrls": ["https://www.facebook.com/nike/reviews"],"maxReviews": 50,"dedupeAcrossPages": true,"proxyConfiguration": {"useApifyProxy": true}}
Output
Each scraped review is written to the dataset as one record:
| Field | Type | Description |
|---|---|---|
name | string | The reviewer's display name. |
profile_pic | string (image URL) | URL to the reviewer's profile picture. |
message | string | The review text content. |
story_id | string | Facebook's internal ID for this review, useful for de-duplication. |
story_url | string (link) | Direct link back to the review post. |
sourcePageUrl | string (link) | The exact input URL (primary or one of the additional URLs) this review was scraped from — lets you tell reviews from different pages apart in a multi-page run. |
Example output record
{"name": "Julia Odan","profile_pic": "https://scontent.xx.fbcdn.net/.../profile.jpg","message": "Great customer service and fast shipping.","story_id": "UzpfSTEwMDAyMDgzMTgyMzg1MjoxMTg5NTQyMDg4NDE2ODQxOjExODk1NDIwODg0MTY4NDE=","story_url": "https://web.facebook.com/username/posts/pfbid0abc123","sourcePageUrl": "https://www.facebook.com/target/reviews"}
Export results as JSON, CSV, or Excel directly from the Apify dataset.
Use cases
- Multi-page reputation monitoring — track reviews across several of your own business pages, or across multiple locations of the same brand, without running the actor separately for each URL.
- Competitor review comparison — scrape your page and a competitor's page in the same run, and use
sourcePageUrlto keep the two review sets apart in one dataset. - Bulk Facebook review data extraction for sentiment analysis, review moderation, or feeding a business-intelligence dashboard.
- Clean, deduplicated datasets —
dedupeAcrossPageskeeps a multi-page run from double-counting a review that appears under more than one page URL.
How it works
The actor reads Facebook's own internal review-feed data for each target URL. For every target URL it:
- Loads the page's reviews HTML to resolve that page's numeric page ID and harvest a fresh session token.
- Reads the first page of reviews directly from the data Facebook already embeds in that same page load (a server-rendered preload of the review feed), so the first batch of reviews doesn't depend on a separate API round-trip succeeding.
- Locates the current
doc_idfor the reviews-feed query from the page's own async JS bundle, then continues paging throughratings_list_feed_units.reviews_feedvia Facebook'sProfileCometReviewsFeedRefetchQueryGraphQL endpoint (https://web.facebook.com/api/graphql/) using the opaquecursorFacebook returns — starting from a fresh first page for every target URL. - Stops once the per-page review cap is reached or Facebook reports no further pages.
No Facebook login or cookies are required — this actor only reads pages Facebook already serves publicly.
Notes
- Only public review data that Facebook renders in the page's own reviews feed is collected — private, restricted, or login-only content is not accessible.
- Review coverage depends on what Facebook exposes for a given page; some pages may have Reviews turned off entirely and will return zero rows.