What you get
The reverse endpoint takes an email address and returns the person who holds it: their LinkedIn URL, name, job title and company. It also echoes the address back with its own type, status and check date. It returns the identity, not the full profile. For the rest, 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 | The LinkedIn profile URL, or null | "https://www.linkedin.com/in/jane-doe" |
full_name | Their name | "Jane Doe" |
job_title | Their current title | "Finance Manager" |
company_name | Their current employer | "Acme" |
company_domain | The employer's domain | "acme.com" |
matched | The email as the record holds it, with type, status and check date | { "email": "jane.doe@acme.com", "status": "verified", "type": "work" } |
matched_in_record | Whether the record lists the exact address you sent | true |
The identity fields and matched can be null. About one person in five has no LinkedIn URL, so linkedin_url can come back empty on a real match.
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. profile_url is one of its columns, but the docs describe no way to feed it a list of emails. For a list, call the API or use an agent.
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. The values here 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 }
}Developer detail is in Email to LinkedIn API.
From an AI agent
The MCP server has no tool named for reverse lookup. Use leadocean_get_lead and pass email. It takes a work email, returns the full person record, and counts as 1 record. Try: "Find the LinkedIn profile for jane.doe@acme.com and tell me her title." Setup is in Email to LinkedIn over MCP. The LinkedIn to email MCP page covers the opposite direction.
What it costs
One call is 1 record. A call that finds a person costs 1. A 404, where nobody holds the address, costs nothing. 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. That is at most 10,000 records, fewer for every address nobody holds. 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, which is free. The docs publish no match rate for reverse lookups, so test a sample of your own list before you commit a large run.
Accuracy and limits
- A match is evidence, not proof.
matched_in_record: falsemeans we matched the person on your email upstream, but the record does not list that exact address. It does not mean nobody was found. No person at all is a 404. - Check
matched.status. It carries the deliverability status of the address you sent. See the status values in the Linkedin to email page. linkedin_urlcan be null. Roughly one person in five has none. Keepperson_idand use it to enrich.- Records can duplicate. The same person may come back under different
person_idvalues. Compareperson_group_id, never look it up. - Rate limit. 100 requests per second per key, on every plan. A 429 carries
Retry-After. - 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 of this endpoint, so a list means one call per address.
FAQ
Can I find a LinkedIn profile from a personal email?
The reverse endpoint takes an email address and the docs do not limit it to work addresses, and matched.type labels the address you sent. The MCP tool takes a work email. The docs publish no match rate per type, so test a sample.
Does it cost anything when nobody is found?
No. A 404 costs nothing. A 200 that comes back with empty fields still costs 1 record.
Can I go the other way, from LinkedIn to email?
Yes. Send a LinkedIn URL to the work email endpoint. See LinkedIn to email, and compare tools in the best LinkedIn email finders.
Can I look up a whole list of emails?
One call per address, at up to 100 a second per key. Free covers 1,000 lookups once. Pro is $499 a month. See the Enrichments hub for the other lookups.
Find your first LinkedIn profile from an email free
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →