Person Enrichment Fullenrich bulk API
Run FullEnrich's waterfall on up to 99 people in one call and get back work emails, personal emails and mobile numbers, each with a deliverability status, alongside the full LinkedIn-grade profile and employer record for everyone matched. Only the contacts it matches are returned, and only those are billed.
- Category enrichmentRequests / mo -Routing 1 lane · no failover
Pricing
One price, in dollars
pay per request · no subscription · fallbacks added as the catalog growsCall it
Make your first request
POST /v1/run/person_enrichment.fullenrich_bulk · same shape for every APIimport os, requests res = requests.post( "https://api.getanyapi.com/v1/run/person_enrichment.fullenrich_bulk", headers={"Authorization": f"Bearer {os.environ['ANYAPI_KEY']}"}, json={ "contacts": "" }, ) print(res.json())
{
"data": {
"contacts": [
{
"companyDomain": "example.com",
"companyName": "Acme Inc",
"custom": {},
"email": "alex@example.com",
"emailStatus": "alex@example.com",
"firstName": "Alex",
"fullName": "Alex Rivera",
"lastName": "Rivera",
"personalEmails": [
{
"email": "alex@example.com",
"status": "active"
}
],
"profile": {
"city": "San Francisco",
"company": {
"companyId": "Acme Inc",
"companyType": "Acme Inc",
"description": "A short example description of this item.",
"domain": "example.com",
"foundedYear": 2024,
"headcount": 12500,
"headcountRange": "example",
"headquarters": {
"city": null,
"country": null,
"countryCode": null,
"line1": null,
"line2": null,
"region": null
},
"image": "https://example.com/image.jpg",
"industry": "general",
"linkedinFollowers": 12500,
"linkedinHandle": "https://example.com/page",
"linkedinId": "https://example.com/page",
"linkedinUrl": "https://example.com/page",
"name": "Example title",
"offices": [
null
],
"specialties": [
null
],
"website": "https://example.com/page"
},
"country": "US",
"countryCode": "US",
"description": "A short example description of this item.",
"educations": [
{
"degree": null,
"endUtc": null,
"schoolName": null,
"startUtc": null
}
],
"employmentHistory": [
{
"companyDomain": null,
"companyName": null,
"isCurrent": null,
"jobTitle": null,
"seniority": null,
"startUtc": null
}
],
"firstName": "Alex",
"fullName": "Alex Rivera",
"headline": "Example title",
"isCurrent": true,
"jobStartUtc": 12.5,
"jobTitle": "Example title",
"languages": [
{
"language": null,
"proficiency": null
}
],
"lastName": "Rivera",
"linkedinHandle": "https://example.com/page",
"linkedinId": "https://example.com/page",
"linkedinUrl": "https://example.com/page",
"profileId": "a1b2c3d4",
"region": "CA",
"seniority": "example",
"skills": [
"example"
]
},
"workEmails": [
{
"email": "alex@example.com",
"status": "active"
}
]
}
]
},
"found": true
}interface PersonEnrichmentFullenrichBulkResponse {
data: {
contacts: {
companyDomain?: string;
companyName?: string;
custom?: {
};
email?: string;
emailStatus?: string;
firstName?: string;
fullName?: string;
lastName?: string;
personalEmails?: {
email?: string;
status?: string;
}[];
profile?: {
city?: string;
company?: {
companyId?: string;
companyType?: string;
description?: string;
domain?: string;
foundedYear?: number;
headcount?: number;
headcountRange?: string;
headquarters?: {
city?: string;
country?: string;
countryCode?: string;
line1?: string;
line2?: string;
region?: string;
};
image?: string;
industry?: string;
linkedinFollowers?: number;
linkedinHandle?: string;
linkedinId?: string;
linkedinUrl?: string;
name?: string;
offices?: {
line1?: string;
line2?: string;
}[];
specialties?: string[];
website?: string;
};
country?: string;
countryCode?: string;
description?: string;
educations?: {
degree?: string;
endUtc?: number;
schoolName?: string;
startUtc?: number;
}[];
employmentHistory?: {
companyDomain?: string;
companyName?: string;
isCurrent?: boolean;
jobTitle?: string;
seniority?: string;
startUtc?: number;
}[];
firstName?: string;
fullName?: string;
headline?: string;
isCurrent?: boolean;
jobStartUtc?: number;
jobTitle?: string;
languages?: {
language?: string;
proficiency?: string;
}[];
lastName?: string;
linkedinHandle?: string;
linkedinId?: string;
linkedinUrl?: string;
profileId?: string;
region?: string;
seniority?: string;
skills?: string[];
};
workEmails?: {
email?: string;
status?: string;
}[];
}[];
} | null;
found: boolean;
}Full parameter and response reference - every field, type, and example for this endpoint.
Reference
Request, response, and price
Last verified 2026-09-03 · uptime and latency measured over 30dcurl -X POST https://api.getanyapi.com/v1/run/person_enrichment.fullenrich_bulk \
-H "Authorization: Bearer $ANYAPI_KEY" \
-H "Content-Type: application/json" \
-d '{"contacts":[{"custom":{"row":"1"},"domain":"stripe.com","enrich_fields":["contact.emails","contact.personal_emails"],"first_name":"Patrick","last_name":"Collison"},{"company_name":"Figma","custom":{"row":"2"},"enrich_fields":["contact.emails"],"first_name":"Dylan","last_name":"Field","linkedin_url":"https://www.linkedin.com/in/dylanfield"}]}'| Field | Type | Example value |
|---|---|---|
| Request body | ||
| contacts | array | [{"custom":{"row":"1"},"domain":"stripe.com","enrich_fields":["contact.emails","contact.personal_emails"],"first_name":"Patrick","last_name":"Collison"},{"company_name":"Figma","custom":{"row":"2"},"enrich_fields":["contact.emails"],"first_name":"Dylan","last_name":"Field","linkedin_url":"https://www.linkedin.com/in/dylanfield"}]People to enrich, up to 99 per call. You are charged only for the contacts the waterfall resolves, though the funds held cover every contact you submit until the call settles. Each entry is passed to FullEnrich exactly as you write it, which is why these keys are snake_case while the rest of the API is camelCase. Give a name plus an employer (company_name or domain), or a linkedin_url, or both - more identity means a better hit rate. |
| Response | ||
| data | object | |
| data.contacts | object[] | One row per contact the waterfall resolved, in the order you sent them. Contacts it could not resolve are left out and are not billed, so match your rows back by the tags you set in custom, or by name and company. |
| data.contacts[].companyDomain | string | Company domain as you supplied it. |
| data.contacts[].companyName | string | Company name as you supplied it. |
| data.contacts[].custom | object | The tags you attached to this entry, echoed back so you can join rows to your own records. |
| data.contacts[].email | string | Best work email FullEnrich found for this person. |
| data.contacts[].emailStatus | string | Deliverability verdict for that address, e.g. DELIVERABLE or HIGH_PROBABILITY. |
| data.contacts[].firstName | string | First name. |
| data.contacts[].fullName | string | Full name. |
| data.contacts[].lastName | string | Last name. |
| data.contacts[].personalEmails | object[] | Personal addresses found, each with its own deliverability verdict. |
| data.contacts[].personalEmails[].email | string | Best work email FullEnrich found for this person. |
| data.contacts[].personalEmails[].status | string | Deliverability verdict. |
| data.contacts[].profile | object | The person behind the match: identity, location, current role and employer, history, education, languages and skills. Absent when nothing matched. |
| data.contacts[].profile.city | string | City the person is in. |
| data.contacts[].profile.company | object | The person's current employer, with FullEnrich's full firmographic record. |
| data.contacts[].profile.company.companyId | string | FullEnrich's own company identifier. |
| data.contacts[].profile.company.companyType | string | Ownership type, e.g. Public Company, Privately Held. |
| data.contacts[].profile.company.description | string | Profile summary text. |
| data.contacts[].profile.company.domain | string | Primary company domain. |
| data.contacts[].profile.company.foundedYear | integer | Year the company was founded. Zero when FullEnrich holds none. |
| data.contacts[].profile.company.headcount | integer | Employees FullEnrich currently counts. |
| data.contacts[].profile.company.headcountRange | string | Employee headcount band, e.g. 5001-10000. |
| data.contacts[].profile.company.headquarters | object | Headquarters address. |
| data.contacts[].profile.company.headquarters.city | string | City the person is in. |
| data.contacts[].profile.company.headquarters.country | string | Country name. |
| data.contacts[].profile.company.headquarters.countryCode | string | ISO 3166-1 alpha-2 country code. |
| data.contacts[].profile.company.headquarters.line1 | string | First address line. |
| data.contacts[].profile.company.headquarters.line2 | string | Second address line, carrying city, region, postal code and country. |
| data.contacts[].profile.company.headquarters.region | string | State or region. |
| data.contacts[].profile.company.image | string | Company logo URL. |
| data.contacts[].profile.company.industry | string | Main industry. |
| data.contacts[].profile.company.linkedinFollowers | integer | LinkedIn follower count. |
| data.contacts[].profile.company.linkedinHandle | string | LinkedIn vanity handle. |
| data.contacts[].profile.company.linkedinId | string | LinkedIn numeric member id. |
| data.contacts[].profile.company.linkedinUrl | string | LinkedIn profile URL. |
| data.contacts[].profile.company.name | string | Company name. |
| data.contacts[].profile.company.offices | object[] | Every other office FullEnrich holds for the company. |
| data.contacts[].profile.company.offices[].line1 | string | First address line. |
| data.contacts[].profile.company.offices[].line2 | string | Second address line, carrying city, region, postal code and country. |
| data.contacts[].profile.company.specialties | string[] | Specialties the company lists for itself. |
| data.contacts[].profile.company.website | string | Company website URL. |
| data.contacts[].profile.country | string | Country name. |
| data.contacts[].profile.countryCode | string | ISO 3166-1 alpha-2 country code. |
| data.contacts[].profile.description | string | Profile summary text. |
| data.contacts[].profile.educations | object[] | Education history. |
| data.contacts[].profile.educations[].degree | string | Degree earned. |
| data.contacts[].profile.educations[].endUtc | number | UTC epoch timestamp in seconds (Unix time) study ended. Multiply by 1000 for a JS Date in milliseconds. |
| data.contacts[].profile.educations[].schoolName | string | School name. |
| data.contacts[].profile.educations[].startUtc | number | UTC epoch timestamp in seconds (Unix time) the role started. Multiply by 1000 for a JS Date in milliseconds. |
| data.contacts[].profile.employmentHistory | object[] | Every role on the record, current and past. |
| data.contacts[].profile.employmentHistory[].companyDomain | string | Company domain as you supplied it. |
| data.contacts[].profile.employmentHistory[].companyName | string | Company name as you supplied it. |
| data.contacts[].profile.employmentHistory[].isCurrent | boolean | True while the role is current. |
| data.contacts[].profile.employmentHistory[].jobTitle | string | Job title. |
| data.contacts[].profile.employmentHistory[].seniority | string | Seniority band. |
| data.contacts[].profile.employmentHistory[].startUtc | number | UTC epoch timestamp in seconds (Unix time) the role started. Multiply by 1000 for a JS Date in milliseconds. |
| data.contacts[].profile.firstName | string | First name. |
| data.contacts[].profile.fullName | string | Full name. |
| data.contacts[].profile.headline | string | LinkedIn headline. |
| data.contacts[].profile.isCurrent | boolean | True while the role is current. |
| data.contacts[].profile.jobStartUtc | number | UTC epoch timestamp in seconds (Unix time) the current role started. Multiply by 1000 for a JS Date in milliseconds. |
| data.contacts[].profile.jobTitle | string | Job title. |
| data.contacts[].profile.languages | object[] | Languages the person speaks. |
| data.contacts[].profile.languages[].language | string | Language name. |
| data.contacts[].profile.languages[].proficiency | string | Proficiency band, e.g. FULL_PROFESSIONAL. |
| data.contacts[].profile.lastName | string | Last name. |
| data.contacts[].profile.linkedinHandle | string | LinkedIn vanity handle. |
| data.contacts[].profile.linkedinId | string | LinkedIn numeric member id. |
| data.contacts[].profile.linkedinUrl | string | LinkedIn profile URL. |
| data.contacts[].profile.profileId | string | FullEnrich's own person identifier. |
| data.contacts[].profile.region | string | State or region. |
| data.contacts[].profile.seniority | string | Seniority band. |
| data.contacts[].profile.skills | string[] | Skills the person lists. |
| data.contacts[].workEmails | object[] | Every work address found, best first, each with its own deliverability verdict. |
| data.contacts[].workEmails[].email | string | Best work email FullEnrich found for this person. |
| data.contacts[].workEmails[].status | string | Deliverability verdict. |
| found | boolean | False when nothing was resolved, in which case there is nothing to bill. |
| Price | ||
| Price per request (ceiling) | USD | $9.98 |
| Price /1k results | USD | $100.80 |
FAQ
About the Person Enrichment Fullenrich bulk API
The AnyAPI Person Enrichment Fullenrich bulk API returns Person Enrichment fullenrich bulk data as normalized JSON from one POST call to /v1/run/person_enrichment.fullenrich_bulk. Run FullEnrich's waterfall on up to 99 people in one call and get back work emails, personal emails and mobile numbers, each with a deliverability status, alongside the full LinkedIn-grade profile and employer record for everyone matched. Only the contacts it matches are returned, and only those are billed. AnyAPI returns one normalized schema whichever source serves it. It costs $100.80 per 1,000 results, and never more than $9.98 for a single request, in US dollars with no subscription and no monthly minimum.
Get started
Two ways to start on AnyAPI
Humans fund a USD wallet and pay per request. Agents point a coding agent at one URL and onboard themselves.