Person Enrichment API

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.

POST/v1/run/person_enrichment.crustdata_v3
Requests
-
30d

Pricing

One price, in dollars

Providers
Crustdata- served- uptime- p50$96.00/1k reqflat

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())
Open in
Get a free key
Sample response
{
  "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"
}
Response interface
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 30d
POST /v1/run/person_enrichment.crustdata_v3
curl -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"}'
FieldTypeExample value
Request body
emailstringThe person's business email address.
linkedinUrlstring"https://www.linkedin.com/in/satyanadella"LinkedIn profile URL, e.g. https://www.linkedin.com/in/satyanadella. Send exactly one of linkedinUrl or email.
minSimilarityScorenumberFor an email lookup, the lowest match similarity from 0 to 1 to accept. Leave unset to use Crustdata's default.
Response
dataobjectThe enriched person, or null when nothing matched.
data.connectionsintegerLinkedIn connection count.
data.currentPositionsobject[]Roles the person holds now.
data.currentPositions[].companyDomainstringEmployer website domain.
data.currentPositions[].companyIdstringEmployer Crustdata company id, usable as companyId in Company Identify - Crustdata v3.
data.currentPositions[].companyLinkedinUrlstringEmployer LinkedIn company page URL.
data.currentPositions[].companyNamestringEmployer name.
data.currentPositions[].descriptionstringRole description.
data.currentPositions[].employmentTypestringEmployment type, e.g. Full-time.
data.currentPositions[].endedUtcnumberWhen the role ended. UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.
data.currentPositions[].functionCategorystringJob function.
data.currentPositions[].locationstringWhere the role is based.
data.currentPositions[].senioritystringSeniority level, e.g. CXO.
data.currentPositions[].startedUtcnumberWhen the role started. UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.
data.currentPositions[].titlestringJob title.
data.educationobject[]Schools attended.
data.education[].degreestringDegree.
data.education[].descriptionstringNotes on the course of study.
data.education[].endYearintegerYear finished.
data.education[].fieldOfStudystringField of study.
data.education[].schoolstringSchool name.
data.education[].startYearintegerYear started.
data.firstNamestringFirst name.
data.followersintegerLinkedIn follower count.
data.githubProfilesobject[]GitHub accounts matched to the person, each with its own match confidence.
data.githubProfiles[].biostringProfile bio.
data.githubProfiles[].companystringCompany as written on the profile.
data.githubProfiles[].confidenceScorenumberConfidence from 0 to 1 that this account belongs to the person.
data.githubProfiles[].followersintegerFollower count.
data.githubProfiles[].followingintegerAccounts followed.
data.githubProfiles[].locationstringLocation as written on the profile.
data.githubProfiles[].namestringDisplay name.
data.githubProfiles[].profileUrlstringGitHub profile URL.
data.githubProfiles[].publicRepoCountintegerPublic repository count.
data.githubUrlstringGitHub profile URL linked from the profile.
data.headlinestringLinkedIn headline.
data.imagestringProfile photo URL.
data.jobTitlestringCurrent job title.
data.languagesstring[]Languages the person lists.
data.lastNamestringLast name.
data.linkedinUrlstringLinkedIn profile URL.
data.locationobjectWhere the person is based.
data.location.citystringCity.
data.location.continentstringContinent.
data.location.countrystringCountry.
data.location.labelstringLocation as written on the profile.
data.location.statestringState or region.
data.matchConfidencenumberConfidence from 0 to 1 that the returned person is the one asked for.
data.namestringFull name.
data.pastPositionsobject[]Roles the person held before.
data.pastPositions[].companyDomainstringEmployer website domain.
data.pastPositions[].companyIdstringEmployer Crustdata company id, usable as companyId in Company Identify - Crustdata v3.
data.pastPositions[].companyLinkedinUrlstringEmployer LinkedIn company page URL.
data.pastPositions[].companyNamestringEmployer name.
data.pastPositions[].descriptionstringRole description.
data.pastPositions[].employmentTypestringEmployment type, e.g. Full-time.
data.pastPositions[].endedUtcnumberWhen the role ended. UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.
data.pastPositions[].functionCategorystringJob function.
data.pastPositions[].locationstringWhere the role is based.
data.pastPositions[].senioritystringSeniority level, e.g. CXO.
data.pastPositions[].startedUtcnumberWhen the role started. UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.
data.pastPositions[].titlestringJob title.
data.personIdstringCrustdata person id.
data.skillsstring[]Skills the person lists on LinkedIn.
data.summarystringProfile summary.
data.twitterHandlestringX (Twitter) handle.
data.yearsOfExperienceintegerTotal years of work experience.
foundbooleanFalse 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 requestUSD$0.096
Price /1k reqUSD$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.

It costs from $96 per 1,000 requests, in US dollars with no subscription and no monthly minimum. You fund one USD wallet, each call draws it down, and a failed request costs $0.

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. The response is normalized JSON with the same envelope every AnyAPI endpoint returns, so parsing a second endpoint is a change of URL and nothing else.