
Up to 10 people's titles, work emails from emails or names.
Use the bulk people enrichment endpoint to enrich data for up to ten people with a single API call.
Job people.enrich.bulk
telipot run apollo.people.enrich.bulk \
--input-json '{"details":"<details>"}' \
--quotePrice
$0.0196 / resultPriced· before it runs
apollo.people.enrich.bulk
$0.0196 / resultYour plan
Whose account it uses
1The person asking
not needed2Your company’s Apollo plan
Selected identity for this example3Our account
not usedWhat it sends
{
"details": "<details>"
}Your Apollo login is added for you. Your AI never sees it.
What it costs
$0.0196
per result · billed per result
| rate | 1 credit per result, billed per result |
| source | docs · docs.apollo.io/docs/api-pricing · checked 2026-10-05 |
| confidence | documented |
| settles on | The charge Apollo reports in credits_consumed |
| note | 1 credit per person when credit-consuming data (demographics or email) is found, 0 for an unmatched person. The docs give 1-9 credits per person: +8 when a mobile phone is returned, and waterfall enrichment costs more. This task sends no phone, personal-email or waterfall option, so it is priced at the 1-credit base per person. credits_consumed reports what the call used and can be a decimal. |
Preview the price first. --quote runs nothing.
For developers · run it
Shell · runs the task on the named account
telipot run apollo.people.enrich.bulk \
--input-json '{"details":"<details>"}'details array · required · 1 to 10 | One object per person, up to 10, each with any of first_name, last_name, name, email, hashed_email, organization_name, domain, id, linkedin_url. More fields improve the match; a name without a domain or email may match nothing. |
request_id integer | A signed 64-bit integer that may be negative. |
status string | success for any 200 response, even when not every person matched. |
error_code string | null | |
error_message string | null | |
total_requested_enrichments integer | The number of objects sent in details. Always returned. |
unique_enriched_records integer | Distinct people whose enrichment consumed credits; a billing count, not a match count. |
missing_records integer | Entries in details that Apollo could not match. |
credits_consumed number | Credits the request consumed; can be a decimal. |
matches object | null[] |
Full output schema · JSONNested fields and constraints
Output JSON Schema
{
"type": "object",
"required": [
"status",
"total_requested_enrichments"
],
"properties": {
"request_id": {
"type": "integer",
"description": "A signed 64-bit integer that may be negative."
},
"status": {
"type": "string",
"description": "success for any 200 response, even when not every person matched."
},
"error_code": {
"type": [
"string",
"null"
]
},
"error_message": {
"type": [
"string",
"null"
]
},
"total_requested_enrichments": {
"type": "integer",
"description": "The number of objects sent in details. Always returned."
},
"unique_enriched_records": {
"type": "integer",
"description": "Distinct people whose enrichment consumed credits; a billing count, not a match count."
},
"missing_records": {
"type": "integer",
"description": "Entries in details that Apollo could not match."
},
"credits_consumed": {
"type": "number",
"description": "Credits the request consumed; can be a decimal."
},
"matches": {
"type": "array",
"items": {
"type": [
"object",
"null"
],
"description": "One entry per person; an unmatched person is null.",
"properties": {
"id": {
"type": "string"
},
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
},
"name": {
"type": "string"
},
"linkedin_url": {
"type": "string"
},
"title": {
"type": "string"
},
"headline": {
"type": "string"
},
"email": {
"type": "string"
},
"email_status": {
"type": "string"
},
"organization_id": {
"type": "string"
},
"match_confidence": {
"type": "string",
"enum": [
"high",
"medium",
"low",
"none"
]
},
"employment_history": {
"type": "array",
"items": {
"type": "object",
"properties": {
"organization_id": {
"type": "string"
},
"organization_name": {
"type": "string"
},
"title": {
"type": "string"
},
"start_date": {
"type": "string"
},
"current": {
"type": "boolean"
}
}
}
},
"state": {
"type": "string"
},
"city": {
"type": "string"
},
"country": {
"type": "string"
},
"seniority": {
"type": "string"
},
"departments": {
"type": "array",
"items": {
"type": "string"
}
},
"functions": {
"type": "array",
"items": {
"type": "string"
}
},
"organization": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"website_url": {
"type": "string"
},
"primary_domain": {
"type": "string"
},
"industry": {
"type": "string"
},
"estimated_num_employees": {
"type": "integer"
}
}
}
}
}
}
}
}A real answer
No example captured yet: one is recorded when telipot catalog verify passes.

