Facebook Reviews Scraper avatar

Facebook Reviews Scraper

Pricing

from $1.25 / 1,000 recommendations

Go to Apify Store
Facebook Reviews Scraper

Facebook Reviews Scraper

Collect public Facebook Page recommendations and non-recommendations. Export text, timestamps, status, engagement, Page details, and reviewer details, plus optional comments, replies, and media when requested and available.

Pricing

from $1.25 / 1,000 recommendations

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

2

Monthly active users

5 days ago

Last modified

Share

⭐ Turn public Facebook Page feedback into structured data

Facebook Reviews Scraper helps developers, agencies, analysts, and business teams collect public Facebook Page recommendations and non-recommendations in an Apify dataset. Each row can include source-backed text, status, timestamps, engagement, Page details, and public reviewer details, with a direct recommendation link and a trustworthy reviewer ID or profile link when available. This gives you structured Page feedback to review or export without supplying Facebook credentials.

📦 Data you can export

Each successful dataset row represents one public Facebook Page recommendation or non-recommendation and can contain:

  • recommendationId and recommendationUrl: Facebook's source identifier and stable direct public URL.
  • createdAt, text, and recommendationStatus: publication time, recommendation text, and recommends or doesNotRecommend when exposed.
  • tags: visible recommendation tags when exposed.
  • reactionCount, reactions, commentCount, and shareCount: visible engagement totals and reaction breakdowns when available.
  • page: the reviewed Page's ID, name, image, and public URL.
  • reviewer: the public reviewer name and image, plus a stable public ID and profile URL when trustworthy.
  • media: source-hosted media details attached to the recommendation when available.
  • comments: collected top-level comments and direct replies when requested and available.

Facebook does not expose every value on every recommendation. Missing values are omitted rather than inferred; the Actor does not fabricate star ratings, statuses, identities, or engagement.

Each row is the first eligible occurrence of a source recommendation. If the same recommendation appears again through another submitted handle, URL, ID, or equivalent target, the later match is ignored.

🚀 How to run the Actor

  1. Add one or more Facebook Page handles, Page URLs, review URLs, or numeric Page IDs under Facebook Pages.
  2. Set optional per-Page and run-wide recommendation limits. Leave Recommendations per Page empty to return all available results until the source is exhausted for each Page. Leave Total recommendations empty to return all available results until the submitted sources are exhausted.
  3. Set comment and reply limits if you want the Actor to request those source-available details. Use 0 to exclude them.
  4. Start the Actor, then open the default dataset to inspect or export saved recommendations.

⚙️ Input

Input fields

FieldTypeWhat it does
pageTargetsarray of stringsRequired list of public Facebook Page handles, Page URLs, review URLs, or numeric Page IDs.
dateFromstringReturns only recommendations newer than a calendar date or relative date such as 7 days ago. Leave it empty to include recommendations from any date.
maxRecommendationsPerPageintegerSets the maximum recommendations collected from each Page. Leave it empty to return all available results until the source is exhausted for that Page.
maxRecommendationsintegerSets the maximum recommendations collected across the run. Leave it empty to return all available results until the submitted sources are exhausted.
maxCommentsPerRecommendationintegerSets the maximum source-available top-level comments requested per recommendation. Use 0 to leave comments out.
maxRepliesPerCommentintegerSets the maximum direct replies requested for each included comment. Use 0 to leave replies out. This setting is ignored when comments per recommendation is 0.

Example input

This example uses the Actor's public default input:

{
"pageTargets": [
"portosbakery"
],
"maxCommentsPerRecommendation": 0,
"maxRepliesPerComment": 0,
"maxRecommendationsPerPage": 10,
"maxRecommendations": 10
}

🧾 Output

Dataset link

FieldTypeWhat it does
resultsstringOpens the default dataset overview with the saved recommendation rows.

Recommendation row fields

The default dataset has one recommendation row shape for both recommendations and non-recommendations. Optional fields are omitted when Facebook does not expose them or when the requested details are unavailable.

FieldTypeWhat it does
recommendationIdstringFacebook's source identifier for the recommendation.
recommendationUrlstring (URL)Stable direct public Facebook URL for the recommendation.
createdAtstring (date-time)Source publication time when exposed.
recommendationStatusstringrecommends or doesNotRecommend when Facebook exposes the outcome.
textstringText published with the recommendation when exposed.
pageobjectFacebook Page associated with the recommendation.
page.idstringFacebook's source identifier for the Page.
page.namestringPublic name of the Facebook Page.
page.urlstring (URL)Public Facebook URL for the Page when exposed.
page.imageUrlstring (URL)Public Page image URL when exposed.
reviewerobjectPublic source details for the recommendation author when exposed.
reviewer.idstringStable public Facebook identifier when trustworthy.
reviewer.namestringPublic name of the reviewer.
reviewer.urlstring (URL)Stable public Facebook profile URL when trustworthy.
reviewer.profilePictureUrlstring (URL)Public profile picture URL when exposed.
tagsarray of stringsLabels or tags exposed by Facebook for the recommendation.
reactionCountintegerSource-reported total number of reactions when available.
reactionsarray of objectsReaction totals grouped by source-exposed reaction type.
reactions[].typestringSource-exposed reaction type.
reactions[].countintegerSource-reported total for that reaction type.
commentCountintegerSource-reported total number of comments and replies when available.
shareCountintegerSource-reported total number of shares when available.
mediaarray of objectsSource-hosted media attached to the recommendation.
media[].idstringFacebook's source identifier for the media when exposed.
media[].typestringSource-exposed media type when available.
media[].urlstring (URL)Direct source-hosted media URL.
media[].thumbnailUrlstring (URL)Source-hosted thumbnail URL when available.
media[].widthintegerSource-exposed media width in pixels.
media[].heightintegerSource-exposed media height in pixels.
media[].durationSecondsnumberSource-exposed media duration in seconds.
media[].viewCountintegerSource-reported media view total when available.
media[].altTextstringSource-exposed alternative text for the media.
commentsarray of objectsCollected source-available top-level comments, limited by the input.
comments[].idstringFacebook's source identifier for the comment.
comments[].textstringComment text when exposed.
comments[].createdAtstring (date-time)Source publication time for the comment.
comments[].urlstring (URL)Direct Facebook URL for the comment when exposed.
comments[].authorobjectPublic source details for the comment author when exposed.
comments[].author.idstringFacebook's source identifier for the comment author when exposed.
comments[].author.namestringPublic name of the comment author when exposed.
comments[].author.urlstring (URL)Public Facebook profile URL for the comment author when exposed.
comments[].author.profilePictureUrlstring (URL)Public profile picture URL for the comment author when exposed.
comments[].reactionCountintegerSource-reported reaction total for the comment when available.
comments[].replyCountintegerSource-reported total number of direct replies when available.
comments[].mediaarray of objectsSource-hosted media attached to the comment.
comments[].media[].idstringFacebook's source identifier for the comment media when exposed.
comments[].media[].typestringSource-exposed type of the comment media when available.
comments[].media[].urlstring (URL)Direct source-hosted URL for the comment media.
comments[].media[].thumbnailUrlstring (URL)Source-hosted thumbnail URL for the comment media when available.
comments[].media[].widthintegerSource-exposed width of the comment media in pixels.
comments[].media[].heightintegerSource-exposed height of the comment media in pixels.
comments[].media[].durationSecondsnumberSource-exposed duration of the comment media in seconds.
comments[].media[].viewCountintegerSource-reported media view total when available.
comments[].media[].altTextstringSource-exposed alternative text for the comment media.
comments[].repliesarray of objectsCollected direct replies to the comment, limited by the input.
comments[].replies[].idstringFacebook's source identifier for the reply.
comments[].replies[].textstringReply text when exposed.
comments[].replies[].createdAtstring (date-time)Source publication time for the reply.
comments[].replies[].urlstring (URL)Direct Facebook URL for the reply when exposed.
comments[].replies[].authorobjectPublic source details for the reply author when exposed.
comments[].replies[].author.idstringFacebook's source identifier for the reply author when exposed.
comments[].replies[].author.namestringPublic name of the reply author when exposed.
comments[].replies[].author.urlstring (URL)Public Facebook profile URL for the reply author when exposed.
comments[].replies[].author.profilePictureUrlstring (URL)Public profile picture URL for the reply author when exposed.
comments[].replies[].reactionCountintegerSource-reported reaction total for the reply when available.
comments[].replies[].mediaarray of objectsSource-hosted media attached to the reply.
comments[].replies[].media[].idstringFacebook's source identifier for the reply media when exposed.
comments[].replies[].media[].typestringSource-exposed type of the reply media when available.
comments[].replies[].media[].urlstring (URL)Direct source-hosted URL for the reply media.
comments[].replies[].media[].thumbnailUrlstring (URL)Source-hosted thumbnail URL for the reply media when available.
comments[].replies[].media[].widthintegerSource-exposed width of the reply media in pixels.
comments[].replies[].media[].heightintegerSource-exposed height of the reply media in pixels.
comments[].replies[].media[].durationSecondsnumberSource-exposed duration of the reply media in seconds.
comments[].replies[].media[].viewCountintegerSource-reported media view total when available.
comments[].replies[].media[].altTextstringSource-exposed alternative text for the reply media.

Example recommendation

This genuine saved row includes one top-level comment. Optional fields that Facebook did not return are absent.

{
"recommendationId": "UzpfSTEwMDAxMTUwMTE0ODE1MDoyNzg3MDIxMzY1MDI0NTQxOjI3ODcwMjEzNjUwMjQ1NDE=",
"recommendationUrl": "https://www.facebook.com/fotografpoznan2/posts/2787021365024541",
"createdAt": "2026-07-23T10:53:13.000Z",
"recommendationStatus": "recommends",
"text": "Bardzo polecam współpracę z panią Agnieszką Majchrzak. Kupowaliśmy mieszkanie i dzięki pani Agnieszce cały proces przeszedł spokojnie i bezstresowo. Od samego początku czuliśmy się zaopiekowani i mogliśmy liczyć na profesjonalne wsparcie na każdym etapie. Wszystkie formalności były jasno wyjaśnione, a komunikacja przebiegała szybko i bezproblemowo. Z całego serca polecamy!",
"reactionCount": 0,
"commentCount": 1,
"shareCount": 0,
"page": {
"id": "100054189468166",
"name": "homfi",
"url": "https://www.facebook.com/homficom",
"imageUrl": "https://scontent-lga3-2.xx.fbcdn.net/v/t39.30808-1/305569664_8453045728101706_5469064813037601261_n.jpg?stp=dst-jpg_tt6&cstp=mx2047x2047&ctp=s720x720&_nc_cat=107&ccb=1-7&_nc_sid=3ab345&_nc_ohc=bbRYQ-jWEFsQ7kNvwEP2QtV&_nc_oc=AdqQC9jSP3dDJPdxJdMEP1rwvEoiElLWGXySHfcVIAxBqZInEMkY8b-ucbBP6sh2VBY&_nc_zt=24&_nc_ht=scontent-lga3-2.xx&_nc_gid=LCR5XcYES0kMAJ9LKuRQaA&_nc_ss=70289&oh=00_AQKZETr-kbVsfPmSlcpfqNPc0qZWYFU5LHvIVG1sSzZXrA&oe=6A9B1799"
},
"reviewer": {
"id": "100011501148150",
"name": "Eliz Burk",
"url": "https://www.facebook.com/fotografpoznan2",
"profilePictureUrl": "https://scontent-lga3-2.xx.fbcdn.net/v/t39.30808-1/460942611_2208110809582269_7479974801955945577_n.jpg?stp=c0.173.1365.1365a_cp0_dst-jpg_tt6&cstp=mx1365x1365&ctp=s50x50&_nc_cat=101&ccb=1-7&_nc_sid=1d2534&_nc_ohc=3v8WtIFcWTkQ7kNvwFhEBZf&_nc_oc=Adod9U2AxXTr69fuV11tyAn9bgNkerCZqfyVaBu2E6PM-yA090oBwZpfw0dWQBEKdhg&_nc_zt=24&_nc_ht=scontent-lga3-2.xx&_nc_gid=y_w3bqsC9Gr0ZHmNTr-6yQ&_nc_ss=70180&oh=00_AQLj5SHQjG3q8fxqrMjJQWu0uh1SXmXUNQ0sxwvb-xqQBQ&oe=6A9B0A20"
},
"comments": [
{
"id": "Y29tbWVudDoyNzg3MDIxMzY1MDI0NTQxXzE0NTA3ODY0OTAxNDM5NTQ=",
"url": "https://www.facebook.com/fotografpoznan2/posts/pfbid0nrL7HEV9Uruk63V1thdndKqJXKkm4XNDPAyQvP7hxyXMQWdrhVAWbGwrMSHeAZokl?comment_id=1450786490143954",
"text": "Cześć!\n\nDziękujemy za zaufanie i słowa uznania. W homfi zawsze stawiamy na pierwszym miejscu dobro i radość naszych klientów, dlatego cieszymy się, że nasz Agent mógł wesprzeć Cię w tym ważnym dla Ciebie momencie.\n\nPozdrawiamy,\nhomfi",
"createdAt": "2026-07-28T13:19:12.000Z",
"replyCount": 0,
"author": {
"id": "100054189468166",
"name": "homfi",
"url": "https://www.facebook.com/homficom",
"profilePictureUrl": "https://scontent-lga3-2.xx.fbcdn.net/v/t39.30808-1/305569664_8453045728101706_5469064813037601261_n.jpg?stp=cp0_dst-jpg_tt6&cstp=mx2047x2047&ctp=s32x32&_nc_cat=107&ccb=1-7&_nc_sid=2d3e12&_nc_ohc=bbRYQ-jWEFsQ7kNvwEP2QtV&_nc_oc=AdqQC9jSP3dDJPdxJdMEP1rwvEoiElLWGXySHfcVIAxBqZInEMkY8b-ucbBP6sh2VBY&_nc_zt=24&_nc_ht=scontent-lga3-2.xx&_nc_gid=y_w3bqsC9Gr0ZHmNTr-6yQ&_nc_ss=70180&oh=00_AQITi0I_Ysj993FOxYxXKfGUY-b_9pxTD_xmQEgFEWMkHA&oe=6A9B1799"
}
}
]
}

💳 Pricing

This Actor uses pay-per-event pricing. A recommendation event is charged only when one accepted public Facebook recommendation is saved. Empty runs, invalid targets, setup work, comments, replies, and media do not create separate recommendation events.

Use the total and per-Page recommendation limits to bound how many recommendations a run can save.

🔌 Integrations

Use Apify API clients, webhooks, schedules, and dataset exports to move saved rows into spreadsheets, BI tools, databases, or your own application.

❓ FAQ

Does the Actor return Facebook star ratings?

No. Facebook commonly exposes Page feedback as a recommendation status rather than a star rating. The dataset does not add a star rating when Facebook does not provide one.

What happens when Facebook does not expose a recommendation status or optional field?

The unavailable field is omitted. The Actor does not substitute unknown, invent a status, or create placeholder data.

Yes. recommendationUrl is the direct public Facebook permalink for recommendationId. The same recommendation keeps the same ID and permalink across runs and repeated matches.

The Actor keeps reviewer IDs and profile links only when they are trustworthy. If Facebook returns a changing alias or an untrustworthy link, those optional fields are left out. The reviewer name can remain when Facebook exposes it.

What happens when the same recommendation is found more than once?

The Actor saves the first eligible occurrence and ignores later matches for that recommendation. The saved row describes only the first match.

Does it need a Facebook login, cookies, or Meta API key?

No. It collects publicly accessible Page recommendations without asking you for Facebook credentials, cookies, or a Meta API key.

Can it access private or login-only reviews?

No. Private, removed, login-only, or otherwise inaccessible Facebook content is outside its scope.

Which Facebook Page identifiers can I submit?

The input accepts Page handles, full Page URLs, review URLs, and numeric Page IDs. Unsupported or unresolved targets do not become dataset rows.

Why might a Page return fewer recommendations than its limit?

A limit is a maximum, not a promised count. Facebook may expose fewer public recommendations, omit fields, or make a target unavailable.

What happens when I leave a recommendation limit empty?

Leaving Recommendations per Page empty returns all available results until the source is exhausted for each Page. Leaving Total recommendations empty returns all available results until the submitted sources are exhausted.

How do comments and replies affect a run?

Set Comments per recommendation and Replies per comment to request those source-available details. Use 0 to leave them out. Comments and replies do not create separate recommendation events.

Why use this instead of the Meta API?

The Meta API is designed for approved apps and permissioned workflows. This Actor exports publicly accessible Page recommendations without requiring your own Meta app or API key; it does not provide private or permissioned data.

Can I use the collected data responsibly?

Use the Actor only for lawful purposes and follow applicable privacy, data-protection, and platform rules. You are responsible for how you store and use collected public data.

📝 Changelog

v0.0

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré