curl -X POST "https://developer.encrata.com/api/lookup/email/identity" \
-H "Authorization: Bearer enc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"email": "test@example.com"}'
import requests
resp = requests.post(
"https://developer.encrata.com/api/lookup/email/identity",
headers={"Authorization": "Bearer enc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},
json={"email": "test@example.com"},
)
print(resp.json())
const resp = await fetch("https://developer.encrata.com/api/lookup/email/identity", {
method: "POST",
headers: {
Authorization: "Bearer enc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
},
body: JSON.stringify({ email: "test@example.com" }),
});
const data = await resp.json();
{
"email": "jane@example.com",
"person": {
"first_name": "Jane",
"last_name": "Doe",
"company": "Acme Inc",
"job_role": "Head of Product",
"industry": "Software",
"city": "San Francisco",
"country": "United States",
"bio": "Product leader focused on developer tools.",
"photo_url": "https://.../jane.jpg",
"socials": {
"linkedin": "https://www.linkedin.com/in/janedoe",
"twitter": "https://x.com/janedoe",
"github": "https://github.com/janedoe"
}
},
"files": { "json": "", "csv": "" },
"credits": 1000
}
{
"code": "insufficient_credits",
"error": "You don't have enough credits for this lookup. Top up to continue."
}
{ "error": "Invalid email address", "code": "bad_email" }
Email
Email Identity
Resolve the person behind an email address: name, job role, company, industry, location, and social profiles.
POST
/
api
/
lookup
/
email
/
identity
curl -X POST "https://developer.encrata.com/api/lookup/email/identity" \
-H "Authorization: Bearer enc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"email": "test@example.com"}'
import requests
resp = requests.post(
"https://developer.encrata.com/api/lookup/email/identity",
headers={"Authorization": "Bearer enc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},
json={"email": "test@example.com"},
)
print(resp.json())
const resp = await fetch("https://developer.encrata.com/api/lookup/email/identity", {
method: "POST",
headers: {
Authorization: "Bearer enc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
},
body: JSON.stringify({ email: "test@example.com" }),
});
const data = await resp.json();
{
"email": "jane@example.com",
"person": {
"first_name": "Jane",
"last_name": "Doe",
"company": "Acme Inc",
"job_role": "Head of Product",
"industry": "Software",
"city": "San Francisco",
"country": "United States",
"bio": "Product leader focused on developer tools.",
"photo_url": "https://.../jane.jpg",
"socials": {
"linkedin": "https://www.linkedin.com/in/janedoe",
"twitter": "https://x.com/janedoe",
"github": "https://github.com/janedoe"
}
},
"files": { "json": "", "csv": "" },
"credits": 1000
}
{
"code": "insufficient_credits",
"error": "You don't have enough credits for this lookup. Top up to continue."
}
{ "error": "Invalid email address", "code": "bad_email" }
Overview
Email Identity resolves the real person behind an email address into a structured profile: name, job role, company, industry, location, education, professional history, social profiles, and (when a phone number is discovered) reverse-phone owner intel. This is a premium lookup. It uses the dedicated identity resolver (not the general web-search lookup) and costs 1,000 credits per address. There are two ways to run it:- Single lookup (
POST /api/lookup/email/identity): the endpoint documented on this page. - Bulk jobs (
POST /api/jobs/bulkwithtype=identity): resolve a whole uploaded list in the background. See Bulk jobs below.
Authentication
Requires an API key in theAuthorization header.
Authorization: Bearer enc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Request
string
required
The email address to resolve.
Example request
curl -X POST "https://developer.encrata.com/api/lookup/email/identity" \
-H "Authorization: Bearer enc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"email": "test@example.com"}'
import requests
resp = requests.post(
"https://developer.encrata.com/api/lookup/email/identity",
headers={"Authorization": "Bearer enc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},
json={"email": "test@example.com"},
)
print(resp.json())
const resp = await fetch("https://developer.encrata.com/api/lookup/email/identity", {
method: "POST",
headers: {
Authorization: "Bearer enc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
},
body: JSON.stringify({ email: "test@example.com" }),
});
const data = await resp.json();
Response
Returns the resolved profile wrapped in aperson object, plus billing fields.
Most
person fields are always serialized, even when empty. Expect ""
for unresolved strings and null for unresolved lists. Check for a truthy
value before you use a field; do not check for the key’s presence.string
The email address that was resolved.
object
The resolved profile.
Show person
Show person
string
The person’s name.
string
Current employment.
string
Location.
string
Background and education.
string
Profile photo.
object
linkedin, twitter, instagram, facebook, github. These are
nested here only - there are no top-level social fields.object
Place data for the employer:
name, address, phone, website,
category, rating, rating_count, price_level, latitude,
longitude, attributes.object
Firmographics for the employer (size, industry, funding).
object
Professional profile: work history, skills, certifications.
object
Breach exposure, including
exposed_data (string[]). Can serialize as
null.object
Reverse-phone owner intel when a number is discovered: owner name,
locations, addresses, relatives, extra emails, social profiles.
object
Network intelligence associated with the person, when available.
object[]
Public mentions discovered for the person.
number
Credits charged for this request.
1000 on a fresh charge, or 0 when you
were already charged for this address during the
6-month free-repeat window.boolean
Present and
true only when the profile was served from cache. This is
independent of billing: a cached result is still charged 1000 on your first
request for that address in the window.object
Present but unused for this endpoint (
json and csv are empty strings).Errors
Errors return a JSON body of the form{"error": "<message>", "code": "<code>"}
with the matching HTTP status code.
| Status | Message | Cause |
|---|---|---|
400 | Invalid request body | Malformed JSON |
400 | Invalid email address | Address fails syntax parsing |
400 | The email domain does not exist or can't receive email | Domain has no valid mail records |
401 | API key required / bad key | Missing or invalid API key |
401 | Unauthorized | The key’s account could not be resolved |
402 | You don't have enough credits for this lookup. Top up to continue. | Not enough credits and not a free repeat |
405 | Only POST method is allowed | Wrong HTTP method |
413 | body too large | Request body exceeds 1 MiB |
500 | internal error | Unexpected server failure |
502 | Identity lookup is temporarily unavailable. Please try again. | Transient provider error, retry shortly |
Credits
Each lookup costs 1,000 credits. Billing is per-customer: 1,000 on the first lookup of an address,0 for repeats during the
6-month free-repeat window. A cached result
is still charged on your first lookup. See Credits for details.
Identity resolution may expand a discovered phone number into its owner via
reverse-phone lookup, adding a
phone_owner block inside person (owner
name, locations, addresses, relatives, extra emails, and social profiles).curl -X POST "https://developer.encrata.com/api/lookup/email/identity" \
-H "Authorization: Bearer enc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"email": "test@example.com"}'
import requests
resp = requests.post(
"https://developer.encrata.com/api/lookup/email/identity",
headers={"Authorization": "Bearer enc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},
json={"email": "test@example.com"},
)
print(resp.json())
const resp = await fetch("https://developer.encrata.com/api/lookup/email/identity", {
method: "POST",
headers: {
Authorization: "Bearer enc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
},
body: JSON.stringify({ email: "test@example.com" }),
});
const data = await resp.json();
{
"email": "jane@example.com",
"person": {
"first_name": "Jane",
"last_name": "Doe",
"company": "Acme Inc",
"job_role": "Head of Product",
"industry": "Software",
"city": "San Francisco",
"country": "United States",
"bio": "Product leader focused on developer tools.",
"photo_url": "https://.../jane.jpg",
"socials": {
"linkedin": "https://www.linkedin.com/in/janedoe",
"twitter": "https://x.com/janedoe",
"github": "https://github.com/janedoe"
}
},
"files": { "json": "", "csv": "" },
"credits": 1000
}
{
"code": "insufficient_credits",
"error": "You don't have enough credits for this lookup. Top up to continue."
}
{ "error": "Invalid email address", "code": "bad_email" }
Bulk jobs
To resolve a whole list, submit it as a bulk job instead of looping this endpoint. One entrypoint handles every lookup - settype=identity - and a
webhook delivers the finished file when it’s done.
curl -X POST "https://developer.encrata.com/api/jobs/bulk" \
-H "Authorization: Bearer enc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-F "type=identity" \
-F "download_link=true" \
-F "file=@list.csv"
- Up to 1,000,000 emails per job, charged 1,000 credits per email - size your list against your balance first.
download_link=truereturns adownload_urlin thebulk.completedwebhook; fetch it with your API key.- Export filters:
all,found.
Was this page helpful?