Skip to Content
REST APIEndpointsFind Work Email

Find Work Email

Give it a LinkedIn URL — or a name and a company domain — and get back the person’s business email address.

Endpoint
POST /v1/api/enrich/work-email
Cost
1 credit per email found
Required input
linkedin_url, or first_name + last_name + domain
Returns
Work email address

What it does

  • Runs waterfall enrichment across several email providers and stops at the first that returns an address.
  • Accepts two identifier routes: a LinkedIn profile URL, or first name + last name + company domain. Use whichever you have; send both when you can.
  • Charges 1 credit only when an email is found. A miss is free.
  • Finds an address; it does not check deliverability. Follow up with verify-email before you send.

Same lookup as the find_work_email MCP tool.


Request body

FieldTypeRequiredNotes
linkedin_urlstringOne routeThe strongest identifier — most providers match on it directly. Max 2048 characters.
first_namestringOther routeRequired with last_name and domain when there is no LinkedIn URL. Max 256.
last_namestringOther routeRequired with first_name and domain when there is no LinkedIn URL. Max 256.
domainstringOther routeCompany domain, e.g. stripe.com. Also worth sending alongside a LinkedIn URL — it unlocks extra providers. Max 256.
organization_namestringNoCompany name, e.g. Stripe. A weaker stand-in for domain — only some providers accept it. Max 256.

The request is valid when it has either linkedin_url or first_name + last_name + (domain or organization_name). Anything less is a 400.


Examples

# By LinkedIn URL curl https://api.syncgtm.com/v1/api/enrich/work-email \ -H "Authorization: Bearer $SYNCGTM_API_KEY" \ -H "Content-Type: application/json" \ -d '{"linkedin_url": "https://www.linkedin.com/in/janedoe"}' # By name and company domain curl https://api.syncgtm.com/v1/api/enrich/work-email \ -H "Authorization: Bearer $SYNCGTM_API_KEY" \ -H "Content-Type: application/json" \ -d '{"first_name": "Jane", "last_name": "Doe", "domain": "stripe.com"}'

Response

{ "status": "found", "data": { "email": "jane@stripe.com" } }
{ "status": "not_found", "data": null }
FieldTypeNotes
statusstringfound or not_found
data.emailstringThe work email. Present only when status is found.

Tips

  • Send everything you have. A LinkedIn URL plus domain reaches more providers than either alone, and costs the same.
  • Prefer domain over organization_name. “Stripe” is ambiguous; stripe.com is not.
  • Suppress before you call. Skip contacts that already have an email in your CRM — filtering is free, re-buying an address is not.
  • Never fill a miss with a guessed pattern. A fabricated first.last@company.com bounces like a fake and hurts your sending domain.

No LinkedIn URL and no domain? Look the company up first, or fall back to the MCP tool scrape_emails_from_website for a generic inbox.


Errors

StatuscodeTypical cause
400invalid_requestNeither identifier route is complete
402insufficient_creditsBalance below 1 credit

All codes are on the Errors page.


EndpointUse it instead when
personal-emailYou need a personal address — 3 credits
verify-emailYou already have the email and need deliverability — 0.2 credits