Person Search
Person Search
Find people using a natural-language audience description and return matching Minerva PIDs with contact-channel coverage stats
POST
Overview
The Person Search endpoint accepts a natural-language description of an audience and returns matching people from the Minerva dataset. Internally the service parses the prompt into structured filters, executes a search, and synchronously returns:- A stable
search_idyou can retrieve again later - Minerva PIDs for the returned page (up to
size) - The
total_countof everyone matching the search (may exceed the returned page) - Contact-channel coverage stats across the full match set (
total_contact_coverage) and across the returned page (results_contact_coverage)
Writing good queries
The query is a natural-language audience description — not a lookup of a specific named person. Best results come from describing the attributes the people share. The parser handles these attribute categories well:
Boolean logic (
and / or / not) and nested groups work too — the
parser turns “MIT or Stanford CS grads” into the right OR group
automatically.
Three example queries
Three patterns that cover most real audience definitions. Each maps to a shape the parser handles cleanly out of the box.Tips
- Describe attributes, not specific people. A lookup of “John Doe at
Acme Inc.” is a PII match — use
/v2/resolvefor that. Person Search is for audience definitions (“engineers at SaaS companies”). - Be specific about role + company. Adding “at Google” or “in fintech” narrows the result set materially vs. a bare role.
- Combine 4–6 attributes for high-precision audiences. Each additional filter sharpens the segment.
- Add a contact-channel constraint (e.g. “with a professional email”) when you need to reach the audience — guarantees the returned PIDs are actually reachable on that channel.
- Stay under 500 characters. The endpoint validates
querylength (see Request Body).
Request
Headers
string
required
Your API key for authentication.
string
required
application/jsonRequest Body
string
required
Natural-language description of the people you want to find. Between 1 and 500 characters. See Writing good queries for supported attribute categories and worked examples.
integer
default:"100"
Maximum number of Minerva PIDs to return in
results. Must be between 1 and 100. The total_count field still reflects the full match count even when size is smaller than the match set.Request Example
Response
Success Response
The API returns a JSON object with the newsearch_id, the list of matching PIDs for this page, and coverage statistics for contact channels.
string
UUID identifying this search. Store it if you plan to fetch the same results later with Get Person Search.
string
The normalized query associated with this search.
string[]
Array of Minerva PIDs for this page of results. Length is at most
size. Each PID has the format p-{hash} and can be used with /enrich, segments, and other person-level endpoints.integer
Total number of people matching the search. Can be larger than
result_count if size is smaller than the match set.integer
Number of PIDs actually returned in
results for this response.object
Availability of contact channels across the full match set of
total_count people. See Coverage stats below for object shape.object
Availability of contact channels across the
result_count PIDs returned on this page. See Coverage stats below for object shape.string
ISO 8601 timestamp (UTC) indicating when the search was created.
Coverage stats
Bothtotal_contact_coverage and results_contact_coverage share the same shape. Each channel entry reports how many people in the corresponding population have that channel on file, and what percentage that represents.
object
Count and percent of people with a personal email on file.
object
Count and percent of people with a professional email on file.
object
Count and percent of people with a phone number on file.
object
Count and percent of people with a LinkedIn profile on file.
integer
Number of people in the population who have this contact channel on file.
number
count divided by the size of the population, expressed as a percentage (0.0–100.0).Error Responses
Common Errors
400- Bad Request: The natural-language query could not be turned into any usable search filters. Rephrase the query with more concrete criteria (role, location, industry, seniority, etc.).401- Unauthorized: Invalid or missing API key403- Forbidden: The API key is valid but not authorized for this route or your plan tier422- Unprocessable Entity: Request validation failed. Examples:querymissing or empty,querylonger than 500 characters,sizeoutside1-100, or body is not valid JSON.429- Too Many Requests: Rate limit or plan quota exceeded500- Internal Server Error: Unexpected server error
Error Examples
No usable filters extracted from the query:Related Endpoints
- Get Person Search - Retrieve a previously created search by
search_id - Async Person Search - Materialize a complete segment, inspect its size, then unlock and page PIDs
- Person Search Usage - Daily delivery limits and consumption history
- Contact Append - Async ABM contacts at target companies
- Contact Prospect - Async contacts by NAICS + title
- Contact Job Status - Poll contact-append / contact-prospect jobs
- Contact Job Results - Unlock (bill) and page contact job results
- Enrich v2 - Fetch full profile data for the Minerva PIDs returned here
- Add Members to Segment - Persist search results into a segment for tracking