Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 40 additions & 28 deletions apps/docs/content/docs/en/tools/hunter.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: Hunter io
title: Hunter.io
description: Find and verify professional email addresses
---

Expand Down Expand Up @@ -53,11 +53,16 @@ Returns companies matching a set of criteria using Hunter.io AI-powered search.
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `results` | array | List of companies matching the search criteria |
| ↳ `name` | string | Company name |
| ↳ `domain` | string | Company domain |
| ↳ `name` | string | Company/organization name |
| ↳ `headcount` | number | Company size/headcount |
| ↳ `technologies` | array | Technologies used by the company |
| ↳ `email_count` | number | Total number of email addresses found |
| ↳ `logo` | string | URL of the company logo |
| ↳ `linkedin_url` | string | LinkedIn profile URL of the company |
| ↳ `company_type` | string | Company type \(e.g., privately held, public company\) |
| ↳ `industry` | string | Industry of the company |
| ↳ `size` | string | Headcount range of the company |
| ↳ `location` | string | Headquarters location |
| ↳ `founded_year` | number | Year the company was founded |
| ↳ `crunchbase_url` | string | Crunchbase URL of the company |

### `hunter_domain_search`

Expand Down Expand Up @@ -86,8 +91,9 @@ Returns all the email addresses found using one given domain name, with sources.
| ↳ `first_name` | string | Person's first name |
| ↳ `last_name` | string | Person's last name |
| ↳ `position` | string | Job title/position |
| ↳ `position_raw` | string | Raw job title as found |
| ↳ `seniority` | string | Seniority level \(junior, senior, executive\) |
| ↳ `department` | string | Department \(executive, it, finance, management, sales, legal, support, hr, marketing, communication\) |
| ↳ `department` | string | Department \(executive, it, finance, management, sales, legal, support, hr, marketing, communication, education, design, health, operations\) |
| ↳ `linkedin` | string | LinkedIn profile URL |
| ↳ `twitter` | string | Twitter handle |
| ↳ `phone_number` | string | Phone number |
Expand All @@ -106,19 +112,7 @@ Returns all the email addresses found using one given domain name, with sources.
| `accept_all` | boolean | Whether the server accepts all email addresses \(may cause false positives\) |
| `pattern` | string | The email pattern used by the organization \(e.g., \{first\}, \{first\}.\{last\}\) |
| `organization` | string | The organization/company name |
| `description` | string | Description of the organization |
| `industry` | string | Industry classification of the organization |
| `twitter` | string | Twitter handle of the organization |
| `facebook` | string | Facebook page URL of the organization |
| `linkedin` | string | LinkedIn company page URL |
| `instagram` | string | Instagram profile of the organization |
| `youtube` | string | YouTube channel of the organization |
| `technologies` | array | Technologies used by the organization |
| `country` | string | Country where the organization is headquartered |
| `state` | string | State/province where the organization is located |
| `city` | string | City where the organization is located |
| `postal_code` | string | Postal code of the organization |
| `street` | string | Street address of the organization |
| `linked_domains` | array | Other domains linked to the organization |

### `hunter_email_finder`

Expand Down Expand Up @@ -147,8 +141,17 @@ Finds the most likely email address for a person given their name and company do
| `verification` | object | Email verification information |
| ↳ `date` | string | Date when the email was verified \(YYYY-MM-DD\) |
| ↳ `status` | string | Verification status \(valid, invalid, accept_all, webmail, disposable, unknown\) |
| `first_name` | string | Person's first name |
| `last_name` | string | Person's last name |
| `email` | string | The found email address |
| `score` | number | Confidence score \(0-100\) for the found email address |
| `domain` | string | Domain that was searched |
| `accept_all` | boolean | Whether the server accepts all email addresses \(may cause false positives\) |
| `position` | string | Job title/position |
| `twitter` | string | Twitter handle |
| `linkedin_url` | string | LinkedIn profile URL |
| `phone_number` | string | Phone number |
| `company` | string | Company name |

### `hunter_email_verifier`

Expand Down Expand Up @@ -200,15 +203,24 @@ Enriches company data using domain name.

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `company` | object | Company information |
| ↳ `name` | string | Company name |
| ↳ `domain` | string | Company domain |
| ↳ `industry` | string | Industry classification |
| ↳ `size` | string | Company size/headcount range |
| ↳ `country` | string | Country where the company is located |
| ↳ `linkedin` | string | LinkedIn company page URL |
| ↳ `twitter` | string | Twitter handle |
| `person` | object | Person information \(undefined for companies_find tool\) |
| `name` | string | Company name |
| `domain` | string | Company domain |
| `description` | string | Company description |
| `industry` | string | Industry classification |
| `sector` | string | Business sector |
| `size` | string | Employee headcount range \(e.g., "11-50"\) |
| `founded_year` | number | Year founded |
| `location` | string | Headquarters location \(formatted\) |
| `country` | string | Country \(full name\) |
| `country_code` | string | ISO 3166-1 alpha-2 country code |
| `state` | string | State/province |
| `city` | string | City |
| `linkedin` | string | LinkedIn handle \(e.g., company/hunterio\) |
| `twitter` | string | Twitter handle |
| `facebook` | string | Facebook handle |
| `logo` | string | Company logo URL |
| `phone` | string | Company phone number |
| `tech` | array | Technologies used by the company |

### `hunter_email_count`

Expand Down
2 changes: 1 addition & 1 deletion apps/sim/app/(landing)/integrations/data/integrations.json
Original file line number Diff line number Diff line change
Expand Up @@ -6526,7 +6526,7 @@
{
"type": "hunter",
"slug": "hunter-io",
"name": "Hunter io",
"name": "Hunter.io",
"description": "Find and verify professional email addresses",
"longDescription": "Integrate Hunter into the workflow. Can search domains, find email addresses, verify email addresses, discover companies, find companies, and count email addresses.",
"bgColor": "#E0E0E0",
Expand Down
160 changes: 152 additions & 8 deletions apps/sim/blocks/blocks/hunter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import type { HunterResponse } from '@/tools/hunter/types'

export const HunterBlock: BlockConfig<HunterResponse> = {
type: 'hunter',
name: 'Hunter io',
name: 'Hunter.io',
description: 'Find and verify professional email addresses',
authMode: AuthMode.ApiKey,
longDescription:
Expand Down Expand Up @@ -45,6 +45,15 @@ export const HunterBlock: BlockConfig<HunterResponse> = {
type: 'short-input',
placeholder: '10',
condition: { field: 'operation', value: 'hunter_domain_search' },
mode: 'advanced',
},
{
id: 'offset',
title: 'Offset',
type: 'short-input',
placeholder: '0',
condition: { field: 'operation', value: 'hunter_domain_search' },
mode: 'advanced',
},
{
id: 'type',
Expand All @@ -57,6 +66,7 @@ export const HunterBlock: BlockConfig<HunterResponse> = {
],
value: () => 'all',
condition: { field: 'operation', value: 'hunter_domain_search' },
mode: 'advanced',
},
{
id: 'seniority',
Expand All @@ -70,13 +80,15 @@ export const HunterBlock: BlockConfig<HunterResponse> = {
],
value: () => 'all',
condition: { field: 'operation', value: 'hunter_domain_search' },
mode: 'advanced',
},
{
id: 'department',
title: 'Department',
type: 'short-input',
placeholder: 'e.g., sales, marketing, engineering',
condition: { field: 'operation', value: 'hunter_domain_search' },
mode: 'advanced',
},
// Email Finder operation inputs
{
Expand Down Expand Up @@ -109,6 +121,7 @@ export const HunterBlock: BlockConfig<HunterResponse> = {
type: 'short-input',
placeholder: 'Enter company name',
condition: { field: 'operation', value: 'hunter_email_finder' },
mode: 'advanced',
},
// Email Verifier operation inputs
{
Expand Down Expand Up @@ -146,6 +159,54 @@ Return ONLY the search query text - no explanations.`,
type: 'short-input',
placeholder: 'Filter by domain',
condition: { field: 'operation', value: 'hunter_discover' },
mode: 'advanced',
},
{
id: 'headcount',
title: 'Headcount',
type: 'dropdown',
options: [
{ label: 'Any', id: '' },
{ label: '1-10', id: '1-10' },
{ label: '11-50', id: '11-50' },
{ label: '51-200', id: '51-200' },
{ label: '201-500', id: '201-500' },
{ label: '501-1000', id: '501-1000' },
{ label: '1001-5000', id: '1001-5000' },
{ label: '5001-10000', id: '5001-10000' },
{ label: '10001+', id: '10001+' },
],
value: () => '',
condition: { field: 'operation', value: 'hunter_discover' },
mode: 'advanced',
},
{
id: 'company_type',
title: 'Company Type',
type: 'dropdown',
options: [
{ label: 'Any', id: '' },
{ label: 'Educational', id: 'educational' },
{ label: 'Government Agency', id: 'government agency' },
{ label: 'Non Profit', id: 'non profit' },
{ label: 'Partnership', id: 'partnership' },
{ label: 'Privately Held', id: 'privately held' },
{ label: 'Public Company', id: 'public company' },
{ label: 'Self Employed', id: 'self employed' },
{ label: 'Self Owned', id: 'self owned' },
{ label: 'Sole Proprietorship', id: 'sole proprietorship' },
],
value: () => '',
condition: { field: 'operation', value: 'hunter_discover' },
mode: 'advanced',
},
{
id: 'technology',
title: 'Technology',
type: 'short-input',
placeholder: 'e.g., react, salesforce',
condition: { field: 'operation', value: 'hunter_discover' },
mode: 'advanced',
},

// Find Company operation inputs
Expand All @@ -172,6 +233,7 @@ Return ONLY the search query text - no explanations.`,
type: 'short-input',
placeholder: 'Enter company name',
condition: { field: 'operation', value: 'hunter_email_count' },
mode: 'advanced',
},
{
id: 'type',
Expand All @@ -184,6 +246,7 @@ Return ONLY the search query text - no explanations.`,
],
value: () => 'all',
condition: { field: 'operation', value: 'hunter_email_count' },
mode: 'advanced',
},
// API Key (common)
{
Expand Down Expand Up @@ -225,7 +288,14 @@ Return ONLY the search query text - no explanations.`,
},
params: (params) => {
const result: Record<string, unknown> = {}
if (params.limit) result.limit = Number(params.limit)
for (const [key, value] of Object.entries(params)) {
if (value === undefined || value === null || value === '') continue
if (key === 'limit' || key === 'offset') {
result[key] = Number(value)
} else {
result[key] = value
}
}
return result
},
},
Expand Down Expand Up @@ -253,14 +323,88 @@ Return ONLY the search query text - no explanations.`,
technology: { type: 'string', description: 'Technology filter' },
},
outputs: {
results: { type: 'json', description: 'Search results' },
emails: { type: 'json', description: 'Email addresses found' },
// Domain Search
domain: { type: 'string', description: 'Domain name' },
organization: { type: 'string', description: 'Organization name (domain search)' },
pattern: { type: 'string', description: 'Email pattern (e.g., {first}.{last})' },
disposable: { type: 'boolean', description: 'Whether the domain is disposable' },
webmail: { type: 'boolean', description: 'Whether the domain is a webmail provider' },
accept_all: { type: 'boolean', description: 'Whether the server accepts all emails' },
linked_domains: { type: 'array', description: 'Linked domains' },
emails: {
type: 'array',
description:
'List of emails found for the domain (value, type, confidence, first_name, last_name, position, seniority, department, linkedin, twitter, phone_number, sources, verification)',
},
// Email Finder
email: { type: 'string', description: 'Found email address' },
score: { type: 'number', description: 'Confidence score' },
result: { type: 'string', description: 'Verification result' },
status: { type: 'string', description: 'Status message' },
total: { type: 'number', description: 'Total results count' },
score: { type: 'number', description: 'Confidence score (0-100)' },
first_name: { type: 'string', description: 'Person first name' },
last_name: { type: 'string', description: 'Person last name' },
position: { type: 'string', description: 'Job position' },
linkedin_url: { type: 'string', description: 'LinkedIn profile URL (email-finder, discover)' },
phone_number: { type: 'string', description: 'Phone number' },
company: { type: 'string', description: 'Company name (email-finder)' },
sources: {
type: 'array',
description:
'Source pages where the email was found (domain, uri, extracted_on, last_seen_on, still_on_page)',
},
verification: {
type: 'json',
description: 'Email verification information (date, status)',
},
// Email Verifier
result: {
type: 'string',
description: 'Deliverability result (deliverable, undeliverable, risky)',
},
status: {
type: 'string',
description: 'Verification status (valid, invalid, accept_all, webmail, disposable, unknown)',
},
regexp: { type: 'boolean', description: 'Email passes regex validation' },
gibberish: { type: 'boolean', description: 'Whether email looks auto-generated' },
mx_records: { type: 'boolean', description: 'MX records exist for the domain' },
smtp_server: { type: 'boolean', description: 'SMTP server reachable' },
smtp_check: { type: 'boolean', description: 'Email does not bounce' },
block: { type: 'boolean', description: 'Whether the domain blocks verification' },
// Discover
results: {
type: 'array',
description:
'Companies matching the search (domain, organization, personal_emails, generic_emails, total_emails)',
},
// Companies Find (flattened)
name: { type: 'string', description: 'Company name (companies-find, discover)' },
description: { type: 'string', description: 'Company description' },
industry: { type: 'string', description: 'Industry classification' },
sector: { type: 'string', description: 'Business sector' },
size: { type: 'string', description: 'Employee headcount range (e.g., "11-50")' },
founded_year: { type: 'number', description: 'Year founded' },
location: { type: 'string', description: 'Headquarters location (formatted)' },
country: { type: 'string', description: 'Country (full name)' },
country_code: { type: 'string', description: 'ISO 3166-1 alpha-2 country code' },
state: { type: 'string', description: 'State/province' },
city: { type: 'string', description: 'City' },
linkedin: { type: 'string', description: 'LinkedIn handle (companies-find)' },
twitter: { type: 'string', description: 'Twitter handle' },
facebook: { type: 'string', description: 'Facebook handle' },
logo: { type: 'string', description: 'Company logo URL' },
phone: { type: 'string', description: 'Company phone number' },
tech: { type: 'array', description: 'Technologies used by the company' },
// Email Count
total: { type: 'number', description: 'Total email count' },
personal_emails: { type: 'number', description: 'Personal emails count' },
generic_emails: { type: 'number', description: 'Generic emails count' },
department: {
type: 'json',
description:
'Email count by department (executive, it, finance, management, sales, legal, support, hr, marketing, communication, education, design, health, operations)',
},
seniority: {
type: 'json',
description: 'Email count by seniority level (junior, senior, executive)',
},
},
}
Loading
Loading