Skip to main content
POST
Use this endpoint when you have a person’s LinkedIn profile URL, or their name and their company’s domain, but not their email address. Send linkedin_url on its own, or first_name, last_name, and domain. OrbiSearch returns the deliverable address if one exists, together with the same enrichment fields as /v1/verify. This endpoint is credit-metered. On an unlimited plan, use POST /v1/unlimited/email-lookup instead (same request and response shape). The response returns status: safe when a deliverable address is found (substatus: deliverable, email set), or status: unknown otherwise, with substatus: no_address_found if we couldn’t find one, or substatus: timeout if the search did not complete within the time budget. A search by LinkedIn URL can also return profile_not_found, no_current_employer or no_company_website; see the email finder guide.

Pricing and refund behavior

  • Each search costs 1 credit.
  • Every returned response is charged, including profile_not_found, no_current_employer, no_company_website and status: unknown / substatus: timeout (the search ran but did not complete within your timeout value). For best results, use the bulk email finder where possible, as it allows more time per entry.
  • Refunds are issued only when OrbiSearch infrastructure cannot complete the request (502). Retry the request.

Rate limits

This endpoint shares the 20 requests per second per account limit with /v1/verify and /v1/bulk. Exceeding it returns a 429 Too Many Requests response. See errors for how to handle rate limit responses.

Authorizations

X-API-Key
string
header
required

API key for authentication

Body

application/json

Find a deliverable email from a LinkedIn profile URL, or a name and company domain.

first_name
string
default:""

Person's first name. Optional individually, but provide at least one of first or last name.

Maximum string length: 255
Example:

"Jane"

last_name
string
default:""

Person's last name. Optional individually, but provide at least one of first or last name.

Maximum string length: 255
Example:

"Doe"

domain
string
default:""

Company domain to search within. Required unless a linkedin_url is provided.

Maximum string length: 255
Example:

"acme.com"

linkedin_url
string | null

LinkedIn profile URL to find a work email for. Provide this instead of first_name, last_name and domain.

Maximum string length: 2048
Example:

"https://www.linkedin.com/in/jane-doe"

timeout
integer
default:97

Search timeout in seconds (30–97).

Required range: 30 <= x <= 97
Example:

97

Response

Successful Response

Email finder result: the best deliverable email found for a LinkedIn profile URL or a (first_name, last_name, domain).

status
enum<string>
required

Search status: safe (a deliverable address was found and is in the email field) or unknown (no deliverable address was found, or the search timed out; the email field is null).

Available options:
safe,
unknown
Pattern: ^(safe|unknown)$
Example:

"safe"

explanation
string
required

Plain-English explanation of the search result.

Example:

"Safe to email. The mailbox exists and is deliverable."

email_provider
string
required

Email service provider of the returned address (Google Workspace, Microsoft Outlook, etc.).

Example:

"Google Workspace"

credits_consumed
integer
required

Credits charged for this search: 1 on pay-as-you-go keys, 0 on unlimited plans (no credits move).

Example:

1

first_name
string | null

The first name searched. Null when the request supplied none and none could be determined.

Example:

"Jane"

last_name
string | null

The last name searched. Null when the request supplied none and none could be determined.

Example:

"Doe"

domain
string | null

The company's website domain. Null when the request supplied none and none could be determined.

Example:

"acme.com"

email_domain
string | null

The domain searched for the email address. Null when the request supplied no domain.

Example:

"acme.com"

linkedin_url
string | null

The LinkedIn profile URL this result is for. Null for a request that did not supply one.

Example:

"https://www.linkedin.com/in/jane-doe"

email
string | null

The deliverable email address discovered for this person at this domain. Null when no deliverable address could be confirmed.

Example:

"jane.doe@acme.com"

substatus
enum<string>

Specific reason for the status. deliverable: a deliverable address was found (only with status=safe). no_address_found: no deliverable address was found for this person at this domain. profile_not_found: the URL supplied is a correctly formed LinkedIn profile URL but not a valid profile, for example mistyped or no longer in use. no_current_employer: we couldn't identify a current employer for this person. no_company_website: the person has a current employer, but we couldn't identify a company website for it, so there was no domain to search; if you know the company's website, search for the person by name and domain instead. invalid_linkedin_url: the value supplied is not a LinkedIn profile URL at all, for example a company page URL or plain text (bulk only; a single search rejects such a URL with 422). temporarily_unavailable: we could not complete this search and the row should be resubmitted. timeout: the caller's timeout parameter exhausted before the search completed (only returned from /v1/email-lookup, never from /v1/bulk-lookup, since bulk searches have no caller-tunable timeout). Every substatus is billable except invalid_linkedin_url, which costs nothing: a submit is only refunded when OrbiSearch cannot accept the submission itself.

Available options:
deliverable,
no_address_found,
timeout,
profile_not_found,
no_current_employer,
no_company_website,
invalid_linkedin_url,
temporarily_unavailable
Pattern: ^(deliverable|no_address_found|timeout|profile_not_found|no_current_employer|no_company_website|invalid_linkedin_url|temporarily_unavailable)$
Example:

"deliverable"

confidence
integer | null

How certain we are in the verdict on a 0–100 scale. See EmailVerificationResponse.confidence for the full scale.

Required range: 0 <= x <= 100
Example:

99

full_name
string | null

The person's full name. Null for a search by name and domain, or when it could not be determined.

Example:

"Jane Doe"

employer_name
string | null

The person's current employer. Null for a search by name and domain, or when it could not be determined.

Example:

"Acme"

employer_linkedin_url
string | null

LinkedIn URL of the person's current employer. Null for a search by name and domain, or when it could not be determined.

Example:

"https://www.linkedin.com/company/acme"

all_emails
EmailLookupFoundEmail · object[] | null

Every work email found for this person. Null for a search by name and domain.

mx_record
string | null

The main mail server the domain uses to receive email. Null if the domain has no mail server configured.

Example:

"aspmx.l.google.com"

is_domain_catch_all
boolean | null

True if the domain accepts mail for any username (catch-all). Null if we could not determine whether the domain is catch-all.

Example:

false

is_secure_email_gateway
boolean
default:false

True if the domain is protected by a secure email gateway: Proofpoint, Mimecast, Barracuda, or Trend Micro.

Example:

false

is_disposable
boolean | null

True if this is a temporary/disposable email service, false if not, null if unknown.

Example:

false

is_role_account
boolean | null

True if this is a generic role-based email (info@, support@, etc.), false if not, null if unknown.

Example:

false

is_free
boolean | null

True if this is from a free email provider (gmail.com, yahoo.com, etc.), false if not, null if unknown.

Example:

false