> ## Documentation Index
> Fetch the complete documentation index at: /help/llms.txt
> Use this file to discover all available pages before exploring further.

# Apollo.io

> Find a LinkedIn contact's work email with Apollo's People Enrichment, then use it in the next steps of the campaign.

> [!NOTE]
>
> **Pro plan.** Apollo.io works through a connection and HTTP steps, which are part of Pro and Agency (and the free trial). Anything you already have keeps working on every plan. See [Plans and billing](/help/account/billing.md).

When someone accepts your invitation, a **Webhook / HTTP** step asks Apollo for their work email using their LinkedIn profile. The email is then available to the next steps: an email step, Smartlead or Instantly, or your CRM.

> [!NOTE]
>
> **How it connects:** through Apollo's API with your API key. See Apollo's [People Enrichment](https://docs.apollo.io/reference/people-enrichment), [authentication](https://docs.apollo.io/reference/authentication) and [API key](https://docs.apollo.io/docs/create-api-key) docs. The request and answer below follow Apollo's docs.

## Before you start

* **Apollo plan:** access to Apollo's API depends on your plan, and each endpoint has its own rate limit (shown in Apollo's developer settings).
* **Credits:** People Enrichment uses 1 credit for demographics or an email, 8 more if a mobile number comes back, and nothing if nothing is found (Apollo's docs).
* **An API key:** in Apollo, open **Settings > Integrations > API** and create a key.

## 1. Connect Apollo

In Kerux, open **Integrations > Connections**, click **Connect** on **Custom API** (under **Developers**):

* **How it signs in:** **API key in a header**, **Header name** `x-api-key`, paste the key.
* **Base URL:** `https://api.apollo.io`

Click **Save**, then **Test connection**.

## 2. Look up the email

Add a **Webhook / HTTP** step after **Invitation accepted**, pick the Apollo connection, name it `apollo` and paste this in the step's JSON:

```json theme={null}
{
  "method": "POST",
  "url": "/api/v1/people/match",
  "query": {
    "linkedin_url": "{{contact.linkedin_url}}",
    "first_name": "{{contact.first_name}}",
    "last_name": "{{contact.last_name | optional}}",
    "organization_name": "{{contact.company | optional}}"
  },
  "bodyType": "none"
}
```

Apollo answers with the person it matched (from its docs, trimmed):

```json theme={null}
{
  "person": {
    "first_name": "Maria",
    "last_name": "Lopez",
    "title": "Head of Sales",
    "email": "maria@acme.com",
    "organization": { "name": "Acme" }
  }
}
```

In the next steps: `{{steps.apollo.response.body.person.email}}`, `{{steps.apollo.response.body.person.title}}`.

## 3. Use it safely

* Add a **Condition** after the step: email found goes to your email step; no email stays on LinkedIn only. Kerux never sends an email with an empty address: a step whose variable is empty waits instead.
* To keep the email on the contact, add an **Update contact** step that sets **Email** to the email from Apollo's answer.

## Test with one contact

In the campaign's **Builder**, click **Test** to open **Test on one contact** with a contact whose profile you know. The journey shows Apollo's answer and the credits it used are visible in Apollo.

## Common errors

> [accordion] 401 or 403
>
> The key is wrong, or your Apollo plan doesn't include this endpoint. Check the key in **Settings > Integrations > API** and your plan.

> [accordion] 429 Too Many Requests
>
> You hit Apollo's rate limit for the endpoint. Kerux retries later on its own; lower the campaign's daily volume if it keeps happening.

> [accordion] No email in the answer
>
> Apollo found the person but no email, or no match. The step still succeeds; branch on the email being empty.

Related: [Webhook steps](/help/integrations/webhook-steps.md), [Companies and enrichment](/help/leads/companies-and-enrichment.md), [Instantly](/help/integration-guides/instantly.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.