Ranked search
Pass asearch object to rank companies against a natural-language query.
search.query is required and must not be empty. search.mode controls which
retrieval methods run.
When you supply
filters, the API applies them as hard constraints before
keyword or semantic retrieval. Ranked results are ordered by relevance, so you
cannot combine search with sorts. Ranked search returns up to 100 results and
does not support cursor pagination in the current version.
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
basic_info.status is the company’s lifecycle in Crustdata’s entity
graph. It is the same value the person APIs return as company_status on an
employment record. Two values are defined:active: a live company record.deleted: a record Crustdata has retired. Other records can still point at it, so you meet this value most often in a person’s employment history.
deleted company is not a
result there. Filter basic_info.status when you want the check written into
the query, and read it on the response to see the lifecycle of a company you
already matched.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 filterable and sortable, but it is not returned in results.
technographics.top_technologies is filterable but likewise not returned.
technographics.technologies.name is likewise not returned, and
technographics.technologies.category and
technographics.technologies.super_category are likewise not returned.
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).
sorts is not supported with ranked search. Ranked results are ordered by
relevance.
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.
