Skip to main content
Reference material for Company Enrich: request parameters, response fields, valid fields values, company_data section catalog, validation rules, and error responses. For walk-through examples, see Company Enrich and Identifiers.

Request parameter reference

ParameterTypeRequiredDefaultDescription
domainsstring[]Exactly one identifier type requiredWebsite domains to enrich.
professional_network_profile_urlsstring[]Exactly one identifier type requiredCompany profile URLs to enrich.
namesstring[]Exactly one identifier type requiredCompany names to enrich.
crustdata_company_idsinteger[]Exactly one identifier type requiredCrustdata company IDs to enrich.
fieldsstring[]No["basic_info"]Specific field groups to include in the response. Defaults to basic_info only (plus crustdata_company_id).
exact_matchbooleanNonullSet to true to force exact domain matching.
Current platform behavior: Submit exactly one identifier type per request.

Response fields reference

The response is a top-level array. Each item in the array contains:
FieldTypeDescription
matched_onstringThe input identifier you submitted
match_typestringdomain, name, crustdata_company_id, professional_network_profile_url
matchesarrayArray of candidate matches (may be empty for no-match)
matches[].confidence_scorenumberHow confident the match is. Higher is better.
matches[].company_dataobjectFull enriched company profile. See company_data sections below.

Using the fields parameter

If you omit fields, company_data contains only crustdata_company_id and basic_info. To get headcount, funding, people, hiring, or any other section, you must list it explicitly in fields.
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"]
  }'
Each entry in fields is the name of a section group. Include basic_info explicitly if you want to keep it alongside other sections.

Valid fields values

Field groupWhat it returns
basic_infoCompany name, domain, website, profile URL, industry, type, year founded
headcountEmployee count, role/region breakdowns, growth metrics
fundingTotal funding, last round details, investor list
locationsHQ country, state, city, full headquarters address
taxonomyIndustry, category, and speciality fields
revenueRevenue estimates (lower/upper bound), public markets, acquisition status
hiringOpen job count, hiring growth rate, recent job titles
followersFollower count, month-over-month/quarter/year growth
seoOrganic search results, monthly organic clicks, Google Ads budget
competitorsCompetitor company IDs and websites
social_profilesExternal profile links
web_trafficMonthly visitors, traffic source breakdown
employee_reviewsOverall, culture, and work-life balance ratings
peopleDecision makers, founders, C-level executives
newsRecent article URLs, titles, and publish dates
software_reviewsReview count and average rating
statusEnrichment processing state (enriching, not found)

company_data sections

The enriched company_data object contains the following sections. Each section maps to a fields value above.
SectionKey fieldsDescription
basic_infoname, primary_domain, website, professional_network_url, year_founded, description, company_type, employee_count_range, industriesCore identity and classification
headcounttotal, by_role_absolute, by_role_percent, by_region_absolute, growth_percentEmployee footprint and growth
fundingtotal_investment_usd, last_round_amount_usd, last_fundraise_date, last_round_type, investorsFunding and investor data
locationshq_country, hq_state, hq_city, headquartersHeadquarters location
taxonomycategories, professional_network_industry, professional_network_specialitiesIndustry and classification data
revenueestimated (lower_bound_usd, upper_bound_usd), public_markets, acquisition_statusRevenue estimates and market data
hiringopenings_count, openings_growth_percent, recent_titles_csvHiring demand and open roles
followerscount, mom_percent, qoq_percent, yoy_percentAudience and follower metrics
seototal_organic_results, monthly_organic_clicks, monthly_google_ads_budgetSearch visibility metrics
competitorscompany_ids, websitesCompetitor data
social_profilestwitter_url and other external profile linksExternal profiles and links
web_trafficdomain_traffic (monthly_visitors, traffic sources)Website traffic and sources
employee_reviewsoverall_rating, culture_and_values_rating, work_life_balance_rating, review_countEmployee review data
peopledecision_makers, founders, cxosKey people at the company
newsarticle_url, article_title, article_publish_dateRecent news articles
software_reviewsreview_count, average_ratingSoftware review metrics
statusstate (enriching, not_found)Enrichment processing status

Validation rules

These rules reflect current platform behavior. See the API reference for the formal OpenAPI contract.
RuleBehavior
One identifier type per requestSubmit domains, names, crustdata_company_ids, or professional_network_profile_urls — not a mix. Mixing types is not supported.
fields is optionalOmitting returns basic_info only. Pass section group names to include more sections.
exact_match is optionalDefault is null (auto-detect). Set true for strict domain-only matching.
Multi-company requestsYou can submit multiple values in one identifier array. Each is matched independently.

No-match behavior

When enriching, each identifier is matched independently:
  • Full match: All identifiers match — each array entry has populated matches.
  • Partial match: Some identifiers match and others do not. Matched identifiers have company_data; unmatched identifiers return an empty matches: [] array.
  • No match: All identifiers fail to match. Current platform behavior returns 200 OK with empty matches: [] for each array entry.
The OpenAPI spec also defines a 404 response for this endpoint. Current platform behavior returns 200 with empty matches, but integrations should handle both 200 empty-match and 404 cases.
No match — 200 with empty matches
[
    {
        "matched_on": "nonexistent-domain.com",
        "match_type": "domain",
        "matches": []
    }
]

Partial batch failure

When enriching multiple identifiers, some may match and others may not. The request still succeeds with 200:
[
    {
        "matched_on": "hubspot.com",
        "match_type": "domain",
        "matches": [
            {
                "confidence_score": 1.0,
                "company_data": {
                    "basic_info": {
                        "name": "HubSpot",
                        "primary_domain": "hubspot.com"
                    }
                }
            }
        ]
    },
    {
        "matched_on": "nonexistent-domain.com",
        "match_type": "domain",
        "matches": []
    }
]
Action: Iterate over the top-level array. For each entry, check matches.length > 0 before accessing company_data. Log or retry unmatched identifiers separately.

Errors

Common error responses for Enrich:
400 — Bad request
{
    "error": {
        "type": "invalid_request",
        "message": "Exactly one identifier type must be provided.",
        "metadata": []
    }
}
401 — Invalid API key
{
    "message": "Invalid API key in request"
}

API reference summary

DetailValue
EndpointPOST /company/enrich
AuthBearer token + x-api-version: 2025-11-01
RequestOne identifier type: domains, names, crustdata_company_ids, or professional_network_profile_urls. Optional: fields, exact_match.
ResponseTop-level array: [{ matched_on, match_type, matches: [{ confidence_score, company_data }] }]
No match200 with empty matches: [] for unmatched identifiers. The OpenAPI spec also defines 404; handle both.
Errors400 (bad request), 401 (bad auth), 403 (permission/credits), 404 (per spec), 500 (server error)
See the full API reference for the complete OpenAPI schema.