Search people
/people/searchSearch the people graph using structured filters (job title, company, location, seniority, department, …). Returns paginated profile summaries — combine with `/people/enrich` for deep enrichment of search results.
Call it over REST
Authenticate with a bearer token against https://api.superagnt.com. Swap the placeholders for your key and parameter values.
curl -s -X POST "https://api.superagnt.com/people/search" \
-H "Authorization: Bearer <YOUR_AGNTDATA_API_KEY>" \
-H "Content-Type: application/json" \
-d '{ "filters": {}, "page": 0 }'Copy-paste prompt
Paste this into a coding agent. It connects the superagnt MCP server, finds the tool data_agnt_people_search, and runs a first call — with the REST fallback if MCP is unavailable.
You are wiring up the superagnt "Lead APIs" API to use this endpoint: Search people.
1. CONNECT over MCP (preferred). No token to paste either way.
On Claude (claude.ai, the desktop app, or Claude Code signed in with a Claude
account), the server is a connector: give the user this link, they click Add
and approve:
https://claude.ai/customize/connectors/yours?modal=add-custom-connector&connectorName=superagnt&connectorUrl=https%3A%2F%2Fmcp.superagnt.com%2Fmcp&open_in_browser=1
Any other MCP client (or Claude Code signed in with an API key): add the server
and let the client run the browser sign-in:
claude mcp add --scope user --transport http superagnt https://mcp.superagnt.com/mcp
claude mcp login superagnt
MCP endpoint: https://mcp.superagnt.com/mcp
After connecting, the tool you want is named exactly:
data_agnt_people_search
Call agnt_tools_search or agnt_tools_list_enabled to confirm it is available.
2. REST fallback (if you are not using MCP):
POST https://api.superagnt.com/people/search
Header: Authorization: Bearer <YOUR_AGNTDATA_API_KEY>
Required parameters:
- (none)
Optional parameters:
- filters (object, optional) — Filter object. Each entry is keyed by filter name and takes either `{ include?: string[], exclude?: string[] }` for categorical filters or `{ min?, max? }` for ranges. Searches that contain ONLY `exclude` filters are rejected — always pair with at least one positive filter. Common keys: `person_job_title` ({ include/exclude } — free-text titles, e.g. ["VP of Sales"]); `person_seniority` ({ include/exclude } — allowed values: "Founder/Owner", "C-Suite", "Partner", "Vice President", "Head", "Director", "Manager", "Senior", "Entry", "Intern"; include and exclude cannot be combined); `person_department` ({ include/exclude } — allowed values: "Accounting", "Administrative", "Arts and Design", "Business Development", "Community and Social Services", "Consulting", "Education", "Engineering", "Entrepreneurship", "Finance", "Healthcare Services", "Human Resources", "Information Technology", "Legal", "Marketing", "Media and Communication", "Military and Protective Services", "Operations", "Product Management", "Program and Project Management", "Purchasing", "Quality Assurance", "Real Estate", "Research", "Sales", "Support"); `person_year_of_experience` ({ min, max } — numeric years range); `company` ({ names: { include?, exclude? }, websites: { include?, exclude? } } — pre-filter to a list of companies, max 500 entries each); `company_industry` ({ include/exclude } — a fixed LinkedIn-style industry list, e.g. ["Software Development"], ["Financial Services"]; there is no "Fintech" or "SaaS" value); `company_funding` ({ stage: string[] } — allowed stages: "Pre seed", "Seed", "Series A", "Series B", "Series C", "Series D", "Series E-J", "Series unknown", "Angel", "Grant", "Convertible note", "Corporate round", "Debt financing", "Equity crowdfunding", "Product crowdfunding", "Private equity", "Non equity assistance", "Initial coin offering", "Secondary market", "Post IPO equity", "Post IPO debt", "Post IPO secondary", "Undisclosed"); `company_headcount_custom` ({ min, max } — numeric employee count range); `company_location_search` ({ include/exclude } — country / location strings). Values are case-sensitive — pass them in the exact casing shown above (e.g. "C-Suite" not "c_suite", "Business Development" not "business_development"). For convenience, flat aliases are accepted and translated server-side: `seniority` → `person_seniority.include`, `department` → `person_department.include`, `job_title`/`title` → `person_job_title.include`, `location`/`country` → `person_location_search.include`, `company_name`/`company_names` → `company.names.include`, `industry` → `company_industry.include`, `funding_stage`/`company_funding_stage` → `company_funding.stage`, `company_domain`/`company_website` → `company.websites.include`, `headcount_min`/`headcount_max` → `company_headcount_custom.{min,max}`, `years_of_experience_min`/`years_of_experience_max` → `person_year_of_experience.{min,max}`. Top-level keys other than `filters`/`page` are ignored. Example: `{ "filters": { "company_name": "Zillow", "department": ["Sales", "Marketing"], "seniority": ["C-Suite", "Vice President", "Director"] }, "page": 1 }`. A valid search that matches nothing returns an empty `results` list and is not charged. A filter value the data provider does not accept returns 400 VALIDATION_ERROR naming the value; fix it and retry.
- page (integer, optional) — Page number (25 results per page; max page = 1000).
3. COST & KEY. This endpoint is metered — pricing varies by request, from $0.02 per call. Only successful calls are charged.
Get a superagnt API key at https://app.superagnt.com.
4. TEST. Connect the server (or set the key), discover the tool
(data_agnt_people_search), run one minimal call with just the required parameters,
and report back the shape of the JSON response (top-level fields).
Reference (machine-readable variant): https://www.superagnt.com/docs/apis/lead/agnt/endpoints/people_search.md{
"name": "people_search",
"description": "Search the people graph using structured filters (job title, company, location, seniority, department, …). Returns paginated profile summaries.",
"parameters": {
"type": "object",
"properties": {
"filters": {
"type": "object",
"additionalProperties": {},
"description": "Filter object. Each entry is keyed by filter name and takes either `{ include?: string[], exclude?: string[] }` for categorical filters or `{ min?, max? }` for ranges. Searches that contain ONLY `exclude` filters are rejected — always pair with at least one positive filter. Common keys: `person_job_title` ({ include/exclude } — free-text titles, e.g. [\"VP of Sales\"]); `person_seniority` ({ include/exclude } — allowed values: \"Founder/Owner\", \"C-Suite\", \"Partner\", \"Vice President\", \"Head\", \"Director\", \"Manager\", \"Senior\", \"Entry\", \"Intern\"; include and exclude cannot be combined); `person_department` ({ include/exclude } — allowed values: \"Accounting\", \"Administrative\", \"Arts and Design\", \"Business Development\", \"Community and Social Services\", \"Consulting\", \"Education\", \"Engineering\", \"Entrepreneurship\", \"Finance\", \"Healthcare Services\", \"Human Resources\", \"Information Technology\", \"Legal\", \"Marketing\", \"Media and Communication\", \"Military and Protective Services\", \"Operations\", \"Product Management\", \"Program and Project Management\", \"Purchasing\", \"Quality Assurance\", \"Real Estate\", \"Research\", \"Sales\", \"Support\"); `person_year_of_experience` ({ min, max } — numeric years range); `company` ({ names: { include?, exclude? }, websites: { include?, exclude? } } — pre-filter to a list of companies, max 500 entries each); `company_industry` ({ include/exclude } — a fixed LinkedIn-style industry list, e.g. [\"Software Development\"], [\"Financial Services\"]; there is no \"Fintech\" or \"SaaS\" value); `company_funding` ({ stage: string[] } — allowed stages: \"Pre seed\", \"Seed\", \"Series A\", \"Series B\", \"Series C\", \"Series D\", \"Series E-J\", \"Series unknown\", \"Angel\", \"Grant\", \"Convertible note\", \"Corporate round\", \"Debt financing\", \"Equity crowdfunding\", \"Product crowdfunding\", \"Private equity\", \"Non equity assistance\", \"Initial coin offering\", \"Secondary market\", \"Post IPO equity\", \"Post IPO debt\", \"Post IPO secondary\", \"Undisclosed\"); `company_headcount_custom` ({ min, max } — numeric employee count range); `company_location_search` ({ include/exclude } — country / location strings). Values are case-sensitive — pass them in the exact casing shown above (e.g. \"C-Suite\" not \"c_suite\", \"Business Development\" not \"business_development\"). For convenience, flat aliases are accepted and translated server-side: `seniority` → `person_seniority.include`, `department` → `person_department.include`, `job_title`/`title` → `person_job_title.include`, `location`/`country` → `person_location_search.include`, `company_name`/`company_names` → `company.names.include`, `industry` → `company_industry.include`, `funding_stage`/`company_funding_stage` → `company_funding.stage`, `company_domain`/`company_website` → `company.websites.include`, `headcount_min`/`headcount_max` → `company_headcount_custom.{min,max}`, `years_of_experience_min`/`years_of_experience_max` → `person_year_of_experience.{min,max}`. Top-level keys other than `filters`/`page` are ignored. Example: `{ \"filters\": { \"company_name\": \"Zillow\", \"department\": [\"Sales\", \"Marketing\"], \"seniority\": [\"C-Suite\", \"Vice President\", \"Director\"] }, \"page\": 1 }`. A valid search that matches nothing returns an empty `results` list and is not charged. A filter value the data provider does not accept returns 400 VALIDATION_ERROR naming the value; fix it and retry."
},
"page": {
"type": "integer",
"exclusiveMinimum": 0,
"minimum": 0,
"description": "Page number (25 results per page; max page = 1000)."
}
},
"required": []
}
}| Name | In | Type | Required | Description |
|---|---|---|---|---|
filters | body | object | optional | Filter object. Each entry is keyed by filter name and takes either `{ include?: string[], exclude?: string[] }` for categorical filters or `{ min?, max? }` for ranges. Searches that contain ONLY `exclude` filters are rejected — always pair with at least one positive filter. Common keys: `person_job_title` ({ include/exclude } — free-text titles, e.g. ["VP of Sales"]); `person_seniority` ({ include/exclude } — allowed values: "Founder/Owner", "C-Suite", "Partner", "Vice President", "Head", "Director", "Manager", "Senior", "Entry", "Intern"; include and exclude cannot be combined); `person_department` ({ include/exclude } — allowed values: "Accounting", "Administrative", "Arts and Design", "Business Development", "Community and Social Services", "Consulting", "Education", "Engineering", "Entrepreneurship", "Finance", "Healthcare Services", "Human Resources", "Information Technology", "Legal", "Marketing", "Media and Communication", "Military and Protective Services", "Operations", "Product Management", "Program and Project Management", "Purchasing", "Quality Assurance", "Real Estate", "Research", "Sales", "Support"); `person_year_of_experience` ({ min, max } — numeric years range); `company` ({ names: { include?, exclude? }, websites: { include?, exclude? } } — pre-filter to a list of companies, max 500 entries each); `company_industry` ({ include/exclude } — a fixed LinkedIn-style industry list, e.g. ["Software Development"], ["Financial Services"]; there is no "Fintech" or "SaaS" value); `company_funding` ({ stage: string[] } — allowed stages: "Pre seed", "Seed", "Series A", "Series B", "Series C", "Series D", "Series E-J", "Series unknown", "Angel", "Grant", "Convertible note", "Corporate round", "Debt financing", "Equity crowdfunding", "Product crowdfunding", "Private equity", "Non equity assistance", "Initial coin offering", "Secondary market", "Post IPO equity", "Post IPO debt", "Post IPO secondary", "Undisclosed"); `company_headcount_custom` ({ min, max } — numeric employee count range); `company_location_search` ({ include/exclude } — country / location strings). Values are case-sensitive — pass them in the exact casing shown above (e.g. "C-Suite" not "c_suite", "Business Development" not "business_development"). For convenience, flat aliases are accepted and translated server-side: `seniority` → `person_seniority.include`, `department` → `person_department.include`, `job_title`/`title` → `person_job_title.include`, `location`/`country` → `person_location_search.include`, `company_name`/`company_names` → `company.names.include`, `industry` → `company_industry.include`, `funding_stage`/`company_funding_stage` → `company_funding.stage`, `company_domain`/`company_website` → `company.websites.include`, `headcount_min`/`headcount_max` → `company_headcount_custom.{min,max}`, `years_of_experience_min`/`years_of_experience_max` → `person_year_of_experience.{min,max}`. Top-level keys other than `filters`/`page` are ignored. Example: `{ "filters": { "company_name": "Zillow", "department": ["Sales", "Marketing"], "seniority": ["C-Suite", "Vice President", "Director"] }, "page": 1 }`. A valid search that matches nothing returns an empty `results` list and is not charged. A filter value the data provider does not accept returns 400 VALIDATION_ERROR naming the value; fix it and retry. |
page | body | integer | optional | Page number (25 results per page; max page = 1000). |
People search results.
{
"type": "object",
"required": [
"success",
"data"
],
"properties": {
"success": {
"type": "boolean",
"enum": [
true
]
},
"data": {
"$ref": "#/components/schemas/PeopleSearchResponse"
},
"meta": {
"$ref": "#/components/schemas/AgntMeta"
}
}
}Metered endpoint — the exact cost depends on the request. Credits are deducted per successful call; failed requests (4xx/5xx) are not charged.
Get started at app.superagnt.com.
start calling
Point your client at https://mcp.superagnt.com/mcp and your agent has this endpoint, plus every other source on one balance.