- Docs
- Guides
- Search people by keyword
Search people by keyword
Find LinkedIn profiles by name, role, or skill, then narrow the results with filters.
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
Section titled “Search for people”Replace YOUR_API_KEY with your API key, then run:
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
Section titled “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:
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
Section titled “Find filter IDs”Use these endpoints to find IDs for your own filters:
| Filter | Where to get the ID |
|---|---|
location |
Location search: data.locations[].id |
currentCompany, pastCompany |
Company details: data.publicId |
schoolFilter |
School search: data.schools[].id |
serviceCategory |
Service category search: data.serviceCategories[].id |
industry |
Industry search: 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.
Choose a profile language
Section titled “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
for the full list.
Read the response
Section titled “Read the response”data.profilescontains the matching profiles, including names, headlines, LinkedIn URLs, work experience, education, and skills when available.publicIdcan be used with profile lookup. If it isnull, use the profile’slinkedinUrlinstead.- Missing values may be
nullor empty lists. No matches returnsdata.profiles: []. meta.creditCostis the number of credits charged for the request.
See the full response example for all fields.
Get the next page
Section titled “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:
{ "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
and Errors for more help.