Data catalog / Enrichment

How to find someone's work email

Send a name and a company domain, or a LinkedIn URL, and get back a work email and its `email_status`. The call runs a waterfall, cheapest-first, and stops at the first hit. If nobody has the address, the call bills zero credits.

In short: RichAPI Email Finder is a REST endpoint at POST https://api.richapi.ai/api/v1/email_finder. Authentication uses the x-api-key header. Request body accepts first_name, last_name and company_domain together, or linkedin_url as an alternative; company_name is optional and improves accuracy. A successful response returns email, email_status and provider. The endpoint runs a multi-source waterfall ordered cheapest-first and stops at the first source that returns data. An execution_log array on the response lists which sources ran and what each returned. Billing is on 2xx responses only; a waterfall response carrying success:false bills zero credits and carries billed:false. New accounts get 100 free credits and no credit card is required.

Last updated November 4, 2026

Find a work email from a name and a company

You have a first name, a last name, and a company domain. You need the address that person actually reads. POST /email_finder does that lookup in one call and hands back the answer plus the paper trail behind it.

Get 100 free credits — no card

The receipt on every email finder call

Most email APIs return an address and nothing else. You have no idea whether it came from a good source, a guess, or a pattern generator. Ours returns an execution_log: which sources ran, in what order, and what each one came back with. When the answer is wrong you can see where it came from. When there is no answer you can see that every source was asked.

{
  "success": true,
  "result": {},
  "provider": "provider",
  "providers_tried": 2,
  "execution_log": [
    {"provider": "provider", "status": "no_data"},
    {"provider": "provider", "status": "success"}
  ]
}

Source names are redacted. The only statuses shown here are success and no_data. A miss uses the same envelope with "success": false, "result": null, "provider": null, and "billed": false. That miss bills zero credits. execution_log is the waterfall receipt; it is not listed on the public OpenAPI schema, so treat this as the envelope shape, not a contract you code against.

email_finder is a waterfall endpoint. Billing happens on 2xx, and a waterfall response that carries success: false bills zero credits. The response says billed: false and the reservation is released. A miss here costs you nothing.

What it does

You send identity, we return an address. Three fields do the job: first_name, last_name, and company_domain. If you have a LinkedIn profile URL instead, send linkedin_url on its own and skip the other three. company_name is optional and worth adding when the domain is ambiguous, because plenty of companies run a marketing domain and a mail domain that share nothing.

The response carries three fields: email, email_status, and provider. email_status is the field to build logic on. Treat any status other than valid as a candidate, not a contact, and push it through the email verification API before it goes anywhere near a send. That two-call chain is what most teams actually want, and it is cheaper than sending to a guess and eating the bounce.

No single source holds every person. Each one built its own dataset off a different slice of the market, which is why a single-vendor lookup misses records that a second vendor has sitting in a table. The waterfall pools that coverage behind one request: multiple sources per waterfall, cheapest-first, stopping at the first hit, and the execution_log shows exactly who ran.

How to find a work email — step by step

1. Get a key. Sign up at app.richapi.ai. You get 100 free credits and you do not enter a card.

2. Call the endpoint with name and domain.

curl -X POST https://api.richapi.ai/api/v1/email_finder \
  -H "x-api-key: $RICHAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "first_name": "Jane",
    "last_name": "Okafor",
    "company_domain": "acme.com",
    "company_name": "Acme Corp"
  }'

3. Or call it with a LinkedIn URL instead. When you have the profile and not the domain, linkedin_url alone is a valid body:

curl -X POST https://api.richapi.ai/api/v1/email_finder \
  -H "x-api-key: $RICHAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"linkedin_url": "https://www.linkedin.com/in/example/"}'

4. Read the response.

{
  "email": "jane@acme.com",
  "email_status": "valid",
  "provider": "provider_a"
}

Do not code against a published enum; inspect a real response in your account.

5. Or call it from your agent. RichAPI ships a hosted MCP server, so email_finder shows up as a tool inside Claude, Cursor, Windsurf and VS Code with no install:

Find the work email for Jane Okafor at acme.com, then verify it.

Claude calls email_finder, then email_verifier, and returns both results. New endpoints appear in your agent's tool list without you changing anything.

Why pay-for-outcome matters here

Email finding is the part of enrichment that misses most. Nobody has a complete map of who works where, so on a real list a meaningful share of rows come back empty regardless of vendor. Under per-request pricing you pay for that share every month, and the worse your list, the more you pay for nothing.

Here a soft fail, meaning every provider ran and none had the address, bills zero. You pay for the rows that produced an email and nothing for the rows that did not. Running a speculative list through the finder stops being a budget decision and becomes a throughput one.

Fields the email finder returns

Field Type What it is
email string The work email address found
email_status string The status of the address, for example valid
provider string Which source in the waterfall answered
execution_log array Every source tried, its status, and its per-source timing
billed boolean Present on a miss, always false

What the email finder costs

email_finder bills a flat 5 credits per successful call. A miss bills zero.

Credits are prepaid, with no seats, no subscription and no contract. Credit packages are on the pricing page.

What people use the email finder for

Agencies running lead lists for clients. You get handed a CSV of names and companies with no emails. Run the finder across it, bill the client for the rows that resolved, and keep the misses off both invoices. Issue one named API key per client so usage is attributed per account.

RevOps closing gaps in the CRM. Thousands of contact records carry a name and an employer and no email. The finder fills them in a batch job, and email_status tells your dedupe rules which fills to trust without a human looking at them.

Agent builders shipping an AI SDR. Your agent needs to resolve a person to an address mid-run, not in a nightly sync. One MCP tool call does it, and the per-call cost only lands when the agent got something usable, which matters when the agent is deciding on its own how many lookups to attempt.

Coming from Hunter.io?

Hunter is email-only and prices by request. See the side-by-side for what changes when the misses stop billing.

Endpoints related to the email finder

The email finder FAQ

What am I charged for?
Successful calls. email_finder is a waterfall endpoint, so a 2xx that found nothing carries billed: false and costs zero credits. A 4xx or 5xx also costs zero.

What does email_status tell me?
It is the status the answering source reports for the address, for example valid. It is a routing signal rather than a guarantee. For anything you are about to send to, run the verifier, which checks the mailbox rather than the source.

How fresh is the data?
Each call is a live lookup against the sources at request time, not a read from a stored index we refresh on a schedule. People change jobs constantly, which is why we do not sell you a snapshot.

Can I call this from Claude or Cursor (MCP)?
Yes. The hosted MCP server exposes email_finder as a tool with a copy-paste config and no install. The tool catalog updates on its own as endpoints are added.

What do I send if I only have a LinkedIn URL?
linkedin_url by itself. It replaces first_name, last_name and company_domain.

Do I need a credit card?
No. 100 free credits on signup, no card.

Which sources are in the waterfall?
We do not publish the roster; it changes as sources are added and dropped. Every response tells you which ones ran on your call via the execution_log, which is the answer that actually helps you debug.

Try the email finder: 100 free credits, no card

Pull your first verified work email in two minutes. Get 100 free credits

See it in a workflow

Playbooks

Real patterns, recipes, and prompts other builders run on RichAPI

Start free with 100 credits

Developer Docs

Auth, request shape, and error handling

See Documentation

FAQ

Frequently asked questions

Send a name and a company domain, or a LinkedIn URL, and get back a work email and its `email_status`. The call runs a waterfall, cheapest-first, and stops at the first hit. If nobody has the address, the call bills zero credits.
Every endpoint is billed from the same credit pool, at the published rate on /pricing — never a separate contract per endpoint.
Yes — the same endpoint is reachable from an MCP client (Claude, ChatGPT, Cursor, Windsurf) using the same key and credit pool. See /mcp.

Related data