Apollo
Search contacts, enrich leads, and trigger sequences via the Apollo.io REST API.
This tool talks directly to the Apollo.io REST API
(https://api.apollo.io/api/v1) using your master API key. It covers the
three highest-value sales-prospecting operations: finding people, enriching a
single lead, and adding contacts to an outbound sequence.
What it does
| Operation | Apollo endpoint | Purpose |
|---|---|---|
people_search |
POST /mixed_people/api_search |
Search Apollo's people database by keywords, title, and location. |
people_enrichment |
POST /people/match |
Enrich one person — match on email, name, or employer to return full demographic/firmographic data. |
add_to_sequence |
POST /emailer_campaigns/{sequence_id}/add_contact_ids |
Add one or more contacts to an existing sequence (emailer campaign). |
The tool returns the raw Apollo JSON response as result (a JSON string) plus
the HTTP status. Non-2xx responses are returned, not thrown, so you can
inspect Apollo's error payload.
API key setup
- Sign in to Apollo and go to Settings → Integrations → API.
- Create an API key (a master API key is required for search and sequence operations).
- Pass it as the
apiKeyinput. The tool sends it as thex-api-keyrequest header — Apollo's documented authentication scheme. No OAuth or token exchange is needed.
Note:
people_searchdoes not consume credits, butpeople_enrichmentwithrevealPersonalEmails: trueandadd_to_sequencedo consume Apollo credits.
Inputs
| Input | Used by | Notes |
|---|---|---|
apiKey |
all | Required. Apollo master API key (x-api-key header). |
operation |
all | Required. One of people_search, people_enrichment, add_to_sequence. |
qKeywords |
people_search | Free-text keywords. |
personTitles |
people_search | Comma-separated job titles → person_titles[]. |
personLocations |
people_search | Comma-separated locations → person_locations[]. |
page |
people_search | Page number (default 1). |
perPage |
people_search | Results per page, max 100 (default 10). |
firstName / lastName |
people_enrichment | Person's name. |
email |
people_enrichment | Email to match on. |
domain |
people_enrichment | Employer domain, no www/@ (e.g. apollo.io). |
organizationName |
people_enrichment | Current/previous employer name. |
revealPersonalEmails |
people_enrichment | true to reveal personal emails (consumes credits). |
sequenceId |
add_to_sequence | Required. Target sequence (emailer campaign) id. |
contactIds |
add_to_sequence | Required. Comma-separated Apollo contact ids → contact_ids[]. |
sendEmailFromEmailAccountId |
add_to_sequence | Required. Sending email-account id. |
People-enrichment requires at least one strong identifier: email, or
domain, or organizationName, or firstName+lastName.
Examples
Search for sales managers in California
operation: people_search
qKeywords: sales manager
personTitles: sales manager,account executive
personLocations: California
perPage: 25
Enrich a known lead
operation: people_enrichment
firstName: tim
lastName: zheng
domain: apollo.io
Add contacts to a sequence
operation: add_to_sequence
sequenceId: 6512a1b2c3d4e5f6a7b8c9d0
contactIds: 64f1...a1,64f1...a2
sendEmailFromEmailAccountId: 63ab...90
Output
{
"result": "{ ...raw Apollo JSON response... }",
"status": "200"
}
Publishes
The keys a later task may reference as {{taskName.key}}. Referencing anything not listed here resolves to nothing at run time.
errorresultstatus
Input Properties
Every property this tool accepts, from its own tool.iml.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
apiKey |
string | yes | — | DEPRECATED — bind an API Key credential to the task with credentialName instead. A key pasted here is stored in the workflow definition in clear and appears in every export of it. Still honoured for workflows built before the change. |
operation |
string | yes | — | One of: people_search, people_enrichment, add_to_sequence |
qKeywords |
string | no | — | people_search: free-text keywords to filter people (name, title, company, etc.). |
personTitles |
string | no | — | people_search: comma-separated job titles to filter on (e.g. 'sales manager,account executive'). Maps to person_titles[]. |
personLocations |
string | no | — | people_search: comma-separated locations where people live (e.g. 'California,Texas'). Maps to person_locations[]. |
page |
string | no | 1 |
people_search: result page number (default 1). |
perPage |
string | no | 10 |
people_search: results per page, max 100 (default 10). |
firstName |
string | no | — | people_enrichment: the person's given name (e.g. 'tim'). |
lastName |
string | no | — | people_enrichment: the person's family name (e.g. 'zheng'). |
email |
string | no | — | people_enrichment: the person's email address to match on. |
domain |
string | no | — | people_enrichment: employer domain without www or @ (e.g. 'apollo.io'). |
organizationName |
string | no | — | people_enrichment: current or previous employer name (e.g. 'apollo'). |
revealPersonalEmails |
string | no | — | people_enrichment: set to 'true' to reveal personal emails (consumes credits). Default false. |
sequenceId |
string | no | — | add_to_sequence: the Apollo sequence (emailer campaign) id to add contacts to. |
contactIds |
string | no | — | add_to_sequence: comma-separated Apollo contact ids to add. Maps to contact_ids[]. |
sendEmailFromEmailAccountId |
string | no | — | add_to_sequence: the Apollo email account id that will send from this sequence (required). |