EmailFindings

A work email lookup for one person. An object rather than a bare string, because an address is the end of a process that can succeed, half-succeed, honestly fail, or never have started.

Returned byProfile.emailsProfileStub.emails

Fields #

FieldTypeNotes
statusstringThe field to branch on. found - a mailbox that answered, real as far as SMTP can establish; charged. catch_all - the domain accepts every address put to it, so email is our best-ranked guess and the server accepting it means nothing; charged, and treating it as found is how you bounce. not_found - the domain answered honestly and rejected everything tried, which is a fact about this person rather than about us; charged, because a customer who stops paying for "no" starts being told "maybe". unresolved - we never got to ask, and reason says why; not charged.
reasonstringWhy the lookup did not happen. Present on unresolved only. no_current_employer - the profile lists no current role, and a past one is never used: it would produce a deliverable address at a place they have left, which is worse than no address because nothing downstream can tell it from a good one. no_company_domain - we could not get a mail domain for their employer; send domain on the target if you know it. name_is_not_usable - nothing an address can be built from survived their name field. lookup_failed - ours, not yours; retry the target. email_finding_is_not_available - not enabled on this deployment.
emailstringThe best candidate. Set for found and catch_all only - and on catch_all it is a ranked guess rather than a verified mailbox, which is what the status is telling you.
patternstringThe template the address came from, in the conventional notation. Worth more than the address itself: it is the company's house style, which is how you derive a colleague we were never asked about.
candidatesEmailCandidate[]Every address worth looking at, best first. Addresses the mail server flatly rejected are not listed, because a list of rejections is not something you can act on. It is here because a catch-all domain is a judgement call belonging to whoever is about to send the mail, and they cannot make it from one address.
domainstringWhat the addresses were built on. Published because an address on the wrong domain is otherwise indistinguishable from a bad guess on the right one - and because if you disagree with it, you can send domain on the target next time.
checked_atstring (RFC 3339)When the lookup ran.

Absent is not null: a field we did not get is omitted rather than sent as an empty string, so you can tell "LinkedIn does not have this" from "this person left it blank".

Sample #

JSON
{
  "status": "found",
  "email": "[email protected]",
  "pattern": "{first}.{last}@{domain}",
  "domain": "microsoft.com",
  "candidates": [
    {
      "email": "[email protected]",
      "pattern": "{first}.{last}@{domain}",
      "status": "deliverable"
    },
    {
      "email": "[email protected]",
      "pattern": "{f}{last}@{domain}",
      "status": "unknown"
    }
  ],
  "checked_at": "2026-09-01T10:00:06Z"
}