---
title: "Get users by LinkedIn profile URL"
method: POST
path: "/raw/users/by-linkedin"
---

# Get users by LinkedIn profile URL

`POST /raw/users/by-linkedin`

## Request

- Base URL: `https://api.bountylab.io/v3`
- URL: `https://api.bountylab.io/v3/raw/users/by-linkedin`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/bountylaboratories/apis/bounty-lab-public-api/docs/raw/users/by-linkedin/post.ts> (a function with typed inputs; its response is checked against the schema)

Fetch GitHub users by their linked LinkedIn profile URLs. Returns a positional array matching input order (null for unmatched URLs). URLs are normalized to canonical format before lookup. Supports batch requests (1-100). Credits: 1 per non-null result + graph credits.

## Request body

- V3GetUsersByLinkedinRequest
  - `linkedinUrls` string[], required: Array of LinkedIn profile URLs (1-100)
  - `includeAttributes` UserIncludeAttributes: Optional graph relationships and enrichment attributes
    - `followers` object: Include followers with cursor pagination
      - `first` integer, required: Number of items to return (max: 100)
      - `after` string: Cursor for pagination (opaque base64-encoded)
      - `filters` union: Optional filters for users. Supports fields like login, company, location, resolvedCountry, resolvedState, resolvedCity. Operators: Eq, NotEq, In, NotIn, Lt, Lte, Gt, Gte.
        - object
          - `field` string, required: Field name to filter on
          - `op` 'Eq' | 'NotEq' | 'In' | 'NotIn' | 'Lt' | 'Lte' | 'Gt' | 'Gte' | 'Glob' | 'NotGlob' | 'IGlob' | 'NotIGlob' | 'Regex' | 'Contains' | 'NotContains' | 'ContainsAny' | 'NotContainsAny' | 'AnyLt' | 'AnyLte' | 'AnyGt' | 'AnyGte' | 'ContainsAllTokens', required: Filter operator
          - `value` union, required: Filter value (type depends on field and operator)
            - string
            - number
            - boolean
            - string[]
            - number[]
        - object
          - `op` 'And' | 'Or', required: Composite operator
          - `filters` object[], required: Array of field filters
            - `field` string, required: Field name to filter on
            - `op` 'Eq' | 'NotEq' | 'In' | 'NotIn' | 'Lt' | 'Lte' | 'Gt' | 'Gte' | 'Glob' | 'NotGlob' | 'IGlob' | 'NotIGlob' | 'Regex' | 'Contains' | 'NotContains' | 'ContainsAny' | 'NotContainsAny' | 'AnyLt' | 'AnyLte' | 'AnyGt' | 'AnyGte' | 'ContainsAllTokens', required: Filter operator
            - `value` union, required: Filter value (type depends on field and operator)
              - …
        - object
          - `op` 'And' | 'Or', required: Composite operator
          - `filters` union[], required: Array of filters
            - union
              - …
    - `following` object: Include users this user follows with cursor pagination
      - `first` integer, required: Number of items to return (max: 100)
      - `after` string: Cursor for pagination (opaque base64-encoded)
      - `filters` union: Optional filters for users. Supports fields like login, company, location, resolvedCountry, resolvedState, resolvedCity. Operators: Eq, NotEq, In, NotIn, Lt, Lte, Gt, Gte.
        - object
          - `field` string, required: Field name to filter on
          - `op` 'Eq' | 'NotEq' | 'In' | 'NotIn' | 'Lt' | 'Lte' | 'Gt' | 'Gte' | 'Glob' | 'NotGlob' | 'IGlob' | 'NotIGlob' | 'Regex' | 'Contains' | 'NotContains' | 'ContainsAny' | 'NotContainsAny' | 'AnyLt' | 'AnyLte' | 'AnyGt' | 'AnyGte' | 'ContainsAllTokens', required: Filter operator
          - `value` union, required: Filter value (type depends on field and operator)
            - string
            - number
            - boolean
            - string[]
            - number[]
        - object
          - `op` 'And' | 'Or', required: Composite operator
          - `filters` object[], required: Array of field filters
            - `field` string, required: Field name to filter on
            - `op` 'Eq' | 'NotEq' | 'In' | 'NotIn' | 'Lt' | 'Lte' | 'Gt' | 'Gte' | 'Glob' | 'NotGlob' | 'IGlob' | 'NotIGlob' | 'Regex' | 'Contains' | 'NotContains' | 'ContainsAny' | 'NotContainsAny' | 'AnyLt' | 'AnyLte' | 'AnyGt' | 'AnyGte' | 'ContainsAllTokens', required: Filter operator
            - `value` union, required: Filter value (type depends on field and operator)
              - …
        - object
          - `op` 'And' | 'Or', required: Composite operator
          - `filters` union[], required: Array of filters
            - union
              - …
    - `stars` object: Include starred repositories with cursor pagination
      - `first` integer, required: Number of items to return (max: 100)
      - `after` string: Cursor for pagination (opaque base64-encoded)
      - `filters` union: Optional filters for users. Supports fields like login, company, location, resolvedCountry, resolvedState, resolvedCity. Operators: Eq, NotEq, In, NotIn, Lt, Lte, Gt, Gte.
        - object
          - `field` string, required: Field name to filter on
          - `op` 'Eq' | 'NotEq' | 'In' | 'NotIn' | 'Lt' | 'Lte' | 'Gt' | 'Gte' | 'Glob' | 'NotGlob' | 'IGlob' | 'NotIGlob' | 'Regex' | 'Contains' | 'NotContains' | 'ContainsAny' | 'NotContainsAny' | 'AnyLt' | 'AnyLte' | 'AnyGt' | 'AnyGte' | 'ContainsAllTokens', required: Filter operator
          - `value` union, required: Filter value (type depends on field and operator)
            - string
            - number
            - boolean
            - string[]
            - number[]
        - object
          - `op` 'And' | 'Or', required: Composite operator
          - `filters` object[], required: Array of field filters
            - `field` string, required: Field name to filter on
            - `op` 'Eq' | 'NotEq' | 'In' | 'NotIn' | 'Lt' | 'Lte' | 'Gt' | 'Gte' | 'Glob' | 'NotGlob' | 'IGlob' | 'NotIGlob' | 'Regex' | 'Contains' | 'NotContains' | 'ContainsAny' | 'NotContainsAny' | 'AnyLt' | 'AnyLte' | 'AnyGt' | 'AnyGte' | 'ContainsAllTokens', required: Filter operator
            - `value` union, required: Filter value (type depends on field and operator)
              - …
        - object
          - `op` 'And' | 'Or', required: Composite operator
          - `filters` union[], required: Array of filters
            - union
              - …
    - `owns` object: Include owned repositories with cursor pagination
      - `first` integer, required: Number of items to return (max: 100)
      - `after` string: Cursor for pagination (opaque base64-encoded)
      - `filters` union: Optional filters for users. Supports fields like login, company, location, resolvedCountry, resolvedState, resolvedCity. Operators: Eq, NotEq, In, NotIn, Lt, Lte, Gt, Gte.
        - object
          - `field` string, required: Field name to filter on
          - `op` 'Eq' | 'NotEq' | 'In' | 'NotIn' | 'Lt' | 'Lte' | 'Gt' | 'Gte' | 'Glob' | 'NotGlob' | 'IGlob' | 'NotIGlob' | 'Regex' | 'Contains' | 'NotContains' | 'ContainsAny' | 'NotContainsAny' | 'AnyLt' | 'AnyLte' | 'AnyGt' | 'AnyGte' | 'ContainsAllTokens', required: Filter operator
          - `value` union, required: Filter value (type depends on field and operator)
            - string
            - number
            - boolean
            - string[]
            - number[]
        - object
          - `op` 'And' | 'Or', required: Composite operator
          - `filters` object[], required: Array of field filters
            - `field` string, required: Field name to filter on
            - `op` 'Eq' | 'NotEq' | 'In' | 'NotIn' | 'Lt' | 'Lte' | 'Gt' | 'Gte' | 'Glob' | 'NotGlob' | 'IGlob' | 'NotIGlob' | 'Regex' | 'Contains' | 'NotContains' | 'ContainsAny' | 'NotContainsAny' | 'AnyLt' | 'AnyLte' | 'AnyGt' | 'AnyGte' | 'ContainsAllTokens', required: Filter operator
            - `value` union, required: Filter value (type depends on field and operator)
              - …
        - object
          - `op` 'And' | 'Or', required: Composite operator
          - `filters` union[], required: Array of filters
            - union
              - …
    - `contributes` object: Include contributed repositories with cursor pagination
      - `first` integer, required: Number of items to return (max: 100)
      - `after` string: Cursor for pagination (opaque base64-encoded)
      - `filters` union: Optional filters for users. Supports fields like login, company, location, resolvedCountry, resolvedState, resolvedCity. Operators: Eq, NotEq, In, NotIn, Lt, Lte, Gt, Gte.
        - object
          - `field` string, required: Field name to filter on
          - `op` 'Eq' | 'NotEq' | 'In' | 'NotIn' | 'Lt' | 'Lte' | 'Gt' | 'Gte' | 'Glob' | 'NotGlob' | 'IGlob' | 'NotIGlob' | 'Regex' | 'Contains' | 'NotContains' | 'ContainsAny' | 'NotContainsAny' | 'AnyLt' | 'AnyLte' | 'AnyGt' | 'AnyGte' | 'ContainsAllTokens', required: Filter operator
          - `value` union, required: Filter value (type depends on field and operator)
            - string
            - number
            - boolean
            - string[]
            - number[]
        - object
          - `op` 'And' | 'Or', required: Composite operator
          - `filters` object[], required: Array of field filters
            - `field` string, required: Field name to filter on
            - `op` 'Eq' | 'NotEq' | 'In' | 'NotIn' | 'Lt' | 'Lte' | 'Gt' | 'Gte' | 'Glob' | 'NotGlob' | 'IGlob' | 'NotIGlob' | 'Regex' | 'Contains' | 'NotContains' | 'ContainsAny' | 'NotContainsAny' | 'AnyLt' | 'AnyLte' | 'AnyGt' | 'AnyGte' | 'ContainsAllTokens', required: Filter operator
            - `value` union, required: Filter value (type depends on field and operator)
              - …
        - object
          - `op` 'And' | 'Or', required: Composite operator
          - `filters` union[], required: Array of filters
            - union
              - …
    - `devrank` boolean: Include devrank data for the user
    - `professional` boolean: Include LinkedIn professional profile data (requires PROFESSIONAL service)
    - `aggregates` boolean: Include aggregate metrics (e.g. totalStars) for the user
    - `bestEmail` boolean: Include best verified email address for the user
    - `revealEmails` boolean: Return unobfuscated emails instead of masked (e.g. ***oe@gmail.com)

## Response `200`

Users retrieved successfully (positional)

- V3UsersResponse
  - `users` PublicUserWithGraph[], required: Positional array of users (null for unmatched input entries)
    - `id` string, required: BountyLab internal ID
    - `githubId` string, required: GitHub node ID
    - `login` string, required: GitHub username
    - `displayName` string, nullable: User display name
    - `bio` string, nullable: User biography
    - `company` string, nullable: Company name
    - `location` string, nullable: User location
    - `websiteUrl` string, nullable: User website URL
    - `socialAccounts` object[], nullable: Social media accounts
      - `provider` string, required
      - `url` string, required
    - `emails` string[], nullable: Obfuscated email addresses showing only the last 2 characters of the local part and full domain (e.g., "***oe@gmail.com"). Use /api/users/best-email endpoint for unobfuscated email access with intelligent selection.
    - `resolvedCountry` string, nullable: Resolved country from location
    - `resolvedState` string, nullable: Resolved state/region from location
    - `resolvedCity` string, nullable: Resolved city from location
    - `createdAt` string, nullable: ISO 8601 timestamp when user account was created
    - `updatedAt` string, nullable: ISO 8601 timestamp when user was last updated
    - `embeddedAt` string, nullable: ISO 8601 timestamp when metadata was extracted
    - `score` number: Relevance score from search (0-1, lower is more relevant for distance metrics)
    - `devrank` object: Developer ranking data (only present when includeAttributes.devrank = true)
      - `crackedScore` number, required
      - `tier` string, required
      - `rawScore` number, required
      - `trust` number, required
      - `pc` number, required
      - `followersIn` number, required
      - `followingOut` number, required
      - `community` integer, required
      - `createdAt` string, required
      - `updatedAt` string, required
    - `professional` ProfessionalProfile: LinkedIn professional profile data (only present when includeAttributes.professional = true)
      - `firstName` string, nullable, required: First name
      - `lastName` string, nullable, required: Last name
      - `linkedinUrl` string, required: LinkedIn profile URL
      - `title` string, nullable, required: Current job title
      - `headline` string, nullable, required: Professional headline
      - `organization` string, nullable, required: Current organization/company
      - `currentIndustry` string, nullable, required: Current industry sector
      - `city` string, nullable, required: City
      - `state` string, nullable, required: State or province
      - `country` string, nullable, required: Country
      - `location` string, nullable, required: Full location string
      - `seniorityLevel` string, nullable, required: Seniority level (e.g., Senior, Manager)
      - `seniority` string, nullable, required: Seniority classification
      - `functionalArea` string, nullable, required: Functional area (e.g., Engineering, Product)
      - `expertise` string[], nullable, required: Areas of expertise
      - `certifications` string[], nullable, required: Professional certifications
      - `awards` string[], nullable, required: Professional awards
      - `memberships` string[], nullable, required: Professional organization memberships
      - `departments` string[], nullable, required: Departments worked in
      - `patents` string[], nullable, required: Patents held
      - `publications` string[], nullable, required: Publications authored
      - `priorIndustries` string[], nullable, required: Previous industries worked in
      - `languages` string[], nullable, required: Languages spoken
      - `connectionsCount` number, nullable, required: Number of LinkedIn connections
      - `followerCount` number, nullable, required: Number of LinkedIn followers
      - `hiring` boolean, nullable, required: Whether the person indicates they are hiring
      - `openToWork` boolean, nullable, required: Whether the person indicates they are open to work
      - `education` ProfessionalEducation[], required: Education history
        - `campus` string, nullable, required: Name of the educational institution
        - `major` string, nullable, required: Field of study or degree program
        - `specialization` string, nullable, required: Area of specialization
        - `startDate` string, nullable, required: Start date (YYYY-MM-DD format)
        - `endDate` string, nullable, required: End date (YYYY-MM-DD format)
      - `experience` ProfessionalExperience[], required: Work experience history
        - `company` string, nullable, required: Company or organization name
        - `title` string, nullable, required: Job title or position
        - `summary` string, nullable, required: Description of role and responsibilities
        - `location` string, nullable, required: Work location
        - `industry` string, nullable, required: Industry sector
        - `startDate` string, nullable, required: Start date (YYYY-MM-DD format)
        - `endDate` string, nullable, required: End date (YYYY-MM-DD format, null if current)
        - `startDateConfidence` string, nullable, required: Vendor confidence in the start date: "validated" or "low" (null if unknown)
        - `isCurrent` boolean, nullable, required: Whether this is the current position
    - `aggregates` UserAggregates: Aggregate metrics (only present when includeAttributes.aggregates = true)
      - `totalStars` number, required: Total stars received across all owned repositories
    - `followers` PaginatedUsers: Users who follow this user (when includeAttributes.followers is specified)
      - `edges` PublicUser[], required: Array of user objects
        - `id` string, required: BountyLab internal ID
        - `githubId` string, required: GitHub node ID
        - `login` string, required: GitHub username
        - `displayName` string, nullable: User display name
        - `bio` string, nullable: User biography
        - `company` string, nullable: Company name
        - `location` string, nullable: User location
        - `websiteUrl` string, nullable: User website URL
        - `socialAccounts` object[], nullable: Social media accounts
          - `provider` string, required
          - `url` string, required
        - `emails` string[], nullable: Obfuscated email addresses showing only the last 2 characters of the local part and full domain (e.g., "***oe@gmail.com"). Use /api/users/best-email endpoint for unobfuscated email access with intelligent selection.
        - `resolvedCountry` string, nullable: Resolved country from location
        - `resolvedState` string, nullable: Resolved state/region from location
        - `resolvedCity` string, nullable: Resolved city from location
        - `createdAt` string, nullable: ISO 8601 timestamp when user account was created
        - `updatedAt` string, nullable: ISO 8601 timestamp when user was last updated
        - `embeddedAt` string, nullable: ISO 8601 timestamp when metadata was extracted
        - `score` number: Relevance score from search (0-1, lower is more relevant for distance metrics)
      - `pageInfo` PageInfo, required: Pagination information
        - `hasNextPage` boolean, required: Whether there are more items available
        - `endCursor` string, nullable, required: Cursor to fetch next page (null if no more items)
    - `following` object: Users this user follows (when includeAttributes.following is specified)
      - `edges` PublicUser[], required: Array of user objects
        - `id` string, required: BountyLab internal ID
        - `githubId` string, required: GitHub node ID
        - `login` string, required: GitHub username
        - `displayName` string, nullable: User display name
        - `bio` string, nullable: User biography
        - `company` string, nullable: Company name
        - `location` string, nullable: User location
        - `websiteUrl` string, nullable: User website URL
        - `socialAccounts` object[], nullable: Social media accounts
          - `provider` string, required
          - `url` string, required
        - `emails` string[], nullable: Obfuscated email addresses showing only the last 2 characters of the local part and full domain (e.g., "***oe@gmail.com"). Use /api/users/best-email endpoint for unobfuscated email access with intelligent selection.
        - `resolvedCountry` string, nullable: Resolved country from location
        - `resolvedState` string, nullable: Resolved state/region from location
        - `resolvedCity` string, nullable: Resolved city from location
        - `createdAt` string, nullable: ISO 8601 timestamp when user account was created
        - `updatedAt` string, nullable: ISO 8601 timestamp when user was last updated
        - `embeddedAt` string, nullable: ISO 8601 timestamp when metadata was extracted
        - `score` number: Relevance score from search (0-1, lower is more relevant for distance metrics)
      - `pageInfo` PageInfo, required: Pagination information
        - `hasNextPage` boolean, required: Whether there are more items available
        - `endCursor` string, nullable, required: Cursor to fetch next page (null if no more items)
    - `stars` PaginatedRepositories: Repositories this user starred (when includeAttributes.stars is specified)
      - `edges` PublicRepositoryWithGraph[], required: Array of repository objects
        - `id` string, required: BountyLab internal ID
        - `githubId` string, required: GitHub node ID
        - `ownerLogin` string, required: Repository owner username
        - `name` string, required: Repository name
        - `description` string, nullable: Repository description
        - `stargazerCount` number, required: Number of stars
        - `language` string, nullable: Primary programming language
        - `totalIssuesCount` number, required: Total number of issues (open + closed)
        - `totalIssuesOpen` number, required: Number of open issues
        - `totalIssuesClosed` number, required: Number of closed issues
        - `readmePreview` string, nullable: Preview of repository README (first ~500 chars)
        - `lastContributorLocations` string[], nullable: Locations of last contributors to this repository
        - `createdAt` string, nullable: ISO 8601 timestamp when repository was created
        - `updatedAt` string, nullable: ISO 8601 timestamp when repository was last updated
        - `embeddedAt` string, nullable: ISO 8601 timestamp when embedding was created
        - `score` number: Relevance score from search (0-1, lower is more relevant for cosine distance)
        - `owner` object: Repository owner (when includeAttributes.owner = true)
          - `id` string, required: BountyLab internal ID
          - `githubId` string, required: GitHub node ID
          - `login` string, required: GitHub username
          - `displayName` string, nullable: User display name
          - `bio` string, nullable: User biography
          - `company` string, nullable: Company name
          - `location` string, nullable: User location
          - `websiteUrl` string, nullable: User website URL
          - `socialAccounts` object[], nullable: Social media accounts
            - `provider` string, required
            - `url` string, required
          - `emails` string[], nullable: Obfuscated email addresses showing only the last 2 characters of the local part and full domain (e.g., "***oe@gmail.com"). Use /api/users/best-email endpoint for unobfuscated email access with intelligent selection.
          - `resolvedCountry` string, nullable: Resolved country from location
          - `resolvedState` string, nullable: Resolved state/region from location
          - `resolvedCity` string, nullable: Resolved city from location
          - `createdAt` string, nullable: ISO 8601 timestamp when user account was created
          - `updatedAt` string, nullable: ISO 8601 timestamp when user was last updated
          - `embeddedAt` string, nullable: ISO 8601 timestamp when metadata was extracted
          - `score` number: Relevance score from search (0-1, lower is more relevant for distance metrics)
        - `contributors` object: Repository contributors (when includeAttributes.contributors is specified)
          - `edges` PublicUser[], required: Array of user objects
            - `id` string, required: BountyLab internal ID
            - `githubId` string, required: GitHub node ID
            - `login` string, required: GitHub username
            - `displayName` string, nullable: User display name
            - `bio` string, nullable: User biography
            - `company` string, nullable: Company name
            - `location` string, nullable: User location
            - `websiteUrl` string, nullable: User website URL
            - `socialAccounts` object[], nullable: Social media accounts
              - …
            - `emails` string[], nullable: Obfuscated email addresses showing only the last 2 characters of the local part and full domain (e.g., "***oe@gmail.com"). Use /api/users/best-email endpoint for unobfuscated email access with intelligent selection.
            - `resolvedCountry` string, nullable: Resolved country from location
            - `resolvedState` string, nullable: Resolved state/region from location
            - `resolvedCity` string, nullable: Resolved city from location
            - `createdAt` string, nullable: ISO 8601 timestamp when user account was created
            - `updatedAt` string, nullable: ISO 8601 timestamp when user was last updated
            - `embeddedAt` string, nullable: ISO 8601 timestamp when metadata was extracted
            - `score` number: Relevance score from search (0-1, lower is more relevant for distance metrics)
          - `pageInfo` PageInfo, required: Pagination information
            - `hasNextPage` boolean, required: Whether there are more items available
            - `endCursor` string, nullable, required: Cursor to fetch next page (null if no more items)
        - `contributorProfiles` DeveloperProfile[]: Rich profiles for the contributors (identity, top owned repos, devrank, LinkedIn overlay), hydrated in the SAME call so callers skip a separate by-ids round-trip. Join to `contributors` by login. Present when includeAttributes.contributorProfiles = true.
          - `login` string, required
          - `userId` string
          - `githubId` string
          - `displayName` string
          - `company` string
          - `location` string
          - `bio` string
          - `accountCreatedAt` string
          - `topRepos` object[], required: Most-starred repos this login owns, from our index.
            - `name` string, required
            - `stargazerCount` number, required
          - `devrank` object
            - `tier` string, required
            - `crackedScore` number, required
            - `followersIn` number, required
            - `followingOut` number, required
          - `linkedin` object
            - `url` string
            - `currentTitle` string
            - `currentCompany` string
            - `seniorityLevel` string
            - `totalExperienceYears` number
            - `connectionsCount` number
        - `starrers` object: Users who starred this repository (when includeAttributes.starrers is specified)
          - `edges` PublicUser[], required: Array of user objects
            - `id` string, required: BountyLab internal ID
            - `githubId` string, required: GitHub node ID
            - `login` string, required: GitHub username
            - `displayName` string, nullable: User display name
            - `bio` string, nullable: User biography
            - `company` string, nullable: Company name
            - `location` string, nullable: User location
            - `websiteUrl` string, nullable: User website URL
            - `socialAccounts` object[], nullable: Social media accounts
              - …
            - `emails` string[], nullable: Obfuscated email addresses showing only the last 2 characters of the local part and full domain (e.g., "***oe@gmail.com"). Use /api/users/best-email endpoint for unobfuscated email access with intelligent selection.
            - `resolvedCountry` string, nullable: Resolved country from location
            - `resolvedState` string, nullable: Resolved state/region from location
            - `resolvedCity` string, nullable: Resolved city from location
            - `createdAt` string, nullable: ISO 8601 timestamp when user account was created
            - `updatedAt` string, nullable: ISO 8601 timestamp when user was last updated
            - `embeddedAt` string, nullable: ISO 8601 timestamp when metadata was extracted
            - `score` number: Relevance score from search (0-1, lower is more relevant for distance metrics)
          - `pageInfo` PageInfo, required: Pagination information
            - `hasNextPage` boolean, required: Whether there are more items available
            - `endCursor` string, nullable, required: Cursor to fetch next page (null if no more items)
        - `ownerDevrank` object: Devrank data for the repository owner (when includeAttributes.ownerDevrank = true)
          - `crackedScore` number, required
          - `tier` string, required
          - `rawScore` number, required
          - `trust` number, required
          - `pc` number, required
          - `followersIn` number, required
          - `followingOut` number, required
          - `community` integer, required
          - `createdAt` string, required
          - `updatedAt` string, required
        - `ownerProfessional` object: LinkedIn professional profile for the repository owner (when includeAttributes.ownerProfessional = true)
          - `firstName` string, nullable, required: First name
          - `lastName` string, nullable, required: Last name
          - `linkedinUrl` string, required: LinkedIn profile URL
          - `title` string, nullable, required: Current job title
          - `headline` string, nullable, required: Professional headline
          - `organization` string, nullable, required: Current organization/company
          - `currentIndustry` string, nullable, required: Current industry sector
          - `city` string, nullable, required: City
          - `state` string, nullable, required: State or province
          - `country` string, nullable, required: Country
          - `location` string, nullable, required: Full location string
          - `seniorityLevel` string, nullable, required: Seniority level (e.g., Senior, Manager)
          - `seniority` string, nullable, required: Seniority classification
          - `functionalArea` string, nullable, required: Functional area (e.g., Engineering, Product)
          - `expertise` string[], nullable, required: Areas of expertise
          - `certifications` string[], nullable, required: Professional certifications
          - `awards` string[], nullable, required: Professional awards
          - `memberships` string[], nullable, required: Professional organization memberships
          - `departments` string[], nullable, required: Departments worked in
          - `patents` string[], nullable, required: Patents held
          - `publications` string[], nullable, required: Publications authored
          - `priorIndustries` string[], nullable, required: Previous industries worked in
          - `languages` string[], nullable, required: Languages spoken
          - `connectionsCount` number, nullable, required: Number of LinkedIn connections
          - `followerCount` number, nullable, required: Number of LinkedIn followers
          - `hiring` boolean, nullable, required: Whether the person indicates they are hiring
          - `openToWork` boolean, nullable, required: Whether the person indicates they are open to work
          - `education` ProfessionalEducation[], required: Education history
            - `campus` string, nullable, required: Name of the educational institution
            - `major` string, nullable, required: Field of study or degree program
            - `specialization` string, nullable, required: Area of specialization
            - `startDate` string, nullable, required: Start date (YYYY-MM-DD format)
            - `endDate` string, nullable, required: End date (YYYY-MM-DD format)
          - `experience` ProfessionalExperience[], required: Work experience history
            - `company` string, nullable, required: Company or organization name
            - `title` string, nullable, required: Job title or position
            - `summary` string, nullable, required: Description of role and responsibilities
            - `location` string, nullable, required: Work location
            - `industry` string, nullable, required: Industry sector
            - `startDate` string, nullable, required: Start date (YYYY-MM-DD format)
            - `endDate` string, nullable, required: End date (YYYY-MM-DD format, null if current)
            - `startDateConfidence` string, nullable, required: Vendor confidence in the start date: "validated" or "low" (null if unknown)
            - `isCurrent` boolean, nullable, required: Whether this is the current position
      - `pageInfo` PageInfo, required: Pagination information
        - `hasNextPage` boolean, required: Whether there are more items available
        - `endCursor` string, nullable, required: Cursor to fetch next page (null if no more items)
    - `owns` object: Repositories this user owns (when includeAttributes.owns is specified)
      - `edges` PublicRepositoryWithGraph[], required: Array of repository objects
        - `id` string, required: BountyLab internal ID
        - `githubId` string, required: GitHub node ID
        - `ownerLogin` string, required: Repository owner username
        - `name` string, required: Repository name
        - `description` string, nullable: Repository description
        - `stargazerCount` number, required: Number of stars
        - `language` string, nullable: Primary programming language
        - `totalIssuesCount` number, required: Total number of issues (open + closed)
        - `totalIssuesOpen` number, required: Number of open issues
        - `totalIssuesClosed` number, required: Number of closed issues
        - `readmePreview` string, nullable: Preview of repository README (first ~500 chars)
        - `lastContributorLocations` string[], nullable: Locations of last contributors to this repository
        - `createdAt` string, nullable: ISO 8601 timestamp when repository was created
        - `updatedAt` string, nullable: ISO 8601 timestamp when repository was last updated
        - `embeddedAt` string, nullable: ISO 8601 timestamp when embedding was created
        - `score` number: Relevance score from search (0-1, lower is more relevant for cosine distance)
        - `owner` object: Repository owner (when includeAttributes.owner = true)
          - `id` string, required: BountyLab internal ID
          - `githubId` string, required: GitHub node ID
          - `login` string, required: GitHub username
          - `displayName` string, nullable: User display name
          - `bio` string, nullable: User biography
          - `company` string, nullable: Company name
          - `location` string, nullable: User location
          - `websiteUrl` string, nullable: User website URL
          - `socialAccounts` object[], nullable: Social media accounts
            - `provider` string, required
            - `url` string, required
          - `emails` string[], nullable: Obfuscated email addresses showing only the last 2 characters of the local part and full domain (e.g., "***oe@gmail.com"). Use /api/users/best-email endpoint for unobfuscated email access with intelligent selection.
          - `resolvedCountry` string, nullable: Resolved country from location
          - `resolvedState` string, nullable: Resolved state/region from location
          - `resolvedCity` string, nullable: Resolved city from location
          - `createdAt` string, nullable: ISO 8601 timestamp when user account was created
          - `updatedAt` string, nullable: ISO 8601 timestamp when user was last updated
          - `embeddedAt` string, nullable: ISO 8601 timestamp when metadata was extracted
          - `score` number: Relevance score from search (0-1, lower is more relevant for distance metrics)
        - `contributors` object: Repository contributors (when includeAttributes.contributors is specified)
          - `edges` PublicUser[], required: Array of user objects
            - `id` string, required: BountyLab internal ID
            - `githubId` string, required: GitHub node ID
            - `login` string, required: GitHub username
            - `displayName` string, nullable: User display name
            - `bio` string, nullable: User biography
            - `company` string, nullable: Company name
            - `location` string, nullable: User location
            - `websiteUrl` string, nullable: User website URL
            - `socialAccounts` object[], nullable: Social media accounts
              - …
            - `emails` string[], nullable: Obfuscated email addresses showing only the last 2 characters of the local part and full domain (e.g., "***oe@gmail.com"). Use /api/users/best-email endpoint for unobfuscated email access with intelligent selection.
            - `resolvedCountry` string, nullable: Resolved country from location
            - `resolvedState` string, nullable: Resolved state/region from location
            - `resolvedCity` string, nullable: Resolved city from location
            - `createdAt` string, nullable: ISO 8601 timestamp when user account was created
            - `updatedAt` string, nullable: ISO 8601 timestamp when user was last updated
            - `embeddedAt` string, nullable: ISO 8601 timestamp when metadata was extracted
            - `score` number: Relevance score from search (0-1, lower is more relevant for distance metrics)
          - `pageInfo` PageInfo, required: Pagination information
            - `hasNextPage` boolean, required: Whether there are more items available
            - `endCursor` string, nullable, required: Cursor to fetch next page (null if no more items)
        - `contributorProfiles` DeveloperProfile[]: Rich profiles for the contributors (identity, top owned repos, devrank, LinkedIn overlay), hydrated in the SAME call so callers skip a separate by-ids round-trip. Join to `contributors` by login. Present when includeAttributes.contributorProfiles = true.
          - `login` string, required
          - `userId` string
          - `githubId` string
          - `displayName` string
          - `company` string
          - `location` string
          - `bio` string
          - `accountCreatedAt` string
          - `topRepos` object[], required: Most-starred repos this login owns, from our index.
            - `name` string, required
            - `stargazerCount` number, required
          - `devrank` object
            - `tier` string, required
            - `crackedScore` number, required
            - `followersIn` number, required
            - `followingOut` number, required
          - `linkedin` object
            - `url` string
            - `currentTitle` string
            - `currentCompany` string
            - `seniorityLevel` string
            - `totalExperienceYears` number
            - `connectionsCount` number
        - `starrers` object: Users who starred this repository (when includeAttributes.starrers is specified)
          - `edges` PublicUser[], required: Array of user objects
            - `id` string, required: BountyLab internal ID
            - `githubId` string, required: GitHub node ID
            - `login` string, required: GitHub username
            - `displayName` string, nullable: User display name
            - `bio` string, nullable: User biography
            - `company` string, nullable: Company name
            - `location` string, nullable: User location
            - `websiteUrl` string, nullable: User website URL
            - `socialAccounts` object[], nullable: Social media accounts
              - …
            - `emails` string[], nullable: Obfuscated email addresses showing only the last 2 characters of the local part and full domain (e.g., "***oe@gmail.com"). Use /api/users/best-email endpoint for unobfuscated email access with intelligent selection.
            - `resolvedCountry` string, nullable: Resolved country from location
            - `resolvedState` string, nullable: Resolved state/region from location
            - `resolvedCity` string, nullable: Resolved city from location
            - `createdAt` string, nullable: ISO 8601 timestamp when user account was created
            - `updatedAt` string, nullable: ISO 8601 timestamp when user was last updated
            - `embeddedAt` string, nullable: ISO 8601 timestamp when metadata was extracted
            - `score` number: Relevance score from search (0-1, lower is more relevant for distance metrics)
          - `pageInfo` PageInfo, required: Pagination information
            - `hasNextPage` boolean, required: Whether there are more items available
            - `endCursor` string, nullable, required: Cursor to fetch next page (null if no more items)
        - `ownerDevrank` object: Devrank data for the repository owner (when includeAttributes.ownerDevrank = true)
          - `crackedScore` number, required
          - `tier` string, required
          - `rawScore` number, required
          - `trust` number, required
          - `pc` number, required
          - `followersIn` number, required
          - `followingOut` number, required
          - `community` integer, required
          - `createdAt` string, required
          - `updatedAt` string, required
        - `ownerProfessional` object: LinkedIn professional profile for the repository owner (when includeAttributes.ownerProfessional = true)
          - `firstName` string, nullable, required: First name
          - `lastName` string, nullable, required: Last name
          - `linkedinUrl` string, required: LinkedIn profile URL
          - `title` string, nullable, required: Current job title
          - `headline` string, nullable, required: Professional headline
          - `organization` string, nullable, required: Current organization/company
          - `currentIndustry` string, nullable, required: Current industry sector
          - `city` string, nullable, required: City
          - `state` string, nullable, required: State or province
          - `country` string, nullable, required: Country
          - `location` string, nullable, required: Full location string
          - `seniorityLevel` string, nullable, required: Seniority level (e.g., Senior, Manager)
          - `seniority` string, nullable, required: Seniority classification
          - `functionalArea` string, nullable, required: Functional area (e.g., Engineering, Product)
          - `expertise` string[], nullable, required: Areas of expertise
          - `certifications` string[], nullable, required: Professional certifications
          - `awards` string[], nullable, required: Professional awards
          - `memberships` string[], nullable, required: Professional organization memberships
          - `departments` string[], nullable, required: Departments worked in
          - `patents` string[], nullable, required: Patents held
          - `publications` string[], nullable, required: Publications authored
          - `priorIndustries` string[], nullable, required: Previous industries worked in
          - `languages` string[], nullable, required: Languages spoken
          - `connectionsCount` number, nullable, required: Number of LinkedIn connections
          - `followerCount` number, nullable, required: Number of LinkedIn followers
          - `hiring` boolean, nullable, required: Whether the person indicates they are hiring
          - `openToWork` boolean, nullable, required: Whether the person indicates they are open to work
          - `education` ProfessionalEducation[], required: Education history
            - `campus` string, nullable, required: Name of the educational institution
            - `major` string, nullable, required: Field of study or degree program
            - `specialization` string, nullable, required: Area of specialization
            - `startDate` string, nullable, required: Start date (YYYY-MM-DD format)
            - `endDate` string, nullable, required: End date (YYYY-MM-DD format)
          - `experience` ProfessionalExperience[], required: Work experience history
            - `company` string, nullable, required: Company or organization name
            - `title` string, nullable, required: Job title or position
            - `summary` string, nullable, required: Description of role and responsibilities
            - `location` string, nullable, required: Work location
            - `industry` string, nullable, required: Industry sector
            - `startDate` string, nullable, required: Start date (YYYY-MM-DD format)
            - `endDate` string, nullable, required: End date (YYYY-MM-DD format, null if current)
            - `startDateConfidence` string, nullable, required: Vendor confidence in the start date: "validated" or "low" (null if unknown)
            - `isCurrent` boolean, nullable, required: Whether this is the current position
      - `pageInfo` PageInfo, required: Pagination information
        - `hasNextPage` boolean, required: Whether there are more items available
        - `endCursor` string, nullable, required: Cursor to fetch next page (null if no more items)
    - `contributes` object: Repositories this user contributes to (when includeAttributes.contributes is specified)
      - `edges` PublicRepositoryWithGraph[], required: Array of repository objects
        - `id` string, required: BountyLab internal ID
        - `githubId` string, required: GitHub node ID
        - `ownerLogin` string, required: Repository owner username
        - `name` string, required: Repository name
        - `description` string, nullable: Repository description
        - `stargazerCount` number, required: Number of stars
        - `language` string, nullable: Primary programming language
        - `totalIssuesCount` number, required: Total number of issues (open + closed)
        - `totalIssuesOpen` number, required: Number of open issues
        - `totalIssuesClosed` number, required: Number of closed issues
        - `readmePreview` string, nullable: Preview of repository README (first ~500 chars)
        - `lastContributorLocations` string[], nullable: Locations of last contributors to this repository
        - `createdAt` string, nullable: ISO 8601 timestamp when repository was created
        - `updatedAt` string, nullable: ISO 8601 timestamp when repository was last updated
        - `embeddedAt` string, nullable: ISO 8601 timestamp when embedding was created
        - `score` number: Relevance score from search (0-1, lower is more relevant for cosine distance)
        - `owner` object: Repository owner (when includeAttributes.owner = true)
          - `id` string, required: BountyLab internal ID
          - `githubId` string, required: GitHub node ID
          - `login` string, required: GitHub username
          - `displayName` string, nullable: User display name
          - `bio` string, nullable: User biography
          - `company` string, nullable: Company name
          - `location` string, nullable: User location
          - `websiteUrl` string, nullable: User website URL
          - `socialAccounts` object[], nullable: Social media accounts
            - `provider` string, required
            - `url` string, required
          - `emails` string[], nullable: Obfuscated email addresses showing only the last 2 characters of the local part and full domain (e.g., "***oe@gmail.com"). Use /api/users/best-email endpoint for unobfuscated email access with intelligent selection.
          - `resolvedCountry` string, nullable: Resolved country from location
          - `resolvedState` string, nullable: Resolved state/region from location
          - `resolvedCity` string, nullable: Resolved city from location
          - `createdAt` string, nullable: ISO 8601 timestamp when user account was created
          - `updatedAt` string, nullable: ISO 8601 timestamp when user was last updated
          - `embeddedAt` string, nullable: ISO 8601 timestamp when metadata was extracted
          - `score` number: Relevance score from search (0-1, lower is more relevant for distance metrics)
        - `contributors` object: Repository contributors (when includeAttributes.contributors is specified)
          - `edges` PublicUser[], required: Array of user objects
            - `id` string, required: BountyLab internal ID
            - `githubId` string, required: GitHub node ID
            - `login` string, required: GitHub username
            - `displayName` string, nullable: User display name
            - `bio` string, nullable: User biography
            - `company` string, nullable: Company name
            - `location` string, nullable: User location
            - `websiteUrl` string, nullable: User website URL
            - `socialAccounts` object[], nullable: Social media accounts
              - …
            - `emails` string[], nullable: Obfuscated email addresses showing only the last 2 characters of the local part and full domain (e.g., "***oe@gmail.com"). Use /api/users/best-email endpoint for unobfuscated email access with intelligent selection.
            - `resolvedCountry` string, nullable: Resolved country from location
            - `resolvedState` string, nullable: Resolved state/region from location
            - `resolvedCity` string, nullable: Resolved city from location
            - `createdAt` string, nullable: ISO 8601 timestamp when user account was created
            - `updatedAt` string, nullable: ISO 8601 timestamp when user was last updated
            - `embeddedAt` string, nullable: ISO 8601 timestamp when metadata was extracted
            - `score` number: Relevance score from search (0-1, lower is more relevant for distance metrics)
          - `pageInfo` PageInfo, required: Pagination information
            - `hasNextPage` boolean, required: Whether there are more items available
            - `endCursor` string, nullable, required: Cursor to fetch next page (null if no more items)
        - `contributorProfiles` DeveloperProfile[]: Rich profiles for the contributors (identity, top owned repos, devrank, LinkedIn overlay), hydrated in the SAME call so callers skip a separate by-ids round-trip. Join to `contributors` by login. Present when includeAttributes.contributorProfiles = true.
          - `login` string, required
          - `userId` string
          - `githubId` string
          - `displayName` string
          - `company` string
          - `location` string
          - `bio` string
          - `accountCreatedAt` string
          - `topRepos` object[], required: Most-starred repos this login owns, from our index.
            - `name` string, required
            - `stargazerCount` number, required
          - `devrank` object
            - `tier` string, required
            - `crackedScore` number, required
            - `followersIn` number, required
            - `followingOut` number, required
          - `linkedin` object
            - `url` string
            - `currentTitle` string
            - `currentCompany` string
            - `seniorityLevel` string
            - `totalExperienceYears` number
            - `connectionsCount` number
        - `starrers` object: Users who starred this repository (when includeAttributes.starrers is specified)
          - `edges` PublicUser[], required: Array of user objects
            - `id` string, required: BountyLab internal ID
            - `githubId` string, required: GitHub node ID
            - `login` string, required: GitHub username
            - `displayName` string, nullable: User display name
            - `bio` string, nullable: User biography
            - `company` string, nullable: Company name
            - `location` string, nullable: User location
            - `websiteUrl` string, nullable: User website URL
            - `socialAccounts` object[], nullable: Social media accounts
              - …
            - `emails` string[], nullable: Obfuscated email addresses showing only the last 2 characters of the local part and full domain (e.g., "***oe@gmail.com"). Use /api/users/best-email endpoint for unobfuscated email access with intelligent selection.
            - `resolvedCountry` string, nullable: Resolved country from location
            - `resolvedState` string, nullable: Resolved state/region from location
            - `resolvedCity` string, nullable: Resolved city from location
            - `createdAt` string, nullable: ISO 8601 timestamp when user account was created
            - `updatedAt` string, nullable: ISO 8601 timestamp when user was last updated
            - `embeddedAt` string, nullable: ISO 8601 timestamp when metadata was extracted
            - `score` number: Relevance score from search (0-1, lower is more relevant for distance metrics)
          - `pageInfo` PageInfo, required: Pagination information
            - `hasNextPage` boolean, required: Whether there are more items available
            - `endCursor` string, nullable, required: Cursor to fetch next page (null if no more items)
        - `ownerDevrank` object: Devrank data for the repository owner (when includeAttributes.ownerDevrank = true)
          - `crackedScore` number, required
          - `tier` string, required
          - `rawScore` number, required
          - `trust` number, required
          - `pc` number, required
          - `followersIn` number, required
          - `followingOut` number, required
          - `community` integer, required
          - `createdAt` string, required
          - `updatedAt` string, required
        - `ownerProfessional` object: LinkedIn professional profile for the repository owner (when includeAttributes.ownerProfessional = true)
          - `firstName` string, nullable, required: First name
          - `lastName` string, nullable, required: Last name
          - `linkedinUrl` string, required: LinkedIn profile URL
          - `title` string, nullable, required: Current job title
          - `headline` string, nullable, required: Professional headline
          - `organization` string, nullable, required: Current organization/company
          - `currentIndustry` string, nullable, required: Current industry sector
          - `city` string, nullable, required: City
          - `state` string, nullable, required: State or province
          - `country` string, nullable, required: Country
          - `location` string, nullable, required: Full location string
          - `seniorityLevel` string, nullable, required: Seniority level (e.g., Senior, Manager)
          - `seniority` string, nullable, required: Seniority classification
          - `functionalArea` string, nullable, required: Functional area (e.g., Engineering, Product)
          - `expertise` string[], nullable, required: Areas of expertise
          - `certifications` string[], nullable, required: Professional certifications
          - `awards` string[], nullable, required: Professional awards
          - `memberships` string[], nullable, required: Professional organization memberships
          - `departments` string[], nullable, required: Departments worked in
          - `patents` string[], nullable, required: Patents held
          - `publications` string[], nullable, required: Publications authored
          - `priorIndustries` string[], nullable, required: Previous industries worked in
          - `languages` string[], nullable, required: Languages spoken
          - `connectionsCount` number, nullable, required: Number of LinkedIn connections
          - `followerCount` number, nullable, required: Number of LinkedIn followers
          - `hiring` boolean, nullable, required: Whether the person indicates they are hiring
          - `openToWork` boolean, nullable, required: Whether the person indicates they are open to work
          - `education` ProfessionalEducation[], required: Education history
            - `campus` string, nullable, required: Name of the educational institution
            - `major` string, nullable, required: Field of study or degree program
            - `specialization` string, nullable, required: Area of specialization
            - `startDate` string, nullable, required: Start date (YYYY-MM-DD format)
            - `endDate` string, nullable, required: End date (YYYY-MM-DD format)
          - `experience` ProfessionalExperience[], required: Work experience history
            - `company` string, nullable, required: Company or organization name
            - `title` string, nullable, required: Job title or position
            - `summary` string, nullable, required: Description of role and responsibilities
            - `location` string, nullable, required: Work location
            - `industry` string, nullable, required: Industry sector
            - `startDate` string, nullable, required: Start date (YYYY-MM-DD format)
            - `endDate` string, nullable, required: End date (YYYY-MM-DD format, null if current)
            - `startDateConfidence` string, nullable, required: Vendor confidence in the start date: "validated" or "low" (null if unknown)
            - `isCurrent` boolean, nullable, required: Whether this is the current position
      - `pageInfo` PageInfo, required: Pagination information
        - `hasNextPage` boolean, required: Whether there are more items available
        - `endCursor` string, nullable, required: Cursor to fetch next page (null if no more items)
    - `bestEmail` string, nullable: Best verified email address for the user
  - `count` number, required: Number of non-null users returned

## Other responses

- `400`: Bad request - invalid input
- `401`: Unauthorized - API key missing
- `403`: Forbidden - Invalid API key or required service access denied
- `429`: Too Many Requests - Hourly credit limit exceeded

## Changes

- **2026-10-16** `fa6dbe462ebc`: 18 info
  - added the new optional request property `includeAttributes/bestEmail`
  - added the new optional request property `includeAttributes/revealEmails`
  - added the optional property `users/items/allOf[subschema #2]/bestEmail` to the response with the `200` status
  - added the optional property `users/items/allOf[subschema #2]/contributes/allOf[#/components/schemas/PaginatedRepositories]/edges/items/allOf[subschema #2]/contributorProfiles` to the response with the `200` status
  - …14 more
- **2026-02-26** `0d3c77ff90a7`: 5 breaking, 5 info
  - removed `subschema #1, subschema #2, subschema #3` from the `includeAttributes/contributes/filters` request property `anyOf` list
  - removed `subschema #1, subschema #2, subschema #3` from the `includeAttributes/followers/filters` request property `anyOf` list
  - removed `subschema #1, subschema #2, subschema #3` from the `includeAttributes/following/filters` request property `anyOf` list
  - removed `subschema #1, subschema #2, subschema #3` from the `includeAttributes/owns/filters` request property `anyOf` list
  - …6 more
- **2026-02-04** `e7ef938867e2`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/bountylaboratories/apis/bounty-lab-public-api/changes/raw/users/by-linkedin/post.md)

---

[API](https://skmtc.dev/bountylaboratories/apis/bounty-lab-public-api.md) - [All operations](https://skmtc.dev/bountylaboratories/apis/bounty-lab-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/bountylaboratories/apis/bounty-lab-public-api/revisions/fa6dbe462ebc?raw)
