---
title: "Search GitHub users"
method: POST
path: "/api/search/users"
---

# Search GitHub users

`POST /api/search/users`

Full-text search across user login, name, bio, company, and location using BM25 ranking. Results include relevance scores. Requires SEARCH service. Credits: 1 per result returned.

## Request body

- SearchUsersRequest
  - `query` string, required — Full-text search query across user fields. Searches: login, displayName, bio, company, location, emails, resolvedCountry, resolvedState, resolvedCity (with login weighted 2x)
  - `maxResults` integer — Maximum number of results to return (default: 100, max: 1000)
  - `filters` union — Optional filters for narrowing search results. Supports filtering on: githubId, login, displayName, bio, company, location, emails, resolvedCountry, resolvedState, resolvedCity. Full-text searchable fields (automatically searched): login, displayName, bio, company, location, emails, resolvedCountry, resolvedState, resolvedCity. Filter structure: - Field filters: { field: "fieldName", op: "Eq"|"In", value: string|string[] } - Composite filters: { op: "And"|"Or", filters: [...] } Supported operators: - String fields: Eq (exact match), In (one of array) - Use And/Or to combine multiple filters
    - GenericFieldFilter
      - `field` string, required — Field name to filter on
      - `op` string, required — Operation (Eq, In, Gte, etc.)
      - `value` union, required — Filter value
        - string
        - number
        - string[]
        - number[]
    - CompositeFilter
      - `op` 'And' | 'Or', required — Logical operator
      - `filters` GenericFieldFilter[], required — Array of filters to combine
        - `field` string, required — Field name to filter on
        - `op` string, required — Operation (Eq, In, Gte, etc.)
        - `value` union, required — Filter value
          - string
          - number
          - string[]
          - number[]

## Response `200`

Search results retrieved successfully

- SearchUsersResponse
  - `users` PublicUser[], required — Array of user search results with relevance scores
    - `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 — Email addresses
    - `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)
  - `count` number, required — Number of users returned

## Other responses

- `400` — Bad request - invalid search query, parameters, or filter validation failed
- `401` — Unauthorized - API key missing
- `403` — Forbidden - Invalid API key or SEARCH service access denied
- `500` — Internal server error - search service failure or unexpected error

## Changes

- **2025-10-18** `92cfcc6803ec` — 1 breaking, 18 info
  - the `users/items/` response's property type changed from no type to `object` for status `200`
  - added the optional property `users/items/bio` to the response with the `200` status
  - added the optional property `users/items/company` to the response with the `200` status
  - added the optional property `users/items/createdAt` to the response with the `200` status
  - …15 more
- …earlier changes not shown

[Full history](https://skmtc.dev/bountylaboratories/apis/bounty-lab-public-api/changes/api/search/users/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/bc6afa223dff?raw)
