---
title: "Enrich Company"
method: POST
path: "/v2/companies/enrich"
tags: ["Companies"]
---

# Enrich Company

`POST /v2/companies/enrich`

## Request

- Base URL: `https://api.village.ai`
- URL: `https://api.village.ai/v2/companies/enrich`
- Auth: HTTP bearer

Get detailed information about a company. Use this to look up company details when you have a domain, LinkedIn URL, or any URL. Returns: company name, website, LinkedIn URL, logo, employee count, industry, founded year, and description. On a cache miss the company is fetched live from HarvestAPI (LinkedIn data), or, for a domain Village does not know, read from the company's public website via ScrapingBee, and saved to Village. Useful for enriching CRM records or researching target accounts. People can have their data removed by emailing privacy@village.ai or support@village.ai.

## Request body

- union: Request for company enrichment
  - object: Company by domain
    - `domain` string, required: Company domain (normalized, without www prefix)
    - `mode` 'cached_first' | 'cached_only' | 'realtime_only': How to source the data. `cached_first` (default): return Village's cached profile if it is recent, otherwise fetch live — credited only when it fetches. `cached_only`: never fetch live, and report a miss when the profile is not already cached (404 on the single endpoints, a per-item not-found on the bulk ones) — never credited. `realtime_only`: always fetch live, and credited whenever that fetch returns data; a fetch that finds nothing is still free.
  - object: Company by LinkedIn URL
    - `linkedin_url` string, required: LinkedIn company page URL
    - `mode` 'cached_first' | 'cached_only' | 'realtime_only': How to source the data. `cached_first` (default): return Village's cached profile if it is recent, otherwise fetch live — credited only when it fetches. `cached_only`: never fetch live, and report a miss when the profile is not already cached (404 on the single endpoints, a per-item not-found on the bulk ones) — never credited. `realtime_only`: always fetch live, and credited whenever that fetch returns data; a fetch that finds nothing is still free.
  - object: Company by generic URL (auto-detected)
    - `url` string, required
    - `mode` 'cached_first' | 'cached_only' | 'realtime_only': How to source the data. `cached_first` (default): return Village's cached profile if it is recent, otherwise fetch live — credited only when it fetches. `cached_only`: never fetch live, and report a miss when the profile is not already cached (404 on the single endpoints, a per-item not-found on the bulk ones) — never credited. `realtime_only`: always fetch live, and credited whenever that fetch returns data; a fetch that finds nothing is still free.

## Response `200`

Company enriched successfully

- object
  - `data` SingleCompanyEnrichResponse, required: Single company enrichment response
    - `company` BasicCompanyProfile, required: Basic company profile with enriched data
      - `name` string, required
      - `linkedin_url` string, nullable, required
      - `website` string, nullable, required
      - `domain` string, nullable, required
      - `employee_count` number, nullable, required
      - `industry` string, nullable, required
      - `crunchbase_url` string, nullable
      - `founded` number, nullable
      - `description` string, nullable
      - `type` string, nullable: Ownership type (e.g. Public, Private, Nonprofit)
      - `funding` union: Funding data, passed through from storage as-is. Two shapes are possible and callers must handle both: an OBJECT summarising the most-recent round (keys `last_round_stage`, `price`, `investors`, `last_round_date`, `number_of_rounds`), or an ARRAY of per-round objects (keys `date`, `type`, `amount`, `currency`, `investors`) written by the refresh pipeline. An empty array means no funding data, which is the large majority of companies. All money, date and count fields are display strings, not numbers or ISO dates — don't parse or range-filter them.
        - object
          - `price` string, nullable
          - `investors` object[], nullable
          - `last_round_date` string, nullable
          - `last_round_stage` string, nullable
          - `number_of_rounds` union
            - string
            - number
            - unknown
        - object[]
          - `date` string, nullable
          - `type` string, nullable
          - `amount` union
            - string
            - number
            - unknown
          - `currency` string, nullable
          - `investors` string, nullable
        - unknown
      - `last_enrichment_at` string, nullable, required: ISO 8601 timestamp of the last refresh from a third-party data provider. Null when the profile has never been provider-enriched. Use it to judge staleness before paying for a realtime_only re-enrich.
  - `metadata` object, required
    - `request_id` string, required

## Other responses

- `400`: Bad request - invalid parameters
- `401`: Unauthorized - missing or invalid authentication
- `404`: Company not found
- `500`: Internal server error

---

[API](https://skmtc.dev/village/apis/village-v2-api.md) - [All operations](https://skmtc.dev/village/apis/village-v2-api/llms.txt) - [OpenAPI document](https://skmtc.dev/village/apis/village-v2-api/revisions/aebe21a1a544?raw)
