---
title: "Look up up to 100 company domains"
method: POST
path: "/companies/lookup"
---

# Look up up to 100 company domains

`POST /companies/lookup`

## Request

- Base URL: `https://indexed.vc/api/v1`
- URL: `https://indexed.vc/api/v1/companies/lookup`
- Auth: API key in header `X-API-Key`
- TypeScript: <https://skmtc.dev/indexed/apis/indexed-vc-api/docs/companies/lookup/post.ts> (a function with typed inputs; its response is checked against the schema)

Batch form of `GET /companies?domain=…`. Inputs are normalized and
deduplicated in first-seen order. Each delivered hit costs 1 credit;
misses are free. A miss reports whether review was durably queued,
is pending enrichment, needs scope review, or is outside our coverage;
no miss promises admission. Alias and
former-domain hits include `domain_match` so a different canonical
website is explicit rather than surprising.

## Request body

- object
  - `domains` string[], required

## Response `200`

Ordered per-domain lookup results

- object
  - `data` CompanyDomainLookupItem[], required
    - union
      - object
        - `domain` string, required
        - `status` 'hit', required
        - `credits_charged` 1, required
        - `data` CompanyCard, required
          - `id` string, uuid, required
          - `name` string, required
          - `slug` string, required
          - `logo_url` string, nullable
          - `website` string, nullable
          - `short_description` string, nullable
          - `industries` string[], nullable
          - `hq_city` string, nullable
          - `hq_country` string, nullable
          - `employee_count_range` '1-10' | '11-50' | '51-200' | '201-500' | '501-1000' | '1001-5000' | '5001-10000' | '10001+' | 'null', nullable
          - `total_funding_raised` integer, nullable: Whole USD. Sum of disclosed itemized funding rounds at confidence 50+: equity rounds, notes, SAFEs, equity crowdfunding and grants. Grants are included; debt, IPOs, acquisitions and secondaries are not. Null when no counted round has a disclosed amount.
          - `operating_status` 'active' | 'acquired' | 'ipo' | 'closed' | 'null', nullable
          - `_revealed` boolean, required: true when this account has unlocked the entity's depth within 12 months
          - `domain_match` DomainMatch
            - `queried` string, required: Canonicalized domain supplied by the caller
            - `canonical_domain` string, nullable, required: Current website host on the matched company
            - `matched_via` 'canonical_domain' | 'alias_domain' | 'former_website', required
      - object
        - `domain` string, required
        - `status` 'miss', required
        - `coverage_requested` boolean, required: true when the request was durably recorded for manual review; not a promise of admission or coverage. false means recording failed and the client can retry, or the domain belongs to a company outside coverage scope
        - `coverage_status` 'queued' | 'not_queued' | 'pending_enrichment' | 'scope_review' | 'not_in_coverage_scope': Why this domain missed: queued (recorded for review), not_queued (recording failed), pending_enrichment (held, profile not yet servable), scope_review (held, scope under review), not_in_coverage_scope (held, outside coverage scope; never served)
        - `coverage_eta_days` integer, nullable, required: Currently null: manual review has no guaranteed completion date. Misses are never charged.
        - `credits_charged` 0, required
      - object
        - `domain` string, required
        - `status` 'insufficient_credits', required
        - `credits_charged` 0, required
  - `summary` CompanyDomainLookupSummary, required
    - `total_requested` integer, required
    - `total_hits` integer, required
    - `total_misses` integer, required
    - `total_insufficient_credits` integer, required
    - `total_credits_charged` integer, required

## Other responses

- `400`: Invalid request parameters
- `401`: Missing, invalid, or insufficient API key
- `402`: Credits exhausted, no active credit period, or overage cap reached (code CREDIT_LIMIT_REACHED). This is a billing state, not a rate limit — do not retry. Follow top_up_url to repurchase the returned top_up_pack.
- `429`: Rate limit exceeded (code RATE_LIMITED). Back off and retry after Retry-After.

---

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