
Emails found at a domain, with names, titles and confidence.
One key feature of Hunter is to search all the email addresses corresponding to one website. You give one domain name and it returns email addresses found for that domain on the internet.
Job email.domain.search
telipot inspect hunter.email.domain.searchProvider's rate
$0.0245 / emailhunter.email.domain.search
Whose account it uses
Choose inputs
domain · Domain to search. Give domain or company; domain wins when both are given.
company · Company name, used when the domain is unknown. A domain gives better results.
No complete example input is recorded. Inspect reads the schema; it does not run the task.
What it costs
$0.0245
per email · billed per result
| rate | 1 credit per email, billed per result |
| source | docs · help.hunter.io/en/articles/1911617-how-do-credits-work-in-hunter · checked 2026-10-05 |
| confidence | documented |
| note | All-in-one plans: 1 credit per email revealed, none when no email is found, and a repeat of the same search in one billing period is not charged again. Data Platform plans: 1 Search credit for up to 10 emails per domain. The API reference says only that a query counts when it returns at least one result. |
For developers · inspect first
Read the schema and choose input values
telipot inspect hunter.email.domain.searchNo complete example input is recorded. Read the field notes below before building the call.
domain string | Domain to search. Give domain or company; domain wins when both are given. |
company string | Company name, used when the domain is unknown. A domain gives better results. |
limit integer · 1 to 100 · default 10 | Maximum emails returned. Each email returned is charged. On a Free plan limit plus offset above 10 is refused with 400 pagination_error. |
offset integer · at least 0 · default 0 | Emails to skip, for paging. |
type string · one of "personal", "generic" | Only personal addresses, or only role-based (generic) ones such as contact@. |
seniority string | Comma-separated. The docs list junior, senior and executive; Hunter's OpenAPI says the values come from a live taxonomy and a list with no valid value returns 400 invalid_seniority. |
department string | Comma-separated. The docs list executive, it, finance, management, sales, legal, support, hr, marketing, communication, education, design, health, operations, product, research, consulting, administrative and procurement. A list with no valid value returns 400 invalid_department. |
decision_maker boolean | true keeps only likely decision makers, false only people explicitly classified as not. Addresses not yet classified match neither. |
required_field string | Comma-separated. Keep only emails that have these fields. The docs list full_name, position and phone_number. |
verification_status string | Comma-separated. The docs list valid, accept_all and unknown. |
job_titles string | Comma-separated. Matches whole words; common executive titles match their equivalents. |
source_type string · one of "found", "generated" | found keeps only addresses seen on the web, generated only inferred ones. Listed in Hunter's OpenAPI, not on the docs page. |
aggregations boolean | true adds meta.aggregations, a breakdown of the matching emails by department, decision makers and personal versus generic. |
data object | |
meta object |
Full output schema · JSONNested fields and constraints
Output JSON Schema
{
"type": "object",
"required": [
"data",
"meta"
],
"properties": {
"data": {
"type": "object",
"required": [
"domain",
"disposable",
"webmail",
"accept_all",
"pattern",
"organization",
"linked_domains",
"emails"
],
"properties": {
"domain": {
"type": [
"string",
"null"
]
},
"disposable": {
"type": "boolean"
},
"webmail": {
"type": "boolean"
},
"accept_all": {
"type": "boolean"
},
"pattern": {
"type": [
"string",
"null"
],
"description": "The email pattern most addresses at the domain follow"
},
"organization": {
"type": [
"string",
"null"
]
},
"linked_domains": {
"type": "array",
"items": {
"type": "string"
}
},
"emails": {
"type": "array",
"items": {
"type": "object",
"required": [
"value",
"type",
"confidence"
],
"properties": {
"value": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"personal",
"generic"
]
},
"source_type": {
"type": "string",
"description": "found or generated"
},
"confidence": {
"type": "integer",
"description": "Estimated probability, 0 to 100, that the address is correct"
},
"first_name": {
"type": [
"string",
"null"
]
},
"last_name": {
"type": [
"string",
"null"
]
},
"position": {
"type": [
"string",
"null"
]
},
"seniority": {
"type": [
"string",
"null"
]
},
"department": {
"type": [
"string",
"null"
]
},
"decision_maker": {
"type": "boolean"
},
"linkedin": {
"type": [
"string",
"null"
]
},
"twitter": {
"type": [
"string",
"null"
]
},
"phone_number": {
"type": [
"string",
"null"
]
},
"sources": {
"type": "array",
"items": {
"type": "object",
"properties": {
"domain": {
"type": "string"
},
"uri": {
"type": "string"
},
"extracted_on": {
"type": "string"
},
"last_seen_on": {
"type": "string"
},
"still_on_page": {
"type": "boolean"
}
}
}
},
"verification": {
"type": "object",
"properties": {
"date": {
"type": [
"string",
"null"
]
},
"status": {
"type": [
"string",
"null"
]
}
}
}
}
}
}
}
},
"meta": {
"type": "object",
"required": [
"results",
"limit",
"offset"
],
"properties": {
"results": {
"type": "integer"
},
"results_approximate": {
"type": "boolean"
},
"limit": {
"type": "integer"
},
"offset": {
"type": "integer"
},
"aggregations": {
"type": "object"
},
"params": {
"type": "object"
}
}
}
}
}A real answer
No example captured yet: one is recorded when telipot catalog verify passes.

