Filter operator reference
Company Search accepts the followingfilters.type operators.
geo_distance — radius around headquarters
geo_distance keeps companies whose headquarters is within a radius of a
point. Both geo operators work on the locations.headquarters field only.
Supply the centre of the radius using one of:
location— a string that is geocoded server-side (e.g."Palo Alto, CA").lat_lng— explicit coordinates as[lat, lng]. Skips geocoding.
lat_lng wins. distance is required; unit defaults
to km.
See
geo_distance examples
for end-to-end requests using both location and lat_lng.
geo_exclude — exclude a radius
geo_exclude is the inverse of geo_distance: it removes companies
headquartered inside the radius and keeps everyone else. It takes the same
value object — location or lat_lng, a required distance, and an optional
unit (defaults to km) — and works on the same locations.headquarters
field. Use it to carve out a metro you already cover, or to target companies
outside a region.
Searchable fields
These are common fields that can be used in thefield key of a filter condition. Some indexed filter fields are search-only and are not returned in the response payload. For the full schema, see the API reference.
Fields are grouped by family below. Every field listed is filterable; the Sortable column marks the subset also valid in sorts.
Identity & timestamps
Basic info
Revenue & funding
Headcount & roles
The
headcount.growth_percent.* and headcount.growth_absolute.* dotted
period paths are filterable but not sortable. To rank results by growth,
filter on the period you care about and sort on headcount.total (or
another sortable field). See Find high-growth mid-size
companies.<function> with one of: accounting, administrative, arts_and_design, business_development, community_and_social_services, consulting, customer_success_and_support, education, engineering, entrepreneurship, finance, healthcare_services, human_resources, information_technology, legal, marketing, media_and_communication, military_and_protective_services, operations, product_management, program_and_project_management, purchasing, quality_assurance, real_estate, research, sales, support. For example, roles.distribution.engineering filters on the number of engineers. See Find companies by team size in a function.
Locations
Normalized location facets.
locations.state and locations.city
filter against and return normalized values derived from geocoding each
company’s headquarters address — the value you see in a response is the
value you filter with. locations.country accepts both vocabularies:
ISO-3 codes ("USA", "GBR") and full country names ("United States")
each match all companies, so existing ISO-3 filters keep working unchanged.
Responses return the normalized full country name. Use
Autocomplete to discover indexed
values before filtering.Taxonomy
Followers
Social profiles
Competitors (filter-only)
Technographics (filter-only)
Technographics values are not returned in search responses — these
fields are filter-only (
technographics.total_technologies is also
sortable). To get the values, request the technographics field group on
Company Enrich.
Use Autocomplete
with the technology and technology_category fields to discover valid
filter values.Response fields
Each company in the response can include these sections (depending onfields):
Filterable but not returned
Some indexed fields can be used infilters to narrow results but are not
part of the response payload — search is lightweight discovery, not full
enrichment. Filter on them, then fetch their values with
Company Enrich.
Validation rules
Default/max limits and pagination behavior reflect current platform
behavior. See the API reference
for the formal OpenAPI contract.
Filter sizing. To match many values of a field, put them all in a single
in condition rather than many separate conditions — in compiles to one
efficient query. A single in list of up to ~5,000–10,000 values returns in a
few seconds; larger lists get progressively slower, and very large lists
(roughly 50,000+) are rejected. For bigger sets, split the values into
~5,000–10,000 chunks across multiple requests and merge. The request body is
hard-capped at 10 MB (larger bodies return 413 request_too_large),
though with typical payloads you reach the query-size limit first.Errors
Common error responses for Search:400 — Unsupported field
400 — Invalid operator
Use
=> for greater-than-or-equal and =< for less-than-or-equal. The operators >= and <= are not supported.401 — Invalid API key
API reference summary
How sorts work
Thesorts parameter orders your results. Each sort rule needs:
column— a dot-path field (e.g.,funding.total_investment_usd,headcount.total,basic_info.name).order— eitherasc(ascending) ordesc(descending).
Paginate through results
When your search matches more companies than yourlimit, use cursor-based pagination to walk through all pages.
First page: send your normal search request.
next_cursor value from the response and pass it in your next request. Keep the same filters, sorts, limit, and fields.
next_cursor is null, which means you have reached the last page.
See the full API reference for the complete OpenAPI schema.
