Skip to main content
Use this when you need to discover valid filter values before building a Company Search query — for example, finding the exact industry label or country code the API expects. The Company Autocomplete API helps you discover the exact field values the indexed Company Search API expects. Use it before you build filters for industries, geographies, company types, funding stages, and more. Every request goes to the same endpoint:
POST https://api.crustdata.com/company/search/autocomplete
Replace YOUR_API_KEY in each example with your actual API key. All requests require the x-api-version: 2025-11-01 header.

When to use autocomplete

Use this endpoint when you want to:
  • Build filter dropdowns or typeahead inputs in your product.
  • Validate the exact values a Company Search filter expects.
  • Explore the dataset vocabulary for a field before writing search queries.

Your first autocomplete request: discover industry values

Start with the field you want to query and a partial search string. Here, tech returns matching values from basic_info.industries.
curl --request POST \
	--url https://api.crustdata.com/company/search/autocomplete \
	--header 'authorization: Bearer YOUR_API_KEY' \
	--header 'content-type: application/json' \
	--header 'x-api-version: 2025-11-01' \
	--data '{
		"field": "basic_info.industries",
		"query": "tech",
		"limit": 5
	}'
Response trimmed for clarity.

Understanding the response

Autocomplete returns an object with one key:
  • suggestions — an array of matching values, sorted by relevance. Each suggestion contains:
    • value — the exact field value to reuse in a Company Search filter.
    • document_count — how many companies contain that value.
Use the returned value exactly as-is in your next search request. This avoids empty results caused by typos, casing differences, or unsupported variants. When query is non-empty, suggestions are ranked by match relevance. When query is an empty string, suggestions are ranked by frequency.

Request fields

FieldTypeRequiredDescription
fieldstringYesSearchable company field to autocomplete, such as basic_info.industries, taxonomy.linkedin_industry, or locations.hq_country.
querystringYesPartial text to match. Use "" to get the most common values.
limitintegerNoMaximum suggestions to return. Default: 20. Max: 100.
filtersobjectNoOptional condition or nested and/or group to narrow the suggestion pool.
Current platform behavior — not specified in the OpenAPI contract: default limit is 20, max is 100.

Get the most common values for a field

Use an empty string for query when you want the most frequent values instead of a text match. This is useful when you are exploring a field for the first time.
curl --request POST \
	--url https://api.crustdata.com/company/search/autocomplete \
	--header 'authorization: Bearer YOUR_API_KEY' \
	--header 'content-type: application/json' \
	--header 'x-api-version: 2025-11-01' \
	--data '{
		"field": "basic_info.industries",
		"query": "",
		"limit": 10
	}'
The response format is the same. Suggestions are ranked by frequency, so you can quickly see the most common values in the dataset.

Narrow suggestions with filters

Autocomplete can scope results to a subset of companies. The filters field accepts either:
  • a single condition with field, type, and value
  • a logical group with op and conditions
This example returns industry suggestions only for US-based companies.
curl --request POST \
	--url https://api.crustdata.com/company/search/autocomplete \
	--header 'authorization: Bearer YOUR_API_KEY' \
	--header 'content-type: application/json' \
	--header 'x-api-version: 2025-11-01' \
	--data '{
		"field": "basic_info.industries",
		"query": "",
		"limit": 5,
		"filters": {
			"field": "locations.hq_country",
			"type": "=",
			"value": "USA"
		}
	}'
Use indexed values in filters. For example, locations.hq_country uses values such as USA, GBR, and CAN.
You can also use nested and/or groups. The filter structure is similar to Company Search but uses its own AutocompleteFilterCondition schema — filter values are always strings:
curl --request POST \
  --url https://api.crustdata.com/company/search/autocomplete \
  --header 'authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json' \
  --header 'x-api-version: 2025-11-01' \
  --data '{
    "field": "taxonomy.linkedin_industry",
    "query": "",
    "limit": 5,
    "filters": {
      "op": "and",
      "conditions": [
        { "field": "locations.hq_country", "type": "=", "value": "USA" },
        { "field": "headcount.total", "type": ">", "value": "100" }
      ]
    }
  }'
Autocomplete filter values are always strings per the API contract, even for numeric comparisons. Use "100" not 100.

Common fields to autocomplete

FieldWhy you would use it
basic_info.industriesFind exact industry labels before building industry filters.
taxonomy.linkedin_industryMatch LinkedIn industry values used in company search.
locations.hq_countryDiscover country values used by the indexed dataset.
basic_info.company_typeExplore company type labels used in the dataset.
funding.last_round_typeFind valid funding stage labels before filtering by recent financing data.

A common workflow looks like this:
  1. Call Autocomplete with a partial query.
  2. Copy the exact value from the response.
  3. Use that value in Company Search.
For example, if autocomplete returns Technology, Information and Media, use that exact string in a search filter instead of guessing another variant.

Common errors and edge cases

If no values match your query, the API returns an empty array:
{
    "suggestions": []
}
If you send an unsupported field name, the API returns an error such as:
{
    "error": {
        "type": "invalid_request",
        "message": "Unsupported field: invalid_field",
        "metadata": []
    }
}
If that happens, double-check the field path and use a field that is available in the indexed Company Search schema.

API reference summary

DetailValue
EndpointPOST /company/search/autocomplete
AuthBearer token + x-api-version: 2025-11-01
Required paramsfield, query
Optional paramslimit (default: 20, max: 100), filters
Response{ "suggestions": [{ "value": "...", "document_count": N }] }
Empty result200 with "suggestions": []
Errors400 (unsupported field), 401 (bad auth), 500 (server error)
For shared conventions, error handling, and retry guidance, see Conventions. See the full API reference for the complete OpenAPI schema.

What to do next