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

# People search

> Find people with Business Search. [POST /search/people](/api-reference/business-search/search-people) searches by title, current company, location and followers, in JSON or plain language.

This page shows the shape `query` takes in each mode, the fields a people search can filter on with the operator each accepts and what a request looks like.

People requests go to [`POST /search/people`](/api-reference/business-search/search-people). For companies, see [Company search](/products/business-search/company-search).

## Writing queries

The shape of `query` follows the [search mode](/products/business-search/introduction#search-modes):

* **Ludicrous** takes a JSON object of conditions on the [searchable fields](#searchable-fields), combined with `and`, `or` and `not`. Operators and value shapes are in [Business Search query syntax](/products/business-search/query-syntax).
* **Instant** and **Smart** take a plain-language sentence of up to 200 characters. Business Search turns the sentence into one structured query on the same fields. A sentence that asks for a job title is ranked on the title, role and about text together. A sentence that reads like a recruiting brief, with a role, an industry and a skill, is scored on the `role`, `company` and `skill` field groups independently.

## Searchable fields

The operator a field accepts depends on the field's type. Text fields accept only the `text` operator. Typed fields, such as strings and integers, accept `equals`, `in` and `range`. Sending `equals` to a text field returns HTTP 400.

| Field                      | Type    | Operators      | Notes                                                                                                                                                                                                                                           |
| -------------------------- | ------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `current_title`            | text    | `text`         | Use `mode: "all"` to require every word                                                                                                                                                                                                         |
| `all_text`                 | text    | `text`         | Title, role and about together                                                                                                                                                                                                                  |
| `name`                     | text    | `text`         |                                                                                                                                                                                                                                                 |
| `about`                    | text    | `text`         |                                                                                                                                                                                                                                                 |
| `location`                 | text    | `text`         | Descriptive location string                                                                                                                                                                                                                     |
| `current_company_name`     | text    | `text`         |                                                                                                                                                                                                                                                 |
| `current_company_industry` | text    | `text`         |                                                                                                                                                                                                                                                 |
| `past_job_titles`          | text    | `text`         |                                                                                                                                                                                                                                                 |
| `role`, `company`, `skill` | text    | `text`         | Each searches a group of fields: `role` covers `current_title`, `past_job_titles` and `about`; `company` covers `current_company_industry`, `specialties`, `description`, `slogan` and `name`; `skill` covers `about` and `certification_names` |
| `city`                     | string  | `equals`, `in` | Exact city name                                                                                                                                                                                                                                 |
| `country_code`             | string  | `equals`, `in` | ISO 3166 alpha-2 code such as `US` or `GB`                                                                                                                                                                                                      |
| `followers`                | integer | `range`        |                                                                                                                                                                                                                                                 |

<Note>
  Location and employer fields can be missing from individual profiles, and a missing value is not evidence that the fact is false: a profile with no `current_company_name` publishes no employer. Handle absent or null values without failing the whole record, and avoid filters that silently drop every profile where an optional field is blank.
</Note>

## Example request

<Tabs>
  <Tab title="Ludicrous">
    A Ludicrous request finds US profiles whose current title includes both `product` and `manager`, with at least 1,000 followers, and names five output fields:

    **Sample request**

    <CodeGroup>
      ```bash cURL highlight={5} theme={null}
      curl --request POST "https://api.brightdata.com/search/people" \
        --header "Authorization: Bearer $BRIGHTDATA_API_KEY" \
        --header "Content-Type: application/json" \
        --data '{
          "mode": "ludicrous",
          "query": {
            "and": [
              { "text": { "current_title": { "value": "product manager", "mode": "all" } } },
              { "equals": { "country_code": "US" } },
              { "range": { "followers": { ">=": 1000 } } }
            ]
          },
          "offset": 0,
          "limit": 3,
          "view": { "fields": ["current_title", "current_company_industry", "country_code", "followers", "connections"] }
        }'
      ```

      ```python Python highlight={11} theme={null}
      import os
      import requests

      response = requests.post(
          "https://api.brightdata.com/search/people",
          headers={
              "Authorization": f"Bearer {os.environ['BRIGHTDATA_API_KEY']}",
              "Content-Type": "application/json",
          },
          json={
            "mode": "ludicrous",
            "query": {
              "and": [
                { "text": { "current_title": { "value": "product manager", "mode": "all" } } },
                { "equals": { "country_code": "US" } },
                { "range": { "followers": { ">=": 1000 } } }
              ]
            },
            "offset": 0,
            "limit": 3,
            "view": { "fields": ["current_title", "current_company_industry", "country_code", "followers", "connections"] }
          },
      )
      print(response.text)
      ```

      ```javascript Node.js highlight={8} theme={null}
      const response = await fetch("https://api.brightdata.com/search/people", {
        method: "POST",
        headers: {
          "Authorization": `Bearer ${process.env.BRIGHTDATA_API_KEY}`,
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          "mode": "ludicrous",
          "query": {
            "and": [
              { "text": { "current_title": { "value": "product manager", "mode": "all" } } },
              { "equals": { "country_code": "US" } },
              { "range": { "followers": { ">=": 1000 } } }
            ]
          },
          "offset": 0,
          "limit": 3,
          "view": { "fields": ["current_title", "current_company_industry", "country_code", "followers", "connections"] }
        }),
      });
      console.log(await response.text());
      ```
    </CodeGroup>

    **Sample response**

    The first of the three returned records:

    ```json theme={null}
    {
      "req_id": "rbdc10e0215c24a9498a4350df6cc10aa",
      "source": "linkedin_people",
      "meta": {
        "coverage_percent": 100,
        "matched": 32979,
        "offset": 0,
        "limit": 3
      },
      "documents": [
        {
          "bright_id": "889e0def2779fa14d5c357916557c70b39211ca82bb0ccd868e8cd65a1e8d100",
          "data": {
            "current_title": "Product Manager",
            "country_code": "US",
            "followers": 33814,
            "connections": 500
          }
        }
      ]
    }
    ```

    `mode: "all"` inside the `text` condition requires every search word to match. The words do not need to form an exact phrase, so a title of "Senior Manager, Product" still matches. Punctuation between the words does not prevent a match, word order does not matter and extra words in the title are allowed.
  </Tab>

  <Tab title="Instant">
    An Instant request asks for US product managers in one sentence:

    **Sample request**

    <CodeGroup>
      ```bash cURL highlight={5} theme={null}
      curl --request POST "https://api.brightdata.com/search/people" \
        --header "Authorization: Bearer $BRIGHTDATA_API_KEY" \
        --header "Content-Type: application/json" \
        --data '{
          "mode": "instant",
          "query": "Product managers in the United States",
          "limit": 3,
          "view": { "fields": ["current_title", "current_company_industry", "country_code", "followers", "connections"] }
        }'
      ```

      ```python Python highlight={11} theme={null}
      import os
      import requests

      response = requests.post(
          "https://api.brightdata.com/search/people",
          headers={
              "Authorization": f"Bearer {os.environ['BRIGHTDATA_API_KEY']}",
              "Content-Type": "application/json",
          },
          json={
            "mode": "instant",
            "query": "Product managers in the United States",
            "limit": 3,
            "view": { "fields": ["current_title", "current_company_industry", "country_code", "followers", "connections"] }
          },
      )
      print(response.text)
      ```

      ```javascript Node.js highlight={8} theme={null}
      const response = await fetch("https://api.brightdata.com/search/people", {
        method: "POST",
        headers: {
          "Authorization": `Bearer ${process.env.BRIGHTDATA_API_KEY}`,
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          "mode": "instant",
          "query": "Product managers in the United States",
          "limit": 3,
          "view": { "fields": ["current_title", "current_company_industry", "country_code", "followers", "connections"] }
        }),
      });
      console.log(await response.text());
      ```
    </CodeGroup>

    **Sample response**

    The first of the three returned records:

    ```json theme={null}
    {
      "req_id": "r73078fe6b74e4231a96e86e869dcb6ab",
      "source": "linkedin_people",
      "meta": {
        "coverage_percent": 16,
        "matched": 1357049,
        "offset": 0,
        "limit": 3
      },
      "documents": [
        {
          "bright_id": "36fe273b100b7fe8340c6309c5dbe8b5918c4417645381e7d4b7886ddfafc942",
          "data": {
            "current_title": "Production Manager",
            "current_company_industry": "Appliances, Electrical, and Electronics Manufacturing",
            "country_code": "US",
            "followers": 7,
            "connections": 7
          }
        }
      ]
    }
    ```
  </Tab>

  <Tab title="Smart">
    A Smart request sends the same sentence and ranks the candidates by how well each record answers it:

    **Sample request**

    <CodeGroup>
      ```bash cURL highlight={5} theme={null}
      curl --request POST "https://api.brightdata.com/search/people" \
        --header "Authorization: Bearer $BRIGHTDATA_API_KEY" \
        --header "Content-Type: application/json" \
        --data '{
          "mode": "smart",
          "query": "Product managers in the United States",
          "limit": 3,
          "view": { "fields": ["current_title", "current_company_industry", "country_code", "followers", "connections"] }
        }'
      ```

      ```python Python highlight={11} theme={null}
      import os
      import requests

      response = requests.post(
          "https://api.brightdata.com/search/people",
          headers={
              "Authorization": f"Bearer {os.environ['BRIGHTDATA_API_KEY']}",
              "Content-Type": "application/json",
          },
          json={
            "mode": "smart",
            "query": "Product managers in the United States",
            "limit": 3,
            "view": { "fields": ["current_title", "current_company_industry", "country_code", "followers", "connections"] }
          },
      )
      print(response.text)
      ```

      ```javascript Node.js highlight={8} theme={null}
      const response = await fetch("https://api.brightdata.com/search/people", {
        method: "POST",
        headers: {
          "Authorization": `Bearer ${process.env.BRIGHTDATA_API_KEY}`,
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          "mode": "smart",
          "query": "Product managers in the United States",
          "limit": 3,
          "view": { "fields": ["current_title", "current_company_industry", "country_code", "followers", "connections"] }
        }),
      });
      console.log(await response.text());
      ```
    </CodeGroup>

    **Sample response**

    The first of the three returned records:

    ```json theme={null}
    {
      "req_id": "r8c12ef1a926c41f5b6aaa48799c8651e",
      "source": "linkedin_people",
      "meta": {
        "coverage_percent": 16,
        "matched": 1361494,
        "offset": 0,
        "limit": 3
      },
      "documents": [
        {
          "bright_id": "eecc7657488dfdf371f4e91c4a9e1d0e794ecdbe59b98b5b799ae6bd674156a4",
          "data": {
            "current_title": "Product Manager",
            "current_company_industry": "Software Development",
            "country_code": "US",
            "followers": 361,
            "connections": 358
          }
        }
      ]
    }
    ```
  </Tab>
</Tabs>

For the fields each view returns and how `view` relates to `query`, see [Business Search field views](/products/business-search/select-fields).
