> ## Documentation Index
> Fetch the complete documentation index at: https://docs.airscale.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Email finder

> Find a professional email address for one person. Rate limit: 3,000 requests per minute per workspace.

Identify one person by LinkedIn profile URL or by name and company, then return a verified professional email when one is found.

> [!NOTE]
>
> The limit is 3,000 requests per minute per workspace. A successful result costs 2 credits; `not_found` is not charged.

## Which inputs can I send?

All five fields belong to the same request. **You can send them together.** The examples describe minimum information, not mutually exclusive options.

| Information available | Fields to send |
| - | - |
| LinkedIn profile URL only | `linkedin_profile_url` |
| Person's name and company name | `first_name`, `last_name`, `company_name` |
| Person's name and company domain | `first_name`, `last_name`, `domain` |
| All of the above | Send all five fields together. |

Send a person's name as `first_name` and `last_name`; `full_name` is not a supported request field. Without a LinkedIn profile URL, both name fields and a company name or domain are required. Company name alone or a person's name alone does not meet the current API's minimum input requirement.

The success example includes all documented response fields. `provider` and `verifier` use placeholder labels; optional fields may be absent from a result.

> [!WARNING]
>
> For temporary `502` or `503` responses, use a limited number of retries with increasing delays. If errors persist, stop retrying and contact support. A client timeout does not confirm whether the request completed or was charged.

## Next step

Use [Bulk email finder](https://docs.airscale.io/api-reference/email-finder-\(bulk\)) when you need asynchronous results for up to 100 people.


## OpenAPI

````yaml openapi.json POST /v1/email
openapi: 3.1.0
info:
  title: Airscale Public API
  version: '2026-09-11'
  description: Search, enrich, and resolve public business data with Airscale.
  x-airscale-source-repository: ViceScale/airscale-code
  x-airscale-source-sha: 1de19e1b70a052a4b8d9c2075021a7e5e7a94d51
servers:
  - url: https://api.airscale.io
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Search and discovery
    description: Search people, companies, and the web.
  - name: Contact data
    description: Find professional and personal contact data.
  - name: Profiles and reverse lookup
    description: Extract profiles or resolve a person from known contact data.
  - name: Post engagement
    description: Retrieve and enrich people who liked or commented on LinkedIn posts.
  - name: LinkedIn content
    description: >-
      Search LinkedIn posts, read profile and company feeds, and retrieve
      profile comments and comment reactions.
  - name: Account
    description: Inspect workspace account state.
  - name: Miscellaneous
    description: >-
      Find website technologies and check WhatsApp availability, Meta ads, and
      email deliverability.
paths:
  /v1/email:
    post:
      tags:
        - Contact data
      summary: Find a professional email
      description: >-
        Finds a professional email from a recognized person profile or from a
        complete name and company identifier. The JSON request body is limited
        to 256 KiB.
      operationId: findProfessionalEmail
      requestBody:
        required: true
        description: >-
          Provide either a recognized non-empty person profile, or first and
          last name with a domain or company name. Both complete forms may be
          supplied together. The JSON body must not exceed 256 KiB.
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              properties:
                linkedin_profile_url:
                  $ref: '#/components/schemas/LinkedInPersonUrl'
                first_name:
                  type: string
                  minLength: 1
                last_name:
                  type: string
                  minLength: 1
                domain:
                  type: string
                  minLength: 1
                company_name:
                  type: string
                  minLength: 1
              if:
                not:
                  required:
                    - linkedin_profile_url
              then:
                required:
                  - first_name
                  - last_name
                anyOf:
                  - required:
                      - domain
                  - required:
                      - company_name
            examples:
              allKnownFields:
                summary: Combine all known fields
                value:
                  linkedin_profile_url: https://www.linkedin.com/in/example-person-000000
                  first_name: Example
                  last_name: Person
                  domain: example.org
                  company_name: Example Company
              byCompanyName:
                summary: Name and company name
                value:
                  first_name: Example
                  last_name: Person
                  company_name: Example Company
              byProfile:
                summary: LinkedIn profile URL alone
                value:
                  linkedin_profile_url: https://www.linkedin.com/in/example-person-000000
              byName:
                summary: Identify by name and domain
                value:
                  first_name: Example
                  last_name: Person
                  domain: example.org
      responses:
        '200':
          description: A professional email result or a not-found result.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/SuccessEmail'
                  - $ref: '#/components/schemas/NotFoundEmail'
              examples:
                success:
                  summary: Email found
                  value:
                    status: success
                    email: example.person@example.org
                    email_status: valid
                    provider: <provider>
                    verifier: <verifier>
                    catch_all: 'no'
                    linkedin_profile_url: https://www.linkedin.com/in/example-person-000000
                notFound:
                  summary: No email found
                  value:
                    status: not_found
                    email: null
        '400':
          description: >-
            The JSON body is invalid or required identification fields are
            missing.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          description: >-
            The workspace cannot complete this request because access or
            available credits are insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '413':
          description: The JSON request body exceeds the 256 KiB limit.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: >-
            The workspace rate limit has been exceeded. Try again after the
            current window resets.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: >-
            The request could not be completed because of an unexpected server
            error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: >-
            The request could not be completed because a required service
            returned an unsuccessful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: The request is temporarily unavailable. Try again later.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    LinkedInPersonUrl:
      type: string
      minLength: 1
      description: >-
        A recognized LinkedIn person-profile URL or identifier. Airscale
        normalizes supported profile inputs.
      example: https://www.linkedin.com/in/example-person-000000
    SuccessEmail:
      type: object
      required:
        - status
        - email
      additionalProperties: true
      properties:
        status:
          type: string
          const: success
        email:
          type: string
          format: email
        email_status:
          type: string
          description: The value is "valid" on a successful result.
        provider:
          type: string
        verifier:
          type: string
        catch_all:
          type: string
          enum:
            - 'yes'
            - 'no'
        linkedin_profile_url:
          $ref: '#/components/schemas/LinkedInPersonUrl'
    NotFoundEmail:
      type: object
      required:
        - status
        - email
      additionalProperties: true
      properties:
        status:
          type: string
          const: not_found
        email:
          type: 'null'
    Error:
      type: object
      additionalProperties: true
      properties:
        error:
          type: string
        message:
          type: string
  responses:
    Unauthorized:
      description: The Bearer token is missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key
      description: >-
        Use an Airscale workspace API key. Never expose the key in client-side
        code.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.