---
type: "firecrawl-provider"
description: "Find a work email, verify an address, list addresses at a company, and enrich a person or company."
use_when: "Find a work email from a name and company, verify an address, or enrich a person from an email or LinkedIn handle.\n\nList the email addresses Hunter has for a company, or enrich a company from its domain."
categories: "People"
capabilities: 5
credits_range: 10
---
# Hunter on Firecrawl Alexandria

Find a work email, verify an address, list addresses at a company, and enrich a person or company.

- Categories: People
- Category index: [People category](https://alexandria.firecrawl.dev/agents/categories/people)
- Provider key: `hunter`
- Access: Firecrawl credits
- Cost (Email finder): 10 credits per record
- Cost (Email verifier): 10 credits per call
- Cost (Person enrichment): 10 credits per record
- Cost (Company emails): 10 credits per record
- Cost (Company enrichment): 10 credits per record

## More

- [Human guide](https://www.firecrawl.dev/app/alexandria/hunter)
- [OpenAPI spec](https://alexandria.firecrawl.dev/agents/providers/hunter/openapi.json)

## Capabilities

- [Email finder](https://alexandria.firecrawl.dev/agents/providers/hunter/people/email-find): One person, under data. email is null when nothing was found, and that call costs nothing. score is Hunter's confidence. provenance is found, inferred, or a later value. verification.status is valid, accept_all, or unknown. sources lists up to 20 public pages. meta.params echoes the query.
- [Email verifier](https://alexandria.firecrawl.dev/agents/providers/hunter/people/email-verify): One verification under data. status is the detailed result. score is the deliverability score. regexp, gibberish, disposable, webmail, mx_records, smtp_server, smtp_check, accept_all, and block are the individual checks. verification is the date and status, or null when no SMTP check ran. sources lists up to 20 public pages. meta.params echoes the email.
- [Person enrichment](https://alexandria.firecrawl.dev/agents/providers/hunter/people/enrich): One person under data. name has fullName, givenName, and familyName. employment has domain, name, title, role, and seniority. geo has city, state, country, and countryCode. linkedin.handle is the profile slug. meta.email echoes the query when an email was sent.
- [Company emails](https://alexandria.firecrawl.dev/agents/providers/hunter/companies/emails): One company under data. emails is the page of addresses. Each address has value, type (personal or generic), provenance, confidence, sources, first_name, last_name, position, seniority, department, decision_maker, linkedin, twitter, phone_number, and verification. domain, pattern, and organization are null when Hunter has no domain. meta.results is the count, meta.results_approximate says whether that count is capped, and meta.limit and meta.offset echo the page. meta.aggregations is present only when aggregations was true.
- [Company enrichment](https://alexandria.firecrawl.dev/agents/providers/hunter/companies/enrich): One company under data. category holds the industry classification. geo holds headquarters. metrics.employees is a range and metrics.employeesCount is a number. tech is the technology slug list. meta.domain echoes the query.

## 1. Choose this provider when

Find a work email from a name and company, verify an address, or enrich a person from an email or LinkedIn handle.

List the email addresses Hunter has for a company, or enrich a company from its domain.

## 2. Minimal request

Call `POST https://api.firecrawl.dev/v2/scrape` with `{ alexandria: { provider, capability, options } }`. For a batch, send `{ alexandria: [...] }` with up to 10 calls.

```json
{
  "provider": "hunter",
  "capability": "people/email-find",
  "options": {
    "domain": "<domain>",
    "full_name": "<full_name>"
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `domain` (string): Company domain, such as stripe.com. Preferred over company. No scheme or path. Example: `<domain>`
- `company` (string): Company name, when the domain is unknown. Domain wins when both are sent. Example: `<company>`
- `linkedin_handle` (string): LinkedIn profile slug. Can stand in for the domain and for the name. Example: `<linkedin_handle>`
- `first_name` (string): Given name. Send with last_name. Example: `<first_name>`
- `last_name` (string): Family name. Send with first_name. Example: `<last_name>`
- `full_name` (string): Full name. First and last name are more accurate when you have them. Example: `<full_name>`
- `max_duration` (number): Seconds Hunter may spend, from 3 to 20. Hunter's default is 10. Example: `10`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "hunter",
    capability: "people/email-find",
    options: {
      domain: "<domain>",
      full_name: "<full_name>",
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "hunter",
  "capability": "people/email-find",
  "options": {
    "domain": "<domain>",
    "full_name": "<full_name>"
  }
})
```

### cURL

```sh
curl https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "hunter",
    "capability": "people/email-find",
    "options": {
      "domain": "<domain>",
      "full_name": "<full_name>"
    }
  }
}'
```

### CLI

```sh
firecrawl scrape 'hunter/people/email-find' \
  --options '{"domain":"<domain>","full_name":"<full_name>"}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "hunter",
  "capability": "people/email-find",
  "options": {
    "domain": "<domain>",
    "full_name": "<full_name>"
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "hunter",
  "capability": "people/email-find",
  "options": {
    "domain": "<domain>",
    "full_name": "<full_name>"
  }
}
```

## 6. Response data

The response includes `success`, `provider`, `capability`, `creditsCost` and `data`. This example shows the provider payload in `data`:

```json
{
  "data": {
    "first_name": "<first_name>",
    "last_name": "<last_name>",
    "email": "<email>",
    "score": 0,
    "domain": "<domain>",
    "accept_all": false,
    "position": "<position>",
    "twitter": "<twitter>",
    "linkedin_url": "<linkedin_url>",
    "phone_number": "<phone_number>",
    "company": "<company>",
    "provenance": "<provenance>",
    "sources": [],
    "verification": {}
  }
}
```

## API reference-derived contract

The following capability contract is generated from the same normalized Alexandria API reference exposed in the API spec.

### Email finder

- Capability: `people/email-find`
- Description: One person, under data. email is null when nothing was found, and that call costs nothing. score is Hunter's confidence. provenance is found, inferred, or a later value. verification.status is valid, accept_all, or unknown. sources lists up to 20 public pages. meta.params echoes the query.
- Instructions: Find one person's work email from their name and company domain, company name, or LinkedIn handle. Charged only when an address comes back. Use people/email-verify when you already have an address. Use companies/emails to list many addresses at a company.
- Cost: 10 credits per record
- Capability file: [Email finder](https://alexandria.firecrawl.dev/agents/providers/hunter/people/email-find)

Accepted options:
- `domain` (string): Company domain, such as stripe.com. Preferred over company. No scheme or path. Example: `<domain>`
- `company` (string): Company name, when the domain is unknown. Domain wins when both are sent. Example: `<company>`
- `linkedin_handle` (string): LinkedIn profile slug. Can stand in for the domain and for the name. Example: `<linkedin_handle>`
- `first_name` (string): Given name. Send with last_name. Example: `<first_name>`
- `last_name` (string): Family name. Send with first_name. Example: `<last_name>`
- `full_name` (string): Full name. First and last name are more accurate when you have them. Example: `<full_name>`
- `max_duration` (number): Seconds Hunter may spend, from 3 to 20. Hunter's default is 10. Example: `10`

Response schema example:
```json
{
  "data": {
    "first_name": "<first_name>",
    "last_name": "<last_name>",
    "email": "<email>",
    "score": 0,
    "domain": "<domain>",
    "accept_all": false,
    "position": "<position>",
    "twitter": "<twitter>",
    "linkedin_url": "<linkedin_url>",
    "phone_number": "<phone_number>",
    "company": "<company>",
    "provenance": "<provenance>",
    "sources": [],
    "verification": {}
  }
}
```

### Email verifier

- Capability: `people/email-verify`
- Description: One verification under data. status is the detailed result. score is the deliverability score. regexp, gibberish, disposable, webmail, mx_records, smtp_server, smtp_check, accept_all, and block are the individual checks. verification is the date and status, or null when no SMTP check ran. sources lists up to 20 public pages. meta.params echoes the email.
- Instructions: Check one email address for deliverability. status is valid, invalid, accept_all, webmail, disposable, or unknown. A check Hunter has not finished yet fails here and costs nothing; send the same request again. Use people/email-find when you have a name and domain and need the address.
- Cost: 10 credits per call
- Capability file: [Email verifier](https://alexandria.firecrawl.dev/agents/providers/hunter/people/email-verify)

Accepted options:
- `email` (string, required): The address to verify. Example: `<email>`

Response schema example:
```json
{
  "data": {
    "status": "<status>",
    "score": 0,
    "email": "<email>",
    "regexp": false,
    "gibberish": false,
    "disposable": false,
    "webmail": false,
    "mx_records": false,
    "smtp_server": false,
    "smtp_check": false,
    "accept_all": false,
    "block": false,
    "verification": {},
    "sources": []
  }
}
```

### Person enrichment

- Capability: `people/enrich`
- Description: One person under data. name has fullName, givenName, and familyName. employment has domain, name, title, role, and seniority. geo has city, state, country, and countryCode. linkedin.handle is the profile slug. meta.email echoes the query when an email was sent.
- Instructions: Enrich a person from an email address or a LinkedIn handle: name, role, location, and social profiles. A 404 and a partial record cost nothing. A record that includes the email, full name, and job title costs 10 credits. Use people/email-find to go from a name to an email.
- Cost: 10 credits per record
- Capability file: [Person enrichment](https://alexandria.firecrawl.dev/agents/providers/hunter/people/enrich)

Accepted options:
- `email` (string): The person's email address. Example: `<email>`
- `linkedin_handle` (string): LinkedIn profile slug, such as matttharp. Wins over email when both are sent. Example: `<linkedin_handle>`
- `clearbit_format` (boolean): Ask Hunter for its Clearbit-compatible schema. Leave unset. The fields below are Hunter's current enrichment shape. Example: `false`

Response schema example:
```json
{
  "data": {
    "id": "<id>",
    "name": {},
    "email": "<email>",
    "location": "<location>",
    "timeZone": "<timeZone>",
    "utcOffset": 0,
    "geo": {},
    "bio": "<bio>",
    "site": "<site>",
    "avatar": "<avatar>",
    "employment": {},
    "linkedin": {},
    "twitter": {},
    "phone": "<phone>",
    "fuzzy": false,
    "emailProvider": "<emailProvider>",
    "indexedAt": "<indexedAt>",
    "activeAt": "<activeAt>"
  }
}
```

### Company emails

- Capability: `companies/emails`
- Description: One company under data. emails is the page of addresses. Each address has value, type (personal or generic), provenance, confidence, sources, first_name, last_name, position, seniority, department, decision_maker, linkedin, twitter, phone_number, and verification. domain, pattern, and organization are null when Hunter has no domain. meta.results is the count, meta.results_approximate says whether that count is capped, and meta.limit and meta.offset echo the page. meta.aggregations is present only when aggregations was true.
- Instructions: List email addresses Hunter has for one company domain or company name, with roles and confidence. A row is not a completed verification: check each address with people/email-verify before sending mail. 10 credits per 10 addresses returned, and nothing when the list is empty. Use people/email-find for one named person.
- Cost: 10 credits per record
- Capability file: [Company emails](https://alexandria.firecrawl.dev/agents/providers/hunter/companies/emails)

Accepted options:
- `domain` (string): Company domain, such as stripe.com. Preferred over company. No scheme or path. Example: `<domain>`
- `company` (string): Company name, when the domain is unknown. Domain wins when both are sent. Example: `<company>`
- `limit` (number): Addresses to return. Hunter's default is 10 and the maximum is 100. 10 Firecrawl credits per started group of 10 returned addresses. Example: `10`
- `offset` (number): Addresses to skip. Hunter's default is 0. Example: `10`
- `type` (string): personal for named people, generic for role addresses such as info@. Example: `personal`
- `provenance` (string): found addresses were seen on a public page. inferred addresses were built from the company pattern. Example: `found`
- `seniority` (string): junior, senior, or executive. Comma-separate to combine. Example: `<seniority>`
- `department` (string): One or more of executive, it, finance, management, sales, legal, support, hr, marketing, communication, education, design, health, operations, product, research, consulting, administrative, procurement. Comma-separate to combine. Example: `<department>`
- `decision_maker` (boolean): true for people Hunter classifies as decision makers, false for people it classifies as not. Unclassified addresses match neither. Example: `false`
- `required_field` (string): full_name, position, or phone_number. Comma-separate to require several. Example: `<required_field>`
- `verification_status` (string): valid, accept_all, or unknown. Comma-separate to combine. A row with no verification is not valid. Example: `<verification_status>`
- `job_titles` (string): Comma-separated job titles. Common abbreviations match their full forms. Example: `<job_titles>`
- `aggregations` (boolean): Include meta.aggregations: department counts, decision makers, and the personal/generic split. Example: `false`

Response schema example:
```json
{
  "data": {
    "domain": "<domain>",
    "disposable": false,
    "webmail": false,
    "accept_all": false,
    "pattern": "<pattern>",
    "organization": "<organization>",
    "linked_domains": [],
    "emails": []
  }
}
```

### Company enrichment

- Capability: `companies/enrich`
- Description: One company under data. category holds the industry classification. geo holds headquarters. metrics.employees is a range and metrics.employeesCount is a number. tech is the technology slug list. meta.domain echoes the query.
- Instructions: Enrich a company from its domain: industry, description, location, headcount, and technologies. A 404 and a partial record cost nothing. A record with the company name, a description, a location, and a headcount costs 10 credits. Use companies/emails for the addresses at that domain.
- Cost: 10 credits per record
- Capability file: [Company enrichment](https://alexandria.firecrawl.dev/agents/providers/hunter/companies/enrich)

Accepted options:
- `domain` (string, required): Company domain, such as hunter.io. No scheme or path. Example: `<domain>`
- `clearbit_format` (boolean): Ask Hunter for its Clearbit-compatible schema. Leave unset. The fields below are Hunter's current enrichment shape. Example: `false`

Response schema example:
```json
{
  "data": {
    "id": "<id>",
    "name": "<name>",
    "legalName": "<legalName>",
    "domain": "<domain>",
    "domainAliases": [],
    "site": {},
    "category": {},
    "tags": [],
    "description": "<description>",
    "foundedYear": 0,
    "location": "<location>",
    "geo": {},
    "logo": "<logo>",
    "type": "<type>",
    "company_type": "<company_type>",
    "phone": "<phone>",
    "metrics": {},
    "tech": [],
    "techCategories": [],
    "emailProvider": "<emailProvider>",
    "indexedAt": "<indexedAt>"
  }
}
```
