Replace
YOUR_API_KEY in each example with your actual API key. All
requests require the x-api-version: 2025-11-01 header.Your first enrichment: look up a company by domain
The simplest enrichment takes a website domain and returns the full company profile. Pass the domain in thedomains array.
Response trimmed for clarity.
Understanding the response
The Enrich API returns an object with aresults 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. Possible values:domain,name,crustdata_company_id,professional_network_profile_url.matches— an array of candidate companies. Each match includes aconfidence_scoreand the fullcompany_dataobject.
confidence_score indicates the best match. Use exact_match: true to restrict to exact domain matches only (see below).
How to interpret results
- Multiple matches: If
matchescontains more than one entry, checkconfidence_score— the highest score is the best match. Useprimary_domainto verify. - Empty
matchesarray: The identifier did not match any company. Check for typos or try a different identifier type. confidence_score: 1.0: Exact match. Lower scores indicate fuzzy or partial matches.
What is inside company_data?
The enriched company_data object contains the following sections:
| Section | Key fields | Description |
|---|---|---|
basic_info | name, primary_domain, website, professional_network_url, year_founded, description, company_type, employee_count_range, industries | Core identity and classification |
headcount | total, by_role_absolute, by_role_percent, by_region_absolute, growth_percent | Employee footprint and growth |
funding | total_investment_usd, last_round_amount_usd, last_fundraise_date, last_round_type, investors | Funding rounds and investor data |
locations | hq_country, hq_state, hq_city, headquarters | Headquarters location |
taxonomy | linkedin_industry, crunchbase_categories, linkedin_specialities | Industry and category tags |
revenue | estimated (lower_bound_usd, upper_bound_usd), public_markets, acquisition_status | Revenue estimates and market data |
hiring | openings_count, openings_growth_percent, recent_titles_csv | Hiring demand and open roles |
followers | count, mom_percent, qoq_percent, yoy_percent | Social follower metrics |
seo | total_organic_results, monthly_organic_clicks, monthly_google_ads_budget | SEO and paid search metrics |
competitors | company_ids, websites | Competitor data |
social_profiles | crunchbase.url, twitter_url | Third-party profile links |
web_traffic | domain_traffic (monthly_visitors, traffic sources) | Website traffic and sources |
employee_reviews | overall_rating, culture_rating, work_life_balance_rating | Glassdoor-style employee ratings |
people | decision_makers, founders, cxos | Key people at the company |
news | article_url, article_title, article_publish_date | Recent news articles |
software_reviews | review_count, average_rating | G2/Capterra-style software ratings |
status | state (enriching, not_found) | Enrichment processing status |
Enrich by LinkedIn URL
If you have a LinkedIn company page URL, pass it inprofessional_network_profile_urls. This gives you a direct match.
Response trimmed for clarity.
Enrich by company name
You can also enrich by company name. This is useful when you only have a name from a form submission or event badge scan.confidence_score and primary_domain to pick the right match.
Enrich by company ID
If you already have a Crustdata company ID (from a previous search call), pass it incrustdata_company_ids for an exact lookup.
Use exact match for stricter domain matching
By default, domain-based enrichment returns fuzzy matches (e.g.,retool.com may also match webretool.com). Set exact_match: true to restrict results to companies whose primary_domain exactly matches your input.
Response trimmed for clarity.
exact_match: true, only one match is returned instead of many fuzzy candidates. Use this when you are confident in the domain and want clean, unambiguous results.
Batch enrichment: look up multiple companies at once
You can enrich multiple companies in a single request by passing multiple identifiers in the array.Batch enrichment tips
- Submit one identifier type per request. Mixing identifier types (e.g., sending both
domainsandnames) is not supported. - Each entry in the response corresponds to the input at the same position, so you can match results back to your input list by index.
- If some identifiers fail to match, their
matchesarray will be empty, but the request still succeeds for the others.
Choosing the right identifier
Each identifier type has trade-offs in precision and convenience.| Domain | LinkedIn URL | Company Name | Company ID | |
|---|---|---|---|---|
| Precision | High (use exact_match) | High — direct match | Lower — may be ambiguous | Exact — unique ID |
| Best for | CRM cleanup, inbound leads | LinkedIn-sourced data | Fuzzy matching | Internal pipelines |
| Typical matches | 1 with exact_match | 1 | Multiple candidates | 1 |
Common workflow: Search then Enrich
The most powerful pattern combines Company Search with Company Enrich. Search finds companies matching your criteria; Enrich gets the full profile for each match. Step 1: Search for well-funded software companies.crustdata_company_id values from the search results and pass them in crustdata_company_ids to enrich.
Request parameter reference
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
domains | string[] | Exactly one identifier type required | — | Website domains to enrich. |
professional_network_profile_urls | string[] | Exactly one identifier type required | — | LinkedIn company URLs to enrich. |
names | string[] | Exactly one identifier type required | — | Company names to enrich. |
crustdata_company_ids | integer[] | Exactly one identifier type required | — | Crustdata company IDs to enrich. |
fields | string[] | No | All | Specific field groups to include in the response. |
exact_match | boolean | No | null | Set to true to force exact domain matching. |
Current platform behavior: Submit exactly one identifier type per request.
Valid fields values
Use the fields parameter to limit which sections are returned in company_data. If fields is omitted, all sections are returned.
| Field group | What it returns |
|---|---|
basic_info | Company name, domain, website, LinkedIn URL, industry, type, year founded |
headcount | Employee count, role/region breakdowns, growth metrics |
funding | Total funding, last round details, investor list |
locations | HQ country, state, city, full headquarters address |
taxonomy | LinkedIn industry, Crunchbase categories, LinkedIn specialities |
revenue | Revenue estimates (lower/upper bound), public markets, acquisition status |
hiring | Open job count, hiring growth rate, recent job titles |
followers | Follower count, month-over-month/quarter/year growth |
seo | Organic search results, monthly organic clicks, Google Ads budget |
competitors | Competitor company IDs and websites |
social_profiles | Crunchbase URL, Twitter URL |
web_traffic | Monthly visitors, traffic source breakdown |
employee_reviews | Overall, culture, and work-life balance ratings |
people | Decision makers, founders, C-level executives |
news | Recent article URLs, titles, and publish dates |
software_reviews | Review count and average rating from software review sites |
status | Enrichment processing state (enriching, not found) |
Response fields reference
The response is an object with aresults array. Each item in the results array contains:
| Field | Type | Description |
|---|---|---|
matched_on | string | The input identifier you submitted |
match_type | string | domain, name, crustdata_company_id, professional_network_profile_url |
matches | array | Array of candidate matches (may be empty for no-match) |
matches[].confidence_score | number | How confident the match is. Higher is better. |
matches[].company_data | object | Full enriched company profile (see table above) |
Validation rules
These rules reflect current platform behavior. See the API reference for the formal OpenAPI contract.
| Rule | Behavior |
|---|---|
| One identifier type per request | Submit domains, names, crustdata_company_ids, or professional_network_profile_urls — not a mix. Mixing types is not supported. |
fields is optional | Omitting returns all sections. Pass section group names to reduce payload. |
exact_match is optional | Default is null (auto-detect). Set true for strict domain-only matching. |
| Batch size | You can submit multiple values in one identifier array. Each is matched independently. |
Errors
No-match behavior
When enriching, each identifier is matched independently:- Full match: All identifiers match — each entry in
resultshas populatedmatches. - Partial match: Some identifiers match and others do not. Matched identifiers have
company_data; unmatched identifiers return an emptymatches: []array. - No match: All identifiers fail to match. Current platform behavior returns
200 OKwith emptymatches: []for each 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. See Conventions for the full cross-endpoint breakdown.No match — 200 with empty matches
Rate limits and credits
- Rate limit: 60 requests per minute. Exceeding this may result in throttled responses.
- Credits: Each enriched company costs credits. Insufficient credits may result in a
403error.
Rate limits and credit costs reflect current platform behavior and are not specified in the OpenAPI contract.
API reference summary
| Detail | Value |
|---|---|
| Endpoint | POST /company/enrich |
| Auth | Bearer token + x-api-version: 2025-11-01 |
| Request | One identifier type: domains, names, crustdata_company_ids, or professional_network_profile_urls. Optional: fields, exact_match. |
| Response | Object with results array: { results: [{ matched_on, match_type, matches: [{ confidence_score, company_data }] }] } |
| No match | 200 with empty matches: [] for unmatched identifiers. The OpenAPI spec also defines 404; handle both. See Conventions. |
| Errors | 400 (bad request), 401 (bad auth), 403 (permission/credits), 404 (per spec), 500 (server error) |
What to do next
- Search for companies — use Company Search to find companies by industry, funding, headcount, and more.
- Discover filter values — use Autocomplete to find valid values before building search filters.
- See more examples — browse company examples for ready-to-copy patterns.

