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

# Search People

> Search the Crustdata person database using flexible filter conditions, sorting, and cursor-based pagination.
Supports filtering on hundreds of fields including job title, company, location, seniority, industry, education, and more.
Use compound conditions with AND/OR logic to build complex queries. Results can be sorted and paginated using cursors.

<Note>
    Default `rate-limit` is 30 requests per minute. Send an email to [gtm@crustdata.co](mailto:gtm@crustdata.co) to discuss higher limits if needed for your use case.
</Note>




## OpenAPI

````yaml /openapi-specs/2025-11-01/person.yaml post /person/search
openapi: 3.0.3
info:
  title: Person Dataset API
  version: '2025-11-01'
  description: >
    The Person Dataset API provides a comprehensive suite of endpoints for
    discovering, enriching, and managing person data at scale.


    - **Search**: Query the person database using flexible filters, sorting, and
    pagination to find people matching specific criteria such as job title,
    company, location, and more.

    - **Enrich**: Enrich person records from the cached dataset using profile
    URLs or business emails, returning detailed professional and contact
    information.

    - **Live Enrich**: Fetch fresh profile data from the web when a profile is
    not yet in the cache or when the latest data is needed.

    - **Autocomplete**: Get type-ahead suggestions for person search fields,
    useful for building search UIs with field value previews.

    - **Realtime Search**: Search people in real time using live person search
    filters, supporting both synchronous and asynchronous (background job)
    modes.
servers:
  - url: https://api.crustdata.com
    description: Production API server
security:
  - bearerAuth: []
tags:
  - name: Person APIs
    description: Core person data operations
  - name: Search APIs
    description: Endpoints for searching and discovering people
  - name: Enrich APIs
    description: Endpoints for enriching person records
  - name: Autocomplete APIs
    description: Endpoints for field value autocomplete suggestions
paths:
  /person/search:
    post:
      tags:
        - Person APIs
        - Search APIs
      summary: Search people using filters and sorting
      description: >
        Search the Crustdata person database using flexible filter conditions,
        sorting, and cursor-based pagination.

        Supports filtering on hundreds of fields including job title, company,
        location, seniority, industry, education, and more.

        Use compound conditions with AND/OR logic to build complex queries.
        Results can be sorted and paginated using cursors.


        <Note>
            Default `rate-limit` is 30 requests per minute. Send an email to [gtm@crustdata.co](mailto:gtm@crustdata.co) to discuss higher limits if needed for your use case.
        </Note>
      operationId: searchPersonDataset
      parameters:
        - $ref: '#/components/parameters/ApiVersion'
      requestBody:
        required: true
        description: Search filters, sorting, pagination, and field selection options.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PersonSearchRequest'
            examples:
              search_by_title:
                summary: Search by current job title
                value:
                  filters:
                    field: experience.employment_details.current.title
                    type: '='
                    value: CEO
                  limit: 1
              search_cto_midsize:
                summary: Search CTOs at mid-size companies
                value:
                  filters:
                    op: and
                    conditions:
                      - field: experience.employment_details.current.title
                        type: '='
                        value: CTO
                      - field: >-
                          experience.employment_details.current.company_headcount_range
                        type: in
                        value:
                          - 51-200
                          - 201-500
                  limit: 2
              search_by_person_id:
                summary: >-
                  Look up a person by Crustdata ID — shows normalized_title,
                  followers, and education location/logo
                value:
                  filters:
                    field: crustdata_person_id
                    type: '='
                    value: 14540
                  fields:
                    - basic_profile
                    - professional_network
                    - education
                  limit: 1
      responses:
        '200':
          description: People matching the search criteria
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PersonSearchResponse'
              examples:
                search_by_title_response:
                  summary: >-
                    Search results for CEO title (paired with `search_by_title`
                    request)
                  value:
                    profiles:
                      - basic_profile:
                          name: Nithin Kamath
                        experience:
                          employment_details:
                            current:
                              - title: CEO
                              - title: Founder & CEO
                    next_cursor: H4sIACIdzWkC...
                    total_count: 1105055
                search_cto_midsize_response:
                  summary: >-
                    CTOs at mid-size companies (paired with `search_cto_midsize`
                    request)
                  value:
                    profiles:
                      - basic_profile:
                          name: Vikram Shah
                        experience:
                          employment_details:
                            current:
                              - title: CTO
                              - title: Co-founder
                      - basic_profile:
                          name: Jagdeep Singh
                        experience:
                          employment_details:
                            current:
                              - title: Director Of Technical Operations
                              - title: CTO
                    next_cursor: H4sIAAA-3mkC...
                    total_count: 9176
                search_by_person_id_response:
                  summary: >-
                    Profile for crustdata_person_id 14540 (paired with
                    `search_by_person_id` request)
                  value:
                    profiles:
                      - crustdata_person_id: 14540
                        basic_profile:
                          name: David Hsu
                          current_title: Founder, CEO
                          normalized_title:
                            matched_title: Co-Founder, CEO, CTO
                            department: Executive Leadership
                            sub_department: Founder & Entrepreneurship Leadership
                            similarity: 0.6012
                            confident: true
                        professional_network:
                          connections: 697
                          followers: 14177
                        education:
                          schools:
                            - school: University of Oxford
                              degree: Bachelor of Arts (B.A.)
                              location:
                                raw: Oxford, England
                                city: Oxford
                                state: England
                                country: United Kingdom
                                continent: null
                              institute_logo_permalink: >-
                                https://crustdata-media.s3.us-east-2.amazonaws.com/company/3d2093a16f7cf7b459a0d30d4e795d0be5a41a3396f21dee899e43e8a8b6de8d.jpg
                    next_cursor: H4sIACIdzWkC...
                    total_count: 1
        '400':
          description: Invalid search request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalid_field:
                  summary: Unsupported filter field
                  value:
                    error:
                      type: invalid_request
                      message: >-
                        Unsupported filter field: 'current_title'. Supported
                        fields: ['basic_profile.name', 'basic_profile.headline',
                        ...]
                      metadata: []
                count_limit_conflict:
                  summary: Both count and limit supplied
                  value:
                    error:
                      type: invalid_request
                      message: Only one of 'count' or 'limit' can be provided, not both
                      metadata: []
        '401':
          description: Unauthorized - invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  type: unauthorized
                  message: Invalid API key in request.
                  metadata: []
        '403':
          description: Forbidden - search access not available for this account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  parameters:
    ApiVersion:
      name: x-api-version
      in: header
      required: true
      schema:
        type: string
        enum:
          - '2025-11-01'
        default: '2025-11-01'
        example: '2025-11-01'
      description: API version to use. This endpoint currently requires `2025-11-01`.
  schemas:
    PersonSearchRequest:
      type: object
      additionalProperties: false
      required:
        - filters
      properties:
        filters:
          description: >-
            Filter criteria — a single `PersonSearchCondition` or an and/or
            `PersonSearchConditionGroup`.
          example:
            field: experience.employment_details.current.title
            type: '='
            value: CEO
          oneOf:
            - $ref: '#/components/schemas/PersonSearchCondition'
            - $ref: '#/components/schemas/PersonSearchConditionGroup'
        sorts:
          type: array
          description: Sort directives applied to matched people in order.
          example:
            - field: crustdata_person_id
              order: asc
          items:
            $ref: '#/components/schemas/Sort'
          default: []
        limit:
          type: integer
          minimum: 1
          maximum: 1000
          default: 20
        count:
          type: integer
          minimum: 1
          maximum: 1000
          description: Alias for limit.
          example: 20
        cursor:
          type: string
          nullable: true
          description: >-
            Pagination cursor from a previous response's `next_cursor`. Omit on
            the first page.
          example: H4sIACIdzWkC...
        post_processing:
          $ref: '#/components/schemas/PostProcessing'
        return_query:
          type: boolean
          default: false
          description: Debug flag - include search query in response
        preview:
          type: boolean
          default: false
          description: Preview mode - return only basic fields for faster response
        fields:
          type: array
          description: >
            Optional list of field paths to include in each returned profile.
            When omitted, a default

            set of profile fields is returned. Use dot notation for a nested
            field (for example

            `experience.employment_details.current.title`) or a top-level family
            name (for example

            `basic_profile`) to include the whole family. An unsupported value
            returns a `400` whose

            `metadata.available_fields` lists every selectable field.
          items:
            type: string
          example:
            - basic_profile.name
            - experience.employment_details.current.title
      description: >-
        Request body for /person/search. Use filters (optionally grouped with
        and/or), sorts, limit, and cursor pagination.
      example:
        filters:
          field: experience.employment_details.current.title
          type: '='
          value: CEO
        limit: 1
    PersonSearchResponse:
      type: object
      description: >-
        Paginated response from the person search endpoint containing matched
        profiles and pagination metadata.
      properties:
        profiles:
          type: array
          description: Array of person profiles matching the search criteria
          example: []
          items:
            $ref: '#/components/schemas/PersonSearch'
          x-availability:
            - search
          x-cdp-source: spark/models/cpci.py::test
        next_cursor:
          type: string
          nullable: true
          description: >-
            Opaque cursor string for fetching the next page of results. Pass
            this value as the cursor parameter in subsequent requests. Null when
            no more results are available.
          example: H4sIACIdzWkC_xWMMQ7DIAwAv...
          x-availability:
            - search
          x-cdp-source: spark/models/cpci.py::test
        total_count:
          type: integer
          nullable: true
          description: >-
            Total number of profiles matching the search criteria across all
            pages
          example: 1105055
          x-availability:
            - search
          x-cdp-source: spark/models/cpci.py::test
      required:
        - profiles
      x-cdp-source: spark/models/cpci.py::test
      example:
        profiles: []
        next_cursor: null
        total_count: 0
    ErrorResponse:
      type: object
      description: >-
        Standard error response returned by all Person API endpoints when a
        request fails.
      required:
        - error
      properties:
        error:
          type: object
          required:
            - type
            - message
          properties:
            type:
              type: string
              enum:
                - invalid_request
                - authentication_error
                - unauthorized
                - insufficient_credits
                - permission_error
                - rate_limit_error
                - internal_error
              description: Category of the error
              example: invalid_request
            message:
              type: string
              description: Human-readable error message
              example: 'Unsupported filter field: ''current_title'''
            metadata:
              type: array
              items:
                type: object
                additionalProperties: true
              default: []
              description: >-
                Additional structured context (e.g., available_fields,
                sortable_fields)
    PersonSearchCondition:
      type: object
      required:
        - field
        - type
        - value
      properties:
        field:
          type: string
          description: >
            Field name to filter on. Valid fields include: crustdata_person_id,
            basic_profile.name, basic_profile.headline, basic_profile.summary,
            basic_profile.languages, basic_profile.last_updated,
            basic_profile.location, basic_profile.location.full_location,
            basic_profile.location.city, basic_profile.location.state,
            basic_profile.location.country, basic_profile.location.continent,
            basic_profile.normalized_title.matched_title,
            basic_profile.normalized_title.department,
            basic_profile.normalized_title.sub_department,
            professional_network.connections, professional_network.followers,
            professional_network.open_to_cards, professional_network.location,
            professional_network.location.raw,
            skills.professional_network_skills,
            experience.employment_details.company_name,
            experience.employment_details.company_id,
            experience.employment_details.title,
            experience.employment_details.description,
            experience.employment_details.location,
            experience.employment_details.start_date,
            experience.employment_details.end_date,
            experience.employment_details.seniority_level,
            experience.employment_details.function_category,
            experience.employment_details.company_website_domain,
            experience.employment_details.company_headcount_latest,
            experience.employment_details.company_headcount_range,
            experience.employment_details.company_industries,
            experience.employment_details.company_professional_network_industry,
            experience.employment_details.company_type,
            experience.employment_details.company_headquarters_country,
            experience.employment_details.company_hq_location,
            experience.employment_details.years_at_company_raw,
            experience.employment_details.current.name,
            experience.employment_details.current.company_name,
            experience.employment_details.current.title,
            experience.employment_details.current.company_id,
            experience.employment_details.current.position_id,
            experience.employment_details.current.seniority_level,
            experience.employment_details.current.start_date,
            experience.employment_details.current.company_website_domain,
            experience.employment_details.current.company_professional_network_industry,
            experience.employment_details.current.company_linkedin_profile_url,
            experience.employment_details.current.company_headcount_range,
            experience.employment_details.current.company_headcount_latest,
            experience.employment_details.current.company_industries,
            experience.employment_details.current.company_type,
            experience.employment_details.current.company_headquarters_country,
            experience.employment_details.current.company_hq_location,
            experience.employment_details.current.function_category,
            experience.employment_details.current.years_at_company_raw,
            experience.employment_details.past.name,
            experience.employment_details.past.company_name,
            experience.employment_details.past.title,
            experience.employment_details.past.company_id,
            experience.employment_details.past.position_id,
            experience.employment_details.past.seniority_level,
            experience.employment_details.past.start_date,
            experience.employment_details.past.company_website_domain,
            experience.employment_details.past.company_professional_network_industry,
            experience.employment_details.past.company_linkedin_profile_url,
            experience.employment_details.past.company_headcount_range,
            experience.employment_details.past.company_headcount_latest,
            experience.employment_details.past.company_industries,
            experience.employment_details.past.company_type,
            experience.employment_details.past.company_headquarters_country,
            experience.employment_details.past.company_hq_location,
            experience.employment_details.past.function_category,
            experience.employment_details.past.years_at_company_raw,
            education.schools.school, education.schools.degree,
            education.schools.field_of_study, education.schools.location,
            education.schools.location.city, education.schools.location.state,
            education.schools.location.country,
            education.schools.location.continent,
            education.schools.location.full_location,
            education.schools.location.raw, certifications.name,
            certifications.issue_date, certifications.expiration_date,
            certifications.credential_url, certifications.issuing_organization,
            certifications.credential_id, honors.title,
            social_handles.twitter_handle, basic_profile.first_name,
            basic_profile.last_name, recently_changed_jobs,
            years_of_experience_raw,
            experience.employment_details.current.business_email_verified,
            experience.employment_details.past.business_email_verified,
            experience.employment_details.business_email_verified,
            metadata.last_scraped_source, metadata.updated_at,
            professional_network.location.city,
            professional_network.location.state,
            professional_network.location.country,
            professional_network.location.continent,
            professional_network.metadata.last_scraped_source,
            experience.employment_details.employment_type,
            experience.employment_details.company_website,
            experience.employment_details.current.company_professional_network_profile_url,
            experience.employment_details.current.employment_type,
            experience.employment_details.past.company_professional_network_profile_url,
            experience.employment_details.past.employment_type,
            years_of_experience
          example: experience.employment_details.current.title
        type:
          type: string
          description: >
            Filter operator. Use '=' for exact match, '!=' for not equal, '<'
            and '>' for exclusive numeric/date comparisons, '=<' for
            less-than-or-equal, '=>' for greater-than-or-equal, 'in'/'not_in'
            for set membership (value must be an array), '(.)' for fuzzy/regex
            match (supports | for OR), '(!)' for case-insensitive fuzzy negation
            (excludes substring matches of `value`), '[.]' for substring match,
            and 'geo_distance' for geographic radius (value must be an object
            with `location` or `lat_lng`, plus `distance` and optional `unit`).
            Use '=<' and '=>' instead of '<=' and '>='.
          enum:
            - '='
            - '!='
            - <
            - '=<'
            - '>'
            - '=>'
            - in
            - not_in
            - (.)
            - (!)
            - '[.]'
            - geo_distance
        value:
          description: >
            Filter value. Type depends on operator: For '=', '!=', '<', '>',
            '=<', '=>': string or number. For 'in', 'not_in': array of strings
            or numbers. For '(.)': string, supports | for OR (e.g.,
            "VP|Director|Head of"). For '(!)': string; rows whose value contains
            this substring (case-insensitive) are excluded. Unlike '(.)' /
            '[.]', multi-word values are matched as a literal phrase (not
            word-split): `(!) "New York"` excludes only rows that literally
            contain "New York", not "New Yorker"; send separate `(!)` conditions
            inside an `and` group to exclude on each word independently. For
            '[.]': string substring to match. For 'geo_distance': object with
            one of {location: string} or {lat_lng: [lat, lng]}, plus {distance:
            number, unit: "km"|"mi"|"miles"|"m"|"ft"}. When both `location` and
            `lat_lng` are supplied, `lat_lng` is used and geocoding is skipped.
          oneOf:
            - type: string
            - type: number
            - type: integer
            - type: boolean
            - type: array
              items:
                oneOf:
                  - type: string
                  - type: number
                  - type: integer
            - type: object
              description: >-
                Object value used by `geo_distance`. Supply either `location`
                (geocoded server-side) or `lat_lng` (explicit `[lat, lng]`;
                bypasses geocoding). If both are provided, `lat_lng` wins.
              required:
                - distance
              properties:
                location:
                  type: string
                  description: >-
                    Reference location (e.g., "San Francisco, CA"). Ignored when
                    `lat_lng` is also provided.
                lat_lng:
                  type: array
                  description: >-
                    Explicit coordinates as `[lat, lng]`. Latitude must be
                    between -90 and 90; longitude must be between -180 and 180.
                    When provided, geocoding is skipped.
                  minItems: 2
                  maxItems: 2
                  items:
                    type: number
                  example:
                    - 37.7749
                    - -122.4194
                distance:
                  type: number
                  description: Radius around the reference point.
                unit:
                  type: string
                  description: Distance unit. Defaults to `km`.
                  enum:
                    - km
                    - mi
                    - miles
                    - m
                    - meters
                    - ft
                    - feet
      description: A single filter condition used to match people in /person/search.
      example:
        field: experience.employment_details.current.title
        type: '='
        value: CEO
    PersonSearchConditionGroup:
      type: object
      required:
        - op
        - conditions
      properties:
        op:
          type: string
          enum:
            - and
            - or
        conditions:
          type: array
          minItems: 1
          items:
            oneOf:
              - $ref: '#/components/schemas/PersonSearchCondition'
              - $ref: '#/components/schemas/PersonSearchConditionGroup'
      description: A group of filter conditions combined with an and/or operator.
      example:
        op: and
        conditions:
          - field: experience.employment_details.current.title
            type: '='
            value: CEO
    Sort:
      type: object
      required:
        - field
        - order
      properties:
        field:
          type: string
          description: >
            Field name to sort on. Valid sortable fields: crustdata_person_id,
            basic_profile.name, basic_profile.location,
            basic_profile.location.full_location, basic_profile.location.city,
            basic_profile.location.state, basic_profile.location.country,
            professional_network.connections, professional_network.followers,
            experience.employment_details.start_date,
            experience.employment_details.company_id, metadata.updated_at
        order:
          type: string
          enum:
            - asc
            - desc
      description: Sort directive for /person/search specifying the field name and order.
      example:
        field: crustdata_person_id
        order: asc
    PostProcessing:
      type: object
      properties:
        exclude_profiles:
          type: array
          items:
            type: string
          maxItems: 50000
          description: Professional-network profile URLs to exclude from results
        exclude_names:
          type: array
          items:
            type: string
          description: Names to exclude from results
      description: Post-processing options applied to search results (e.g., exclusions).
      example:
        exclude_profiles:
          - https://www.linkedin.com/in/jane-doe
        exclude_names:
          - Jane Doe
    PersonSearch:
      type: object
      properties:
        crustdata_person_id:
          type: integer
        basic_profile:
          type: object
          properties:
            name:
              type: string
            headline:
              type: string
            current_title:
              type: string
            professional_network_name:
              type: string
              nullable: true
              description: Display name on the person's professional-network profile.
              example: David Hsu
            profile_picture_permalink:
              type: string
              nullable: true
            location:
              type: object
              nullable: true
              properties:
                city:
                  type: string
                  nullable: true
                state:
                  type: string
                  nullable: true
                country:
                  type: string
                  nullable: true
                continent:
                  type: string
                  nullable: true
                raw:
                  type: string
                  nullable: true
            normalized_title:
              type: object
              nullable: true
              description: >-
                Job Title Normalization (JTN, beta) — structured representation
                of the person's current title mapped to Crustdata's proprietary
                taxonomy (20 departments, 226 sub-departments). See
                https://docs.crustdata.com/guides/job-title-normalization.
              properties:
                matched_title:
                  type: string
                  nullable: true
                  description: >-
                    Canonical normalized title matched to the person's current
                    title.
                  example: Co-Founder, CEO, CTO
                department:
                  type: string
                  nullable: true
                  description: High-level department the normalized title maps to.
                  example: Executive Leadership
                sub_department:
                  type: string
                  nullable: true
                  description: More granular classification within the department.
                  example: Founder & Entrepreneurship Leadership
                similarity:
                  type: number
                  nullable: true
                  description: >-
                    Similarity score between the raw title and the matched
                    normalized title, from 0 to 1.
                  example: 0.6012
                confident:
                  type: boolean
                  nullable: true
                  description: Whether the normalized-title match is considered confident.
                  example: true
        professional_network:
          type: object
          properties:
            profile_picture_permalink:
              type: string
            location:
              type: object
              properties:
                city:
                  type: string
                  nullable: true
                state:
                  type: string
                  nullable: true
                country:
                  type: string
                  nullable: true
                continent:
                  type: string
                  nullable: true
                raw:
                  type: string
                  nullable: true
            connections:
              type: integer
              nullable: true
              description: >-
                Approximate connection count on the professional network
                profile.
              example: 3510
            followers:
              type: integer
              nullable: true
              description: >-
                Follower count on the professional network profile. Returned
                when your API key has access to this field.
              example: 1820
              x-availability:
                - search
                - fetch
            open_to_cards:
              type: array
              description: >
                Open-to signal codes declared on the profile. Filter with the
                `in` operator using one or more of the closed enum values below.
                Human-readable strings like `"open_to_work"` are not indexed and
                return zero results.


                | Code               |
                Meaning                                          |

                | ------------------ |
                ------------------------------------------------ |

                | `CAREER_INTEREST`  | Profile is open to new career
                opportunities      |

                | `HIRING_MANAGER`   | Profile is actively
                hiring                       |

                | `VOLUNTEERING`     | Profile is open to volunteer
                work                |
              items:
                type: string
                enum:
                  - CAREER_INTEREST
                  - HIRING_MANAGER
                  - VOLUNTEERING
              example:
                - CAREER_INTEREST
            metadata:
              type: object
              properties:
                last_scraped_source:
                  type: string
                  format: date-time
                  nullable: true
        contact:
          $ref: '#/components/schemas/PersonSearchContact'
        social_handles:
          type: object
          properties:
            professional_network_identifier:
              type: object
              properties:
                profile_url:
                  type: string
            dev_platform_identifier:
              type: object
              properties:
                profile_url:
                  type: string
                  nullable: true
        experience:
          type: object
          properties:
            employment_details:
              type: object
              properties:
                current:
                  type: array
                  items:
                    $ref: '#/components/schemas/PersonEmploymentDetails'
                past:
                  type: array
                  items:
                    $ref: '#/components/schemas/PersonEmploymentDetails'
        education:
          type: object
          properties:
            schools:
              type: array
              items:
                $ref: '#/components/schemas/PersonEducation'
      description: >-
        A person profile returned by /person/search with fields from the indexed
        dataset.
      example:
        crustdata_person_id: 14540
        basic_profile:
          name: David Hsu
          current_title: Founder, CEO
    PersonSearchContact:
      type: object
      properties:
        has_business_email:
          type: boolean
          description: Whether person has a verified business email
        has_personal_email:
          type: boolean
          description: Whether person has a personal email on file
        has_phone_number:
          type: boolean
          description: Whether person has a phone number on file
      description: >-
        Contact-availability flags for a person — indicates whether email or
        phone data is present.
      example:
        has_business_email: false
        has_personal_email: false
        has_phone_number: false
    PersonEmploymentDetails:
      type: object
      properties:
        name:
          type: string
          nullable: true
        professional_network_id:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        location:
          type: object
          nullable: true
          properties:
            raw:
              type: string
              nullable: true
        employment_type:
          type: string
          nullable: true
        start_date:
          type: string
          nullable: true
        end_date:
          type: string
          nullable: true
        is_default:
          type: boolean
          nullable: true
        crustdata_company_id:
          type: integer
          nullable: true
        company_website_domain:
          type: string
          nullable: true
        company_profile_picture_permalink:
          type: string
          nullable: true
          description: >-
            Stable Crustdata-hosted permalink to the company logo, suitable for
            rendering in your own interface.
          example: >-
            https://crustdata-media.s3.us-east-2.amazonaws.com/company/72f60d0ccad488216922fb784abc89890b49eeed8ab1eca1a0a12c72a68a0620.jpg
        company_professional_network_profile_url:
          type: string
          nullable: true
        seniority_level:
          type: string
          nullable: true
        function_category:
          type: string
          nullable: true
        years_at_company:
          type: string
          nullable: true
        years_at_company_raw:
          type: number
          nullable: true
        company_headcount_latest:
          type: integer
          nullable: true
        company_headcount_range:
          type: string
          nullable: true
        company_industries:
          type: array
          nullable: true
          items:
            type: string
        company_professional_network_industry:
          type: string
          nullable: true
        company_type:
          type: string
          nullable: true
        company_website:
          type: string
          nullable: true
        company_headquarters_country:
          type: string
          nullable: true
        company_hq_location:
          type: string
          nullable: true
        company_hq_location_address_components:
          type: array
          nullable: true
          items:
            type: string
        position_id:
          type: integer
          nullable: true
        business_email_verified:
          type: boolean
          nullable: true
      description: >-
        Employment entry in a person profile — includes title, company, dates,
        and function.
      example:
        name: Retool
        title: Founder, CEO
        start_date: '2017-01-01'
    PersonEducation:
      type: object
      properties:
        school:
          type: string
          description: Name of the educational institution.
          example: University of Oxford
        degree:
          type: string
          nullable: true
          description: Degree earned at the institution.
          example: Bachelor of Arts (B.A.)
        field_of_study:
          type: string
          nullable: true
          description: Primary field of study.
          example: Philosophy, Politics and Economics
        description:
          type: string
          nullable: true
          description: >-
            Free-text description of the education entry as it appears on the
            profile. May be an empty string when no description is provided.
          example: ''
        location:
          type: object
          nullable: true
          description: >-
            Geographic location of the institution, resolved into structured
            components.
          properties:
            raw:
              type: string
              nullable: true
              description: Location string as it appears on the profile.
              example: Oxford, England
            city:
              type: string
              nullable: true
              description: City component of the institution location.
              example: Oxford
            state:
              type: string
              nullable: true
              description: State or region component of the institution location.
              example: England
            country:
              type: string
              nullable: true
              description: Country component of the institution location.
              example: United Kingdom
            continent:
              type: string
              nullable: true
              description: Continent component of the institution location.
              example: Europe
        start_year:
          type: integer
          nullable: true
          description: Year the person started at the institution.
          example: 2005
        end_year:
          type: integer
          nullable: true
          description: Year the person finished at the institution.
          example: 2009
        activities_and_societies:
          type: string
          nullable: true
          description: Activities and societies the person participated in.
          example: Debating Society
        institute_logo_permalink:
          type: string
          nullable: true
          description: >-
            Stable Crustdata-hosted permalink to the institution logo, suitable
            for rendering in your own interface.
          example: >-
            https://crustdata-media.s3.us-east-2.amazonaws.com/company/3d2093a16f7cf7b459a0d30d4e795d0be5a41a3396f21dee899e43e8a8b6de8d.jpg
        institute_logo_url:
          type: string
          nullable: true
          description: Source URL of the institution logo, when available.
          example: https://media.example.com/logos/oxford.png
        professional_network_id:
          type: string
          nullable: true
          description: Identifier of the institution on the professional network.
          example: '4477'
      description: >-
        Education entry in a person profile — school, degree, field of study,
        location, and institution logo.
      example:
        school: University of Oxford
        degree: Bachelor of Arts (B.A.)
        location:
          raw: Oxford, England
          city: Oxford
          state: England
          country: United Kingdom
          continent: Europe
        institute_logo_permalink: >-
          https://crustdata-media.s3.us-east-2.amazonaws.com/company/3d2093a16f7cf7b459a0d30d4e795d0be5a41a3396f21dee899e43e8a8b6de8d.jpg
        professional_network_id: '4477'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key passed as a Bearer token in the Authorization header.

````