Facebook Pages API and MCP — Page Profile, Followers & Contacts
Send a Facebook page URL, name or ID and this source returns the page's public profile as data: name, categories, intro, followers and following, recommendation rating, email, phone, address, websites, linked Instagram, price range, services, opening hours, creation date and whether the page is running ads.
- You send
- A Facebook page URL, page name or page ID
- You get back
- The page profile with categories, audience, rating, contacts and ad status
- Coverage
- Public Facebook pages, worldwide.
- Price
- 15 points per returned page — $15 per 1,000
- Billed per page actually returned. A page that cannot be found or is not public 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 |
|---|---|---|---|
| Opening pages by hand | Visit each page, copy the About section into a sheet | Free, and slow past a handful | Fine for one page, not for a list of hundreds |
| Meta's Graph API | Create an app, request permissions, pass app review | Free, gated by review | Built for pages you manage; reading arbitrary public pages is tightly restricted |
| NeuralVerge | One request per page | $15 per 1,000, misses not billed | Returns what the page owner publishes — fields they left empty come back null |
What you get back
Every field in the example response below.
| Field | Type | Description |
|---|---|---|
partial | boolean | True if the lookup hit its time budget and stopped early. |
total_items | number | How many pages came back. |
items[].id | string | Facebook's numeric page ID. |
items[].name | string | Page name as displayed. |
items[].username | string | The page's vanity name, when it has one. |
items[].category | string | Primary page category, e.g. Government organization or Pizza place. |
items[].intro | string | The page's intro text. |
items[].followers | number | Follower count at read time. |
items[].followings | number | How many accounts the page follows. |
items[].rating_overall | number | null | Share of reviewers who recommend the page, as a percentage. |
items[].rating_count | number | null | How many recommendations the rating is based on. |
items[].email | string | null | Public contact email. |
items[].phone | string | null | Public contact phone number. |
items[].address | string | null | Public street address. |
items[].websites | array | Websites and other links listed on the page. |
items[].instagram | array | Linked Instagram accounts. |
items[].price_range | string | null | Price range the business lists, e.g. $$. |
items[].services | string | null | Services the business lists. |
items[].business_hours | string | null | Opening-hours status at read time. |
items[].creation_date | string | When the page was created. |
items[].ad_status | string | Whether the page is currently running ads. |
items[].ad_library_id | string | The page's ID in the public ad library. |
items[].latest_posts | array | Recent posts, when the page shows them. |
Example response
A real response, as returned.
{
"session_id": "4d639b38-62cf-414d-a89b-74314dbe328d",
"kind": "facebook_pages",
"url": "https://www.facebook.com/NASA/",
"partial": false,
"machine": {
"total_items": 1,
"items": [
{
"id": "100044561550831",
"name": "NASA - National Aeronautics and Space Administration",
"username": "NASA",
"url": "https://www.facebook.com/NASA/",
"category": "Government organization",
"categories": ["Page", "Government organization"],
"intro": "Explore the universe and discover our home planet. There's space for everybody. ✨",
"followers": 28741734,
"followings": 52,
"rating": null,
"rating_overall": null,
"rating_count": null,
"email": "public-inquiries@hq.nasa.gov",
"phone": null,
"address": null,
"websites": [
"https://www.nasa.gov/nasa-app/",
"https://www.nasa.gov/"
],
"instagram": [],
"price_range": null,
"services": null,
"business_hours": null,
"creation_date": "March 4, 2009",
"is_verified": false,
"ad_status": "This Page isn't currently running ads.",
"ad_library_id": "54971236771",
"latest_posts": [],
"source_url": "https://www.facebook.com/NASA/"
}
],
"errors": []
},
"total_points": 15
}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 and accepts a page URL, a page name or a numeric page ID.
curl -X POST https://api.neuralverge.ai/functions/v1/run-facebook-pages \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://www.facebook.com/NASA/" }'What teams use it for
Where this field shows up in an actual workflow.
Fill in phone, address, hours and price range for businesses whose website says little.
Use followers, page age and ad status to tell an active business from a dormant one.
Find which pages are running ads right now — a sign of marketing budget.
Connect a business to its website and Instagram account in one lookup.
Coverage, freshness and limits
What this source covers, how fresh it is, and where it stops.
Public Facebook pages, worldwide.
Read at request time.
This source returns what a business or organisation publishes on its own public page, stamped with the URL it was read from and a session id you can trace.
- —Fields the owner never filled in come back null — large organisations often list no phone or address.
- —Personal profiles are not pages; this source is for business, brand and organisation pages.
- —Follower counts are what Facebook displays, which can be rounded for very large pages.
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 pages on your own data
One request format across every source in the catalog.