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

# Hunter

> Find a contact's email with Hunter's Email Finder from their name and company domain, and check the score before emailing.

> [!NOTE]
>
> **Pro plan.** Hunter 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).

A **Webhook / HTTP** step asks Hunter's Email Finder for the contact's address from their first name, last name and company domain. Kerux reads the email, Hunter's confidence score and its verification status, and only emails people above your threshold.

> [!NOTE]
>
> **How it connects:** Hunter's API v2 with your key in the URL. See Hunter's [Email Finder](https://hunter.io/api-documentation/v2#email-finder) docs. The answer below follows Hunter's docs.

## Before you start

* **Hunter plan:** the free plan has a small number of searches each month; paid plans add more. Hunter's docs say the Email Finder only counts a request when it returns an email.
* **An API key:** in Hunter, open **API** in your account.
* **The company domain** on the contact, for example in the company's **Website** (`{{company.website}}`).

## 1. Connect Hunter

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

* **How it signs in:** **API key in the URL**, parameter name `api_key`, paste the key.
* **Base URL:** `https://api.hunter.io`

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

## 2. Find the email

Add a **Webhook / HTTP** step named `hunter`, pick the Hunter connection:

```json theme={null}
{
  "method": "GET",
  "url": "/v2/email-finder",
  "query": {
    "domain": "{{company.website}}",
    "first_name": "{{contact.first_name}}",
    "last_name": "{{contact.last_name}}"
  },
  "bodyType": "none"
}
```

Send the bare domain (for example `brightpath.io`). If your company websites start with `https://`, a **Transform** step with **replace** can strip it first. Hunter's docs also list `company` (the company name) in place of `domain`, and `linkedin_handle` in place of the names. Its answer (trimmed):

```json theme={null}
{
  "data": {
    "email": "sofia@brightpath.io",
    "score": 94,
    "verification": { "status": "valid" }
  }
}
```

## 3. Keep only good addresses

* A **Condition**: `{{steps.hunter.response.body.data.score}}` at least your threshold (for example 80) and `{{steps.hunter.response.body.data.verification.status}}` equal to `valid`.
* Then an **Update contact** step that sets **Email** to `{{steps.hunter.response.body.data.email}}`.
* Everyone else stays on LinkedIn.

## Test with one contact

In the **Builder**, click **Test** to open **Test on one contact**. The journey shows the request (the key is hidden) and Hunter's answer.

## Common errors

> [accordion] 401 Unauthorized
>
> The key is wrong or missing. Check the connection's parameter name is `api_key`.

> [accordion] 400 with a missing domain
>
> The contact's company has no website. Add a **Condition** before the step, or fill the company's website first.

> [accordion] 429 Too Many Requests
>
> Hunter's rate limit or your monthly searches. Kerux retries later; check your plan's searches.

Related: [Webhook steps](/help/integrations/webhook-steps.md), [Prospeo](/help/integration-guides/prospeo.md), [Instantly](/help/integration-guides/instantly.md).


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