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 with a confidence label. The call runs a provider waterfall, cheapest-first, and stops at the first hit. If nobody has the address, the call bills zero credits.

Try this live — 25 free credits

Last updated September 22, 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 25 free credits — no card](https://app.richapi.ai)**

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 providers 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 provider was asked. ```json { "success": true, "result": {}, "provider": "provider", "providers_tried": 2, "execution_log": [ {"provider": "provider", "status": "no_data"}, {"provider": "provider", "status": "success"} ] } ``` Provider 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`, `confidence`, and `provider`. `confidence` is the label to build logic on. Treat a low-confidence address as a candidate, not a contact, and push it through [the email verification API](/api/email-verifier) 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 provider 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 providers 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](https://app.richapi.ai). You get 25 free credits and you do not enter a card. **2. Call the endpoint with name and domain.** ```bash 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: ```bash 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.** ```json { "email": "jane@acme.com", "confidence": "high", "provider": "provider_a" } ``` The live OpenAPI types `confidence` as a string and ships the placeholder `"example"`. 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](/integrations/claude), 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 | | `confidence` | string | How strongly the source backs the address | | `provider` | string | Which provider in the waterfall answered | | `execution_log` | array | Every provider tried, its status, and its per-provider 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. The per-credit rate is tiered by package size, so pull your rate from [the pricing page](/pricing) rather than assuming a single number.

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 `confidence` 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](/alternatives/hunter) for what changes when the misses stop billing.

Endpoints related to the email finder

- [Email verification API](/api/email-verifier) — check an address before you send to it - [Phone number finder API](/api/phone-finder) — same waterfall billing, for mobile numbers - [All endpoints](/api) — the full catalog - [Pricing](/pricing) — credit packages and tier rates - [Search, find, verify — the chain](/use-cases/list-build-and-verify) - [Cost the chain before you run it](/tools/waterfall-cost-calculator)

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. **How accurate is the `confidence` field?** It reflects how strongly the answering provider backs the address, and it is a routing signal rather than a guarantee. For anything you are about to send to, run [the verifier](/api/email-verifier), which checks the mailbox rather than the source. **How fresh is the data?** Each call is a live lookup against the providers 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. 25 free credits on signup, no card. **Which providers are in the waterfall?** We do not publish the roster; it changes as providers 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: 25 free credits, no card

Pull your first verified work email in two minutes. **[Get 25 free credits](https://app.richapi.ai)**

Frequently asked.

What does how to find someone's work email return?
Send a name and a company domain, or a LinkedIn URL, and get back a work email with a confidence label. The call runs a provider waterfall, cheapest-first, and stops at the first hit. If nobody has the address, the call bills zero credits.
How is this billed?
Every endpoint is billed from the same credit pool, at the published rate on /pricing — never a separate contract per endpoint.
Does this work over MCP as well as REST?
Yes — the same endpoint is reachable from an MCP client (Claude, ChatGPT, Cursor, Windsurf) using the same key and credit pool. See /mcp.

More Enrichment endpoints

See it in a workflow

Try it with 25 free credits.