filter_conditions is a single optional array on the request body. Each entry promotes one multi-value filter from the default OR (“match any”) behaviour to AND (“match all”), or vice versa. Filters you don’t list keep their defaults.
Schema
key and operator are both required on every entry. An entry with only operator is silently ignored — there is no global override.Why it matters
The default operator is OR because most prospecting workflows want broad reach: “people in any of these countries”, “companies tagged with any of these verticals”. For high-precision targeting — “uses all ofSalesforce + HubSpot + Marketo” — you need AND.
The cost of being wrong:
- Wanted AND, got OR: the response over-recalls — you see companies that match only one tag, not the full stack. Easy to spot, costs result-quality.
- Wanted OR, got AND: the response under-recalls — usually returns near-zero rows on multi-value AND filters because real-world arrays rarely contain every requested value. Easy to spot, looks like a broken query.
&& (overlap) for OR, @> (contains) for AND. Both are index-friendly, so the cost difference is in result size, not query latency.
Supported keys
The exact key set depends on the endpoint you’re calling:| Key | /companies/search | /people/search | /companies/advertisements/search | Default | What and means |
|---|---|---|---|---|---|
technologies | yes | yes | — | OR | Has every tech in the list |
categories | yes | yes | — | OR | Tagged with every category |
verticals | yes | yes | — | OR | Belongs to every vertical |
vertical_categories | yes | yes | — | OR | In every vertical category |
vertical_sub_categories | yes | yes | — | OR | In every vertical sub-category |
keywords | yes | yes | — | OR | Description contains every keyword |
places | yes | yes | — | OR | Listed in every place |
exclude_places | yes | yes | — | OR | Excluded from every place |
advertisement_target_locations | yes | — | — | OR | Ad targets every country (company endpoint) |
advertisement_exclude_target_locations | yes | — | — | OR | Ad excludes every country |
advertisement_search_terms | yes | — | — | OR | Ad copy contains every term |
job_exclude_locations | yes | — | — | OR | Job posting excludes every location |
social_media | — | yes | — | OR | Person has all listed social-media accounts |
target_locations | — | — | yes | OR | Ad targets every country (ads endpoint) |
exclude_target_locations | — | — | yes | OR | Ad excludes every country |
Recipes
- All-of techs (companies)
- Any-of locations + exclude
- Multi-region ad campaigns
- People at multi-stack companies
Goal: companies that use all of Python, PostgreSQL, and Kubernetes — not just one.Drop the
filter_conditions entry to widen the search to any of the three.Common mistakes
Forgetting key, sending only operator
Forgetting key, sending only operator
There is no global “default operator” toggle. Every entry must name a specific filter:
Expecting entries to compose
Expecting entries to compose
Entries are independent per-key overrides — they do not chain. Listing both
technologies and verticals does not create a Boolean expression between them; each one just sets its own array’s operator.The combination across filter keys is always AND (every filter must match). You cannot OR-combine two distinct filter dimensions through filter_conditions. If you need a true OR-of-different-filters search, run two requests and merge results client-side.Using AND on a long array
Using AND on a long array
AND is
column @> ARRAY[…] — every value must be present. With 8+ values you almost always get zero rows because real-world tagging is sparse. Keep AND-overridden arrays at 2-4 values; use OR for exploratory or category-level filtering.Wrong key on /people/search company filters
Wrong key on /people/search company filters
On Full remap table on the People + Company Filters page.
/people/search, the people-API name is company_places / company_locations. But inside filter_conditions[].key you must use the engine name — places, locations. The remap happens internally before filter_conditions is consulted.See also
Filters Overview
The mental model — start here if
filter_conditions is your first stop.People + Company Filters
How to layer company filters into
/people/search, including the key-remap.Company Search reference
Full request schema for
/companies/search (includes company_filter_conditions).People Search reference
Full request schema for
/people/search (includes people_filter_conditions).
