superagnt_
People — Search

Search people

POST/people/search
priced per calljson responserest · mcp
01// about this endpoint

Search 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.

02// code samples

Call it over REST

Authenticate with a bearer token against https://api.agntdata.dev. Swap the placeholders for your key and parameter values.

curlbash
curl -s -X POST "https://api.agntdata.dev/people/search" \
  -H "Authorization: Bearer <YOUR_AGNTDATA_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{ "filters": {}, "page": 0 }'
03// give it to your agent

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.

agent prompttext
You are wiring up the agntdata "Lead APIs" API to use this endpoint: Search people.

1. CONNECT over MCP (preferred). Add the superagnt MCP server, then let the client
   run OAuth on first tool call — no token to paste:
     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.agntdata.dev/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: "Owner", "Founder/Owner", "C-Suite", "Partner", "VP", "Director", "Manager", "Senior", "Entry", "Training"); `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 } — e.g. ["Software Development"]); `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`, `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", "VP", "Director"] }, "page": 1 }`.
    - page (integer, optional) — Page number (25 results per page; max page = 1000).

3. COST & KEY. This endpoint is priced per call in credits, and each successful response reports its own cost in its meta.costCents field. Only successful calls are charged.
   Get an agntdata API key at https://app.agntdata.dev.

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://superagnt.com/docs/apis/lead/agnt/endpoints/people_search.md
mcp tool definitionjson
{
  "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: \"Owner\", \"Founder/Owner\", \"C-Suite\", \"Partner\", \"VP\", \"Director\", \"Manager\", \"Senior\", \"Entry\", \"Training\"); `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 } — e.g. [\"Software Development\"]); `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`, `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\", \"VP\", \"Director\"] }, \"page\": 1 }`."
      },
      "page": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "minimum": 0,
        "description": "Page number (25 results per page; max page = 1000)."
      }
    },
    "required": []
  }
}
04// parameters
NameInTypeRequiredDescription
filtersbodyobjectoptionalFilter 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: "Owner", "Founder/Owner", "C-Suite", "Partner", "VP", "Director", "Manager", "Senior", "Entry", "Training"); `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 } — e.g. ["Software Development"]); `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`, `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", "VP", "Director"] }, "page": 1 }`.
pagebodyintegeroptionalPage number (25 results per page; max page = 1000).
05// responses

People search results.

200json
{
  "type": "object",
  "required": [
    "success",
    "data"
  ],
  "properties": {
    "success": {
      "type": "boolean",
      "enum": [
        true
      ]
    },
    "data": {
      "$ref": "#/components/schemas/PeopleSearchResponse"
    },
    "meta": {
      "$ref": "#/components/schemas/AgntMeta"
    }
  }
}
06// pricing
priced per call

This endpoint is priced per call and deducted from your agntdata balance; only a successful call is billed. Every billable response reports its own cost in meta.costCents.

Get a key at app.agntdata.dev.

07// related endpoints
08// more from Lead APIs

start calling

Point your client at https://mcp.superagnt.com/mcp and your agent has this endpoint, plus every other source on one balance.

Start free
people search APIB2B people searchtalent search APIlead enrichment APIemail finder APIemail verifier API