> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crustdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Company Enrich reference

> Reference for Company Enrich: request parameters, response fields, valid field groups, company_data sections, validation rules, and error responses.

Reference material for [Company Enrich](/company-docs/enrichment/introduction): request
parameters, response fields, valid `fields` values, `company_data` section
catalog, validation rules, and error responses.

For walk-through examples, see [Company Enrich](/company-docs/enrichment/introduction) and
[Examples](/company-docs/enrichment/examples).

***

## 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 | —                | Company profile 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                                   | `["basic_info"]` | Specific field groups to include in the response. Defaults to `basic_info` only (plus `crustdata_company_id`). |
| `exact_match`                       | boolean    | No                                   | `null`           | Set to `true` to force exact domain matching.                                                                  |

<Note>
  **Current platform behavior:** Submit exactly one identifier type per
  request.
</Note>

## Response fields reference

The response is a top-level array. Each item in the 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 [`company_data` sections](#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`.

<CodeGroup>
  ```bash Request — default fields theme={"theme":"vitesse-black"}
  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"]
    }'
  ```

  ```bash Request — multiple sections theme={"theme":"vitesse-black"}
  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"],
      "fields": ["basic_info", "headcount", "funding", "people"]
    }'
  ```
</CodeGroup>

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 group        | What it returns                                                           |
| ------------------ | ------------------------------------------------------------------------- |
| `basic_info`       | Company name, domain, website, profile 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, headquarters address, street address, office addresses |
| `taxonomy`         | Industry, category, NAICS, SIC, and speciality fields                     |
| `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`      | Aggregated competitor domains and paid/organic SEO competitors            |
| `social_profiles`  | Crunchbase, professional network, and Twitter profile links               |
| `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                                           |
| `public_launches`  | Product launch data — launches, makers, reviews, and ratings              |
| `market_intel`     | Product and review intelligence — products, reviews, and ratings          |
| `reviews`          | Other (non-employee) reviews bucket                                       |

### `company_data` sections

The enriched `company_data` object contains the following sections. Each
section maps to a `fields` value above.

| Section                | Key fields                                                                                                                                                                                                                                  | Description                           |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- |
| `crustdata_company_id` | integer                                                                                                                                                                                                                                     | Top-level Crustdata identifier        |
| `updated_at`           | date-time string (nullable)                                                                                                                                                                                                                 | Top-level last-refresh timestamp      |
| `indexed_at`           | date-time string (nullable)                                                                                                                                                                                                                 | Top-level last-indexed timestamp      |
| `basic_info`           | `name`, `primary_domain`, `all_domains`, `website`, `professional_network_url`, `professional_network_id`, `profile_name`, `logo_permalink`, `year_founded`, `description`, `company_type`, `employee_count_range`, `markets`, `industries` | Core identity and classification      |
| `headcount`            | `total`, `by_role_absolute`, `by_role_percent`, `by_region_absolute`, `growth_percent`, `growth_absolute`                                                                                                                                   | Employee footprint and growth         |
| `funding`              | `total_investment_usd`, `last_round_amount_usd`, `last_fundraise_date`, `last_round_type`, `investors`, `funding_rounds`, `milestones`, `acquisitions`                                                                                      | Funding, milestones, and acquisitions |
| `locations`            | `country`, `state`, `headquarters`, `street_address`, `all_office_addresses`                                                                                                                                                                | Headquarters and office locations     |
| `taxonomy`             | `categories`, `professional_network_industry`, `professional_network_industries`, `professional_network_specialities`, `primary_naics_detail`, `sic_detail_list`                                                                            | Industry and classification data      |
| `revenue`              | `estimated` (`lower_bound_usd`, `upper_bound_usd`), `public_markets`, `acquisition_status`                                                                                                                                                  | Revenue estimates and market data     |
| `hiring`               | `openings_count`, `openings_growth_percent`, `recent_openings`                                                                                                                                                                              | Hiring demand and open roles          |
| `followers`            | `count`, `mom_percent`, `qoq_percent`, `yoy_percent`                                                                                                                                                                                        | Audience and follower metrics         |
| `seo`                  | `total_organic_results`, `monthly_organic_clicks`, `monthly_google_ads_budget`                                                                                                                                                              | Search visibility metrics             |
| `competitors`          | `all_domains`, `paid_seo`, `organic_seo`                                                                                                                                                                                                    | Competitor domains and SEO peers      |
| `social_profiles`      | `crunchbase.url`, `crunchbase.uuid`, `professional_network`, `twitter_url`                                                                                                                                                                  | External profile links                |
| `web_traffic`          | per-domain `monthly_visitors` and traffic sources                                                                                                                                                                                           | Website traffic and sources           |
| `employee_reviews`     | `overall_rating`, `culture_and_values_rating`, `work_life_balance_rating`, `review_count`                                                                                                                                                   | Employee review data                  |
| `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`                                                                                                                                                                                                            | Software review metrics               |
| `public_launches`      | `launches`, `makers`, `reviews`, `categories`, `num_upvotes`, `rating`                                                                                                                                                                      | Product launch data                   |
| `market_intel`         | `products`, `reviews`, `year_founded`, `head_office_city`, `head_office_country`, `num_employees_min`, `num_employees_max`                                                                                                                  | Market-intelligence data              |
| `reviews`              | Other non-employee reviews bucket. May be null when not populated.                                                                                                                                                                          | General review data                   |
| `metadata`             | Crustdata processing metadata                                                                                                                                                                                                               | Internal metadata                     |

### `headcount.growth_percent` and `headcount.growth_absolute` keys

The two growth maps in the `headcount` object are keyed by **period alias**.
Each key holds the change over a trailing window: a percentage for
`growth_percent`, an absolute employee delta for `growth_absolute`.

| Key          | Window               |
| ------------ | -------------------- |
| `mom`        | Month over month     |
| `qoq`        | Quarter over quarter |
| `six_months` | Trailing six months  |
| `yoy`        | Year over year       |
| `two_years`  | Trailing two years   |

<Warning>
  [`/company/search`](/company-docs/search/introduction) returns the same
  growth data under **different period keys** — `1m`, `3m`, `6m`, `12m` —
  and exposes each as a filterable path
  (`headcount.growth_percent.{1m,3m,6m,12m}`,
  `headcount.growth_absolute.{1m,3m,6m,12m}`). The values are equivalent,
  but a client that consumes both endpoints must map the keys explicitly:
  `mom ↔ 1m`, `qoq ↔ 3m`, `six_months ↔ 6m`, `yoy ↔ 12m`. `two_years`
  has no counterpart on `/company/search`.
</Warning>

***

## Validation rules

<Note>
  These rules reflect current platform behavior. See the [API
  reference](/openapi-specs/2025-11-01/introduction) for the formal
  OpenAPI contract.
</Note>

| 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 `basic_info` only. Pass section group names to include more sections.                                                 |
| `exact_match` is optional       | Default is `null` (auto-detect). Set `true` for strict domain-only matching.                                                           |
| Multi-company requests          | You 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.

<Note>
  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.
</Note>

```json No match — 200 with empty matches theme={"theme":"vitesse-black"}
[
    {
        "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`:

```json theme={"theme":"vitesse-black"}
[
    {
        "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:

```json 400 — Bad request theme={"theme":"vitesse-black"}
{
    "error": {
        "type": "invalid_request",
        "message": "Exactly one identifier must be provided: crustdata_company_ids, names, domains, or professional_network_profile_urls",
        "metadata": []
    }
}
```

```json 401 — Invalid API key theme={"theme":"vitesse-black"}
{
    "error": {
        "type": "unauthorized",
        "message": "Invalid API key in request.",
        "metadata": []
    }
}
```

***

## 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** | Top-level array: `[{ 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.                                  |
| **Errors**   | `400` (bad request), `401` (bad auth), `403` (permission/credits), `404` (per spec), `500` (server error)                                    |

See the [full API reference](/openapi-specs/2025-11-01/introduction) for
the complete OpenAPI schema.
