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

# Business Search API: search people

> Search profiles with the Business Search API. The endpoint queries linkedin_people in 3 modes and returns up to 100 records per page.

`POST /search/people` returns professional profile records that match your conditions.

Related: [People search](/products/business-search/people-search) for worked examples and people field guidance, and [Business Search query syntax](/products/business-search/query-syntax) for the structured query operators.


## OpenAPI

````yaml api-reference/business-search/business-search-api POST /search/people
openapi: 3.1.0
info:
  title: Business Search API
  version: 1.0.0
  description: >-
    Query Bright Data company and people datasets without downloading the full
    dataset. Send structured field conditions or a natural-language request and
    receive matching records as JSON. The index refreshes daily.
servers:
  - url: https://api.brightdata.com
security:
  - bearerAuth: []
paths:
  /search/people:
    post:
      summary: Search people
      description: >-
        Search the people category. The default source is `linkedin_people`. One
        request searches one source and does not join people records with
        company records.
      operationId: searchPeople
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchRequest'
            examples:
              ludicrous:
                summary: Structured query (ludicrous)
                value:
                  source: linkedin_people
                  mode: ludicrous
                  query:
                    and:
                      - text:
                          all_text:
                            value: product manager
                            mode: all-or-top-bm25
                      - equals:
                          country_code: US
                      - range:
                          followers:
                            '>=': 1000
                  offset: 0
                  limit: 10
                  view:
                    fields:
                      - name
                      - current_title
                      - current_company_name
                      - location
                      - followers
                      - url
              instant:
                summary: Natural language (instant)
                value:
                  source: linkedin_people
                  mode: instant
                  query: >-
                    Product managers in the United States with cybersecurity
                    experience
                  offset: 0
                  limit: 10
                  view: summary
      responses:
        '200':
          description: The search ran. `documents` can be empty when nothing matched.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponse'
              example:
                req_id: example_request_id
                source: linkedin_people
                meta:
                  matched: 18
                  coverage_percent: 100
                  offset: 0
                  limit: 10
                documents:
                  - bright_id: example-profile-id
                    data:
                      name: Example Person
                      current_title: Senior Product Manager
                      current_company_name: Example Software Company
                      location: Austin, Texas
                      followers: 3200
        '400':
          description: >-
            The request was rejected. Causes include an unknown category, an
            invalid `mode`, `query`, `view`, `offset` or `limit`, an unknown
            view profile name, unknown field names in `view`, and a
            natural-language query longer than 200 characters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: 'view: unknown field(s): not_a_released_field'
        '401':
          description: The API key is missing, invalid or expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: >-
            No customer account exists for the authenticated key, the account is
            inactive, or the account is not on the API allowlist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Unknown API version.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: >-
            Rate limit exceeded for this category and mode. Retry after the
            delay in `Retry-After`. The request was not searched and was not
            billed.
          headers:
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait before retrying.
              example: 1
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: Too many search requests, try again shortly
        '500':
          description: >-
            A server-side configuration or backend error. Retry with bounded
            backoff.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: >-
            The requested source is disabled or unavailable, or natural-language
            planning or ranking is not available for that source.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: >-
            The natural-language planner or the ranking step returned an invalid
            or empty response. Applies to `instant` and `smart`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '504':
          description: The search timed out. Retry with bounded backoff.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    SearchRequest:
      type: object
      required:
        - mode
        - query
      properties:
        mode:
          type: string
          enum:
            - ludicrous
            - instant
            - smart
          description: >-
            How the query is interpreted. `ludicrous` takes a structured JSON
            object. `instant` and `smart` take a natural-language string.
          example: instant
        query:
          description: >-
            A structured object for `ludicrous`, or a string for `instant` and
            `smart`. Changing mode between `ludicrous` and a natural-language
            mode also changes the type of this property.
          oneOf:
            - type: string
              description: >-
                Natural-language description of what to find, up to 200
                characters. Used by `instant` and `smart`. A longer string
                returns HTTP 400.
              example: US software companies with 50 to 500 employees
            - type: object
              description: >-
                Structured conditions built from the logical operators `and`,
                `or` and `not` and the field operators `equals`, `in`, `range`
                and `text`. Used by `ludicrous`.
              additionalProperties: true
        source:
          type: string
          description: >-
            The dataset to search within the category. Defaults to the
            category's default source: `linkedin_company` for `/search/company`
            and `linkedin_people` for `/search/people`.
          example: linkedin_company
        view:
          description: >-
            Which stored fields appear in each result's `data` object. Accepts
            `id_only`, `summary`, `full`, or an object with a `fields` array.
            Defaults to `id_only`, which returns identifiers rather than
            descriptive fields. `view` does not change the search conditions.
          default: id_only
          oneOf:
            - type: string
              enum:
                - id_only
                - summary
                - full
            - type: object
              required:
                - fields
              properties:
                fields:
                  type: array
                  items:
                    type: string
                  description: >-
                    Released field names to return. Unknown or unreleased names
                    are rejected with HTTP 400.
        offset:
          type: integer
          minimum: 0
          default: 0
          description: How many results to skip. Minimum 0, no maximum.
          example: 0
        limit:
          type: integer
          minimum: 0
          default: 10
          description: >-
            The requested maximum number of results in this page. Minimum 0,
            default 10. The maximum depends on the mode: 100 for `ludicrous`,
            100 for `instant` and 10 for `smart`. The returned `documents` array
            can be shorter than the value you send.
          example: 10
    SearchResponse:
      type: object
      properties:
        req_id:
          type: string
          description: Identifies the request. Include it in support tickets.
        source:
          type: string
          description: The source that was searched.
        meta:
          $ref: '#/components/schemas/SearchMeta'
        documents:
          type: array
          description: >-
            The matching records for this page, in ranked order. Preserve this
            order rather than re-sorting.
          items:
            $ref: '#/components/schemas/SearchDocument'
    Error:
      type: object
      properties:
        error:
          type: string
          description: What was rejected and why.
          example: 'view: unknown field(s): not_a_released_field'
        error_code:
          type: string
          description: >-
            Machine-readable error class. Present on structured errors, absent
            on generic ones.
          enum:
            - invalid_query
            - backend_search_failed
          example: invalid_query
      required:
        - error
    SearchMeta:
      type: object
      properties:
        matched:
          type: integer
          description: >-
            How many matches the search reached. Treat it as a lower bound, not
            an exhaustive count, and do not use it to size a dataset.
        coverage_percent:
          type: number
          description: >-
            The share of the index that answered. Below 100 means partial
            coverage. 100 does not guarantee that every relevant record was
            returned or every field populated.
        offset:
          type: integer
          description: Echoes the requested offset.
        limit:
          type: integer
          description: Echoes the requested limit.
    SearchDocument:
      type: object
      properties:
        bright_id:
          type: string
          description: >-
            Identifies a record within its source. Store it together with
            `source`.
        data:
          type: object
          additionalProperties: true
          description: >-
            The record fields selected by `view`. Fields without a stored value
            can be absent.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: >-
        Your Bright Data API key, sent as `Authorization: Bearer YOUR_API_KEY`.
        Create one in the [Bright Data Control
        Panel](https://brightdata.com/cp/setting/users). See
        [Authentication](/api-reference/authentication).

````