Skip to main content
The Company APIs help you answer practical business questions: Which companies match your target market? What does this company look like before outreach? What are the valid filter values for my search? There are four core endpoints, each designed for a different step in your workflow.
APIWhat it doesBest for
SearchFind companies matching structured filtersBuilding lists, market scans, segmentation
AutocompleteDiscover valid field values for search filtersBuilding filter dropdowns, validating filter inputs
EnrichGet a detailed company profile from a known identifierResearch, scoring, personalization
IdentifyResolve a company from partial info (name, domain, URL, ID)CRM deduplication, lead routing, entity resolution

At a glance

SearchAutocompleteEnrichIdentify
Endpoint/company/search/company/search/autocomplete/company/enrich/company/identify
Data sourceCrustdata indexedCrustdata indexedCrustdata indexedCrustdata indexed
PurposeFind companies by filtersDiscover valid filter valuesGet full company profileMatch partial info to a company
Filter syntax{ "field": "dotpath", "type": "op", "value": ... }Optional filters paramN/AN/A
PaginationCursor-based
Country formatISO3 ("USA")ISO3 ("USA")
Field selectionfields = dot-pathsfields = section groupsfields = section groups
Error codes400, 401, 403, 500400, 401, 500400, 401, 403, 404, 500400, 401, 403, 404, 500

Before you start

You need:
  • A Crustdata API key
  • A terminal with curl (or any HTTP client)
  • The required header: x-api-version: 2025-11-01
All requests use Bearer token authentication and require the API version header:
--header 'authorization: Bearer YOUR_API_KEY'
--header 'x-api-version: 2025-11-01'
Replace YOUR_API_KEY in each example with your actual API key.
Convention used in these docs: Information labeled “OpenAPI contract” reflects the formal API specification. Information labeled “Current platform behavior” (such as rate limits, credit costs, and max page ranges) describes observed behavior that may change. See the API reference for the formal OpenAPI spec.

Quickstart: enrich a company from a domain

The fastest way to get started is to enrich a company from its website domain. This single request returns the full company profile.
curl --request POST \
  --url https://api.crustdata.com/company/enrich \
  --header 'authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json' \
  --header 'x-api-version: 2025-11-01' \
  --data '{
    "domains": ["retool.com"]
  }'
Response trimmed for clarity. The full response includes headcount, funding, hiring, competitors, and more.
The response is an object with a results array — one entry per identifier you submitted:
  • matched_on — the input you sent (retool.com).
  • match_type — which identifier type was used (domain, name, crustdata_company_id, or professional_network_profile_url).
  • confidence_score — how confident the match is (1.0 = exact match).
  • company_data — the full company profile, including basic_info, headcount, funding, locations, taxonomy, and more.

Which API should you start with?

If you want to…Start with
Build a target account list by geography, industry, or fundingSearch
Discover valid filter values before building search queriesAutocomplete
Get richer context for scoring, prioritization, or diligenceEnrich

Common workflows

  1. Discovery — Start with Autocomplete to find valid filter values, then Search to build your list, then Enrich the top matches for full profiles.
  2. Data cleanup — Use Enrich with a domain to resolve ambiguous records from CRM imports.
  3. Lead routingEnrich incoming domains to get a stable company ID and industry, then Search for similar companies.

Error handling

All Company API endpoints return structured errors. The exact status codes vary by endpoint:
StatusMeaningApplies to
400Invalid request (bad field, wrong operator, malformed filters)All endpoints
401Invalid or missing API keyAll endpoints
403Permission denied or insufficient creditsSearch, Enrich, Identify
404No data found (per spec)Enrich, Identify
500Internal server errorAll endpoints
Error response format:
{
    "error": {
        "type": "invalid_request",
        "message": "Unsupported columns in conditions: ['nonexistent_field']",
        "metadata": []
    }
}
For 401, the format is simpler: {"message": "Invalid API key in request"}.

Terminology reference

These are the most common terms used across the Company APIs:
You sayAPI request fieldUsed in
Company domaindomainsEnrich, Identify
LinkedIn company URLprofessional_network_profile_urlsEnrich, Identify
Company namenamesEnrich, Identify
Company IDcrustdata_company_idsEnrich, Identify
HQ countrylocations.hq_country (ISO3: "USA", "GBR")Search
Industrytaxonomy.linkedin_industry or basic_info.industriesSearch
Employee countheadcount.totalSearch
Total fundingfunding.total_investment_usdSearch
LinkedIn company URL field (response)basic_info.professional_network_urlSearch, Enrich, Identify
LinkedIn company ID field (response)basic_info.professional_network_idSearch, Enrich, Identify
Search uses ISO3 country codes ("USA", "GBR"). Use Autocomplete to discover exact values for indexed Search filters.

Company ID fields

The company data model includes two ID fields:
FieldMeaningWhen to use
crustdata_company_idStable Crustdata company identifier. Appears at the top level of search results and inside company_data.Use this for Search → Enrich workflows. Pass it in crustdata_company_ids when calling Enrich.
basic_info.company_idInternal source company identifier. May match crustdata_company_id but is not guaranteed to.Generally, prefer crustdata_company_id for cross-API workflows.

Common footguns

MistakeFix
Using "United States" in SearchSearch uses ISO3 codes: "USA", "GBR". Use Autocomplete to discover exact values.
Using >= or <= operators in SearchUse => and =< instead.
Mixing identifier types in EnrichSend one type per request: domains, names, crustdata_company_ids, or professional_network_profile_urls.
Confusing Search fields with Enrich fieldsSearch fields are dot-path response fields (e.g., basic_info.name). Enrich fields are section groups (e.g., basic_info).
Omitting fields in SearchReturns all fields per company — very large payloads. Always specify fields in production.

Cross-endpoint conventions

For data format differences, fields semantics, error handling, retry guidance, pagination, and other shared rules, see the Company API Conventions page.

Next steps