RealtimeBulkE-mail input

Check if an e-mail address has a Facebook account

Find out in real time whether an e-mail address is associated with a Facebook account. Yes, no or unknown; no names or profiles; unknowns are free.

$0.006 per check real-time, $0.0035 in bulk ($6.00 / $3.50 per 1,000). Unknowns are free. Try 10 e-mail addresses for real, free, after sign-up.

Start free

Last updated

The Facebook e-mail check answers whether an e-mail address is associated with a Facebook account. It runs in real time and in bulk jobs, and returns registered: true, false or null (unknown), with the time we checked. Nothing is sent to the address, and no name, photo or profile is ever returned.

What does the Facebook e-mail check tell you?

It tells you whether Facebook has an account that uses this e-mail address, either for sign-in or as a contact address. Facebook lets people register and sign in with an e-mail address or a mobile number. This page covers e-mail. The Facebook number check covers phone numbers.

  • registered: true: a Facebook account is associated with the address.
  • registered: false: a conclusive "no account".
  • registered: null: no conclusive answer (status and reason say why), not charged.

Messenger conversations run on Facebook accounts. Instagram accounts are separate, even when they are linked through Meta's Accounts Center, so Instagram has its own e-mail check.

Who uses it, and why?

  • Sign-up and fake-account screening. Communities, marketplaces and apps use a "yes" as a sign that an address has a history outside their own service. A fabricated address usually doesn't. See OTP and sign-up fraud.
  • Lead verification. A form lead whose address has no mailbox and no account on any large platform is often invented. See lead verification.

What do you get back?

FieldTypeMeaning
email, email_statusstring, enumNormalized address; valid, invalid_email, duplicate or suppressed
checks["facebook.email"].registeredboolean or nulltrue account exists, false none, null unknown
…status, …reasonenum, stringOutcome, and why an answer is not conclusive
…confidence, …checked_atenum, timestampHow sure the answer is, and when it was obtained
…cached, …billedbooleanCache hit, and whether it was charged

How is it billed?

You pay per address with a conclusive answer. Real-time and bulk have separate prices, shown on pricing. You're not charged for inconclusive results (unknown, unsupported country, timeout, invalid, duplicate). Cache hits inside the freshness window are free.

What are the limits?

The check runs in real time (POST /v1/lookup, up to 100 numbers and e-mails) and in bulk jobs (POST /v1/jobs, up to 50,000). Use the code facebook.email. The alias facebook means the phone-number check. A request can hold up to 20 checks. Requests that look like sequential number ranges or generated e-mail lists are rejected: 20 or more addresses in one request on one domain that differ only by digits or separators, or, with live keys, 50 or more of one such pattern per account per UTC day.

How do I use it responsibly?

Use the check for fraud prevention and data quality on addresses your users gave you. We never read mailboxes or send e-mail to the address, and the answer is only yes, no or unknown. Don't use it to find someone's social media presence or to build audiences. The acceptable use policy forbids profiling individuals and unsolicited messaging. People can object through the opt-out form.

Example request

curl https://api.mobilevalidate.com/v1/lookup \
  -H "Authorization: Bearer mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym" \
  -H "Content-Type: application/json" \
  -d '{"emails":["registered@test.mobilevalidate.com"],"checks":["facebook.email"]}'

Runs as pasted with the public sandbox key, which answers the test values only. In the SDKs, omit the key to use MOBILEVALIDATE_API_KEY.

Response (excerpt, test mode: the first item of results):

JSON
{
  "kind": "email",
  "input": "registered@test.mobilevalidate.com",
  "email": "registered@test.mobilevalidate.com",
  "email_status": "valid",
  "e164": null,
  "country": null,
  "checks": {
    "facebook.email": {
      "service": "facebook.email",
      "status": "completed",
      "registered": true,
      "attributes": null,
      "confidence": "high",
      "confidence_score": 0.99,
      "checked_at": "2026-09-25T14:25:46.234Z",
      "cached": false,
      "age_seconds": 0,
      "billed": false,
      "reason": null,
      "poll_after_ms": null
    }
  },
  "test": true
}

Try it now

Run it here with a test value: the console calls the live API from your browser with the public sandbox key and shows the real JSON and a plain-English verdict.

POST /v1/lookup

Public sandbox key · test values only · never billed

The sandbox answers the test values below. To check your own numbers for real, create a free account: your first 20 phone numbers and 10 e-mail addresses are free.

Test numbers
Test e-mails
Checks · e-mail · 1 selected

Pick a test value or press Run

Press Run or pick a test value above: the console sends a real request to the API with the public sandbox key and shows the answer here.

Check your own addresses: 20 phone numbers and 10 e-mail addresses are checked for real, free, after sign-up. Start free

checks: ["facebook.email"] · Realtime lookup via POST /v1/lookup. Every example runs as pasted: it uses the public sandbox key, which answers the test values for free. In the SDKs, omit the key to use MOBILEVALIDATE_API_KEY.

curl https://api.mobilevalidate.com/v1/lookup \
  -H "Authorization: Bearer mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym" \
  -H "Content-Type: application/json" \
  -d '{"emails":["registered@test.mobilevalidate.com"],"checks":["facebook.email"]}'

Real test-mode result for this check

checks["facebook.email"]
{
  "service": "facebook.email",
  "status": "completed",
  "registered": true,
  "attributes": null,
  "confidence": "high",
  "confidence_score": 0.99,
  "checked_at": "2026-09-25T14:25:29.021Z",
  "cached": false,
  "age_seconds": 0,
  "billed": false,
  "reason": null,
  "poll_after_ms": null
}

What you get

Fields of checks["facebook.email"], generated from the public service catalog.

FieldTypeMeaning
registeredboolean | nulltrue = found, false = not found, null = unknown (not charged).
statusenumcompleted, pending, unknown, unsupported_country or failed.
checked_attimestampWhen the answer was obtained.

Frequently asked questions

Does the check return the Facebook profile?

No. It only answers whether a Facebook account is associated with the address: yes, no or unknown. No name, photo, profile link or friends list is ever returned.

Does the person get notified?

No. MobileValidate sends nothing to the address and never contacts the person; the check is designed not to alert them and we never access the account. How the platform itself records queries is outside our control.

Is a Facebook account the same as a Messenger or Instagram account?

Messenger uses Facebook accounts. Instagram accounts are separate, even though they can be linked to a Facebook account in Meta's Accounts Center. Use the Instagram e-mail check for Instagram.

What does an unknown answer cost?

Nothing. Inconclusive answers are never charged.

Is there a free facebook account check by e-mail?

Yes, to try it on your own data: create a free account and check up to 10 e-mail addresses for real on the dashboard's Try it page, at no cost. Test mode with documented test values is free and unlimited. After that, a facebook account check by e-mail costs $0.006 per check in real time ($6.00 per 1,000) and $0.0035 in bulk jobs ($3.50 per 1,000), paid from prepaid credit. Unknown and other inconclusive results are always free.

Add Facebook account check by e-mail to your stack

Create a free MobileValidate account: approved automatically, usually within 10–15 minutes. Facebook account check by e-mail: $0.006 per check real-time, $0.0035 in bulk ($6.00 / $3.50 per 1,000).

Free to start: check 20 phone numbers and 10 e-mail addresses for real on your account, plus an unlimited test mode. You pay only for conclusive answers, from $20.