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

# COMPRASAL

> As compras públicas de El Salvador: cada adjudicação, o cadastro de fornecedores com suas sanções, os processos abertos a propostas e quais combinam com o que um fornecedor já vende.

O COMPRASAL é o sistema de compras públicas de El Salvador, a cargo da Dirección Nacional de Compras Públicas (DINAC) do Ministerio de Hacienda. Cada ministério, município e entidade autônoma publica ali suas compras: cerca de 150.000 adjudicações desde que o sistema atual começou em dezembro de 2024, um cadastro de uns 8.600 fornecedores, a lista de fornecedores sancionados e os cerca de 500 processos abertos a propostas a cada momento.

A Croma guarda tudo, então têm resposta perguntas que o próprio COMPRASAL não responde: cada adjudicação a um fornecedor em todas as entidades, quanto vendeu e para quem, se seu nome aparece na lista de sancionados, e quais processos abertos se parecem com o que já vendeu. Busque no cadastro por nome (tolerante a erros de digitação), leia o perfil de um fornecedor, busque adjudicações e processos abertos, leia o relatório de uma adjudicação com seus proponentes e códigos orçamentários, e cruze um fornecedor com as licitações em que poderia participar esta semana.

## Buscar fornecedores

`POST /sv/comprasal-sv/suppliers-search/v1` [Dataset](https://docs.usecroma.com/pt/datasets.md)

Encontre o `id` de um fornecedor pelo nome, como quer que tenha sido escrito.

| Campo | Tipo | Notas |
| - | - | - |
| `query` | string | Nome ou nome comercial opcional, p. ex. `Textiles Varios`. Vazio para percorrer todo o cadastro. |
| `sanctioned_only` | boolean | Se true, só fornecedores que o COMPRASAL marca como sancionados. Por padrão `false`. |
| `page` | integer | Número da página, começa em 1. Por padrão `1`. |
| `per_page` | integer | Resultados por página (1-100). Por padrão `20`. |

```bash theme={"dark"}
curl https://api.croma.run/sv/comprasal-sv/suppliers-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "query": "Textiles Varios" }'
```

Retorna `as_of` (o quão atuais são os dados), os filtros aplicados, `total` e `total_is_exact`, `page`, `per_page`, `total_pages`, `count` e `results[]`. Cada fornecedor traz `id`, `name` (a razão social, ou o nome da pessoa se for pessoa física), `trade_name`, `sanctioned` e `score` (de 0 a 100, o quão perto o nome está de `query`; null sem busca).

> [!NOTE]
>
> O cadastro do COMPRASAL não publica o NIT dos fornecedores, então a busca é por nome.

## Perfil de um fornecedor

`POST /sv/comprasal-sv/supplier/v1` [Dataset](https://docs.usecroma.com/pt/datasets.md)

Tudo o que as compras públicas sabem de um fornecedor, em uma só resposta.

| Campo | Tipo | Notas |
| - | - | - |
| `supplier_id` | integer | **Obrigatório.** O `id` do fornecedor retornado pela busca de fornecedores, p. ex. `392`. |

```bash theme={"dark"}
curl https://api.croma.run/sv/comprasal-sv/supplier/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "supplier_id": 392 }'
```

Retorna `as_of`, `found`, `supplier_id`, `supplier` (`id`, `name`, `trade_name`, `sanctioned`), `sanctions[]` (`name`, `start_date`, `end_date`, `sanctioning_entity`, `list`, `active`, `score`) e `awards`: `total`, `summarized` e `summary_is_complete` (os valores somam as 2.000 adjudicações mais recentes), `amount`, `first_awarded_date`, `last_awarded_date`, `entities[]` (`entity_id`, `entity_name`, `awards`, `amount`) e `latest[]`, as dez adjudicações mais recentes.

> [!NOTE]
>
> Um id que o cadastro não tem retorna `found: false` com HTTP 200, não um erro. As sanções são cruzadas por nome, porque a lista não traz o id do fornecedor: confira `score` antes de confiar em uma coincidência.

## Buscar adjudicações

`POST /sv/comprasal-sv/awards-search/v1` [Dataset](https://docs.usecroma.com/pt/datasets.md)

Cada adjudicação, por fornecedor, entidade, processo, data ou palavras.

| Campo | Tipo | Notas |
| - | - | - |
| `query` | string | Palavras opcionais buscadas no que foi comprado, no código do processo, no fornecedor e na entidade, p. ex. `uniformes`. |
| `supplier_id` | integer | `id` de fornecedor opcional, da busca de fornecedores: só suas adjudicações. Por padrão `0`. |
| `entity_id` | integer | `entity_id` opcional da entidade contratante, como as adjudicações o trazem, p. ex. `438`. Por padrão `0`. |
| `process_code` | string | Código de processo opcional, p. ex. `1000009-2026-P0003`. |
| `from_date` | string | Opcional: adjudicações desta data em diante, `yyyy-mm-dd`. |
| `to_date` | string | Opcional: adjudicações até esta data, `yyyy-mm-dd`. |
| `page` | integer | Número da página, começa em 1. Por padrão `1`. |
| `per_page` | integer | Resultados por página (1-100). Por padrão `20`. |

```bash theme={"dark"}
curl https://api.croma.run/sv/comprasal-sv/awards-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "query": "uniformes", "from_date": "2026-01-01" }'
```

Retorna `as_of` (o quão atuais são os dados), os filtros aplicados, `total` e `total_is_exact`, `page`, `per_page`, `total_pages`, `count` e `results[]`. Cada adjudicação traz `id`, `amount` (dólares), `awarded_date`, `process_id`, `process_code`, `process_name` (o que foi comprado), `contracting_method` e `contracting_method_code`, `entity_id`, `entity_code`, `entity_name`, `supplier_id`, `supplier_name`, `supplier_trade_name` e `official_url` (a adjudicação no COMPRASAL).

## Relatório de uma adjudicação

`POST /sv/comprasal-sv/award/v1` [Lookup](https://docs.usecroma.com/pt/datasets.md#lookups)

> [!NOTE]
>
> Responde a partir da cópia da Croma quando ela tem uma resposta recente para a chave; caso contrário, lê a fonte e guarda a resposta. Cada resposta diz quando a fonte foi consultada pela última vez (`checked_at`) e de onde veio a resposta (`served_from`).

| Campo | Tipo | Notas |
| - | - | - |
| `award_id` | integer | **Obrigatório.** O `id` da adjudicação retornado pela busca, p. ex. `587047`. |

```bash theme={"dark"}
curl https://api.croma.run/sv/comprasal-sv/award/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "award_id": 587047 }'
```

Retorna `found`, `award_id`, `checked_at`, `served_from` e `award`: `contract_name`, `contracting_method`, `term_days`, `planned_amount`, `certified_amount`, `published_at`, `opened_at`, `closed_at`, `process_status`, `signed_at`, `budget_codes[]`, `bidders[]` (`name`, `submitted_at`), `modifications`, `payments` e `official_url`.

> [!NOTE]
>
> Um id que o COMPRASAL não tem retorna `found: false` com HTTP 200, não um erro.

## Buscar processos abertos

`POST /sv/comprasal-sv/tenders-search/v1` [Dataset](https://docs.usecroma.com/pt/datasets.md)

Os processos recebendo propostas agora, o que fecha primeiro no topo.

| Campo | Tipo | Notas |
| - | - | - |
| `query` | string | Palavras opcionais buscadas no que está sendo comprado, no código do processo e na entidade, p. ex. `uniformes`. |
| `activity_code` | string | Código de atividade econômica opcional a que o processo está aberto, p. ex. `46592`. |
| `open_only` | boolean | Se true (padrão), só processos que ainda recebem propostas. Por padrão `true`. |
| `page` | integer | Número da página, começa em 1. Por padrão `1`. |
| `per_page` | integer | Resultados por página (1-100). Por padrão `20`. |

```bash theme={"dark"}
curl https://api.croma.run/sv/comprasal-sv/tenders-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "query": "uniformes" }'
```

Retorna `as_of` (o quão atuais são os dados), os filtros aplicados, `total` e `total_is_exact`, `page`, `per_page`, `total_pages`, `count` e `results[]`. Cada processo traz `id`, `code`, `name` (o que está sendo comprado), `entity_name`, `contracting_method` e `contracting_method_code`, `status`, `stage`, `current_stages[]` e `stages[]` (`name`, `starts_at`, `ends_at`), `offers_due_at` (quando fecha o recebimento de propostas), `activities[]` (`code`, `name`: as atividades econômicas a que está aberto) e `activity_codes`.

## Licitações para um fornecedor

`POST /sv/comprasal-sv/tenders-for-supplier/v1` [Dataset](https://docs.usecroma.com/pt/datasets.md)

Do que um fornecedor já vendeu ao que poderia ofertar esta semana.

| Campo | Tipo | Notas |
| - | - | - |
| `supplier_id` | integer | **Obrigatório.** O `id` do fornecedor retornado pela busca de fornecedores, p. ex. `392`. |
| `limit` | integer | Quantas licitações retornar (1-50). Por padrão `10`. |

```bash theme={"dark"}
curl https://api.croma.run/sv/comprasal-sv/tenders-for-supplier/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "supplier_id": 392 }'
```

Retorna `as_of`, `found`, `supplier_id`, `supplier_name`, `awards_considered`, `count` e `results[]`, a melhor coincidência primeiro. Cada processo traz `id`, `code`, `name` (o que está sendo comprado), `entity_name`, `contracting_method` e `contracting_method_code`, `status`, `stage`, `current_stages[]` e `stages[]` (`name`, `starts_at`, `ends_at`), `offers_due_at` (quando fecha o recebimento de propostas), `activities[]` (`code`, `name`: as atividades econômicas a que está aberto) e `activity_codes`. Cada coincidência acrescenta `score`, `matched_terms` e `similar_award_ids`.

> [!NOTE]
>
> Um fornecedor sem adjudicações não tem coincidências: o cruzamento sai do que ele vendeu.

> **[Referência completa](https://docs.usecroma.com/pt/api-reference/overview.md)**
>
> Esquemas, todos os campos de resposta e um playground interativo.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.