---
title: "Corporate suppliers ranked by PLACSP award procedures"
method: GET
path: "/api/v1/contracts/top-companies"
tags: ["Public Procurement", "Datasets"]
---

# Corporate suppliers ranked by PLACSP award procedures

`GET /api/v1/contracts/top-companies`

## Request

- Base URL: `https://openmercantil.es`
- URL: `https://openmercantil.es/api/v1/contracts/top-companies`
- Auth: none declared
- TypeScript: <https://skmtc.dev/openmercantil/apis/openmercantil-public-api/docs/api/v1/contracts/top-companies/get.ts> (a function with typed inputs; its response is checked against the schema)

Compatibility alias of `/api/v1/tenders/suppliers`. Reads only `placsp_public_company_summary`, ranks corporate suppliers by award-procedure count and never publishes a monetary ranking or rollup. Natural persons are excluded. `province` and `cnae` are rejected until dedicated offline projections exist.

## Query parameters

- `limit` integer

## Response `200`

Sanitized corporate supplier ranking

- TenderSupplierResponse
  - `schema_version` string, required
  - `count` integer, required
  - `ranking` 'award_procedures_count_desc' | 'awards_count_desc', required
  - `items` object[], required
    - `company_slug` string, required
    - `name` string, required
    - `cif` string, required
    - `notices_count` integer, required
    - `award_procedures_count` integer, required
    - `tenders_count` integer, required
    - `tenders_count_status` 'deprecated_alias_of_notices_count', required
    - `awards_count` integer, required
    - `awards_count_status` 'deprecated_alias_of_award_procedures_count', required
    - `buyers_count` integer, required
    - `first_date` string, date, nullable, required
    - `last_date` string, date, nullable, required
    - `top_cpv` string, nullable, required
  - `eligibility` string, required
  - `data_quality` string, required
  - `attribution` string, required
  - `_source_catalog` SourceCatalogEnvelope, required
    - `catalog_version` string, required
    - `policy_fingerprint` string, required
    - `policy_effective_date` string, date
    - `sources` object, required
  - `_data_sources_used` PublicSourcePolicyMetadata[], required
    - `slug` string, required
    - `name` string, required
    - `license` string, required
    - `license_url` string, uri, nullable
    - `attribution_required` boolean, required
    - `attribution_text` string, nullable
    - `official_url` string, uri, nullable
    - `reuse_conditions` string, required: Condiciones de reutilizacion que el consumidor debe conservar al presentar o transformar el dato.
    - `policy_effective_date` string, date, required
    - `reviewed_at` string, date, required
    - `data_updated_at` string, date-time, nullable
    - `catalog_version` string, required
  - `_attributions` object

## Other responses

- `400`: Invalid request
- `422`: The query is lexically valid but outside a documented numeric or length bound, or uses an unsupported indexed combination.
- `429`: Rate limit exceeded
- `500`: The bounded operation failed without exposing internal exception details.
- `503`: PLACSP public projection unavailable

## Changes

- **2026-07-26** `996f96a11758`: 17 info
  - api operation id `getContractsTopCompanies` was added
  - added the new optional `query` request parameter `limit`
  - added the non-success response with the status `400`
  - added the non-success response with the status `422`
  - …13 more

[Operation history](https://skmtc.dev/openmercantil/apis/openmercantil-public-api/changes/api/v1/contracts/top-companies/get.md)

---

[API](https://skmtc.dev/openmercantil/apis/openmercantil-public-api.md) - [All operations](https://skmtc.dev/openmercantil/apis/openmercantil-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/openmercantil/apis/openmercantil-public-api/revisions/601ff6123c86?raw)
