post /v2/enrich/person

Enrich person

Match a person with our database and enrich it with additional information.

Webhook result: Documentation


Endpoint POST /v2/enrich/person
Credit cost 0.1 credits / result
Response Synchronous — email/phone reveal is async via webhook
When to use Look up a single person and optionally reveal their email/phone in one call

Quickstart#

curl -X POST "https://api.ocean.io/v2/enrich/person" \
  -H "X-Api-Token: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "person": {
      "linkedin": "linkedin.com/in/jane-doe-123"
    }
  }'
import requests

response = requests.post(
    'https://api.ocean.io/v2/enrich/person',
    headers={'X-Api-Token': 'YOUR_API_TOKEN'},
    json={'person': {'linkedin': 'linkedin.com/in/jane-doe-123'}},
)
data = response.json()
const response = await fetch('https://api.ocean.io/v2/enrich/person', {
  method: 'POST',
  headers: { 'X-Api-Token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
  body: JSON.stringify({ person: { linkedin: 'linkedin.com/in/jane-doe-123' } }),
});
const data = await response.json();

To also reveal the email in the same request:

{
  "person": { "linkedin": "linkedin.com/in/jane-doe-123" },
  "revealEmails": {
    "includeEmails": true,
    "webhookUrl": "https://yourapp.com/webhooks/ocean"
  }
}

The base match response is returned synchronously. Email/phone results arrive at your webhook asynchronously.

Example response:

{
  "id": "abc123",
  "name": "Jane Doe",
  "jobTitle": "Head of Product",
  "seniorities": ["Head"],
  "departments": ["Product"],
  "domain": "example.com",
  "country": "de",
  "email": { "address": null, "status": "notFound" }
}

Authorizations

apiToken string
x-api-token string

Body application/json

The person to match with
id string
Ocean id of the person
name string
Full name of the contact
firstName string
First name of the contact
lastName string
Last name of the contact
jobTitle string
Job title of the contact
email string
Email address of the contact
phone string
Phone number of the contact
facebook string
Facebook page of the contact
twitter string
The Twitter page of the contact
linkedin string
The LinkedIn page of the contact
country string
The country of the contact
The company to match the person with
name string
The name of the company
registrationNumber string
The registration number of the company
email string
The email of the company
phone string
The phone number of the company
countryCode string
Country code of the company's headquarters
state string
Name of the state/region where the company is located
city string
The city where the company is located
streetAddress string
Street address of the company
postalCode string
The postal code of the company
address string
Full address of the company
facebook string
The Facebook page of the company
twitter string
Company's Twitter page
linkedin string
LinkedIn page of the company
instagram string
Instagram page of the company
xing string
The Xing page of the company
domain string
The domain name of the company's website
youtube string
The YouTube page of the company
includeEmails boolean
Include the emails for all the results. One email credit will be charged for each verified email.
webhookUrl string
Only relevant if `includeEmails` is True. Webhook url to get the reveal email results, if any email has to be processed in the background.
includePhones boolean
Include the phones for all the results. One phone credit will be charged for each verified phone.
webhookUrl string
Only relevant if `includePhones` is True. Webhook url to get the reveal phone results, if any phone has to be processed in the background.

Responses

200 Successful Response
id string Required
Internal ocean id of the person
domain string Required
Domain of the company the person is working for
name string
Full name of the person
firstName string
First name of the person
lastName string
Last name of the person
country string
Country code of the person
state string
State code of the person
location string
Location of the person
linkedinUrl string
Link to the linkedin profile of the person
List of seniorities computed from the job title of the person
Array of Seniority
enum
"Owner""Founder""Board Member""C-Level""Partner""VP""Head""Director""Manager""Other"
List of departments computed from the job title of the person
Array of Department
enum
"Accounting and Finance""Board""Business Support""Customer Relations""Design""Editorial Personnel""Engineering""Founder/Owner""Healthcare""HR""Legal""Management""Manufacturing""Marketing and Advertising""Operations""PR and Communications""Procurement""Product""Quality Control""R&D""Sales""Security""Supply Chain""Other"
photo string
Link to the person's profile picture on LinkedIn
jobTitle string
Job title of the person
jobTitleEnglish string
English translation of the person's job title
currentJobDescription string
Current job description of the person
List of experiences of the person
Array of Experience
domain string
Domain of the company the person is working for
jobTitle string
Job title of the person
dateFrom string
Start date of the experience
dateTo string
End date of the experience
description string
Description of the experience
linkedinCompanyHandle string
Linkedin handle of the company the person is working for
summary string
Summary of the person
Skills of the person
Array of string
Phone numbers of the person
Phone numbers
Array of string
status enum Required
Status of the phone numbers: verified or not found
"verified""notFound""inProgress"
Email of the person
address string Required
Email address
status enum Required
Status of the address: verified, catchAll or guessed
"verified""guessed""catchAll""notFound"
List of inferred email addresses for the person. This is only available for enterprise subscriptions.
Array of string
updatedAt string
When has the person data been updated for the last time
connectionsCount integer
Number of LinkedIn connections of the person
followersCount integer
Number of LinkedIn followers of the person
headline string
Headline of the person
creditsUsed number Required
Number of credits charged for this request.
201 Created
detail enum Required
"Data gathering process has started. Please try again later."
400 Bad Request
detail enum Required
"Conflicting API tokens provided in query parameters and headers""Empty `person` body"
402 Payment Required
detail enum Required
"Insufficient credits"
403 Forbidden
detail enum Required
"API token should be provided in headers or query parameters""Current API token is not registered in our database"
404 Not Found
detail enum Required
"No matching record found"
422 Validation Error
Array of ValidationError
Array of string | integer
string | integer
msg string Required
type string Required
input any
object

FAQs#

What's the strongest identifier for matching?

person.id (from a previous search) › person.linkedinperson.emailname + company.domain

What does email.status: "notFound" mean?

The email wasn't pre-indexed. Use revealEmails in this request or call Reveal Emails with the returned id to trigger live verification.

Can I bulk-enrich people?

Yes — use Enrich People (Batch) for up to 10,000 people per request.