Overview
Use these endpoints when you need more than the basic list query params:POST /v1/contacts/searchPOST /v1/companies/search
searchfor full-text matchingincludefor positive filtersexcludefor negative filterspageandpageSizefor paginationfieldson contact search when you want extra contact/company-backed fields returned
Start With The Fields Endpoints
Treat the fields endpoints as the schema source of truth for filtering:GET /v1/contacts/fieldsGET /v1/companies/fields
id: the exact key to use ininclude,exclude, and contactfieldslabel: the human-readable namedataType: how to shape the filter valuefieldType: whether the field is standard, AI, CRM, formula, or empty
GET /v1/contacts/fields already includes valid company-backed field IDs such as companyName, so start there first.
If your workspace exposes scoring fields like icpScore, scoreBand, or custom AI/formula fields, use the exact id returned by the fields endpoint before adding them to search filters.
Important Filters First
These are the highest-signal filters to reach for first:idIf you already know a single record ID, preferGET /v1/contacts/{contactId}orGET /v1/companies/{companyId}. Useidinside search when you need to combine exact IDs with other filters.leadsGrouporcompanyGroupList IDs for contact lists or company lists.campaignsCampaign IDs when you want outreach-related slices.isInCRMorisCompanyInCRMCRM presence filters.leadsCountornumberOfEmployeesGood first-pass sizing filters for companies and account selection.- Workspace scoring fields like
icpScoreUse only after confirming the field exists in/fields.
Filter Value Schema
include and exclude are plain JSON objects whose keys are special filter names or field IDs from /fields.
Use these value shapes:
| Field type | Value shape | Example |
|---|---|---|
| Text / select / formula / AI / CRM field | Array of exact values | "jobTitle": ["CEO", "Founder"] |
| Numeric field | Two-item min/max range array | "numberOfEmployees": ["50", "500"] |
| Boolean field | One-item boolean array | "isInCRM": [true] |
| Timestamp field | Object with startDate and endDate | "lastActivityAtCRM": { "startDate": "2026-01-01", "endDate": "2026-01-31" } |
| Empty value match | Include an empty string in the array | "professionalEmail": [""] |
- Range filters are inclusive.
- You can leave one side open for numeric ranges, for example
["80", ""]. - Contact search also accepts company-backed field IDs in
include,exclude, andfields.
Contact Search Examples
Contact list ID + CRM presence
Contact IDs + company-backed filters
Workspace scoring field
ReplaceicpScore with the exact scoring field ID from GET /v1/contacts/fields.
Company Search Examples
Company list ID + employee range
Company IDs + lead count + CRM presence
Workspace scoring field
ReplacescoreBand with the exact scoring field ID from GET /v1/companies/fields.
Reference Endpoints
- Contact fields:
GET /v1/contacts/fields - Company fields:
GET /v1/companies/fields - Contact search:
POST /v1/contacts/search - Company search:
POST /v1/companies/search