nvNeuralVerge
Data Sources

Email Enrichment API: Turn an Email Address Into a Full Contact Profile

How NeuralVerge's email enrichment API resolves an address into a person — full field list, a real example response, and where each field applies.

Published August 24, 2026

Send an email address in, and the useful answer isn't the address back — it's who it belongs to. That's what an email enrichment API does: resolve a bare address into the person behind it, with their current employer, role, and whatever other contact points are publicly tied to them. It's the reverse of an email finder, which goes the other way — from a name to a likely address — so a workflow that needs both directions needs two different lookups, not one.

What email enrichment actually is

Give NeuralVerge's Email enrichment source one email address, and it returns the person it belongs to: every name they're known by, their current company and position, location, alternate emails and phone numbers, and linked social profiles where they exist — one request, structured JSON, no vendor waterfall to assemble by hand.

It's worth placing next to the two things people confuse it with. An email finder starts from a name and a company and works out a likely address — the opposite starting point. A generic firmographic enrichment tool fills in facts about a company from a domain — headcount, industry, funding — rather than resolving a specific person from their address. Email enrichment is neither of those: it's a person-level reverse lookup, and it's the right tool specifically when what you're holding is an address and what you need is a name.

What data it actually returns

FieldTypeWhat it tells you
full_namesarrayEvery name variant known for the person
genderstringWhere it can be determined
date_of_birthstringWhere it's known — often empty
emailsarrayAll known addresses for the person, not only the one you sent
phonesarrayKnown phone numbers, when any are found
locationsarrayCountry, state, and city
companystringCurrent employer
positionstringCurrent job title
linkedin_profilestringProfessional profile URL, where one is linked
linkedinobjectCompany, title, and profile URL as held on that profile
x_profilestringX profile URL, where one is linked
telegram_usernamestringTelegram handle, where one is linked

How to call it

One request, one email address:

curl -X POST https://api.neuralverge.ai/functions/v1/run-email-enrichment \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "email": "jane.doe@acme.com" }'
import requests

response = requests.post(
    "https://api.neuralverge.ai/functions/v1/run-email-enrichment",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={"email": "jane.doe@acme.com"},
)
print(response.json())

A resolved address returns a response like this:

{
  "session_id": "8b21f4a6-2c9d-4e17-b503-1a8f6d2c9e40",
  "kind": "email_enrichment",
  "email": "jane.doe@acme.com",
  "human": "Jane Doe is VP of Sales at Acme Technologies, based in Austin, Texas.",
  "machine": {
    "full_names": ["Jane Doe", "Jane A. Doe"],
    "gender": "female",
    "emails": ["jane.doe@acme.com", "j.doe@acme.com"],
    "phones": ["+15125550143"],
    "locations": [
      { "country": "US", "state": "TX", "city": "Austin" }
    ],
    "company": "Acme Technologies",
    "position": "VP of Sales",
    "linkedin_profile": "https://linkedin.com/in/example",
    "x_profile": "https://x.com/example"
  },
  "total_points": 10
}

One address per request keeps the call cheap to retry and easy to wire into a signup hook. Every response carries a session id, a readable human summary, and total_points alongside the structured machine object — the same envelope used across the rest of NeuralVerge's source catalog.

Where teams use email enrichment

Enriching an inbound signup

A signup form usually asks for a work email and nothing else, and a bare address on its own doesn't tell a qualification pipeline anything about who's actually behind it. Running the new address through Email enrichment at the moment of signup resolves it to a named, titled lead — company, position, and a LinkedIn profile where one exists — before the record ever reaches a queue. That means the very first time a human looks at the signup, it already reads as "Jane Doe, VP of Sales at Acme Technologies" instead of jane.doe@acme.com.

The mechanism this enables is routing, not just labeling. A pipeline can check the resolved position against a list of decision-maker titles and send a signup from a buying role straight to a sales queue, while routing an individual-contributor signup to self-serve — a distinction a bare address can't support on its own. Because a miss costs nothing, running enrichment on every signup rather than a hand-picked subset is the default, not an optimization worth debating; the only signups that don't get a resolved profile are the ones where no public identity exists to find.

Enriching a purchased or inherited contact list

A list of addresses from a co-marketing partner, an event sponsorship, or an old export rarely comes with names or context attached — it's a column of email strings and nothing else, and working it by hand means opening each one individually just to find out who it belongs to. Running each address through Email enrichment turns that raw list into people: resolved names, employers, and roles, in the same structured shape regardless of how the list originally arrived.

The part worth building around specifically is what the resolved data reveals about the list itself. Comparing the full_names and emails arrays across results surfaces the same person recorded twice under a name variant or a second address — duplication a bare address list would have kept as separate, uncollapsed rows. And addresses that don't resolve at all — generic mailboxes, people with no public professional footprint — are themselves a data-quality signal: a list with an unusually high miss rate is worth treating with more skepticism than one where nearly everything resolves cleanly, before a single outreach message goes out against it.

Completing a CRM record

A CRM record built from a form fill or a manual entry is often missing exactly the fields a rep needs before an outreach — current title, employer, a phone number, a LinkedIn profile. Running the record's email through Email enrichment fills those fields in directly, turning a record that only ever had a name and an address into one with enough context for a rep to open a call already knowing who they're talking to.

This is also one of the few use cases where re-running the same lookup on a schedule is worth doing deliberately, not just once at creation. Because the source reads at request time rather than serving a stale snapshot, periodically re-enriching existing CRM records catches a job change directly — a contact who moved companies six months ago shows up with their new employer and title the next time the record is refreshed, rather than the CRM silently carrying a stale title until someone notices a bounced email or an awkward call.

Identity resolution for agents

An agent working a task mid-conversation — qualifying a lead, drafting outreach, checking a claim — often has an email address and nothing else about the person behind it. Exposing Email enrichment as a tool lets the agent resolve that address into a name, company, and role for itself, at the exact point its own reasoning decides it needs that context, rather than having a human pre-fetch every fact an agent might conceivably need before the conversation even starts.

That difference matters because an agent's information needs aren't known in advance the way a fixed pipeline's are — one conversation might only need a company name, while another needs a title and a LinkedIn profile to personalize a draft. The tool is reachable the same way as everything else in the source catalog, over REST or MCP, so the call fits into an agent's existing reasoning loop without a separate integration, and the agent decides how much of the returned profile it actually needs for the task in front of it.

Fraud prevention

An email address that doesn't resolve to any identifiable person — or resolves to a location that doesn't match what a signup or transaction claims — is a real signal worth weighing before a sensitive action goes through. Running Email enrichment against an address used in an account-recovery flow, a high-value transaction, or a new-account signup surfaces whether a real, findable identity sits behind it, and whether the resolved locations field lines up with what the request itself claims — a password-reset request claiming to be a known customer, resolving to a location on the other side of the world from their account history, is exactly the kind of mismatch worth a second check before access is granted.

It's worth being precise about what this check actually proves, since overstating it is its own risk. A miss doesn't prove fraud — plenty of legitimate people simply don't resolve, especially on personal addresses — and a clean match doesn't rule fraud out either, since a resolved identity can still be a stolen or compromised one. Treat it as one fast, cheap input into a broader risk-scoring pipeline that weighs several signals together, not as a standalone fraud verdict a system should act on in isolation.

What to check before you commit to an email enrichment API

  • Does it resolve at request time, or serve from a stale database? A person's job rarely stays fixed for long — a database snapshot ages the moment it's written.
  • Does it bill on a miss, or only a resolved match? Running enrichment against a list of unknown quality is a different cost proposition depending on the answer — NeuralVerge only bills on a match.
  • What comes back for a private or unresolved address? An honest empty result is worth more than a plausible-looking guess dressed up to look complete.
  • Does the response fit into the rest of your data pipeline? A source that returns a different shape from everything else you call is one more parser to maintain.

Running a real, messy batch of addresses through a candidate source — including the ones you already expect to miss — is a faster way to judge fit than reading a features page.

Frequently asked questions

How is this different from an email finder?

Opposite directions. An email finder takes a person's name and a company and produces a likely address. This email enrichment API takes an address you already have and returns the person behind it — name, employer, role, and other contact points. If you need to go the other way, from a name to an address, that's a separate lookup.

What happens when an address doesn't resolve to anyone?

The response comes back with nothing to report rather than a guess, and the call isn't billed. A miss is a normal, expected outcome for personal addresses and role mailboxes, not a failure of the lookup.

Does every field always come back for a resolved address?

No. A resolved person returns whatever is publicly known about them — a phone number or a date of birth are often absent even when the name and employer resolve cleanly. Treat every field as independently optional rather than assuming a full record.

Is looking up someone by their email address allowed under privacy law?

Processing personal data requires a lawful basis under regimes like GDPR, and business-to-business use is commonly run under legitimate interest with a documented assessment and a working opt-out. That's a decision for your own counsel, not something this article can settle — check the acceptable use policy for the limits on our side.

Can I look up a personal address, like a Gmail account?

You can send one, but expect a much lower hit rate than a work address. The identity signals behind a personal mailbox are thinner by design, since less of a private individual's professional footprint is tied to it.

Can I run this automatically on every inbound signup or support ticket?

Yes — that's the normal way it gets used rather than a manual, occasional lookup. Because misses aren't billed, wiring the call into a signup hook or a ticket-creation event and running it on everything that comes in costs nothing extra for the addresses that don't resolve to anyone.

About NeuralVerge

NeuralVerge gives developers and AI builders a single API for AI deep research, AI extraction, and autonomous agents — powered by 29 data sources under the hood.

Data Sources on the NeuralVerge blog.

Try it on your own data

One request format across research, extraction, and enrichment.

Get started