# Hunter app

URL: https://attio.com/help/reference/apps/data-and-enrichment-apps/hunter-app
Breadcrumbs: [Help](https://attio.com/help) > [Reference](https://attio.com/help/reference) > [Apps](https://attio.com/help/reference/apps) > [Data and enrichment apps](https://attio.com/help/reference/apps/data-and-enrichment-apps)

Find and verify emails with Hunter in workflows.

> Available on all plans.
>
> **Admins** can install and connect the Hunter app. Once connected, **all members** can use it in workflows.

The Hunter app lets your workflows find and check work email addresses. Use it to fill in a missing email on a new person record, confirm an address before a sequence sends to it, or pull the contacts at a company you've just started tracking.

## Connect Hunter to Attio

Hunter uses a single workspace connection. One admin connects an API key and the whole workspace shares it, so individual members don't connect their own accounts.

1. In Hunter, go to [hunter.io/api-keys](https://hunter.io/api-keys) and create an API key.
2. In Attio, click your workspace name, select **Workspace settings**, then go to **Apps** in the sidebar.
3. Search for and open the **Hunter** app, then click **Install**.
4. Click **Connect** and paste in your Hunter API key.

## Use Hunter steps in a workflow

Use these steps to find an address, check one you already have, or pull the addresses at a company. Each lookup uses credits from your Hunter plan, which are separate from the Attio credits a workflow run consumes.

### Find email

Finds the most likely work email from a company, a name, or a LinkedIn URL.

Inputs:

- **LinkedIn URL:** The person's LinkedIn profile.
- **Person's name:** Enter a full name, or a first and last name.
- **Company domain:** The company's domain.
- **Company name:** The company's name.

Set enough information for Hunter to identify the person. That means either a LinkedIn URL on its own, or a person's name together with a company domain or company name.

A few things affect which values get used:

- A LinkedIn URL is enough by itself, and anything else you set is still sent alongside it.
- If you set both a company domain and a company name, the domain is used and the name is ignored.
- A first and last name together take priority over a full name. A first name on its own doesn't count, so the step falls back to the full name.

Outcomes:

- **Email found:** Outputs the email address.
- **Email not found:** No outputs. Hunter had no address for this person. This isn't an error, and it doesn't cost a Hunter credit.

### Verify email

Checks an email address and returns its status, score, and a set of flags.

Inputs:

- **Email address (required):** The address to check.

Outcomes:

- **Success:** The check completed.

Outputs, all of which are always present:

- **Email address:** The address that was checked.
- **Status:** One of `valid`, `invalid`, `accept_all`, `webmail`, `disposable`, or `unknown`.
- **Score:** A number.
- **Valid format**, **Gibberish**, **Disposable**, **Webmail**, **MX records**, **SMTP server**, **SMTP check**, **Accept all**, and **Blocked:** Each is true or false.

> **Note:** Success means the check finished, not that the address is good. To act on the result, branch your workflow on **Status** or **Score** rather than on the outcome.

### Domain search

Finds email addresses associated with a company domain or name.

Inputs:

- **Company domain:** The company's domain.
- **Company name:** The company's name. Used only when no domain is set.
- **Email type:** Select **Personal** or **Generic**. Leave empty to include both.
- **Seniority:** Click **Add seniority** to filter by **Junior**, **Senior**, or **Executive**. Add more than one row to include several. Leave empty to include all.
- **Department:** Click **Add department** to filter by department, such as **Sales**, **Marketing**, or **Operations**. Add more than one row to include several. Leave empty to include all.
- **Limit:** The maximum number of addresses to return, up to 100. Leave empty to use the default of 10.

You need to set a company domain or a company name. If you set both, the domain is used.

Outcomes:

- **Emails found:** Outputs **Emails**, a list. Each entry has an email address, and may also include first name, last name, position, type, confidence, seniority, and department.
- **Emails not found:** No outputs. Hunter found no addresses for this company. This isn't an error. If Hunter finds addresses but every one of them is opted out, the step also returns **Emails not found** the same as if nothing had matched.

> **Note:** Hunter credit usage [varies by Hunter plan](https://help.hunter.io/en/articles/1911617-how-do-credits-work-in-hunter). Narrow the results with **Email type**, **Seniority**, and **Department** filters, or lower the limit, to keep the cost down.

## Related resources

Learn more about building automations in [Create a workflow](https://attio.com/help/reference/automations/workflows/create-a-workflow) and the [Workflows block library](https://attio.com/help/reference/automations/workflows/workflows-block-library).

## FAQ

### Find email failed with a message about setting a domain or a name. What does it need?

The inputs you set don't add up to a lookup Hunter can run. Either set a LinkedIn URL on its own, or set a person's name plus either a company domain or a company name. Bear in mind that a first name by itself isn't enough, so either fill in the full name or both the first and last name.

### Domain search returned fewer addresses than my limit. Why?

Either Hunter had no more matches for that company, some of the matches were opted out and left out of the results, or a few of the addresses it returned couldn't be read.

### Domain search failed with a message that Hunter rejected the request. What should I check?

On Hunter's Free plan, a single search can return at most 10 addresses. Lower **Limit** to 10, or upgrade your Hunter plan. If you're not on the Free plan, check the step's inputs.

### A step says to reconnect Hunter. What happened?

The API key is no longer valid, usually because it was replaced or revoked in Hunter. Create a new key at hunter.io/api-keys and reconnect the app.

### What happens if someone has opted out of Hunter?

It depends on the step. Find email returns Email not found. Verify email succeeds with a status of **unknown** and a score of **0**, which looks the same as a genuine unknown result. Domain search omits the address from the results; if that leaves nothing, the step returns **Emails not found** rather than failing.

### A step says the Hunter plan is out of credits, but I'm not being rate limited. What's the difference?

Running out of credits means your Hunter plan's allowance is used up, and the step won't retry. Being rate limited means too many requests hit Hunter at once, which is temporary and does retry on its own.
