What you get
A reverse email lookup returns the identity behind an address: name, LinkedIn URL, job title and employer. It also echoes the address back with its own type, status and check date. It does not return the full profile. For that, call the enrich endpoint, which costs the same and reads the same cached record.
| Field | What it is | Example |
|---|---|---|
person_id | The record the answer came from | "1234567" |
person_group_id | The person, across duplicate records | "1234567" |
linkedin_url | LinkedIn profile URL, or null | "https://www.linkedin.com/in/jane-doe" |
full_name | Their name | "Jane Doe" |
job_title | Current title | "Finance Manager" |
company_name | Current employer | "Acme" |
company_domain | Employer domain | "acme.com" |
query | The address you sent, as we compared it | "jane.doe@acme.com" |
matched | The address as the record holds it, with type, status and check date | "verified", "work" |
matched_in_record | Whether the record lists the exact address you sent | true |
Every identity field can be null. About one person in five has no LinkedIn URL, so a real match can come back without one.
What you send
| Input | Required | Note |
|---|---|---|
email | One of the two | The address to look up. |
phone | One of the two | A number in any common format. Same endpoint, same price. |
Send exactly one. The key needs the enrich scope. There is no lookup by name and company. Search by company domain first, then enrich by person_id.
Three ways to run it
In the app
Not for this lookup. The Exports page at app.leadocean.io is a filter builder with a column picker, a price preview and a CSV download. Its columns include profile_url, but the docs describe no way to upload a list of emails. Use the API or an agent for reverse lookups.
With the API
curl -s -G "https://api.leadocean.io/v2/people/reverse" \
--data-urlencode "email=jane.doe@acme.com" \
-H "x-api-key: $LEADOCEAN_API_KEY"The response has the shape the docs show. These values are placeholders:
{
"success": true,
"data": {
"person_id": "1234567",
"person_group_id": "1234567",
"linkedin_url": "https://www.linkedin.com/in/jane-doe",
"full_name": "Jane Doe",
"job_title": "Finance Manager",
"company_name": "Acme",
"company_domain": "acme.com",
"query": { "email": "jane.doe@acme.com" },
"matched": { "email": "jane.doe@acme.com", "status": "verified",
"verified_batch_date": "2026-09-14", "type": "work" },
"matched_in_record": true
},
"meta": { "source": "leadocean", "schema": "leadocean.contact.reverse.v2",
"stability": "stable", "credits": 1 }
}POST with a JSON body works too. Developer detail is in Reverse Email Lookup API.
From an AI agent
The MCP tool is leadocean_get_lead. Pass email and it returns the full person record, so it is the enrich call rather than the thin reverse block. It also takes phone for the reverse number lookup. Try: "Who is jane.doe@acme.com? Give me her title and employer." Setup is in Reverse Email Lookup over MCP.
What it costs
One call that finds a person is 1 record. A 404, where nobody holds the address, costs nothing. A 200 with sparse fields still costs 1. Rejected requests (429, 402, 503) are never metered.
Free gives you 1,000 records, one-off, no card. Pro is $499 a month, flat, with no per-record price, inside fair use. See pricing.
Worked example: you look up 10,000 emails. Say 6,000 match, an assumption, because the docs publish no match rate. That is 6,000 records, and the 4,000 misses cost nothing. Free covers the first 1,000 once. On Pro the month is $499 whatever the count.
Coverage
LeadOcean holds 693M people, and 366M of them have an email (measured 2026-09-23). That is a little over half. An address outside that set returns a 404. Test a sample of your own list before a large run.
Accuracy and limits
- A match is evidence, not proof.
matched_in_record: falsemeans we matched the person on your address upstream, but the record does not list that exact address. It does not mean nobody was found. No person at all is a 404. - Read
matched.status. It is the deliverability status of the address you sent. Values includeverified,catch_all_valid,catch_all,untested,riskyandinvalid. - No refund for bounces. Read the status before you send.
- Duplicates. The same person can return under different
person_idvalues. Compareperson_group_id. - Rate limit. 100 requests per second per key, on every plan.
- Errors. 400 validation, 401 bad key, 403 missing scope, 404 nobody holds it, 503 store unreachable and never billed.
- Gap. The docs describe no batch version, so a list means one call per address.
FAQ
Is reverse email lookup free?
The 404 is. A match costs 1 record. Free gives 1,000 records once, with no card.
Can I look up a personal email like Gmail?
The endpoint takes any email address and matched.type labels the one you sent. The docs publish no match rate by type, so test a sample first.
Can I search by name instead?
No. There is no name lookup. Search by company domain, then enrich by person_id.
How do I compare tools?
See the best reverse email lookup tools. For other lookups, see the Enrichments hub.
Look up your first email free
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →