---
title: "Compare exactly two admitted companies"
method: GET
path: "/api/v1/companies/compare"
tags: ["Companies"]
---

# Compare exactly two admitted companies

`GET /api/v1/companies/compare`

Returns only the stable company_compare_v1 projection. Both slugs are resolved together against the immutable company_public_v2 sidecar; safe aliases are canonicalized without redirects. The response excludes reports, blobs, officers, account data, scores and inferred relationships.

## Query parameters

- `slugs` string[], required

## Headers

- `If-None-Match` string

## Response `200`

Two admitted companies in stable canonical order

- CompanyCompareResponse — Stable company_compare_v1 response. All three arrays are index-aligned and sorted lexicographically by canonical slug.
  - `status` 'available', required
  - `projection` 'company_compare_v1', required
  - `projection_status` 'available', required
  - `requested_slugs` string[], required
  - `canonical_slugs` string[], required
  - `companies` CompanyCompareEntity[], required
    - `slug` string, required
    - `name` string, required
    - `cif` string, required
    - `province` string, nullable, required
    - `cnae_code` string, nullable, required
    - `cnae_section` string, nullable, required
    - `capital_cents` integer, nullable, required
    - `first_seen` string, nullable, required
    - `last_seen` string, nullable, required
    - `acts_count` integer, required
  - `authority` CompanyCompareAuthority, required — Public generation authority. Internal paths and identity/content/contract/policy fingerprints are deliberately omitted.
    - `projection` 'company_public_v2', required
    - `schema_version` string, required
    - `builder_version` string, required
    - `source_generation` string, required
    - `projected_at` string, required
    - `row_count` integer, required
    - `cache_namespace` string, required

## Other responses

- `304` — The generation-bound comparison has not changed
- `400` — Malformed pair or both inputs resolve to the same company
- `404` — At least one subject is absent, personal, ambiguous, quarantined or legally withheld
- `429` — Rate limit exceeded
- `503` — The immutable company comparison projection or its authority is unavailable

---

[API](https://skmtc.net/openmercantil/apis/openmercantil-public-api.md) · [All operations](https://skmtc.net/openmercantil/apis/openmercantil-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/openmercantil/openmercantil-public-api/revisions/996f96a11758/schema)
