Email Finding API

Email Finding Hunter domain API

Find named contacts and their work email addresses at a company domain, filtered by job title, seniority or department. Priced per returned contact, so limit is the cost control.

POST/v1/run/email_finding.hunter_domain
Uptime
96.40%
30d · 250 calls
Requests
250
30d
Response
2.1s
median · 30d

Call it

Make your first request

import os, requests

res = requests.post(
    "https://api.getanyapi.com/v1/run/email_finding.hunter_domain",
    headers={"Authorization": f"Bearer {os.environ['ANYAPI_KEY']}"},
    json={
        "domain": ""
    },
)
print(res.json())
Open in
Get a free key
Sample response
{
  "data": {
    "acceptAll": true,
    "disposable": true,
    "domain": "example.com",
    "emailPattern": "alex@example.com",
    "emails": [
      {
        "confidence": 1024,
        "decisionMaker": true,
        "department": "example",
        "email": "alex@example.com",
        "firstName": "Alex",
        "lastName": "Rivera",
        "linkedinUrl": "https://example.com/page",
        "phone": "+1 555-0142",
        "position": "example",
        "positionRaw": "example",
        "seniority": "example",
        "sourceType": "https://example.com/page",
        "sources": [
          {
            "domain": "example.com",
            "extractedUtc": 12.5,
            "lastSeenUtc": 12.5,
            "stillOnPage": true,
            "url": "https://example.com/page"
          }
        ],
        "twitter": "example",
        "type": "general",
        "verificationStatus": "active",
        "verifiedUtc": 12.5
      }
    ],
    "linkedDomains": null,
    "organization": "Acme Inc",
    "totalCount": 12500,
    "webmail": true
  },
  "found": true
}
Response interface
interface EmailFindingHunterDomainResponse {
  data: {
    acceptAll?: boolean;
    disposable?: boolean;
    domain: string;
    emailPattern?: string;
    emails: {
      confidence?: number;
      decisionMaker?: boolean;
      department?: string;
      email: string;
      firstName?: string;
      lastName?: string;
      linkedinUrl?: string;
      phone?: string;
      position?: string;
      positionRaw?: string;
      seniority?: string;
      sourceType?: string;
      sources?: {
        domain: string;
        extractedUtc?: number;
        lastSeenUtc?: number;
        stillOnPage?: boolean;
        url?: string;
      }[];
      twitter?: string;
      type?: string;
      verificationStatus?: string;
      verifiedUtc?: number;
    }[];
    linkedDomains?: any;
    organization?: string;
    totalCount: number;
    webmail?: boolean;
  } | null;
  found: boolean;
}

Full parameter and response reference - every field, type, and example for this endpoint.

Reference

Request, response, and price

Last verified 2026-09-12 · uptime and latency measured over 30d
POST /v1/run/email_finding.hunter_domain
curl -X POST https://api.getanyapi.com/v1/run/email_finding.hunter_domain \
  -H "Authorization: Bearer $ANYAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"stripe.com","limit":2,"type":"personal"}'
FieldTypeExample value
Request body
domainstring"stripe.com"Company domain without a scheme or path, e.g. stripe.com.
departmentenumRestrict to one department.
jobTitlestringOne job-title keyword to match, e.g. editor. A single keyword only: a comma-separated list is not supported and only its last entry would apply.
limitinteger2Maximum contacts to return in this response. Every returned contact is billed, so this is the cost control.
offsetintegerNumber of contacts to skip before this page begins.
requiredFieldenumOnly return contacts that carry this field.
seniorityenumRestrict to one seniority level.
typeenum"personal"Restrict to personal mailboxes belonging to a named person, or to generic ones such as info@ and support@.
Response
dataobject
data.acceptAllbooleanTrue when the mail server accepts any address at this domain, so an address cannot be verified by delivery.
data.disposablebooleanTrue when the domain belongs to a disposable-email service.
data.domainstringThe company domain the contacts belong to.
data.emailPatternstringAddress pattern the company uses, e.g. {first}{last}.
data.emailsobject[]Contacts returned by this page, one per billed result.
data.emails[].confidenceintegerUpstream confidence in the address, 0 to 100.
data.emails[].decisionMakerbooleanTrue when the contact is judged a decision maker.
data.emails[].departmentstringDepartment the contact works in.
data.emails[].emailstringThe work email address.
data.emails[].firstNamestringContact's first name.
data.emails[].lastNamestringContact's last name.
data.emails[].linkedinUrlstringContact's LinkedIn profile URL.
data.emails[].phonestringContact's phone number.
data.emails[].positionstringContact's job title.
data.emails[].positionRawstringContact's job title exactly as written on the source page, before it was cleaned up.
data.emails[].senioritystringSeniority level: junior, senior or executive.
data.emails[].sourceTypestringHow the address was obtained: found when it was seen on a public page, generated when it was inferred from the company's address pattern.
data.emails[].sourcesobject[]Public pages the address was found on.
data.emails[].sources[].domainstringDomain of the page the address was found on.
data.emails[].sources[].extractedUtcnumberUTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.
data.emails[].sources[].lastSeenUtcnumberUTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.
data.emails[].sources[].stillOnPagebooleanTrue when the address was still present at the last check.
data.emails[].sources[].urlstringURL of the page the address was found on.
data.emails[].twitterstringContact's Twitter/X handle or profile URL, exactly as the source recorded it.
data.emails[].typestringpersonal for a named person's mailbox, generic for a shared inbox.
data.emails[].verificationStatusstringDeliverability verdict recorded for the address.
data.emails[].verifiedUtcnumberUTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.
data.linkedDomainsanyOther domains Hunter has linked to this company. Deliberately untyped: the field is empty in every response we have captured, so the value passes through without a shape guarantee.
data.organizationstringCompany name registered against the domain.
data.totalCountintegerContacts matching the filters across the whole domain, of which this response returns at most limit.
data.webmailbooleanTrue when the domain is a webmail provider rather than a company.
foundbooleanFalse when the domain yielded no contacts for the requested filters.
Price
Price per request (ceiling)USD$3.60
Price /1k resultsUSD$36.00

FAQ

About the Email Finding Hunter domain API

The AnyAPI Email Finding Hunter domain API returns Email Finding hunter domain data as normalized JSON from one POST call to /v1/run/email_finding.hunter_domain. Find named contacts and their work email addresses at a company domain, filtered by job title, seniority or department. Priced per returned contact, so limit is the cost control. AnyAPI returns one normalized schema whichever source serves it. It costs $36 per 1,000 results, and never more than $3.60 for a single request, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 96.4% of Email Finding hunter domain calls through AnyAPI succeeded, with a median response time of 2.1 seconds across 250 measured calls.

It costs $36 per 1,000 results, and never more than $3.60 for a single request, in US dollars with no subscription and no monthly minimum. You fund one USD wallet, each call draws it down, and a failed request costs $0.

Find named contacts and their work email addresses at a company domain, filtered by job title, seniority or department. Priced per returned contact, so limit is the cost control. The response is normalized JSON with the same envelope every AnyAPI endpoint returns, so parsing a second endpoint is a change of URL and nothing else.

Over the last 30 days, 96.4% of Email Finding hunter domain calls through AnyAPI succeeded, with a median response time of 2.1 seconds across 250 measured calls. These are AnyAPI's own measurements of traffic through the gateway, recomputed continuously, not a published service-level target.