Skip to main content
Use this when you have partial company information and need to resolve it to a specific Crustdata company record — for CRM deduplication, lead routing, entity resolution, or pre-enrichment matching. The Company Identify API takes an identifier you have — a website domain, a LinkedIn URL, a company name, or a Crustdata company ID — and returns one or more matched companies ranked by confidence score. The response uses the same company_data schema as Enrich (the full CompanyAll model), but Identify is designed for entity resolution rather than deep profiling.
Examples on this page show only basic_info fields for readability. The actual company_data object follows the full CompanyAll schema and may include additional sections.
Every request goes to the same endpoint:
POST https://api.crustdata.com/company/identify
Replace YOUR_API_KEY in each example with your actual API key. All requests require the x-api-version: 2025-11-01 header.

Identify by domain

Pass a website domain in the domains array to find the matching company.
curl --request POST \
  --url https://api.crustdata.com/company/identify \
  --header 'authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json' \
  --header 'x-api-version: 2025-11-01' \
  --data '{
    "domains": ["serverobotics.com"]
  }'

Identify by company name

Name-based identification often returns multiple candidates. Check confidence_score and primary_domain to pick the right match.
curl --request POST \
  --url https://api.crustdata.com/company/identify \
  --header 'authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json' \
  --header 'x-api-version: 2025-11-01' \
  --data '{
    "names": ["Serve Robotics"]
  }'
When multiple matches are returned, use primary_domain and employee_count_range to disambiguate. The first match is not always the right one for name-based lookups.

Identify by LinkedIn URL

curl --request POST \
  --url https://api.crustdata.com/company/identify \
  --header 'authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json' \
  --header 'x-api-version: 2025-11-01' \
  --data '{
    "professional_network_profile_urls": [
      "https://www.linkedin.com/company/mintlify"
    ]
  }'
LinkedIn URL lookups are direct matches — they typically return a single match with high confidence.

Identify by Crustdata company ID

curl --request POST \
  --url https://api.crustdata.com/company/identify \
  --header 'authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json' \
  --header 'x-api-version: 2025-11-01' \
  --data '{
    "crustdata_company_ids": [628895]
  }'
Company ID lookups return an exact match.

Identify vs Enrich

IdentifyEnrich
Endpoint/company/identify/company/enrich
Response schemaCompanyAll (same schema as Enrich)CompanyAll (full profile)
Best forMatching, deduplication, entity resolutionResearch, scoring, diligence
Use whenYou need to resolve “which company is this?”You need detailed company data
Common pattern: Use Identify to resolve ambiguous inputs, then pass the crustdata_company_id from the best match into Enrich for the full profile.

Understanding the response

The Identify API returns an object with a results array — one entry per identifier you submitted. Each entry has three fields:
  • matched_on — the identifier you submitted (the domain, URL, name, or ID).
  • match_type — which identifier type was used. Values: domain, name, crustdata_company_id, professional_network_profile_url.
  • matches — an array of candidate companies ranked by relevance. Each match includes a confidence_score and a company_data object with basic_info.

No-match behavior

When no company matches the identifier, current platform behavior returns 200 with an empty matches array:
{
    "results": [
        {
            "matched_on": "thisdomaindoesnotexist12345xyz.com",
            "match_type": "domain",
            "matches": []
        }
    ]
}
The OpenAPI spec also defines a 404 response for Identify. Current platform behavior returns 200 with empty matches, but integrations should handle both. See Conventions.

Request parameter reference

ParameterTypeRequiredDescription
domainsstring[]Exactly one identifier type requiredWebsite domains to identify.
professional_network_profile_urlsstring[]Exactly one identifier type requiredLinkedIn company URLs to identify.
namesstring[]Exactly one identifier type requiredCompany names to identify.
crustdata_company_idsinteger[]Exactly one identifier type requiredCrustdata company IDs to identify.
fieldsstring[]NoField groups to include in company_data. Same values as Enrich fields.
exact_matchbooleanNoSet to true for strict domain matching.
Current platform behavior: Submit exactly one identifier type per request.
The Identify request schema is the same as the Enrich request schemafields and exact_match are supported.

Errors

StatusMeaning
400Invalid request — missing or multiple identifier types, or malformed input.
401Invalid or missing API key.
403Permission denied or insufficient credits.
404No data found.
500Internal server error.
400 — Missing identifier
{
    "error": {
        "type": "invalid_request",
        "message": "Exactly one identifier must be provided: crustdata_company_ids, names, domains, or professional_network_profile_urls",
        "metadata": []
    }
}
401 — Invalid API key
{
    "message": "Invalid API key in request"
}

API reference summary

DetailValue
EndpointPOST /company/identify
AuthBearer token + x-api-version: 2025-11-01
RequestOne identifier type: domains, names, crustdata_company_ids, or professional_network_profile_urls.
Response{ "results": [{ "matched_on", "match_type", "matches": [{ "confidence_score", "company_data" }] }] }
Errors400 (bad request), 401 (bad auth), 403 (permission), 404 (no match), 500 (server error)
For shared conventions, error handling, and retry guidance, see Conventions.

What to do next

  • Get the full profile — pass the crustdata_company_id from Identify into Enrich for detailed company data.
  • Search for similar companies — use Company Search to find companies matching the same industry or headcount range.
  • See more examples — browse Company Examples for ready-to-copy patterns.