nvNeuralVerge
Social media

Facebook Page Contacts API and MCP — Email, Phone & Address

Send a Facebook page URL, name or ID and this source returns the contact block the page publishes: email, phone, websites, street address, linked Instagram, plus categories, followers, recommendation rating, price range, services and creation date.

You send
A Facebook page URL, page name or page ID, plus an optional language
You get back
Email, phone, websites, address and the page's profile fields
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.
Comparison

Ways to get this data

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

ApproachWhat it takesCostTrade-off
Copying contacts by handOpen each page's About tab, copy email and phoneFree, and slowError-prone at any real volume
A bought B2B contact listA purchase and an importPer-record or annual pricingSmall local businesses are thinly covered, and the list ages from the day you buy it
NeuralVergeOne request per page$15 per 1,000, misses not billedOnly what the business chose to publish — no inferred or guessed contacts
Response

What you get back

Every field in the example response below.

FieldTypeDescription
languagestringLocale the page data was read in, e.g. en-US.
total_itemsnumberHow many pages came back.
items[].namestringPage name as displayed.
items[].categorystringPrimary page category.
items[].emailstring | nullPublic contact email.
items[].phonestring | nullPublic contact phone number.
items[].addressstring | nullPublic street address.
items[].address_urlstring | nullMap link for the address.
items[].websitesarrayWebsites and other links listed on the page.
items[].instagramarrayLinked Instagram accounts.
items[].followersnumberFollower count at read time.
items[].ratingstring | nullRecommendation summary, e.g. 94% recommend (201 reviews).
items[].rating_overallnumber | nullShare of reviewers who recommend the page.
items[].rating_countnumber | nullNumber of recommendations.
items[].price_rangestring | nullPrice range the business lists.
items[].servicesstring | nullServices the business lists.
items[].business_hoursstring | nullOpening-hours status at read time.
items[].creation_datestringWhen the page was created.
items[].ad_statusstringWhether the page is currently running ads.
Response

Example response

A real response, as returned.

{
  "session_id": "0d85735b-0322-49ae-ae09-b80da8c0587d",
  "kind": "facebook_page_contacts",
  "url": "https://www.facebook.com/copperkettleyqr/",
  "language": "en-US",
  "partial": false,
  "machine": {
    "total_items": 1,
    "items": [
      {
        "id": "100064027242849",
        "name": "The Copper Kettle Restaurant | Regina SK",
        "username": "copperkettleyqr",
        "url": "https://www.facebook.com/copperkettleyqr/",
        "category": "Pizza place",
        "categories": ["Page", "Pizza place"],
        "intro": "Longstanding local restaurant. Mediterranean specialties, signature gourmet pizzas (Best of YQR for",
        "followers": 3317,
        "followings": 434,
        "rating": "94% recommend (201 reviews)",
        "rating_overall": 94,
        "rating_count": 201,
        "email": "copperkettle.events@gmail.com",
        "phone": "+1 306-525-3545",
        "address": "1953 Scarth Street, Regina, SK, Canada, S4P 2H1",
        "websites": [
          "http://www.thecopperkettle.online/",
          "https://www.instagram.com/copperkettleyqr"
        ],
        "instagram": ["https://www.instagram.com/copperkettleyqr"],
        "price_range": "$$",
        "services": "Outdoor seating",
        "business_hours": "Closed now",
        "creation_date": "October 29, 2014",
        "is_verified": false,
        "ad_status": "This Page is currently running ads.",
        "ad_library_id": "851606664870954",
        "source_url": "https://www.facebook.com/copperkettleyqr/"
      }
    ],
    "errors": []
  },
  "total_points": 15
}
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; language is optional (a locale code such as en-US, de-DE or ja-JP, default en-US).

curl -X POST https://api.neuralverge.ai/functions/v1/run-facebook-page-contacts \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://www.facebook.com/copperkettleyqr/", "language": "en-US" }'
Use cases

What teams use it for

Where this field shows up in an actual workflow.

Local lead lists

Turn a list of business pages into email, phone and address rows.

Data hygiene

Check the contacts in your CRM against what the business publishes today.

Field sales routing

Use the street address to assign local businesses to territories.

Agency prospecting

Spot businesses running ads, or with low recommendation rates, as candidates for an offer.

Coverage & limits

Coverage, freshness and limits

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

Coverage

Public Facebook pages, worldwide.

Freshness

Read at request time.

Handling

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.

What it will not do
  • —Only contacts the business published are returned; many pages list a phone but no email, or neither.
  • —Emails are often generic inboxes (info@, events@), not a named decision-maker.
  • —Opening hours come back as a status at read time, not a full weekly schedule.
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 page contacts on your own data

One request format across every source in the catalog.

Get started