Docs / Search
search_people_sales_navigator
Search people in Sales Navigator through a shared seat, by names of titles, places, industries and companies.
This action can change or spend something, and when it does it happens right away. Read “Good to know” first. It is part of the Agent plan.
What you give it
| Input | What it is | Where to get it |
|---|---|---|
keywordsoptional | Text. Free-text keywords searched across all profile fields (title, headline, about, company). | You write it. |
titlesoptional | A list (text). Job titles, e.g. ["Chief Technology Officer","VP of Engineering"]. Matched as OR'd keywords — pass variants to go broad. | You write it. |
locationsoptional | A list (text). Person locations in plain English, e.g. ["United States","London"]. Resolved to LinkedIn regions automatically. | You write it. |
industriesoptional | A list (text). Company industries in plain English, e.g. ["Software","Financial Services"]. | You write it. |
companiesoptional | A list (text). Current companies by name, e.g. ["Google","Stripe"]. Each name is looked up and the top match used — when you already have LinkedIn company ids (search_companies / list_funding_signals return companyId), pass companyIds instead. | You write it. |
companyIdsoptional | A company id. Current companies by LinkedIn company id — the companyId values search_companies / list_funding_signals return (up to 100). Exact: no name lookup, so no same-name mix-ups. Combine with seniorities and changedJobs / postedOnLinkedIn to get the decision-makers at signal companies who just moved / are posting. | Run search_linkedin_companies and use results[].id from its answer.5 more places to get it
|
functionsoptional | A list (text). Job functions/departments, e.g. ["Engineering","Sales","Marketing"]. | You write it. |
senioritiesoptional | A list (text). Seniority levels, e.g. ["CXO","VP","Director","Manager"] (owner/partner, cxo, vice_president, director, experienced_manager, entry_level_manager, strategic, senior, entry_level, in_training). | You write it. |
companyHeadcountsoptional | A list (text). Company size bands. Valid: self-employed, 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+. | You write it. |
changedJobsoptional | True or false. Only people who recently changed jobs (buying signal). | You write it. |
postedOnLinkedInoptional | True or false. Only people who recently posted on LinkedIn (active/reachable signal). | You write it. |
companyMinRevenueMillionsoptional | A number. Only people at companies with at least this annual revenue, in millions (e.g. 10 = $10M+) — use it to target companies that can afford the user's price. LinkedIn uses fixed brackets (0, 0.2, 1, 2.5, 5, 10, 20, 50, 100, 500, 1000); other values widen to the nearest one. The companies are matched on the same industries / companyHeadcounts / locations (as HQ location). Revenue is LinkedIn's estimate — companies without one are left out. | You write it. |
companyMaxRevenueMillionsoptional | A number. Only people at companies with at most this annual revenue, in millions (e.g. 100 = up to $100M). Same brackets as companyMinRevenueMillions. | You write it. |
revenueCurrencyoptional | Text. ISO currency of the revenue band, e.g. "USD" (default), "EUR", "GBP". | You write it. |
limitoptional | A number, 1 to 100. Max people to return THIS call (1–100, default 25). To exceed 100 total, page with cursor. | You write it. |
cursoroptional | A cursor. Pagination cursor from a previous search_people_sales_navigator call's nextCursor — pass it back exactly as returned (it lasts 24 hours). Pass it with confirm:true to pull the NEXT batch — this is how you build a list larger than the 100/call cap. The cursor carries its search's filters, so pass the SAME filters or none. Omit for the first page. | The nextCursor from the last answer of search_people_sales_navigator. |
formatoptional | One of: table, csv. table (default) = structured rows to render as a table. csv = also return an export-ready CSV string (columns: Name, Title, Company, Location, Industry, Shared Connections, Tenure in Role, LinkedIn URL) — use for large lists the user wants to save/hand off. | You write it. |
confirmoptional | True or false. false (default) = return the credit-cost estimate only (nothing charged). true = pull the people and charge credits after the user agreed. Continuation pages (with cursor) should pass confirm:true. | You write it. |
Call it
curl -X POST https://api.heyreagent.com/v1/actions/search_people_sales_navigator \
-H "Authorization: Bearer YOUR_KEY" \
-H "content-type: application/json" \
-d '{"titles":["Head of Sales"]}'The same call in JavaScript
const response = await fetch("https://api.heyreagent.com/v1/actions/search_people_sales_navigator", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_KEY",
"content-type": "application/json",
},
body: JSON.stringify({
"titles": [
"Head of Sales"
]
}),
});
const answer = await response.json();
console.log(answer);The same call in Python
import requests
response = requests.post(
"https://api.heyreagent.com/v1/actions/search_people_sales_navigator",
headers={"Authorization": "Bearer YOUR_KEY"},
json={
"titles": ["Head of Sales"],
},
)
print(response.json())The same call in n8n
Add an HTTP Request node and fill it in like this:
| Method | POST |
| URL | https://api.heyreagent.com/v1/actions/search_people_sales_navigator |
| Send Headers | On. Name Authorization, Value Bearer YOUR_KEY |
| Send Body | On. Body Content Type JSON, Specify Body Using JSON, then paste the body below |
{
"titles": [
"Head of Sales"
]
}Put your own key where it says YOUR_KEY. New here? Start with your first call.
What you get back
When it worked, the answer is { "ok": true, "result": { … } }. Inside result:
action | |
matchCount | |
estimatedCredits | |
creditsCharged | |
yourBalance | |
returned | |
hasMore | |
nextCursor | A cursor. Other actions take it. |
leads |
A field that does not apply to an answer is left out, or is null.
When it did not work, the answer is { "ok": false, "error": "…", "message": "…" }. What each error means.
Good to know
- confirm false (the default) only previews: how many match and what it costs, no people. confirm true returns them and charges 0.02 credits a person.
- action is "preview", "blocked" or "results". leads, returned, creditsCharged and nextCursor are present only on "results"; estimatedCredits only on "preview".
- leads[].providerId is a Sales Navigator id (ACw…), not a member id. leads[].linkedinUrl is what the actions asking for a profile link take.
- A cursor lasts 24 hours and works only with the filters it was made with, or with none.
- Filters are names; companyIds is the one that takes ids.
In Claude or ChatGPT
Once connected, ask in your own words. The assistant sees this action as a tool with the same name, search_people_sales_navigator, and the same inputs.