nvNeuralVerge
Social media

Facebook Search API and MCP — Find Pages, Posts and Reels by Keyword

Send a keyword — and optionally a location — and this source searches Facebook for pages, profiles, posts or reels. Page results carry the page profile fields (intro, followers, rating, contacts where shown); post and reel results carry the text and engagement.

You send
A keyword, an optional location and a search type
You get back
Matching pages, profiles, posts or reels
Coverage
Public Facebook pages, profiles, posts and reels that Facebook's search returns.
Price
10 points per returned result, up to 1,000 per request — $10 per 1,000
Billed per result actually returned, capped by max_items. A search that matches nothing costs nothing.
Comparison

Ways to get this data

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

ApproachWhat it takesCostTrade-off
Searching by handType a term, scroll, copy what comes upFree, and slowFine for one search, not for a city-by-city list
Meta's Graph APIApp review and permissionsFree, gatedPublic page search is heavily restricted
NeuralVergeOne request per keyword$10 per 1,000, misses not billedReturns what Facebook's search returns — keyword matching is loose, so expect some off-target results
Response

What you get back

Every field in the example response below.

FieldTypeDescription
querystringThe keyword searched.
locationstringThe location the search was narrowed to, if any.
search_typestringpages, pages-google, profiles, posts or reels.
total_itemsnumberHow many results came back.
items[].result_typestringWhat the result is: page, profile, post or reel.
items[].idstringFacebook's ID for the result.
items[].namestringPage or profile name.
items[].urlstringLink to the page, profile, post or reel.
items[].introstring | nullPage intro text, for page results.
items[].followersnumber | nullFollowers, where search shows them.
items[].is_verifiedbooleanWhether the page is verified.
Response

Example response

A real response, as returned.

{
  "session_id": "32d761e9-b344-4032-aa89-d06dd58fac4d",
  "kind": "facebook_search",
  "query": "coffee roaster",
  "location": "Portland",
  "search_type": "pages",
  "max_items": 2,
  "partial": false,
  "machine": {
    "total_items": 2,
    "items": [
      {
        "result_type": "page",
        "id": "100057940755013",
        "name": "Portland",
        "url": "https://www.facebook.com/PortlandBelgium",
        "intro": "🍾✨ 'CHAMPAIN' out NOW 💫🍾 https://linktr.ee/portlandsounds ☼ @Portlandsounds ☼",
        "followers": null,
        "email": null,
        "phone": null,
        "is_verified": true,
        "source_url": "https://www.facebook.com/search/top?q=coffee%20roaster%20Portland"
      },
      {
        "result_type": "page",
        "id": "100068645211226",
        "name": "East Portland Coffee Roasters",
        "url": "https://www.facebook.com/people/East-Portland-Coffee-Roasters/100068645211226/",
        "intro": "24-hour single origin coffee roasters, at the corner of Division and 79th, right across from Portland Community College. Great food and drinks besides!",
        "followers": null,
        "email": null,
        "phone": null,
        "is_verified": false,
        "source_url": "https://www.facebook.com/search/top?q=coffee%20roaster%20Portland"
      }
    ],
    "errors": []
  },
  "total_points": 20
}
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. query is required. Optional: location (e.g. New York), search_type (pages, pages-google, profiles, posts or reels; default pages), max_items (1-1,000, default 20).

curl -X POST https://api.neuralverge.ai/functions/v1/run-facebook-search \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "query": "coffee roaster", "location": "Portland", "search_type": "pages", "max_items": 20 }'
Use cases

What teams use it for

Where this field shows up in an actual workflow.

Local business discovery

Build a list of businesses of a type in a city, then pull their contacts.

Topic monitoring

Search posts or reels for a brand, product or topic to see what's being published.

Competitor mapping

Find every page in a niche you didn't know about.

Agent research step

Let an agent find the right page before it reads posts or reviews.

Coverage & limits

Coverage, freshness and limits

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

Coverage

Public Facebook pages, profiles, posts and reels that Facebook's search returns.

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
  • —Keyword matching is loose — in the sample above, a band named Portland comes back for 'coffee roaster' in Portland. Filter results downstream.
  • —Search results carry fewer fields than a full page lookup; contacts and follower counts are often empty until you resolve the page.
  • —Results and their order reflect Facebook's own search ranking.
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 search on your own data

One request format across every source in the catalog.

Get started