// get /v1/people/find
Person API
Fetch social details tied to an email address name, location, gender, employment, Twitter, LinkedIn, GitHub, Gravatar, and verification status. A drop-in Clearbit Person API replacement.
// api console
- name.fullName
- Richard Hendricks
- richard@piedpiper.com
- employment.name
- Pied Piper
- employment.title
- CEO
- employment.seniority
- executive
- location
- Palo Alto, California, United States
- verification.status
- valid
- phone
- true
// 01 · request
Person Enrichment is one HTTPS request
Send the parameters with your key and secret. Every SDK, the CLI and the MCP server make this same call.
/people/findParameteremailrequired- Work email
curl "https://api.tomba.io/v1/people/find?email=richard%40piedpiper.com" \
-H "X-Tomba-Key: $TOMBA_API_KEY" \
-H "X-Tomba-Secret: $TOMBA_SECRET_KEY"const res = await fetch("https://api.tomba.io/v1/people/find?email=richard%40piedpiper.com", {
headers: {
"X-Tomba-Key": process.env.TOMBA_API_KEY,
"X-Tomba-Secret": process.env.TOMBA_SECRET_KEY
}
});
const { data } = await res.json();import os, requests
res = requests.get(
"https://api.tomba.io/v1/people/find?email=richard%40piedpiper.com",
headers={
"X-Tomba-Key": os.environ["TOMBA_API_KEY"],
"X-Tomba-Secret": os.environ["TOMBA_SECRET_KEY"],
},
)
data = res.json()["data"]// 02 · response
What comes back
JSON, the same in every language. Fields Tomba doesn't know are null, never guessed.
/people/findFielddata.nameobject- fullName, givenName, familyName
data.employmentobject- Company, domain, title, role, sub-role, seniority
data.location, data.geostring | null, object- Where the person is, as text and as city, state, country, coordinates
data.linkedin, data.twitter, data.github, data.facebookobject- Social handles (twitter and github with their public counts)
data.verificationobject- valid, accept_all, invalid or unknown, and the date of the check
data.phoneboolean- Tomba holds a phone number for the person
meta.emailstring- The address you sent
errorsobject- When nothing is found the response is still 200, with errors {type, message, code} instead of data
{
"data": {
"name": {
"fullName": "Richard Hendricks",
"givenName": "Richard",
"familyName": "Hendricks"
},
"email": "richard@piedpiper.com",
"location": "Palo Alto, California, United States",
"gender": "male",
"timeZone": "America/Los_Angeles",
"utcOffset": -8,
"geo": {
"city": "Palo Alto",
"state": "California",
"stateCode": "CA",
"country": "United States",
"countryCode": "US",
"lat": 37.4419,
"lng": -122.143
},
"bio": "Founder of Pied Piper.",
"site": "https://piedpiper.com",
"avatar": null,
"employment": {
"domain": "piedpiper.com",
"name": "Pied Piper",
"title": "CEO",
"role": "executive",
"subRole": null,
"seniority": "executive"
},
"facebook": {
"handle": null
},
"github": {
"handle": null,
"id": null,
"avatar": null,
"company": null,
"blog": null,
"followers": null,
"following": null
},
"twitter": {
"handle": null,
"id": null,
"bio": null,
"followers": null,
"following": null,
"statuses": null,
"favorites": null,
"location": null,
"site": null,
"avatar": null
},
"linkedin": {
"handle": "in/richard-hendricks"
},
"gravatar": {
"handle": null,
"urls": null,
"avatar": null,
"avatars": null
},
"verification": {
"date": "2025-01-15T10:32:00+01:00",
"status": "valid"
},
"phone": true,
"fuzzy": false,
"emailProvider": "Google",
"indexedAt": "2025-01-15T10:32:00+01:00",
"activeAt": "2025-01-15T10:32:00+01:00",
"inactiveAt": null
},
"meta": {
"email": "richard@piedpiper.com"
}
}// 03 · cost and limits
What a call costs
A call is charged only under the condition below. Rate limits depend on your plan.
// cost
1search credit
Charged when: A person is returned.
Errors, 429 and 451 responses, and the same request again within your usage window cost nothing.
How credits work// rate limits
Requests per second / minute / day| Free | Basic | Growth | Pro | |
|---|---|---|---|---|
| Search, finder, similar, technology | 1 / 2 / 5 | 3 / 50 / 500 | 5 / 80 / 1,000 | 8 / 150 / 4,000 |
| Email verifier | 1 / 2 / 10 | 2 / 40 / 500 | 3 / 60 / 1,000 | 5 / 100 / 4,000 |
Pro Plus, Scale and credit packs of 50,000 or more: no limit on these endpoints. Enterprise: no per-second or per-minute limit, 100,000 requests a day. Daily limits reset at 00:00 UTC. Rate limits