People Data Labs / Identify matching people
People Data Labs tool people-data-labs-person-identify on looot: input fields, $0.28 per result, output shape, and code to run it with curl, JavaScript or Python.
Returns a ranked list of possible person matches for loose identifying fields (name, company, location, email and others), each with a match score. Priced per call.
- Tool id:
people-data-labs-person-identify - Provider: People Data Labs
- Job: Enrich a person from a name and company (
people.enrich) - Price: $0.28 per result. A call that fails at the provider costs $0.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
birth_date |
string | no | The person’s birth date: either the year or a full birth date in the format YYYY-MM-DD. Example: “1996-10-01” |
company |
string | no | A name, website, or social url of a company where the person has worked. Example: “Amazon” |
country |
string | no | A country in which the person lives. Example: “United States” |
data_include |
string | no | A comma-separated string of fields that you would like the response to include. Begin the string with a - if you would instead like to exclude the specified fields. If you would like to exclude all data from being returned, use data_include=“”. Example: “full_name,emails.address” |
email |
string | no | An email the person has used. |
email_hash |
string | no | A sha256 email hash. |
first_name |
string | no | The person’s first name. |
include_if_matched |
boolean | no | If true, the response will include the field matches.matched_on that contains a list of every query input that matched this profile |
last_name |
string | no | The person’s last name. |
lid |
string | no | The person’s LinkedIn ID. Example: “145991517” |
locality |
string | no | A locality in which the person lives. Example: “Boise” |
location |
string | no | A location in which a person lives. Example: “Medford, OR USA” |
middle_name |
string | no | The person’s middle name. |
name |
string | no | The person’s full name, at least first and last. |
phone |
string | no | A phone number the person has used. |
postal_code |
string | no | The postal code where the person lives. If there is no value for country, the postal code is assumed to be US. Example: “83701” |
pretty |
boolean | no | Whether the output should have human-readable indentation |
profile |
string | no | A social profile the person has used. https://docs.peopledatalabs.com/docs/social-networks. |
region |
string | no | A state or region in which the person lives. Example: “Idaho” |
school |
string | no | A name, website, or social url of a university or college the person has attended. Example: “University of Iowa” |
street_address |
string | no | A street address in which the person lives. Example: “1234 Main Street” |
titlecase |
boolean | no | Setting titlecase to true will titlecase the person data in 200 responses. |
Output
Shape of the run’s result, the expected shape, not yet checked against real answers:
{ status, matches: { data: { id, sex, emails, skills: string[], regions, industr... ...
The shape is cut here. Signed in, looot inspect people-data-labs-person-identify prints all of it.
Run it
Every call needs your API token in LOOOT_TOKEN; Sign in shows how to get one. Each run also needs a new idempotency key, so a retry never pays twice. With wait: 30 the answer comes back inline when the run ends within 30 seconds. Otherwise you get the running run back: poll GET /v1/runs/<runId>.
Example input with placeholder values:
curl -X POST "https://api.looot.ai/v1/runs" \
-H "Authorization: Bearer $LOOOT_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"endpointId":"people-data-labs-person-identify","input":{"lid":"145991517","name":"Jane Doe","email":"jane.doe@example.com","phone":"+15555550100","region":"Idaho","school":"University of Iowa","company":"Amazon","country":"United States","profile":"<profile>","locality":"Boise","location":"Medford, OR USA","last_name":"Doe","birth_date":"1996-10-01","email_hash":"jane.doe@example.com","first_name":"Jane","middle_name":"<middle_name>","postal_code":"83701","data_include":"full_name,emails.address","street_address":"1234 Main Street"},"wait":30}'const response = await fetch("https://api.looot.ai/v1/runs", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LOOOT_TOKEN}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
},
body: JSON.stringify({
endpointId: "people-data-labs-person-identify",
input: {
lid: "145991517",
name: "Jane Doe",
email: "jane.doe@example.com",
phone: "+15555550100",
region: "Idaho",
school: "University of Iowa",
company: "Amazon",
country: "United States",
profile: "<profile>",
locality: "Boise",
location: "Medford, OR USA",
last_name: "Doe",
birth_date: "1996-10-01",
email_hash: "jane.doe@example.com",
first_name: "Jane",
middle_name: "<middle_name>",
postal_code: "83701",
data_include: "full_name,emails.address",
street_address: "1234 Main Street",
},
wait: 30,
}),
});
const run = await response.json();
console.log(run.status, run.result);import os
import uuid
import requests
response = requests.post(
"https://api.looot.ai/v1/runs",
headers={
"Authorization": f"Bearer {os.environ['LOOOT_TOKEN']}",
"Idempotency-Key": str(uuid.uuid4()),
},
json={
"endpointId": "people-data-labs-person-identify",
"input": {
"lid": "145991517",
"name": "Jane Doe",
"email": "jane.doe@example.com",
"phone": "+15555550100",
"region": "Idaho",
"school": "University of Iowa",
"company": "Amazon",
"country": "United States",
"profile": "<profile>",
"locality": "Boise",
"location": "Medford, OR USA",
"last_name": "Doe",
"birth_date": "1996-10-01",
"email_hash": "jane.doe@example.com",
"first_name": "Jane",
"middle_name": "<middle_name>",
"postal_code": "83701",
"data_include": "full_name,emails.address",
"street_address": "1234 Main Street",
},
"wait": 30,
},
timeout=90,
)
run = response.json()
print(run["status"], run.get("result"))To let looot pick among every provider of this job instead, send job:people.enrich as endpointId; see the job page.