POST
/
people-api
/
people
/
search
Search people
curl --request POST \
  --url https://app.arxena.com/people-api/people/search \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "naturalLanguage": "",
  "dataSource": "auto",
  "limit": 10
}
'
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({naturalLanguage: '', dataSource: 'auto', limit: 10})
};

fetch('https://app.arxena.com/people-api/people/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
import requests

url = "https://app.arxena.com/people-api/people/search"

payload = {
"naturalLanguage": "",
"dataSource": "auto",
"limit": 10
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
{
  "status": "ok",
  "dataSource": "index",
  "total": 2,
  "items": [
    {
      "fullName": "Alex Rivera",
      "jobTitle": "VP Engineering",
      "companyName": "Stripe",
      "linkedinUrl": "https://www.linkedin.com/in/example"
    }
  ]
}
Primary path: pass naturalLanguage for a role utterance (for example “CHRO at Apple in Cupertino”). An LLM extracts role, company, website, and location; title taxonomy then classifies std function / root / grade. Company may be in the phrase or sent as companyName / companyId / website. A bare companyName is resolved via companies ES, then autocomplete, then Google SERP to a domain and LinkedIn company id. A bare website / domain uses ES/autocomplete, then Google {domain} linkedin company when that lookup is weak. If no company is present, the API returns Please provide company name as well. naturalLanguage is not query. naturalLanguage is a role utterance the server parses and classifies. query is a raw keyword string passed through to the search backend with no taxonomy resolution. Omit dataSource or pass auto to resolve LinkedIn Unipile automatically: the token’s workspace member profile first, then (for API keys with no member) any workspace member profile whose stored LinkedIn owner profile has a Sales Navigator seat. Pin index, unipile, pool, and other catalogs explicitly when you do not want that auto-resolve.
curl --request POST \
  --url https://app.arxena.com/people-api/people/search \
  --header 'Authorization: Bearer YOUR_API_KEY_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "naturalLanguage": "",
    "dataSource": "auto",
    "limit": 10
  }'
Use explicit stdFunction / stdGrade only when those codes are already known. stdFunction is a child label (e.g. software engineering) and must match taxonomy tree. stdFunctionRoot is the department family (engineering, human resources, …). stdGrade is entry | mid | leadership. Cookbook: Natural language to people at a company.

Authorizations

Authorization
string
header
required

Workspace JWT from Arxena auth.

Body

application/json
naturalLanguage
string

Primary path: a role utterance such as "CHRO at Apple in Cupertino". An LLM extracts job title, company, website, and location; title taxonomy then classifies std function / root / grade. Company may be in the phrase or passed as companyName / companyId / website. If no company is present, the API returns "Please provide company name as well". Overrides jobTitle and explicit std filters.

Example:

""

dataSource
enum<string>
default:auto

Which catalog to search. Omit or pass auto (default) to resolve the caller workspace member LinkedIn Unipile account; API keys (no member on the token) use any workspace member profile with a Sales Navigator Unipile seat. index is the people index. apollo and contactout are vendor search. pool, harvest, and unipile are LinkedIn Sales Navigator (unipile requires accountId unless resolved from the workspace).

Available options:
auto,
index,
apollo,
pdl,
contactout,
harvest,
unipile,
pool
Example:

"auto"

accountId
string

Required when dataSource is unipile — Unipile LinkedIn account id.

companyId
string
Example:

"comp_123"

companyName
string
Example:

"Stripe"

website
string
Example:

"stripe.com"

stdFunction
string

Standardized function (child label, e.g. software engineering). Must match a label from GET /people-api/taxonomy/tree.

Example:

"software engineering"

stdFunctionRoot
enum<string>

Standardized function root (department family).

Available options:
engineering,
marketing,
projects,
operations,
sales,
human resources,
education,
finance,
technology,
research,
support service,
healthcare,
product,
design,
secretarial,
supply chain,
trading,
legal,
real estate,
aviation,
events,
corporate,
government,
banking,
partnerships
Example:

"engineering"

stdGrade
enum<string>

Standardized grade.

Available options:
entry,
mid,
leadership
Example:

"leadership"

country
string
Example:

"United States"

locations
string[]

Geographic locations. Merged with places extracted from naturalLanguage when that path runs.

Example:
["India"]
query
string

Raw keyword string passed through to the data source (Elasticsearch query, Apollo q_keywords, or LinkedIn keywords). Not classified into std function/grade. Use naturalLanguage for a role utterance.

personName
string
jobTitle
string
Example:

"Head of Engineering"

searchUrl
string

Optional LinkedIn people search URL. Classic/premium: /search/results/people. Sales Navigator (including savedSearchId): /sales/search/people. Recruiter: /talent/search. Harvest only accepts Sales Navigator people URLs; Unipile/pool accept classic, Sales Nav, and Recruiter. Company, job title, and taxonomy filters are not required when this is set.

Example:

"https://www.linkedin.com/sales/search/people?savedSearchId=1936431145"

limit
integer
default:20

Desired number of profiles. Unipile people search uses a page size of up to 100 and paginates with cursor when more than one page is needed.

Required range: 1 <= x <= 500
Example:

20

Response

Search results

status
enum<string>
Available options:
ok
dataSource
enum<string>
Available options:
auto,
index,
apollo,
pdl,
contactout,
harvest,
unipile,
pool
total
integer
items
object[]
resolved
object

Present when naturalLanguage was parsed and the title was classified before searching.

query
object