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

> ## Agent Instructions
> Forager is a REST API for B2B people, company and job post data: contact lookups (phone numbers, personal emails, work emails), person, company and job post search, and bulk data feeds.
> Server: https://api-v2.forager.ai. Send the API key in the X-API-KEY header. Most paths include {account_id}. Read FORAGER_API_KEY and FORAGER_ACCOUNT_ID from the environment; never put the key in client-side code, logs or prompts.
> To add Forager to a project, follow https://www.forager.ai/docs/guides/agent-quickstart.md. To pick an endpoint, read https://www.forager.ai/docs/guides/choose-an-endpoint.md. For end-to-end builds, see https://www.forager.ai/docs/recipes/overview.md.
> Most requests spend credits. Do not guess costs; use https://www.forager.ai/docs/api-overview/credit-pricing.md and ask the user before spending credits.
> Use only endpoints and fields defined in https://www.forager.ai/docs/openapi.yaml. Forager has no MCP server for the API yet; the /mcp endpoint on this site searches the documentation only.

# Work email finder API

> Start an asynchronous work email lookup and get back a job id immediately.

## When to use this endpoint

You need one person's verified work email and can identify them by name and company domain, or by LinkedIn public identifier. The lookup is asynchronous: this call answers `202` with a `job_id` to poll. For more than a handful of people use the bulk lookup.

## Example request

```bash cURL theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -X POST "https://api-v2.forager.ai/api/v2/$FORAGER_ACCOUNT_ID/datastorage/person_contacts_lookup/work_emails/" \
  -H "X-API-KEY: $FORAGER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "first_name": "Jane",
  "last_name": "Doe",
  "domain": "acme.com"
}'
```

Set `FORAGER_API_KEY` and `FORAGER_ACCOUNT_ID` as in the [quickstart](https://www.forager.ai/docs/api-overview/send-your-first-request.md).

## Example response

```json 202 (illustrative values) theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "job_id": "2b7e1a40-3c5d-4f6e-8a9b-0c1d2e3f4a5b",
  "status": "queued",
  "status_check_url": "https://api-v2.forager.ai/api/v2/123456/datastorage/person_contacts_lookup/work_emails/2b7e1a40-3c5d-4f6e-8a9b-0c1d2e3f4a5b/",
  "webhook_url": ""
}
```

## Credits

A lookup costs **5 credits**, charged only when an address is found. Polling for the result is free. See [API credits and pricing](https://www.forager.ai/docs/api-overview/credit-pricing.md) for how credits are charged and how to check what you spent.


## OpenAPI

````yaml POST /api/v2/{account_id}/datastorage/person_contacts_lookup/work_emails/
openapi: 3.0.3
info:
  title: Forager public API
  version: 1.0.0
  description: Forager public API endpoints documentation
servers:
  - url: https://api-v2.forager.ai
security: []
tags:
  - name: Job Posts
    description: >-
      Search the Forager job-post index. Use these endpoints to find job
      postings by attributes such as title, location, posted date, or hiring
      organization, and to retrieve aggregate totals for a given query before
      paginating through full results.
  - name: Organizations
    description: >-
      Search the Forager organization index. Filter companies by attributes such
      as industry, headcount, location, keywords, and web technologies, and
      retrieve total match counts alongside the result set.
  - name: People
    description: >-
      Look up people and their records. Use the search endpoints to find people
      by role, employer, location, or skills, and the detail-lookup endpoints to
      fetch a full person record by ID, email, or phone number. Contact data has
      its own sections: Phones, Personal Emails, and Work Emails.
  - name: Phones
    description: >-
      Retrieve phone numbers for a known person. Provide identifying information
      (such as a LinkedIn handle or Forager ID) and get back the available phone
      numbers.
  - name: Personal Emails
    description: >-
      Retrieve personal email addresses for a known person. Returns addresses on
      free webmail / consumer providers (Gmail, Outlook, Yahoo, iCloud, Proton,
      and similar); corporate, educational, and other custom domains are
      excluded to keep deliverability high.
  - name: Work Emails
    description: >-
      Find and verify a person's work email address. Submit a lookup (single or
      bulk), poll the job for its result, and optionally receive the result by
      webhook when the job completes.
  - name: Websites
    description: >-
      Look up information about a website, including the organization that owns
      it and the technologies detected on the domain.
  - name: Users
    description: >-
      Manage your Forager account. Retrieve the current authenticated user,
      create and revoke API keys used to authenticate requests to the rest of
      the API, and review the credit balance-change log that records every
      lookup charge or adjustment against your account.
  - name: Autocomplete
    description: >-
      Resolve free-text input into the canonical IDs used elsewhere in the API.
      Each endpoint returns matching options for a search term (industries,
      organizations, organization keywords, locations, person skills, web
      technologies) so they can be passed as filters to the search endpoints.
  - name: Feedback
    description: >-
      Report verification feedback for contact data (phone numbers, personal
      emails, work emails) returned by Forager person lookups. Use these
      endpoints to submit whether a contact value is valid/invalid and whether
      it belongs to the matched person — every submission is stored as a new row
      and is used to improve the accuracy of future lookups.
paths:
  /api/v2/{account_id}/datastorage/person_contacts_lookup/work_emails/:
    post:
      tags:
        - Work Emails
      summary: Single work email lookup
      description: >-
        Start a work email lookup and return immediately with a job id. Identify
        the person either by `first_name`, `last_name` and `domain`, or by
        `linkedin_public_identifier`, in which case the name and the domain of
        their current employer are taken from the Forager dataset. The lookup
        itself runs asynchronously because proving an address is deliverable
        takes longer than a request should wait: poll the returned
        `status_check_url` until `status` is `completed` or `failed`. Credits
        are charged once, only when an address is found, and polling is always
        free. This endpoint is rate limited for interactive use - for enrichment
        runs use the bulk endpoint, which is both faster and cheaper for us to
        serve.
      operationId: v2_datastorage_person_contacts_lookup_work_emails_create
      parameters:
        - in: path
          name: account_id
          schema:
            type: integer
          required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkEmailLookupSubmitRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/WorkEmailLookupSubmitRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/WorkEmailLookupSubmitRequest'
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkEmailLookupSubmitted'
          description: ''
        '403':
          $ref: '#/components/responses/AuthenticationFailed'
      security:
        - Api-Key: []
components:
  schemas:
    WorkEmailLookupSubmitRequest:
      type: object
      description: >-
        The single-submit body: one lookup, plus an optional result webhook.


        Kept apart from the bulk child `WorkEmailLookupRequestSerializer` so

        `webhook_url` sits beside the lookup on a single submit but never
        appears on

        each row of a bulk request, where the target is batch-scoped instead.
      properties:
        first_name:
          type: string
          default: ''
        last_name:
          type: string
          default: ''
        domain:
          type: string
          default: ''
          description: >-
            Company domain, e.g. "acme.com". A full URL is accepted and reduced
            to its domain.
        linkedin_public_identifier:
          type: string
          default: ''
          description: >-
            LinkedIn person "Public identifier/Slug" -
            "linkedin.com/in/!slug!/".
        webhook_url:
          type: string
          default: ''
          description: >-
            Optional https URL we POST the results to when the batch completes,
            so you need not poll. Put any secret used to authenticate the
            callback in the URL query string; it is never returned by the poll
            endpoints or written to logs. Omit to poll only.
          maxLength: 2048
    WorkEmailLookupSubmitted:
      type: object
      description: The `202` body of a single submit.
      properties:
        job_id:
          type: string
          format: uuid
          readOnly: true
        status:
          type: string
          readOnly: true
        status_check_url:
          type: string
          readOnly: true
        webhook_url:
          type: string
          readOnly: true
      required:
        - job_id
        - status
        - status_check_url
        - webhook_url
  responses:
    AuthenticationFailed:
      description: >-
        The X-API-KEY header is missing, the key is not valid, or the key does
        not have permission for this resource.
      content:
        application/json:
          schema:
            type: object
            properties:
              detail:
                type: string
          example:
            detail: Authentication credentials were not provided.
  securitySchemes:
    Api-Key:
      type: apiKey
      in: header
      name: X-API-KEY

````

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