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

Canonical: https://mobilevalidate.com/services/facebook-email-check · Last updated: 2026-09-25

![An e-mail envelope routed to mail servers found in DNS; two mailboxes are confirmed and one answer is unknown.](https://mobilevalidate.com/images/email-mailbox-verification.svg)

*E-mail checks look up the domain's mail servers, then whether the mailbox exists.*


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](/services/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](/services/instagram-email-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](/use-cases/otp-and-signup-fraud).
- **Lead verification.** A form lead whose address has no mailbox and no account on any large platform is often invented. See [lead verification](/use-cases/lead-verification).

## What do you get back?

| Field | Type | Meaning |
|---|---|---|
| `email`, `email_status` | string, enum | Normalized address; `valid`, `invalid_email`, `duplicate` or `suppressed` |
| `checks["facebook.email"].registered` | boolean or null | `true` account exists, `false` none, `null` unknown |
| `…status`, `…reason` | enum, string | Outcome, and why an answer is not conclusive |
| `…confidence`, `…checked_at` | enum, timestamp | How sure the answer is, and when it was obtained |
| `…cached`, `…billed` | boolean | Cache 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](/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](/legal/acceptable-use) forbids profiling individuals and unsolicited messaging. People can object through the [opt-out form](/opt-out).

## Example request

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

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

## 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. Nothing is sent to the address and no action is taken on the account.

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

## Service code and modes

- Code: `facebook.email` (input: e-mail address)
- Modes: realtime and bulk · worldwide

## Price (live)

- Realtime (POST /v1/lookup): $0.003 per check ($3.00 per 1,000)
- Bulk (POST /v1/jobs): $0.0015 per check ($1.50 per 1,000)
- You're not charged for inconclusive results (unknown, unsupported country, timeout, invalid, duplicate).

## Response fields (from the public catalog)

| Field | Type | Meaning |
|---|---|---|
| registered | boolean or null | true = found, false = not found, null = unknown (not charged) |
| status | enum | completed, pending, unknown, unsupported_country, failed |
| checked_at | timestamp | When the answer was obtained |

_Platform and brand names are used only to describe which service a check refers to. MobileValidate is not affiliated with, endorsed by or sponsored by any of these companies; all trademarks belong to their owners._
