Person Enrichment Crustdata v3 API
Enrich one person from a LinkedIn profile URL or a business email: profile, headline, location, skills, current and past roles with the employer's domain, education, social handles, and GitHub profiles. Contact details are sold separately by Contact Enrichment - Crustdata v3.
Call it
Make your first request
import os, requests res = requests.post( "https://api.getanyapi.com/v1/run/person_enrichment.crustdata_v3", headers={"Authorization": f"Bearer {os.environ['ANYAPI_KEY']}"}, json={}, ) print(res.json())
{
"data": {
"connections": 42,
"currentPositions": [
{
"companyDomain": "example.com",
"companyId": "Acme Inc",
"companyLinkedinUrl": "https://example.com/page",
"companyName": "Acme Inc",
"description": "A short example description of this item.",
"employmentType": "general",
"endedUtc": 12.5,
"functionCategory": "general",
"location": "example",
"seniority": "example",
"startedUtc": 12.5,
"title": "Example title"
}
],
"education": [
{
"degree": "example",
"description": "A short example description of this item.",
"endYear": 2024,
"fieldOfStudy": "example",
"school": "example",
"startYear": 2024
}
],
"firstName": "Alex",
"followers": 12500,
"githubProfiles": [
{
"bio": "A short example description of this item.",
"company": "Acme Inc",
"confidenceScore": 4.6,
"followers": 12500,
"following": 12500,
"location": "example",
"name": "Example title",
"profileUrl": "https://example.com/page",
"publicRepoCount": 12500
}
],
"githubUrl": "https://example.com/page",
"headline": "Example title",
"image": "https://example.com/image.jpg",
"jobTitle": "Example title",
"languages": [
"en"
],
"lastName": "Rivera",
"linkedinUrl": "https://example.com/page",
"location": {
"city": "San Francisco",
"continent": "example",
"country": "US",
"label": "Example title",
"state": "CA"
},
"matchConfidence": 1024,
"name": "Example title",
"pastPositions": [
{
"companyDomain": "example.com",
"companyId": "Acme Inc",
"companyLinkedinUrl": "https://example.com/page",
"companyName": "Acme Inc",
"description": "A short example description of this item.",
"employmentType": "general",
"endedUtc": 12.5,
"functionCategory": "general",
"location": "example",
"seniority": "example",
"startedUtc": 12.5,
"title": "Example title"
}
],
"personId": "a1b2c3d4",
"skills": [
"example"
],
"summary": "A short example description of this item.",
"twitterHandle": "alex_rivera",
"yearsOfExperience": 2024
},
"found": true,
"reason": "not_found"
}interface PersonEnrichmentCrustdataV3Response {
data: {
connections?: number;
currentPositions?: {
companyDomain?: string;
companyId?: string;
companyLinkedinUrl?: string;
companyName?: string;
description?: string;
employmentType?: string;
endedUtc?: number;
functionCategory?: string;
location?: string;
seniority?: string;
startedUtc?: number;
title?: string;
}[];
education?: {
degree?: string;
description?: string;
endYear?: number;
fieldOfStudy?: string;
school?: string;
startYear?: number;
}[];
firstName?: string;
followers?: number;
githubProfiles?: {
bio?: string;
company?: string;
confidenceScore?: number;
followers?: number;
following?: number;
location?: string;
name?: string;
profileUrl?: string;
publicRepoCount?: number;
}[];
githubUrl?: string;
headline?: string;
image?: string;
jobTitle?: string;
languages?: string[];
lastName?: string;
linkedinUrl?: string;
location?: {
city?: string;
continent?: string;
country?: string;
label?: string;
state?: string;
};
matchConfidence?: number;
name?: string;
pastPositions?: {
companyDomain?: string;
companyId?: string;
companyLinkedinUrl?: string;
companyName?: string;
description?: string;
employmentType?: string;
endedUtc?: number;
functionCategory?: string;
location?: string;
seniority?: string;
startedUtc?: number;
title?: string;
}[];
personId: string;
skills?: string[];
summary?: string;
twitterHandle?: string;
yearsOfExperience?: number;
} | null;
found: boolean;
reason?: "not_found";
}Full parameter and response reference - every field, type, and example for this endpoint.
Reference
Request, response, and price
Last verified 2026-09-18 · uptime and latency measured over 30dcurl -X POST https://api.getanyapi.com/v1/run/person_enrichment.crustdata_v3 \
-H "Authorization: Bearer $ANYAPI_KEY" \
-H "Content-Type: application/json" \
-d '{"linkedinUrl":"https://www.linkedin.com/in/satyanadella"}'| Field | Type | Example value |
|---|---|---|
| Request body | ||
| string | The person's business email address. | |
| linkedinUrl | string | "https://www.linkedin.com/in/satyanadella"LinkedIn profile URL, e.g. https://www.linkedin.com/in/satyanadella. Send exactly one of linkedinUrl or email. |
| minSimilarityScore | number | For an email lookup, the lowest match similarity from 0 to 1 to accept. Leave unset to use Crustdata's default. |
| Response | ||
| data | object | The enriched person, or null when nothing matched. |
| data.connections | integer | LinkedIn connection count. |
| data.currentPositions | object[] | Roles the person holds now. |
| data.currentPositions[].companyDomain | string | Employer website domain. |
| data.currentPositions[].companyId | string | Employer Crustdata company id, usable as companyId in Company Identify - Crustdata v3. |
| data.currentPositions[].companyLinkedinUrl | string | Employer LinkedIn company page URL. |
| data.currentPositions[].companyName | string | Employer name. |
| data.currentPositions[].description | string | Role description. |
| data.currentPositions[].employmentType | string | Employment type, e.g. Full-time. |
| data.currentPositions[].endedUtc | number | When the role ended. UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. |
| data.currentPositions[].functionCategory | string | Job function. |
| data.currentPositions[].location | string | Where the role is based. |
| data.currentPositions[].seniority | string | Seniority level, e.g. CXO. |
| data.currentPositions[].startedUtc | number | When the role started. UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. |
| data.currentPositions[].title | string | Job title. |
| data.education | object[] | Schools attended. |
| data.education[].degree | string | Degree. |
| data.education[].description | string | Notes on the course of study. |
| data.education[].endYear | integer | Year finished. |
| data.education[].fieldOfStudy | string | Field of study. |
| data.education[].school | string | School name. |
| data.education[].startYear | integer | Year started. |
| data.firstName | string | First name. |
| data.followers | integer | LinkedIn follower count. |
| data.githubProfiles | object[] | GitHub accounts matched to the person, each with its own match confidence. |
| data.githubProfiles[].bio | string | Profile bio. |
| data.githubProfiles[].company | string | Company as written on the profile. |
| data.githubProfiles[].confidenceScore | number | Confidence from 0 to 1 that this account belongs to the person. |
| data.githubProfiles[].followers | integer | Follower count. |
| data.githubProfiles[].following | integer | Accounts followed. |
| data.githubProfiles[].location | string | Location as written on the profile. |
| data.githubProfiles[].name | string | Display name. |
| data.githubProfiles[].profileUrl | string | GitHub profile URL. |
| data.githubProfiles[].publicRepoCount | integer | Public repository count. |
| data.githubUrl | string | GitHub profile URL linked from the profile. |
| data.headline | string | LinkedIn headline. |
| data.image | string | Profile photo URL. |
| data.jobTitle | string | Current job title. |
| data.languages | string[] | Languages the person lists. |
| data.lastName | string | Last name. |
| data.linkedinUrl | string | LinkedIn profile URL. |
| data.location | object | Where the person is based. |
| data.location.city | string | City. |
| data.location.continent | string | Continent. |
| data.location.country | string | Country. |
| data.location.label | string | Location as written on the profile. |
| data.location.state | string | State or region. |
| data.matchConfidence | number | Confidence from 0 to 1 that the returned person is the one asked for. |
| data.name | string | Full name. |
| data.pastPositions | object[] | Roles the person held before. |
| data.pastPositions[].companyDomain | string | Employer website domain. |
| data.pastPositions[].companyId | string | Employer Crustdata company id, usable as companyId in Company Identify - Crustdata v3. |
| data.pastPositions[].companyLinkedinUrl | string | Employer LinkedIn company page URL. |
| data.pastPositions[].companyName | string | Employer name. |
| data.pastPositions[].description | string | Role description. |
| data.pastPositions[].employmentType | string | Employment type, e.g. Full-time. |
| data.pastPositions[].endedUtc | number | When the role ended. UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. |
| data.pastPositions[].functionCategory | string | Job function. |
| data.pastPositions[].location | string | Where the role is based. |
| data.pastPositions[].seniority | string | Seniority level, e.g. CXO. |
| data.pastPositions[].startedUtc | number | When the role started. UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. |
| data.pastPositions[].title | string | Job title. |
| data.personId | string | Crustdata person id. |
| data.skills | string[] | Skills the person lists on LinkedIn. |
| data.summary | string | Profile summary. |
| data.twitterHandle | string | X (Twitter) handle. |
| data.yearsOfExperience | integer | Total years of work experience. |
| found | boolean | False when no person matched the LinkedIn URL or email. |
| reason | "not_found" | Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost. |
| Price | ||
| Price per request | USD | $0.096 |
| Price /1k req | USD | $96.00 |
FAQ
About the Person Enrichment Crustdata v3 API
The AnyAPI Person Enrichment Crustdata v3 API returns Person Enrichment crustdata v3 data as normalized JSON from one POST call to /v1/run/person_enrichment.crustdata_v3. Enrich one person from a LinkedIn profile URL or a business email: profile, headline, location, skills, current and past roles with the employer's domain, education, social handles, and GitHub profiles. Contact details are sold separately by Contact Enrichment - Crustdata v3. AnyAPI returns one normalized schema whichever source serves it. It costs from $96 per 1,000 requests, in US dollars with no subscription and no monthly minimum.