Skip to main content
This page documents conventions that apply across the public Company API endpoints. Refer to this page instead of memorizing per-endpoint notes.

Authentication

All requests require:
--header 'authorization: Bearer YOUR_API_KEY'
--header 'x-api-version: 2025-11-01'

Shared identifier parameters

Enrich and Identify accept the same identifier arrays. Submit exactly one type per request.
ParameterTypeExample
domainsstring[]["hubspot.com"]
namesstring[]["Retool"]
crustdata_company_idsinteger[][628895]
professional_network_profile_urlsstring[]["https://www.linkedin.com/company/mintlify"]
Current platform behavior: Mixing identifier types in a single request is not supported. Submit one type per request.

match_type values

The match_type field in Enrich and Identify responses uses these exact values:
ValueWhen returned
domainInput was a domain
nameInput was a company name
crustdata_company_idInput was a Crustdata ID
professional_network_profile_urlInput was a LinkedIn URL

fields parameter semantics

Endpointfields typeExampleNotes
SearchDot-path response fields["basic_info.name", "headcount.total"]Only indexed fields are available
EnrichSection group names["basic_info", "headcount", "funding"]Omit to get all sections
IdentifySection group names["basic_info"]Same schema as Enrich
AutocompleteNot supported

Data format differences by endpoint

year_founded

EndpointTypeExampleNotes
Searchstring"2017"Year only
Enrich / Identifystring"2017-01-01" or "2017"Format varies by data source

Country format

EndpointFormatExample
Search / AutocompleteISO3 code"USA", "GBR", "CAN"
Enrich / IdentifyISO3 code"USA"

LinkedIn fields

All public company-returning endpoints (Search, Enrich, Identify) return LinkedIn fields under basic_info:
FieldPath
LinkedIn URLbasic_info.professional_network_url
LinkedIn IDbasic_info.professional_network_id

Error shapes

Standard error format (400, 403, 404, 500)

{
    "error": {
        "type": "invalid_request",
        "message": "Human-readable description of the error",
        "metadata": []
    }
}
Error type values: invalid_request, authentication_error, insufficient_credits, permission_error, rate_limit_error, internal_error.

401 — authentication error

Uses a different shape:
{ "message": "Invalid API key in request" }

No-match behavior

EndpointNo matches foundPartial match (batch)
Enrich200 with empty matches: []200 — matched items have data, unmatched have matches: []
Identify200 with empty matches: []Same as Enrich
Search200 with empty companies: []N/A
Autocomplete200 with empty suggestions: []N/A
The OpenAPI spec defines 404 responses for Enrich and Identify, but current platform behavior returns 200 with empty matches: []. Build your integration to handle both.

Pagination

EndpointMethodNext pageStop condition
SearchCursor-basedPass next_cursor as cursor in the next requestnext_cursor is null
All othersNo pagination

Integration guidance

SituationAction
400 errorFix the request. Do not retry.
401 errorCheck API key. Do not retry.
403 errorCheck permissions or credit balance. Do not retry automatically.
404 errorIdentifier not found. Try a different identifier or type. Do not retry.
500 errorRetry with exponential backoff (1s, 2s, 4s). Stop after 3 retries.
Rate limit hitBack off for 60 seconds, then retry.
next_cursor is nullNo more pages — stop paginating.
Empty matches / companiesBroaden filters or check identifier for typos.

Ordering guarantees

Current platform behavior — not guaranteed by the OpenAPI contract:
  • Search: Results are ordered by the sorts you specify. Without sorts, order is undefined — always include sorts for stable pagination.
  • Enrich / Identify: Batch results correspond to the input index position.
  • Enrich / Identify matches: Matches within each result are ordered by confidence_score descending (highest confidence first).
  • Autocomplete: Suggestions are ordered by relevance to the query, then by document frequency.

Nullability

Many response fields are nullable. Key fields to handle:
FieldNullableWhen null
next_cursorYesNo more pages
total_countYesCount unavailable
year_foundedYesData not available
professional_network_urlYesNo LinkedIn profile
company_typeYesClassification unknown
revenue.estimated.lower_bound_usdYesRevenue data unavailable

Rate limits

Current platform behavior — not specified in the OpenAPI contract:
  • All endpoints: 60 requests per minute.
  • Credits: Search costs 1 credit per 100 companies returned. Enrich costs credits per company enriched.