Hunter Email Finder API

Generate or retrieve the most likely email address for a named person at a company. Accepts first/last name, full name, or LinkedIn handle alongside a domain or company. Returns confidence score, position, social handles, sources, and verification status. Costs 1 credit per request.

Hunter Email Finder API is one of 8 APIs that Hunter publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 1 JSON Schema definition.

Tagged areas include Email Finder and Lead Generation. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, 1 Naftiko capability spec, and 1 JSON Schema.

OpenAPI Specification

hunter-email-finder-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Hunter Email Finder API
  description: >
    Finds the most likely email address for a person at a given company, returning
    a confidence score, position, social handles, sources where the email was
    observed, and current verification status.
  version: v2
  contact:
    name: Hunter Support
    url: https://hunter.io/contact
  license:
    name: Hunter Terms of Service
    url: https://hunter.io/terms
servers:
  - url: https://api.hunter.io/v2
    description: Production
security:
  - ApiKeyQuery: []
  - ApiKeyHeader: []
  - BearerAuth: []
tags:
  - name: Email Finder
    description: Find the email address of a person at a company.
paths:
  /email-finder:
    get:
      summary: Hunter Find Email
      description: >
        Generates or retrieves the most likely email address from a domain or
        company name and a person's first and last name (or full name, or LinkedIn
        handle). Returns score, sources, position, and verification metadata.
      operationId: emailFinder
      tags:
        - Email Finder
      parameters:
        - name: domain
          in: query
          description: Domain name of the company.
          schema: { type: string, example: stripe.com }
        - name: company
          in: query
          description: Company name (used when domain is not provided).
          schema: { type: string }
        - name: first_name
          in: query
          description: First name of the person.
          schema: { type: string }
        - name: last_name
          in: query
          description: Last name of the person.
          schema: { type: string }
        - name: full_name
          in: query
          description: Full name of the person (alternative to first/last).
          schema: { type: string }
        - name: linkedin_handle
          in: query
          description: LinkedIn handle (e.g., the slug after `/in/`).
          schema: { type: string }
        - name: max_duration
          in: query
          description: Maximum duration of the request in seconds (3-20, default 10).
          schema: { type: integer, default: 10, minimum: 3, maximum: 20 }
        - $ref: '#/components/parameters/ApiKeyQuery'
      responses:
        '200':
          description: The best-guess email for the person.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailFinderResponse'
        '202':
          description: Request still processing; retry with the same parameters.
        '400':
          $ref: '#/components/responses/Error'
        '404':
          $ref: '#/components/responses/Error'
        '429':
          $ref: '#/components/responses/Error'
components:
  securitySchemes:
    ApiKeyQuery: { type: apiKey, in: query, name: api_key }
    ApiKeyHeader: { type: apiKey, in: header, name: X-API-KEY }
    BearerAuth: { type: http, scheme: bearer }
  parameters:
    ApiKeyQuery:
      name: api_key
      in: query
      required: true
      description: Your Hunter API key.
      schema: { type: string }
  schemas:
    EmailFinderResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            first_name: { type: string }
            last_name: { type: string }
            email: { type: string, format: email }
            score: { type: integer, minimum: 0, maximum: 100 }
            domain: { type: string }
            accept_all: { type: boolean }
            position: { type: string }
            twitter: { type: string }
            linkedin_url: { type: string }
            phone_number: { type: string }
            company: { type: string }
            sources:
              type: array
              items:
                type: object
                properties:
                  domain: { type: string }
                  uri: { type: string }
                  extracted_on: { type: string, format: date }
                  last_seen_on: { type: string, format: date }
                  still_on_page: { type: boolean }
            verification:
              type: object
              properties:
                date: { type: string, format: date-time }
                status: { type: string, enum: [valid, invalid, accept_all, webmail, disposable, unknown] }
        meta:
          type: object
          properties:
            params:
              type: object
              additionalProperties: true
    Error:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              id: { type: string }
              code: { type: integer }
              details: { type: string }
  responses:
    Error:
      description: Error response.
      content:
        application/json:
          schema: { $ref: '#/components/schemas/Error' }