Facebook Review Scraper - Photos & Tags
Pricing
from $3.99 / 1,000 results
Facebook Review Scraper - Photos & Tags
Facebook Review Scraper: Extract reviews with photos, tagged profiles, ratings, reviewer names, dates, review text, and page details. Analyze customer feedback, visual reviews, user interactions, and business reputation for market research, competitor analysis, and customer insights.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
ScrapeFlux
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 days ago
Last modified
Categories
Share
Extract reviews from any public Facebook page's Reviews tab, including the photos reviewers attach and any descriptive tags Facebook exposes on the review. This Facebook reviews scraper is built for teams who need more than plain review text — a facebook review data extraction workflow that also captures visual proof (review photos) and quick-scan labels (review tags) alongside the standard reviewer name, review content, profile picture, and review link.
Use it to scrape Facebook page reviews for brand monitoring, customer sentiment analysis, competitor research, reputation tracking, or building a facebook review dataset for reporting — without logging in to Facebook or writing custom scraping code.
Sample Output
{"name": "Jay Anderson","profile_pic": "https://scontent-lga3-1.xx.fbcdn.net/v/t39.30808-1/632465254_...jpg","message": "Worst mobile app experience. Only been using it for the last year maybe once a week and I can't tell you how many times I've placed an order just to arrive at the store for them to say they did not receive it...","reviewPhotos": [],"tags": ["Slow service", "Disappointing food"],"story_id": "UzpfSTEwMDAyMDgzMTgyMzg1MjoxMTg5NTQyMDg4NDE2ODQxOjExODk1NDIwODg0MTY4NDE=","story_url": "https://web.facebook.com/permalink.php?story_fbid=..."}
reviewPhotos is populated with one or more full-size image URLs whenever a reviewer attached photos to their recommendation; tags is populated whenever Facebook exposes reviewer-selected descriptive labels (e.g. "Slow service", "Poor presentation") on that review. Both are always real arrays — [] when nothing is attached, never a guessed or fabricated value.
Output fields
| Field | Type | What it tells you |
|---|---|---|
name | string | The reviewer's name as shown on the review |
profile_pic | string (image) | URL to the reviewer's profile picture |
message | string | The review text content |
reviewPhotos | array of strings | Full-size URLs of any photos the reviewer attached to the review. [] if none |
tags | array of strings | Reviewer-selected descriptive tags exposed by Facebook on the review. [] if none/unavailable |
story_id | string | The internal review identifier, useful for de-duplication |
story_url | string (link) | A link back to the specific review post |
Input
| Field | Type | Default | What it does |
|---|---|---|---|
startUrl | string (required) | — | The URL of the Facebook page's Reviews tab you want to scrape, e.g. https://www.facebook.com/<page>/reviews |
includeReviewPhotos | boolean | true | When ON, extracts full-size review photo URLs into reviewPhotos. Turn OFF to skip photo extraction and always emit [] (slightly faster runs) |
includeReviewTags | boolean | true | When ON, extracts reviewer-selected descriptive tags into tags where Facebook exposes them. Turn OFF to always emit [] |
maxReviews | integer | 100 | Maximum number of reviews to collect before the run stops |
proxyConfiguration | object | Apify Proxy enabled | Proxy settings used for every request. Apify Proxy is strongly recommended — it is also used to auto-retry on a fresh IP if Facebook returns a soft block |
Example input:
{"startUrl": "https://www.facebook.com/buladiradda/reviews","includeReviewPhotos": true,"includeReviewTags": true,"maxReviews": 100,"proxyConfiguration": {"useApifyProxy": true}}
What it does
Scrapes reviews with reviewer details
For each review on the target page's Reviews tab, the actor extracts the reviewer's name, profile picture, the review text, a de-duplication ID, and a direct link back to the review post.
Extracts attached review photos
Many Facebook recommendations/reviews include one or more photos. When includeReviewPhotos is on (default), the actor walks the same review data it already fetches and collects every attached photo's full-size image URL into reviewPhotos.
Extracts reviewer-selected tags
Many reviewers pick short descriptive tags when leaving a recommendation (e.g. "Slow service", "Poor presentation", "Fast delivery"). When includeReviewTags is on (default), the actor collects every tag Facebook exposes on the review into tags. Coverage varies by page — see Reliability below.
Paginates until your target is met
You control how many reviews to collect with maxReviews. The actor keeps requesting additional pages of reviews until it reaches your target count or Facebook's feed runs out of pages.
Uses Apify Proxy on every request, with soft-block retry
Every HTML and GraphQL request is routed through the proxy you configure. If Facebook returns a soft block (an HTTP 200 response with a GraphQL error and no review data instead of a real error), the actor automatically retries on a fresh proxy IP — up to a bounded number of attempts — before giving up, and never double-pushes rows already collected.
Resolves fresh session tokens every run
The actor resolves the page's internal ID and the current Facebook GraphQL query ID directly from the target page on every run, and harvests a fresh CSRF token from that same page load — it never reuses a stale, single-session token.
Use cases
Brand & reputation monitoring — Track what customers say (and show) about a business across its Facebook page, including photo evidence of products or experiences.
Customer sentiment research — Pull review text plus attached photos to understand not just what people write but what they photograph.
Competitor research — Run against competitor Facebook pages to see how customers describe and illustrate their experience.
Reporting & data pipelines — Export structured review data (including photo URLs) into CSV/JSON/Excel or pipe it into downstream reporting and CRM tools via the Apify API.
How to run it
- Open the actor on the Apify Console.
- Set
startUrlto the Facebook page's/reviewsURL you want to scrape. - Leave
includeReviewPhotosandincludeReviewTagson (default) to collect photos and tags, or turn either off if you only need the base review fields. - Optionally adjust
maxReviewsandproxyConfiguration. - Start the run and watch reviews appear in the Dataset tab as they're collected.
- Export the dataset as JSON, CSV, or Excel from the Apify dashboard.
Reliability & limitations
| What's handled | How |
|---|---|
| Pagination until your target is met | Keeps requesting pages until maxReviews is reached or the feed has no more pages |
| Soft-block detection | An HTTP 200 response carrying a GraphQL error with zero reviews parsed is treated as a block, not end-of-data, and retried on a fresh proxy IP |
| No duplicate rows on retry | Proxy/soft-block retries only happen before any row has been pushed for the current fetch |
| Fresh credentials every run | Page ID, GraphQL query ID, and CSRF token are all resolved live from the target page — never hardcoded |
Limitations: This actor only scrapes reviews from a public Facebook page's Reviews tab (no login). If a page's reviews are private, region-restricted, or the Reviews tab itself is unavailable, the run will return fewer rows or none. Both reviewPhotos and tags reflect only what reviewers actually attached/selected — coverage varies a lot by page (some pages' reviewers rarely attach photos or pick tags, others do so often), so an all-empty reviewPhotos/tags column on a given run reflects that page's real reviews, not a broken actor. Neither field is ever guessed or derived from the review text — both come directly from Facebook's own review data.
Frequently asked questions
Do I need to log in to Facebook?
No. You provide a public Facebook page's /reviews URL and the actor scrapes publicly available review content.
Will every review have photos or tags?
No — reviewPhotos and tags are only populated when the reviewer actually attached photos or Facebook exposes tags for that specific review. Both are legitimate [] for reviews without either.
How many reviews can I collect per run?
Up to maxReviews (default 100). The actor stops once it reaches your target or runs out of pages.
Can I turn off photo/tag extraction?
Yes — set includeReviewPhotos and/or includeReviewTags to false to always emit [] for those fields.
Can I schedule recurring runs?
Yes, using Apify's built-in Schedules feature, so you can refresh a page's review data automatically.
Can I access results via the API?
Yes — results are available through the Apify API and can be exported as JSON, CSV, or Excel.