Facebook Reviews API and MCP — Page Recommendations as Data
Send a Facebook page URL, name or ID and this source returns its reviews as data: whether the reviewer recommends the page, the review text, date, author, tags, likes, photos and comments — including the business's own reply.
- You send
- A Facebook page URL, page name or page ID
- You get back
- Reviews with recommendation, text, date, author, tags and replies
- Coverage
- Reviews on public Facebook pages that have reviews switched on.
- Price
- 5 points per returned review, up to 1,000 per request — $5 per 1,000
- Billed per review actually returned, capped by max_items. A page with no reviews costs nothing.
Ways to get this data
Three approaches teams use today, and where each one runs into trouble.
| Approach | What it takes | Cost | Trade-off |
|---|---|---|---|
| Reading reviews by hand | Open the Reviews tab and scroll | Free, and slow | No way to track many locations or competitors |
| A reputation management tool | Connect the pages you own | Monthly per-location pricing | Built for your own pages, not for reading competitors' |
| NeuralVerge | One request per page | $5 per 1,000, misses not billed | Reviews are self-selected and skew toward strong opinions |
What you get back
Every field in the example response below.
| Field | Type | Description |
|---|---|---|
total_items | number | How many reviews came back. |
items[].id | string | Facebook's review ID. |
items[].url | string | Direct link to the review. |
items[].date | string | When the review was posted (ISO 8601). |
items[].is_recommended | boolean | Whether the reviewer recommends the page. |
items[].text | string | Review text. |
items[].tags | array | Tags the reviewer picked, e.g. Cosy atmosphere. |
items[].author | object | Reviewer: id, name and profile link. |
items[].likes_count | number | Likes on the review. |
items[].comments_count | number | Comments on the review. |
items[].photos | array | Photos attached to the review. |
items[].comments | array | Comments on the review, including the page's reply. |
items[].page_url | string | The page that was reviewed. |
Example response
A real response, as returned.
{
"session_id": "ff0adb11-1b09-417b-8492-23fd271d81af",
"kind": "facebook_reviews",
"url": "https://www.facebook.com/copperkettleyqr/",
"max_items": 2,
"partial": false,
"machine": {
"total_items": 2,
"items": [
{
"id": "UzpfSTEwMDAwODg0Mjg0MTAzMDozNDMzNTYyNDMzNjE1MTUxOjM0MzM1NjI0MzM2MTUxNTE=",
"date": "2024-09-11T17:57:58.000Z",
"is_recommended": true,
"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.",
"tags": ["Child-friendly", "Fast delivery", "Cosy atmosphere"],
"author": { "name": "Daniel", "profile_url": "https://www.facebook.com/…" },
"likes_count": 0,
"comments_count": 0,
"photos": [],
"comments": [],
"page_url": "https://www.facebook.com/copperkettleyqr"
},
{
"id": "UzpfSTUyNTU3NTA0MzoxMDE1OTM2NzE2MzM2NTA0NDoxMDE1OTM2NzE2MzM2NTA0NA==",
"date": "2024-04-11T17:40:55.000Z",
"is_recommended": false,
"text": "Normally the food from here is really good but we got pizza last night and it was somewhere in the range of sub par to just really not good. The whole thing was barely cooked and was so soggy. …",
"tags": [],
"author": { "name": "Jay", "profile_url": null },
"likes_count": 1,
"comments_count": 2,
"photos": [],
"comments": [
{
"text": "Thank you for sharing your feedback with us, Jay. We're sorry to hear that your recent experience with our pizza was disappointing. …",
"date": "2024-04-15T14:44:58.000Z",
"author_url": "https://www.facebook.com/copperkettleyqr",
"likes_count": 0
}
],
"page_url": "https://www.facebook.com/copperkettleyqr"
}
],
"errors": []
},
"total_points": 10
}How to run it
The same lookup works from the app, the API, or as a tool an agent can call mid-task.
This endpoint is synchronous: the call blocks until the lookup completes and returns the records directly. If a lookup hits its time budget before finishing, the response comes back with partial: true and whatever it collected so far — re-run with a smaller max_items for a complete result. url is required. Optional: max_items (1-1,000, default 20), newer_than (a date or a period like 3 months).
curl -X POST https://api.neuralverge.ai/functions/v1/run-facebook-reviews \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://www.facebook.com/copperkettleyqr/", "max_items": 20 }'What teams use it for
Where this field shows up in an actual workflow.
Watch how recommendations for a business or chain change over time.
Compare what customers praise and criticise across local competitors.
See whether and how a business replies to negative reviews.
Collect the tags and words customers use about a category of business.
Coverage, freshness and limits
What this source covers, how fresh it is, and where it stops.
Reviews on public Facebook pages that have reviews switched on.
Read at request time.
This source returns publicly visible content, which can include the names and words of private individuals. Use it for legitimate business purposes under your own lawful basis, honour deletion and opt-out requests, and check the acceptable use policy for what is out of bounds. Every record is stamped with the URL it was read from and a session id you can trace.
- —Facebook reviews are recommend / don't recommend, not star ratings — don't mix them with 1-5 scores without converting.
- —Pages can switch reviews off, in which case there is nothing to return.
- —Reviews are self-selected and over-represent strong opinions in both directions.
Questions, answered
Yes — every Data Source endpoint, including this one, is synchronous: the lookup runs inside the request and the result comes back in the same response, no polling. If a lookup hits its time budget before finishing, the response comes back with partial: true and whatever records it collected so far — re-run with a smaller max_items to get a complete result instead of a partial one.
Related sources
Try facebook reviews on your own data
One request format across every source in the catalog.