> ## 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.

# Person lookup API

> Look up the details of a person in the Forager dataset.

## When to use this endpoint

You know who the person is (a LinkedIn public identifier or a Forager `person_id`) and want their full record: headline, location, current and past roles, education and skills. Use the `id` it returns as `person_id` in the phone and personal email lookups.

## Example request

```bash cURL theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -X POST "https://api-v2.forager.ai/api/$FORAGER_ACCOUNT_ID/datastorage/person_detail_lookup/" \
  -H "X-API-KEY: $FORAGER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "linkedin_public_identifier": "jane-doe-example"
}'
```

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 200 (illustrative values) theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": 48213,
  "full_name": "Jane Doe",
  "first_name": "Jane",
  "last_name": "Doe",
  "photo": null,
  "gender": null,
  "headline": "Head of Data at Acme Example",
  "description": null,
  "skills": [
    {
      "name": "SQL"
    },
    {
      "name": "Data modeling"
    }
  ],
  "location": {
    "id": 10432,
    "name": "Austin, Texas, United States",
    "osm_locations": [
      {
        "id": 5,
        "name": "Texas",
        "place_type": "state"
      }
    ]
  },
  "linkedin_info": {
    "public_identifier": "jane-doe-example",
    "industry": {
      "id": 4,
      "name": "Software Development"
    },
    "public_profile_url": "https://www.linkedin.com/in/jane-doe-example/"
  },
  "roles": [
    {
      "id": 7001,
      "role_title": "Head of Data",
      "start_date": "2023-02-01",
      "end_date": null,
      "duration": "3 years",
      "description": null,
      "is_current": true,
      "organization": {
        "id": 90210,
        "name": "Acme Example",
        "domain": "acme.com",
        "linkedin_info": {
          "public_identifier": "acme-example",
          "industry": {
            "id": 4,
            "name": "Software Development"
          },
          "public_profile_url": "https://www.linkedin.com/company/acme-example/"
        }
      },
      "organization_name": "Acme Example"
    }
  ],
  "educations": [
    {
      "id": 5100,
      "school_name": "Example University",
      "organization": {
        "id": 77,
        "name": "Example University",
        "domain": "example.edu",
        "linkedin_info": {
          "public_identifier": "example-university",
          "industry": {
            "id": 68,
            "name": "Higher Education"
          },
          "public_profile_url": "https://www.linkedin.com/school/example-university/"
        }
      },
      "description": null,
      "grade": null,
      "degree": "BSc",
      "activities": null,
      "field_of_study": "Statistics",
      "start_date": "2012-09-01",
      "end_date": "2016-06-01"
    }
  ],
  "certifications": [],
  "courses": [],
  "honors": [],
  "languages": [],
  "organizations": [
    {
      "id": 90210,
      "name": "Acme Example",
      "description": null,
      "role_title": "Head of Data",
      "associated_role_id": 7001,
      "associated_education_id": null
    }
  ],
  "patents": [],
  "publications": [],
  "test_scores": [],
  "projects": [],
  "volunteering": []
}
```

## Credits

Each request costs **1 credit**. 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/{account_id}/datastorage/person_detail_lookup/
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/{account_id}/datastorage/person_detail_lookup/:
    post:
      tags:
        - People
      summary: Person detail lookup
      description: Do Person details lookup.
      operationId: datastorage_person_detail_lookup_create
      parameters:
        - in: path
          name: account_id
          schema:
            type: integer
          required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PersonInfoRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PersonInfoRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PersonInfoRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PersonDetail'
          description: ''
        '403':
          $ref: '#/components/responses/AuthenticationFailed'
      security:
        - Api-Key: []
components:
  schemas:
    PersonInfoRequest:
      type: object
      description: Person info request serializer.
      properties:
        person_id:
          type: integer
        linkedin_public_identifier:
          type: string
          description: >-
            LinkedIn organization "Public identifier/Slug/ID" -
            "linkedin.com/in/!slug!/".
    PersonDetail:
      type: object
      description: Person details serializer.
      properties:
        id:
          type: integer
          readOnly: true
        full_name:
          type: string
          maxLength: 255
        first_name:
          type: string
          maxLength: 255
        last_name:
          type: string
          nullable: true
          maxLength: 255
        photo:
          type: string
          format: uri
          nullable: true
          maxLength: 255
        gender:
          type: string
          nullable: true
          maxLength: 255
        headline:
          type: string
          nullable: true
          maxLength: 255
        description:
          type: string
          nullable: true
        skills:
          type: array
          items:
            $ref: '#/components/schemas/PersonSkill'
          readOnly: true
        location:
          allOf:
            - $ref: '#/components/schemas/InnerLocation'
          readOnly: true
        linkedin_info:
          allOf:
            - $ref: '#/components/schemas/PersonLinkedinInfo'
          readOnly: true
        roles:
          type: array
          items:
            $ref: '#/components/schemas/PersonRoleChild'
        educations:
          type: array
          items:
            $ref: '#/components/schemas/PersonEducation'
        certifications:
          type: array
          items:
            $ref: '#/components/schemas/PersonCertification'
          readOnly: true
        courses:
          type: array
          items:
            $ref: '#/components/schemas/PersonCourse'
          readOnly: true
        honors:
          type: array
          items:
            $ref: '#/components/schemas/PersonHonor'
          readOnly: true
        languages:
          type: array
          items:
            $ref: '#/components/schemas/PersonLanguage'
          readOnly: true
        organizations:
          type: array
          items:
            $ref: '#/components/schemas/PersonOrganization'
          readOnly: true
        patents:
          type: array
          items:
            $ref: '#/components/schemas/PersonPatent'
          readOnly: true
        publications:
          type: array
          items:
            $ref: '#/components/schemas/PersonPublication'
          readOnly: true
        test_scores:
          type: array
          items:
            $ref: '#/components/schemas/PersonTestScore'
          readOnly: true
        projects:
          type: array
          items:
            $ref: '#/components/schemas/PersonProject'
          readOnly: true
        volunteering:
          type: array
          items:
            $ref: '#/components/schemas/PersonVolunteering'
          readOnly: true
      required:
        - certifications
        - courses
        - educations
        - first_name
        - full_name
        - honors
        - id
        - languages
        - linkedin_info
        - location
        - organizations
        - patents
        - projects
        - publications
        - roles
        - skills
        - test_scores
        - volunteering
    PersonSkill:
      type: object
      description: Serializer for the PersonSkill model.
      properties:
        name:
          type: string
          maxLength: 255
      required:
        - name
    InnerLocation:
      type: object
      description: Serializer for the InnerLocation model.
      properties:
        id:
          type: integer
          readOnly: true
        name:
          type: string
          maxLength: 255
        osm_locations:
          type: array
          items:
            $ref: '#/components/schemas/OSMLocation'
          readOnly: true
      required:
        - id
        - name
        - osm_locations
    PersonLinkedinInfo:
      type: object
      description: Serializer for the PersonLinkedinInfo model.
      properties:
        public_identifier:
          type: string
          nullable: true
          maxLength: 255
        industry:
          allOf:
            - $ref: '#/components/schemas/LinkedinIndustry'
          readOnly: true
        public_profile_url:
          type: string
          description: Get LinkedIn public profile URL.
          readOnly: true
      required:
        - industry
        - public_profile_url
    PersonRoleChild:
      type: object
      description: Child serializer for the OrganizationPersonRole model.
      properties:
        id:
          type: integer
          readOnly: true
        role_title:
          type: string
          nullable: true
          maxLength: 255
        start_date:
          type: string
          format: date
          nullable: true
        end_date:
          type: string
          format: date
          nullable: true
        duration:
          type: string
          nullable: true
          title: Role duration
          maxLength: 255
        description:
          type: string
          nullable: true
        is_current:
          type: boolean
          title: Is current?
        organization:
          allOf:
            - $ref: '#/components/schemas/ShortOrganization'
          readOnly: true
        organization_name:
          type: string
          nullable: true
          maxLength: 255
      required:
        - id
        - is_current
        - organization
    PersonEducation:
      type: object
      description: Serializer for the PersonEducation model.
      properties:
        id:
          type: integer
          readOnly: true
        school_name:
          type: string
          maxLength: 255
        organization:
          allOf:
            - $ref: '#/components/schemas/ShortOrganization'
          readOnly: true
        description:
          type: string
          nullable: true
        grade:
          type: string
          nullable: true
          maxLength: 255
        degree:
          type: string
          nullable: true
          maxLength: 255
        activities:
          type: string
          nullable: true
          maxLength: 255
        field_of_study:
          type: string
          nullable: true
          maxLength: 255
        start_date:
          type: string
          format: date
          nullable: true
        end_date:
          type: string
          format: date
          nullable: true
      required:
        - id
        - organization
        - school_name
    PersonCertification:
      type: object
      description: Serializer for the PersonCertification model.
      properties:
        id:
          type: integer
          readOnly: true
        organization_id:
          type: integer
          readOnly: true
          nullable: true
        name:
          type: string
          maxLength: 510
        certificate_id:
          type: string
          nullable: true
          maxLength: 255
        url:
          type: string
          format: uri
          nullable: true
          maxLength: 16384
        authority:
          type: string
          nullable: true
          maxLength: 255
      required:
        - id
        - name
        - organization_id
    PersonCourse:
      type: object
      description: Serializer for the PersonCourse model.
      properties:
        id:
          type: integer
          readOnly: true
        name:
          type: string
          maxLength: 1515
        number:
          type: string
          nullable: true
          maxLength: 255
        associated_role_id:
          type: integer
          readOnly: true
          nullable: true
        associated_education_id:
          type: integer
          readOnly: true
          nullable: true
      required:
        - associated_education_id
        - associated_role_id
        - id
        - name
    PersonHonor:
      type: object
      description: Serializer for the PersonHonor model.
      properties:
        id:
          type: integer
          readOnly: true
        title:
          type: string
          maxLength: 510
        description:
          type: string
          nullable: true
        issuer:
          type: string
          nullable: true
        issued_on:
          type: string
          format: date
          nullable: true
        associated_role_id:
          type: integer
          readOnly: true
          nullable: true
        associated_education_id:
          type: integer
          readOnly: true
          nullable: true
      required:
        - associated_education_id
        - associated_role_id
        - id
        - title
    PersonLanguage:
      type: object
      description: Serializer for the PersonLanguage model.
      properties:
        id:
          type: integer
          readOnly: true
        name:
          type: string
          maxLength: 255
        proficiency:
          type: string
          nullable: true
          maxLength: 255
      required:
        - id
        - name
    PersonOrganization:
      type: object
      description: Serializer for the PersonOrganization model.
      properties:
        id:
          type: integer
          readOnly: true
        name:
          type: string
          title: Title
          maxLength: 510
        description:
          type: string
          nullable: true
        role_title:
          type: string
          nullable: true
          maxLength: 1515
        associated_role_id:
          type: integer
          readOnly: true
          nullable: true
        associated_education_id:
          type: integer
          readOnly: true
          nullable: true
      required:
        - associated_education_id
        - associated_role_id
        - id
        - name
    PersonPatent:
      type: object
      description: Serializer for the PersonPatent model.
      properties:
        id:
          type: integer
          readOnly: true
        title:
          type: string
          maxLength: 510
        description:
          type: string
          nullable: true
        patent_number:
          type: string
          nullable: true
          maxLength: 125
        application_number:
          type: string
          nullable: true
          maxLength: 255
        is_pending:
          type: boolean
        url:
          type: string
          format: uri
          nullable: true
          maxLength: 16384
        issued_on:
          type: string
          format: date
          nullable: true
        filled_on:
          type: string
          format: date
          nullable: true
        linkedin_inventors_ids:
          type: array
          items:
            type: integer
          description: Get list of ids of persons who authored this patent.
          readOnly: true
        non_linkedin_inventors:
          type: array
          items:
            type: string
            maxLength: 255
      required:
        - id
        - is_pending
        - linkedin_inventors_ids
        - title
    PersonPublication:
      type: object
      description: Serializer for the PersonPublication model.
      properties:
        id:
          type: integer
          readOnly: true
        name:
          type: string
          maxLength: 510
        description:
          type: string
          nullable: true
        url:
          type: string
          format: uri
          nullable: true
          maxLength: 16384
        publisher:
          type: string
          nullable: true
          maxLength: 510
        published_in:
          type: string
          format: date
          nullable: true
        linkedin_authors_ids:
          type: array
          items:
            type: integer
          description: Get list of ids of persons who authored this publication.
          readOnly: true
        non_linkedin_authors:
          type: array
          items:
            type: string
            maxLength: 255
      required:
        - id
        - linkedin_authors_ids
        - name
    PersonTestScore:
      type: object
      description: Serializer for the PersonTestScore model.
      properties:
        id:
          type: integer
          readOnly: true
        name:
          type: string
          maxLength: 510
        description:
          type: string
          nullable: true
        score:
          type: string
          nullable: true
          maxLength: 65
        date_on:
          type: string
          format: date
          nullable: true
        associated_role_id:
          type: integer
          readOnly: true
          nullable: true
        associated_education_id:
          type: integer
          readOnly: true
          nullable: true
      required:
        - associated_education_id
        - associated_role_id
        - id
        - name
    PersonProject:
      type: object
      description: Serializer for the PersonProject model.
      properties:
        id:
          type: integer
          readOnly: true
        title:
          type: string
          maxLength: 510
        url:
          type: string
          format: uri
          nullable: true
          maxLength: 16384
        description:
          type: string
          nullable: true
        start_date:
          type: string
          format: date
          nullable: true
        end_date:
          type: string
          format: date
          nullable: true
        associated_role_id:
          type: integer
          readOnly: true
          nullable: true
        associated_education_id:
          type: integer
          readOnly: true
          nullable: true
        linkedin_contributors_ids:
          type: array
          items:
            type: integer
          description: Get list of ids of persons who contributed to this project.
          readOnly: true
        non_linkedin_contributors:
          type: array
          items:
            type: string
            maxLength: 255
      required:
        - associated_education_id
        - associated_role_id
        - id
        - linkedin_contributors_ids
        - title
    PersonVolunteering:
      type: object
      description: Serializer for the PersonVolunteering model.
      properties:
        id:
          type: integer
          readOnly: true
        title:
          type: string
          title: Name
          maxLength: 255
        description:
          type: string
          nullable: true
        cause:
          type: string
          nullable: true
          maxLength: 255
        organization_name:
          type: string
          maxLength: 255
        organization_id:
          type: integer
          readOnly: true
          nullable: true
        start_date:
          type: string
          format: date
          nullable: true
        end_date:
          type: string
          format: date
          nullable: true
      required:
        - id
        - organization_id
        - organization_name
        - title
    OSMLocation:
      type: object
      description: Serializer for the OSMLocation model.
      properties:
        id:
          type: integer
          readOnly: true
        name:
          type: string
          maxLength: 255
        place_type:
          type: string
          title: Type
          maxLength: 255
      required:
        - id
        - name
        - place_type
    LinkedinIndustry:
      type: object
      description: Serializer for the LinkedinIndustry document.
      properties:
        id:
          type: integer
          readOnly: true
        name:
          type: string
          maxLength: 255
      required:
        - id
        - name
    ShortOrganization:
      type: object
      description: Short serializer for the Organization model.
      properties:
        id:
          type: integer
          readOnly: true
        name:
          type: string
          maxLength: 255
        domain:
          type: string
          format: uri
          nullable: true
          maxLength: 200
        linkedin_info:
          allOf:
            - $ref: '#/components/schemas/OrganizationLinkedinInfo'
          readOnly: true
      required:
        - id
        - linkedin_info
        - name
    OrganizationLinkedinInfo:
      type: object
      description: Serializer for the OrganizationLinkedinInfo model.
      properties:
        public_identifier:
          type: string
          nullable: true
          maxLength: 255
        industry:
          allOf:
            - $ref: '#/components/schemas/LinkedinIndustry'
          readOnly: true
        public_profile_url:
          type: string
          nullable: true
          description: Get LinkedIn public profile URL.
          readOnly: true
      required:
        - industry
        - public_profile_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.