Skip to main content
POST /people/search accepts every company filter that POST /companies/search accepts. You no longer need to pre-fetch companies, collect their IDs, and feed them into a second people query — one request does both layers.

Two parameter families, one body

A /people/search request body is split conceptually into two filter families. They live at the same level in the JSON, and you mix them freely.
Filter on attributes of the person:
At the top level of /people/search, the company location and place filters carry a company_ prefix; the bare locations / places keys are not accepted there and are reported in metadata.ignored_fields. Everything else uses the bare company name (technologies, not company_technologies). Inside company_filters either spelling works.

Build a query in four steps

1

Decide the people predicate

Who, exactly? Title, seniority, department, country. Keep this layer at the top level of the body — the company predicate usually does the precision work.
2

Decide the company predicate

Which companies do they need to work at? Industry, size, founded year, HQ country, technology stack. Group these under a company_filters: {...} object so it’s obvious which layer each key belongs to.
3

Pick AND/OR per filter via filter_conditions

For any multi-value filter that needs precision (e.g., “uses all of these techs”), add an entry to filter_conditions inside company_filters. Defaults are OR.
4

Send the request

POST /people/search. Both styles are accepted, but company_filters: {...} reads cleaner and matches the Monitors payload shape.

Complete example

The query: VPs of Engineering or CTOs at US-based mid-market companies founded between 2015 and 2023, employing 100-5,000 people, that use both Kubernetes and Docker, but excluding companies HQ’d in San Francisco.

Key remap reference

On /people/search the company location and place keys carry a company_ prefix. They correspond to the Company Search names like this: filter_conditions keys never take the prefix — use technologies, verticals, keywords and the other names listed under Supported keys. Location and place filters always match any listed value.

People without a company

Adding any company-level filter limits the result to people with a recognised company on file. People without one are excluded, even when they match every people-level filter.
If your search drops to zero rows the moment you add company_locations or technologies, check whether the people you expect have a company linked.
Every returned person includes a populated company object whenever any company filter was applied.

Common patterns

Target a fixed list of companies (companies or domains), then layer on people-level filters to find the right buyers inside each one.
Describe the company shape, not specific accounts. Use ranges and verticals — the engine returns the people that fit.
Find buyers at companies running a specific stack. AND on technologies is the typical override.
Find decision-makers at companies that use a competitor’s product (one tech) but not yours (excluded via categories or a separate filter pass).
Then re-run with technologies: [114] (your product’s tag ID) and diff client-side.

Next steps

filter_conditions

Full reference — every key, every default, copyable AND/OR recipes.

Filters Overview

The mental model behind the unified filter engine.

People Search reference

Full request/response schema for /people/search.

Company Search reference

Full request/response schema for /companies/search.
Last modified on September 28, 2026