<!-- BusyBot node reference — https://busybot.net/tools/hunter/ -->

> Node: Hunter (`hunter`) · Action · v1
> Category: Sales · Credentials: Hunter API (`hunterApi`)
> Updated: 2026-08-16

# Hunter

> Find and verify professional email addresses for lead generation and sales outreach.

## Overview

Hunter.io is an email intelligence platform. This tool supports three operations: (1) Domain Search — find all email addresses associated with a domain, with filtering by type, seniority, and department, (2) Email Finder — generate or retrieve the most likely email for a person given domain, first name, and last name, and (3) Email Verifier — check the deliverability of an email address.

**Category:** Sales  
**Tool Name:** `hunter`  
**Version:** 1

**Appearance:** Icon: `lucide-Search` | Color: `#FF7A59`

## Node Type

**Action** — processes input items and produces output

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **Hunter API** credentials.
See the [Credentials Guide](https://busybot.net/credentials/hunter-api/) for setup instructions.

### Operations

| Operation | Value | Description |
|-----------|-------|-------------|
| Domain Search | `domainSearch` | Get every email address found on the internet using a given domain name, with sources. |
| Email Finder | `emailFinder` | Generate or retrieve the most likely email address from a domain name, a first name and a last name. |
| Email Verifier | `emailVerifier` | Verify the deliverability of an email address. |

### Parameters

#### Domain Search (`domainSearch`)

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Domain | `string` | Yes | — | Domain name from which you want to find the email addresses. For example, "stripe.com". |
| Only Emails | `boolean` | No | `true` | Whether to return only the found emails. |
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `100` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters | `collection` | No | `{}` | Narrow the search before results are returned. |
| — Type | `options` | No | — | Restrict results to personal or generic addresses. |
| | | | | Options: `personal`, `generic` |
| — Seniority | `multiOptions` | No | `[]` | Restrict results to the selected seniority levels. |
| | | | | Options: `junior`, `senior`, `executive` |
| — Department | `multiOptions` | No | `[]` | Restrict results to the selected departments. |
| | | | | Options: `communication`, `executive`, `finance`, `hr`, `it`, `legal`, `management`, `marketing`, `sales`, `support` |

#### Email Finder (`emailFinder`)

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Domain | `string` | Yes | — | Domain name from which you want to find the email addresses. For example, "stripe.com". |
| First Name | `string` | Yes | — | The person's first name. It doesn't need to be in lowercase. |
| Last Name | `string` | Yes | — | The person's last name. It doesn't need to be in lowercase. |

#### Email Verifier (`emailVerifier`)

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Email | `string` | Yes | — | The email address you want to verify. |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Max Concurrency | `number` | No | `10` | Maximum number of items to process concurrently. |

## Output Data

Hunter's response is **merged onto the input item's JSON** in every operation — your existing fields survive and Hunter's fields are added alongside them, overwriting any key of the same name. Binary data on the input item is forwarded.

How many items come out depends on the operation, and on `Only Emails`:

| Operation | Output items per input item |
|-----------|-----------------------------|
| `domainSearch` with **Only Emails on** (the default) | **One per email address found** — a single input item fans out into many, each carrying one address record. |
| `domainSearch` with **Only Emails off** | One — the whole domain record, addresses included as a nested array. |
| `emailFinder` | One — the single best-guess address record. |
| `emailVerifier` | One — the verification record for that address. |

`Return All` changes how much is fetched, not the shape: on, Hunter is paged through until every result is collected; off, one page of up to `Limit` results is fetched. With `Return All` on and `Only Emails` off, the addresses from every page are concatenated into the single output item.

A Domain Search in fan-out mode that found nothing still produces one item, carrying your original JSON plus a marker:

```json
{
  "_noResults": true
}
```

Test for `{{ $json._noResults }}` before treating that branch as results. The other operations have no such marker — an unmatched lookup simply adds no fields, so check for a field you expect instead.

The fields themselves are whatever Hunter returns for the lookup; the node does not rename, nest or filter them. Reference them downstream by expression, e.g. `{{ $json.value }}`.

## Usage Examples

- Find all email addresses for a company domain
- Look up the email address for a specific person at a company
- Verify whether an email address is deliverable
- Search for executive-level emails at a domain
- Filter domain emails by department (sales, marketing, etc.)

## Example Configuration

Find every address on a domain, one item per address:

```json
{
  "type": "hunter",
  "parameters": {
    "operation": "domainSearch",
    "domain": "{{ $json.domain }}",
    "onlyEmails": true,
    "returnAll": true,
    "maxConcurrency": 5
  }
}
```

Pull only senior and executive sales or marketing contacts, capped at 50:

```json
{
  "type": "hunter",
  "parameters": {
    "operation": "domainSearch",
    "domain": "{{ $json.domain }}",
    "onlyEmails": true,
    "returnAll": false,
    "limit": 50,
    "filters": {
      "type": "personal",
      "seniority": ["senior", "executive"],
      "department": ["sales", "marketing"]
    }
  }
}
```

Keep the full domain record instead of fanning out:

```json
{
  "type": "hunter",
  "parameters": {
    "operation": "domainSearch",
    "domain": "{{ $json.domain }}",
    "onlyEmails": false,
    "returnAll": false,
    "limit": 100
  }
}
```

Guess one person's address from their name and employer:

```json
{
  "type": "hunter",
  "parameters": {
    "operation": "emailFinder",
    "domain": "{{ $json.companyDomain }}",
    "firstname": "{{ $json.firstName }}",
    "lastname": "{{ $json.lastName }}"
  }
}
```

Check deliverability before adding an address to a send list:

```json
{
  "type": "hunter",
  "parameters": {
    "operation": "emailVerifier",
    "email": "{{ $json.email }}",
    "maxConcurrency": 20
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Find and verify professional email addresses -- search domains for emails, find specific people's addresses, or verify deliverability via the Hunter.io API.

### Parameter Dependencies

- **Domain Search Operation**: Requires `domain`. Can optionally use `onlyEmails`, `returnAll`, `limit` (only when `returnAll` is false), and `filters`
- **Email Finder Operation**: Requires `domain`, `firstname`, and `lastname`
- **Email Verifier Operation**: Requires `email`
- **Filters**: When used, `type` accepts "personal" or "generic", while `seniority` and `department` accept arrays of predefined values