# Search people by keyword

Use `GET /v1/profiles/search` to find people by name, role, skill, or other
keywords. Add filters for location, company, school, language, or industry.

## Search for people

Replace `YOUR_API_KEY` with your [API key](https://docs.envoapi.com/guides/authentication.md), then run:

```bash
curl --get 'https://api.envoapi.com/v1/profiles/search' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --data-urlencode 'keywords=Satya Nadella' \
  --data-urlencode 'profileLanguage=en' \
  --data-urlencode 'offset=0'
```

Only `keywords` is required. Use 1–120 characters. This is a keyword search,
so results may include people who mention the name in their profile.

## Add filters

Choose the filters you need. The examples below are independent; you do not
need to send them all.

| Parameter         | Example          | Meaning                            |
| ----------------- | ---------------- | ---------------------------------- |
| `location`        | `geo_6yITcz`     | United States                      |
| `currentCompany`  | `company_4T4tWj` | Currently works at Microsoft       |
| `pastCompany`     | `company_4T4tWj` | Previously worked at Microsoft     |
| `schoolFilter`    | `school_55rBxU`  | Stanford University                |
| `profileLanguage` | `en,fr`          | English or French profile language |
| `serviceCategory` | `service_AuaLW4` | Management Consulting              |
| `industry`        | `industry_C1dRf` | Software Development               |

For example, search for software engineers who currently work at Microsoft:

```bash
curl --get 'https://api.envoapi.com/v1/profiles/search' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --data-urlencode 'keywords=software engineer' \
  --data-urlencode 'currentCompany=company_4T4tWj'
```

Each filter accepts up to 10 unique values, separated by commas. Send each
parameter once. Leave out unused filters instead of sending blank values.

### Find filter IDs

Use these endpoints to find IDs for your own filters:

| Filter                          | Where to get the ID                                                                                                          |
| ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `location`                      | [Location search](https://docs.envoapi.com/api/operations/searchlocationsbykeyword.md): `data.locations[].id`                |
| `currentCompany`, `pastCompany` | [Company details](https://docs.envoapi.com/api/operations/getcompanydetailsbyslug.md): `data.publicId`                       |
| `schoolFilter`                  | [School search](https://docs.envoapi.com/api/operations/searchschoolsbykeyword.md): `data.schools[].id`                      |
| `serviceCategory`               | [Service category search](https://docs.envoapi.com/api/operations/searchservicecategories.md): `data.serviceCategories[].id` |
| `industry`                      | [Industry search](https://docs.envoapi.com/api/operations/searchindustriesbykeyword.md): `data.industries[].id`              |

Copy IDs unchanged. Names such as `United States` or `Microsoft` cannot be used
as filter IDs. If you need a company slug, find it with
[company search](https://docs.envoapi.com/guides/search-companies-by-keyword.md).

### Choose a profile language

`profileLanguage` filters the profile's language setting, not the languages
the person speaks. Use codes such as `en` for English, `fr` for French,
`in` for Indonesian, or `zh` for Chinese.

Use `_o` for other languages, including Vietnamese. `vi` and locale codes such
as `en_US` are not supported. See the [API reference](https://docs.envoapi.com/api/operations/searchpeoplebykeyword.md)
for the full list.

## Read the response

* `data.profiles` contains the matching profiles, including names, headlines,
  LinkedIn URLs, work experience, education, and skills when available.
* `publicId` can be used with [profile lookup](https://docs.envoapi.com/guides/profile-lookup.md). If it is
  `null`, use the profile's `linkedinUrl` instead.
* Missing values may be `null` or empty lists. No matches returns
  `data.profiles: []`.
* `meta.creditCost` is the number of credits charged for the request.

See the [full response example](https://docs.envoapi.com/api/operations/searchpeoplebykeyword.md)
for all fields.

## Get the next page

Start with `offset=0`, or leave it out. The API returns up to 3 profiles per
page. This captured `meta.paging` example shows that the next page starts at `3`:

```json
{
  "offset": 0,
  "limit": 3,
  "returned": 3,
  "hasMore": true,
  "nextOffset": 3
}
```

Set `offset` to `meta.paging.nextOffset` and keep the same keywords and filters.
Stop when `hasMore` is `false`. Accepted offsets are `0`–`50`; do not request
an offset above `50`. Narrow your search with filters if you need more relevant
results.

The API sets the page size; do not send `limit` or `count`. Each successful
page uses credits, including empty pages. See [Pagination](https://docs.envoapi.com/guides/pagination.md)
and [Errors](https://docs.envoapi.com/guides/errors.md) for more help.

[Documentation index](https://docs.envoapi.com/llms.txt) · [All endpoints](https://docs.envoapi.com/api/index.md)
