← Back to Crustdata
POST/person/search

Person Search

Search Crustdata's person database with flexible filters (title, company, seniority, location, skills, education...), sorting, and cursor pagination. Supports normalized job titles and semantic search. Replaces /screener/persondb/search. Up to 1000 results per page. Billed per result returned (limit defaults to 20). Filter example: {"op": "and", "conditions": [{"field": "experience.employment_details.current.title", "type": "=", "value": "CTO"}, {"field": "experience.employment_details.current.company_headcount_range", "type": "in", "value": ["51-200"]}]}.

Crustdata·Dynamic pricing

Dynamic pricing

(body.limit ? body.limit : body.count ? body.count : 20) * 0.009375

Example code

// Using @orth/sdk - The simplest way to call APIs // Install: npm install @orth/sdk import Orthogonal from "@orth/sdk"; const orthogonal = new Orthogonal({ apiKey: process.env.ORTHOGONAL_API_KEY, }); const output = await orthogonal.run({ api: "crustdata", path: "/person/search", body: { "filters": {} } }); console.log(output);

Body parameters

filtersrequired
object

Filter criteria — a single `PersonSearchCondition` or a `PersonSearchConditionGroup` combining conditions with `and`, `or`, or `all_of` (cross-element matching on nested-array fields).

sorts
array

Sort directives applied to matched people in order. (default: [])

limit
integer

(default: 20)

count
integer

Alias for limit.

cursor
string

Pagination cursor from a previous response's `next_cursor`. Omit on the first page.

post_processing
object

Post-processing options applied to search results (e.g., exclusions).

return_query
boolean

Debug flag - include search query in response (default: false)

preview
boolean

Preview mode - return only basic fields for faster response (default: false)

explain
boolean

Explain an empty result. When true and a filters-only request returns `total_count` 0, `remarks` names the condition whose removal recovers profiles. Not the `search.explain` flag on semantic search, which returns per-hit scoring. (default: false)

fields
array

Optional list of field paths to include in each returned profile. When omitted, a default set of profile fields is returned. Use dot notation for a nested field (for example `experience.employment_details.current.title`) or a top-level family name (for example `basic_profile`) to include the whole family. An unsupported value returns a `400` whose `metadata.available_fields` lists every selectable field.

    Orthogonal - Giving AI agents the tools they need.