nvNeuralVerge
Social media

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.
Comparison

Ways to get this data

Three approaches teams use today, and where each one runs into trouble.

ApproachWhat it takesCostTrade-off
Reading reviews by handOpen the Reviews tab and scrollFree, and slowNo way to track many locations or competitors
A reputation management toolConnect the pages you ownMonthly per-location pricingBuilt for your own pages, not for reading competitors'
NeuralVergeOne request per page$5 per 1,000, misses not billedReviews are self-selected and skew toward strong opinions
Response

What you get back

Every field in the example response below.

FieldTypeDescription
total_itemsnumberHow many reviews came back.
items[].idstringFacebook's review ID.
items[].urlstringDirect link to the review.
items[].datestringWhen the review was posted (ISO 8601).
items[].is_recommendedbooleanWhether the reviewer recommends the page.
items[].textstringReview text.
items[].tagsarrayTags the reviewer picked, e.g. Cosy atmosphere.
items[].authorobjectReviewer: id, name and profile link.
items[].likes_countnumberLikes on the review.
items[].comments_countnumberComments on the review.
items[].photosarrayPhotos attached to the review.
items[].commentsarrayComments on the review, including the page's reply.
items[].page_urlstringThe page that was reviewed.
Response

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
}
Integration

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 }'
Use cases

What teams use it for

Where this field shows up in an actual workflow.

Local reputation tracking

Watch how recommendations for a business or chain change over time.

Competitor benchmarking

Compare what customers praise and criticise across local competitors.

Response-quality audits

See whether and how a business replies to negative reviews.

Voice of customer

Collect the tags and words customers use about a category of business.

Coverage & limits

Coverage, freshness and limits

What this source covers, how fresh it is, and where it stops.

Coverage

Reviews on public Facebook pages that have reviews switched on.

Freshness

Read at request time.

Handling

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.

What it will not do
  • —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.
FAQ

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

Related sources

Try facebook reviews on your own data

One request format across every source in the catalog.

Get started