Filter operator reference
| Operator | Meaning | Example value | Notes |
|---|---|---|---|
= | Exact match | "retool.com" | Case-insensitive for text fields |
!= | Not equal | "acquired" | |
> | Greater than | 2020 | Numbers and date strings |
< | Less than | 10000 | Numbers and date strings |
=> | Greater than or equal | "2024-01-01" | Not >= |
=< | Less than or equal | 50000000 | Not <= |
in | Value is in list | ["USA", "GBR"] | Case-sensitive. Matches if any array element matches any list value. |
not_in | Value is not in list | ["acquired"] | |
is_null | Field is null | — | No value needed |
is_not_null | Field is not null | — | No value needed |
(.) | Fuzzy text search | "openai" | Tolerates typos, matches word variants |
[.] | Exact token match | "Software Development" | No typos allowed, requires exact tokens |
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.
| Field | Type | Sortable | Description |
|---|---|---|---|
crustdata_company_id | integer | Yes | Crustdata company ID |
metadata.growth_calculation_date | datetime | Yes | Anchor date for growth metrics |
basic_info.company_id | integer | Yes | Internal source company ID |
basic_info.name | string | Yes | Company name |
basic_info.primary_domain | string | Yes | Primary website domain |
basic_info.website | string | No | Full website URL |
basic_info.professional_network_url | string | No | Company profile URL |
basic_info.professional_network_id | string | No | Company profile ID |
basic_info.company_type | string | No | e.g., "Privately Held", "Public Company" |
basic_info.year_founded | string | Yes | Year founded (string, e.g., "2017") |
basic_info.employee_count_range | string | Yes | e.g., "201-500" |
basic_info.markets | string[] | No | Market tags |
basic_info.industries | string[] | No | Industry tags |
revenue.estimated.lower_bound_usd | integer | Yes | Revenue lower bound (USD) |
revenue.estimated.upper_bound_usd | integer | Yes | Revenue upper bound (USD) |
revenue.acquisition_status | string | No | e.g., "acquired" |
funding.total_investment_usd | number | Yes | Total disclosed funding (USD) |
funding.last_round_amount_usd | number | Yes | Last funding round amount (USD) |
funding.last_fundraise_date | date | Yes | Last funding date |
funding.last_round_type | string | No | e.g., "series_a", "series_b" |
funding.investors | string[] | No | Investor names |
funding.tracxn_investors | string[] | No | Indexed investor names for filtering only |
headcount.total | integer | Yes | Total employee count |
roles.distribution | object | No | Employee counts per role |
roles.growth_6m | object | No | 6-month role growth |
roles.growth_yoy | object | No | Year-over-year role growth |
locations.country | string | Yes | HQ country (ISO3: "USA", "GBR") |
headcount.largest_headcount_country | string | Yes | Country with most employees |
locations.headquarters | string | No | Full HQ location string |
taxonomy.professional_network_industry | string | No | Primary industry label |
taxonomy.categories | string[] | No | Category tags |
followers.count | integer | Yes | Follower count |
followers.mom_percent | number | No | Month-over-month follower growth % |
followers.qoq_percent | number | No | Quarter-over-quarter follower growth % |
followers.six_months_growth_percent | number | No | 6-month follower growth % |
followers.yoy_percent | number | No | Year-over-year follower growth % |
competitors.company_ids | integer[] | No | Competitor Crustdata IDs |
competitors.websites | string[] | No | Competitor domains |
Response fields
Each company in the response can include these sections (depending onfields):
| Section | Key fields | Description |
|---|---|---|
basic_info | name, primary_domain, website, professional_network_url, year_founded | Core identity and profile |
headcount | total | Employee footprint |
funding | total_investment_usd, last_round_amount_usd, investors | Funding and investor data |
locations | country, state, city, headquarters | Headquarters location |
taxonomy | professional_network_industry, categories, professional_network_specialities | Industry and category tags |
revenue | estimated, public_markets, acquisition_status | Revenue and market data |
hiring | openings_count, openings_growth_percent | Hiring demand |
followers | count, mom_percent, yoy_percent | Social follower metrics |
social_profiles | twitter_url | Third-party profile links |
Validation rules
Default/max limits and pagination behavior reflect current platform
behavior. See the API reference
for the formal OpenAPI contract.
| Rule | Behavior |
|---|---|
filters is optional | Omitting filters matches all companies. Always use filters in production to control cost. |
fields is optional | Omitting returns all fields (large payload). Always specify in production. |
limit range | 1–1000. Default: 20. |
sorts with pagination | Always include sorts when paginating to ensure stable result ordering. |
cursor must match query | Changing filters, sorts, or fields between pages invalidates the cursor. |
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
| Detail | Value |
|---|---|
| Endpoint | POST /company/search |
| Auth | Bearer token + x-api-version: 2025-11-01 |
| Request | filters (condition or group), fields, sorts, limit, cursor |
| Response | { companies, next_cursor, total_count } |
| Pagination | Cursor-based. Pass next_cursor in cursor. null = last page. |
| Empty result | 200 with "companies": [] |
| Errors | 400 (bad field/operator), 401 (bad auth), 403 (permission/credits), 500 (server error) |

