# Licitações Brasil | PNCP Public Tenders (`prized_rainstorm/licitacoes-monitor`) Actor

Busque licitações por palavra-chave, órgão, UF, modalidade e publicação. Search Brazilian tenders from the official public PNCP API.

- **URL**: https://apify.com/prized_rainstorm/licitacoes-monitor.md
- **Developed by:** [prized rainstorm](https://apify.com/prized_rainstorm) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 tender found / licitação encontradas

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Licitações Brasil — PNCP Public Tenders

### Português

Encontre oportunidades de fornecimento no Portal Nacional de Contratações Públicas (PNCP) por palavra-chave, órgão, UF, modalidade e data de publicação. Retorna uma linha por licitação, com objeto, valores em BRL, prazos e link oficial. Usa a API pública oficial: não exige conta PNCP, chave, proxy ou cadastro extra.

#### Entrada

```json
{
  "startDate": "2026-10-14",
  "endDate": "2026-10-14",
  "keywords": ["equipamentos agrícolas"],
  "agencyName": "Ampére",
  "agencyCnpj": "77817054000179",
  "state": "PR",
  "modalities": [6],
  "maxResults": 100,
  "maxRequests": 20
}
```

As datas do exemplo são fixas e foram consultadas no smoke de 15/10/2026. Troque-as para buscar outras publicações.

| Campo | Comportamento |
|---|---|
| `startDate`, `endDate` | Obrigatórios, YYYY-MM-DD; em `published`/`updated`: intervalo inclusivo de publicação/atualização global, até 31 dias. Em `open`, só `endDate` é obrigatório e `startDate` é ignorado; não filtra publicação. |
| `keywords` | Opcional, até 20 termos de até 200 caracteres. OU entre termos, busca literal de trecho sem distinguir acentos/maiúsculas, no objeto e informação complementar. Vazio busca todos. Sem regex ou IA. |
| `agencyName` | Trecho do nome do órgão, sem acentos/maiúsculas; até 200 caracteres. |
| `agencyCnpj` | CNPJ exato de 14 dígitos, com ou sem pontuação. Valida formato, não situação cadastral. |
| `state` | Uma UF brasileira; omitir para todas. Runtime aceita minúsculas e normaliza. |
| `modalities` | IDs ativos do catálogo oficial versionado de 2026-10-15 (veja snapshot abaixo); padrão `[6]` = Pregão Eletrônico. Use os códigos das [tabelas oficiais](https://pncp.gov.br/app/entidades-dominio). A busca padrão cobre somente modalidade 6. |
| `maxResults` | 1–1.000; padrão 100, teto de resultados únicos correspondentes. |
| `maxRequests` | 1–100; padrão 20. Orçamento GLOBAL de páginas, compartilhado entre modalidades, com até 50 registros por página. Retries podem gerar até 3 tentativas HTTP por página. |

O formulário de modalidades usa uma lista de números e mostra os IDs ativos com seus nomes na ajuda. O padrão continua `[6]`; IDs ausentes ou inativos são rejeitados pelo runtime.

Todos os filtros são combinados por E, exceto o OU entre palavras-chave e modalidades. Datas, UF, CNPJ e modalidade são enviados ao PNCP e conferidos localmente; nome e palavras-chave são filtros locais. A API não oferece busca por palavra-chave nesse endpoint. Filtros locais seletivos podem consumir o orçamento sem entregar resultados; aumente `maxRequests` ou reduza o intervalo. Campos desconhecidos e valores inválidos rejeitam a execução antes da coleta/cobrança. Duplicatas de termos/modalidades são removidas.

#### Saída

Uma linha por ID PNCP distinto nesta execução; estado opcional entre execuções descrito abaixo. Exemplo reduzido do smoke real:

```json
{
  "id": "77817054000179-1-000110/2026",
  "object": "Aquisição de equipamentos agrícolas, proposta nº 002606/2026 e convênio nº 992649/2026 - mapa.",
  "agencyName": "MUNICIPIO DE AMPERE",
  "agencyCnpj": "77817054000179",
  "state": "PR",
  "municipality": "Ampére",
  "modalityId": 6,
  "modality": "Pregão - Eletrônico",
  "estimatedValue": 196000,
  "awardedValue": null,
  "currency": "BRL",
  "publishedAt": "2026-10-14T00:00:06",
  "proposalClosingAt": "2026-11-05T08:30:01",
  "source": "PNCP",
  "url": "https://pncp.gov.br/app/editais/77817054000179/2026/110"
}
```

Também retorna `additionalInformation`, `unitName`, `statusId`, `status`, `updatedAt`, `proposalOpeningAt`, `sourceUrl` (GET original) e `collectedAt` (instante UTC da coleta). Valores ausentes são `null`; zero continua zero. Datas da fonte são preservadas literalmente: quando não têm fuso, não são convertidas para UTC. `collectedAt` tem sufixo Z.

O registro `SUMMARY` no key-value store padrão informa `pagesFetched`, `recordsScanned`, `matched`, `delivered`, filtros e `truncated`. `stopReason` pode ser `complete`, `maxResults`, `maxRequests` ou `spendingLimit`; `collectionStopReason` mantém o motivo original da coleta. Ao atingir exatamente o teto de resultados, a marcação é conservadora: `truncated=true`. `complete` significa que as páginas selecionadas foram percorridas, não uma garantia de completude de toda a base pública.

Um GET 204 é vazio válido. Erros HTTP, avisos/erros explícitos ou estrutura inválida não viram sucesso vazio. A coleta termina antes da cobrança: falha de coleta descarta o lote, não entrega nem cobra evento. Se uma falha ocorrer durante a entrega, o dataset pode conter resultados anteriores e `SUMMARY` indicará erro.

#### Preço

**US$2 por 1.000 licitações únicas correspondentes**: evento `tender-found`, US$0,002 por resultado. Não cobramos evento por registros descartados, duplicatas, zero correspondências ou erros de coleta. Sem assinatura ou taxa própria de início. Custos da plataforma Apify, quando aplicáveis, são separados.

O preço efetivo exibido na Store é a referência comercial. O pacote local não configura preço nem publica automaticamente.

Em modo pay-per-event, cobra antes de gravar cada resultado. Se o teto de cobrança impedir o evento, o resultado não é entregue; se o último evento for autorizado, ele é entregue e a execução para. Cobrança e dataset são operações separadas: uma falha de gravação após cobrar pode exigir reconciliação pelo operador. Sem estado, reexecutar pode cobrar novamente. Com estado, versões já entregues são suprimidas antes da cobrança. Em execução local fora de PPE, não chama `Actor.charge`.

#### Limites e fonte

- Modalidades em ordem de entrada, páginas em ordem da fonte; não ordena por relevância, valor ou prazo. O teto global pode encerrar antes das modalidades seguintes.
- Chamadas sequenciais, intervalo mínimo de 1 segundo entre tentativas; timeout de 20 segundos, resposta de até 4 MiB e até 3 tentativas para HTTP 429/5xx. `Retry-After` é respeitado até 60 segundos; acima disso, falha para tentar mais tarde. Falhas de rede e autenticação falham sem contorno.
- Conexões somente aos quatro endpoints HTTPS oficiais enumerados abaixo, sem redirecionamentos; não visita links de sistemas de origem ou anexos. Não resolve desafios, logins ou bloqueios.
- Publicação recente pode se referir a edital cujo prazo já encerrou. Consulte o documento oficial antes de participar. Não presume que todo resultado aceita propostas.
- Sem anexos, itens detalhados, alertas, cadastro de fornecedores ou análise jurídica. Não cobre portais que ainda não enviaram dados ao PNCP. A base muda durante a paginação e não oferece snapshot atômico.

Fonte: [API PNCP Consulta](https://pncp.gov.br/api/consulta/v3/api-docs), [PNCP em Dados Abertos](https://www.gov.br/pncp/pt-br/acesso-a-informacao/copy_of_dados-abertos). Ferramenta independente, sem vínculo ou endosso do governo. A cobrança remunera filtragem e estruturação; os dados públicos continuam acessíveis gratuitamente na fonte. Nenhuma marca ou anexo de terceiros é redistribuído.

#### Modos e estado entre execuções

`mode` aceita `published` (padrão, publicação), `updated` (atualização global) e `open` (recebimento de propostas aberto). `updated` consulta `/api/consulta/v1/contratacoes/atualizacao` com `dataInicial`, `dataFinal`, modalidade e paginação; seleciona por `dataAtualizacaoGlobal`, mesmo com publicação antiga. Acrescenta `sourceGlobalUpdatedAt` sem alterar `updatedAt` (`dataAtualizacao`) ou `publishedAt`.

`open` consulta `/api/consulta/v1/contratacoes/proposta` com `dataFinal=endDate` em yyyyMMdd, modalidade, UF/CNPJ opcionais e paginação; não envia `dataInicial` nem aplica janela de publicação. O PNCP determina quais propostas estão abertas no momento da consulta; `endDate` é o horizonte enviado à fonte, não uma data histórica de retrato. Não calcula um novo filtro de prazo local. Exemplos: `{"mode":"updated","startDate":"2026-10-15","endDate":"2026-10-15"}`; `{"mode":"open","endDate":"2026-11-15"}`. Fonte: [OpenAPI oficial](https://pncp.gov.br/pncp-consulta/v3/api-docs), GET 200 salvo em `reports/melhoria/openapi.json`.

O padrão de modalidades é **somente `[6]`**, não todas. O [snapshot versionado](../src/data/modalities-2026-10-15.json) vem do GET oficial [`/api/pncp/v1/modalidades`](https://pncp.gov.br/api/pncp/v1/modalidades). Entrada e schema aceitam somente IDs presentes com `statusAtivo=true`; IDs ausentes/inativos são rejeitados. Todos os IDs do snapshot atual estão ativos. Atualizar o snapshot e schema juntos após conferir o catálogo, sem presumir intervalos ou disponibilidade de resultados para cada ID.

Forneça `stateStoreName`, por exemplo `supplier-monitor`, para habilitar um key-value store nomeado Apify compartilhado entre execuções deste monitor. Omitir mantém o comportamento anterior. O store guarda uma entrada por `id` (chave SHA-256) com a última versão entregue: hash SHA-256 de todos os campos normalizados, exceto `collectedAt`, `sourceUrl` e os próprios marcadores de versão. Assim mudar janela/URL ou horário de coleta não reentrega; mudar `proposalClosingAt` ou outro campo relevante reentrega com `changeType="changed"`; primeira entrega tem `changeType="new"`. Ambas incluem `versionHash`.

A versão é gravada depois de entregar no dataset, nunca após cobrança recusada ou falha de entrega. Dataset, cobrança e estado não formam uma transação: falha após entregar e antes de persistir pode repetir/cobrar novamente. Use um store por monitor/consumidor e uma execução por vez; concorrência não oferece exclusão mútua. Não reutilize o nome entre projetos. Os tetos de coleta continuam antes da supressão: `matched` conta correspondências coletadas e `delivered` conta versões entregues; o teto pode ocultar páginas seguintes. Não há watermark/retomada ou promessa de exatamente uma entrega.

Usa [armazenamento nativo nomeado](https://docs.apify.com/platform/storage/key-value-store) disponível no [Free da Apify](https://apify.com/pricing), sem banco ou serviço pago adicional; consumo continua sujeito aos limites/créditos da plataforma. Store nomeado persiste entre runs; localmente persiste em `storage/key_value_stores/<nome>`. Dados crescem por ID, sem descarte automático; mantenha o mesmo nome para continuidade. Nenhum serviço foi contratado ou conta modificada nesta tarefa.

Allowlist exata: `/api/consulta/v1/contratacoes/publicacao`, `/api/consulta/v1/contratacoes/atualizacao`, `/api/consulta/v1/contratacoes/proposta`, `/api/pncp/v1/modalidades`, somente em `https://pncp.gov.br`. Catálogo é snapshot local durante runs; não há GET extra por execução.

### English

Find Brazilian supplier opportunities from the official PNCP public API by keyword, agency, state, modality and publication date. Each dataset row contains one tender with structured BRL values, dates and its official link. No PNCP account, API key, paid proxy or additional registration is required.

#### Input

Use the same JSON example above. In `published`/`updated`, `startDate` and `endDate` are required inclusive publication/global-update dates in YYYY-MM-DD format, covering at most 31 days. In `open`, only `endDate` is required and `startDate` is ignored; publication dates are not filtered.

- `keywords`: optional list of up to 20 terms, each at most 200 characters. Literal substring matching across object and additional information, case/accent insensitive, OR between terms. Empty means all. No regex or AI.
- `agencyName`: optional agency-name substring, case/accent insensitive, at most 200 characters.
- `agencyCnpj`: optional exact agency CNPJ, 14 digits with optional standard punctuation; format validation only.
- `state`: optional Brazilian two-letter state; omit for all. Runtime normalizes lowercase.
- `modalities`: Active PNCP IDs from the versioned 2026-10-15 official catalog (snapshot below), deduplicated; default `[6]` means electronic reverse auctions only. See the [official domain tables](https://pncp.gov.br/app/entidades-dominio).
- `maxResults`: 1–1,000 unique matching tenders, default 100.
- `maxRequests`: 1–100 logical page requests, default 20, shared across all modalities. Each page requests 50 records and may involve up to three HTTP attempts.

Filters combine with AND, except OR across keywords and modalities. Date, state, CNPJ and modality filters are sent upstream and checked locally. Agency-name and keyword filters run locally because this endpoint does not expose keyword search. Selective filters can exhaust the page budget with no matches: narrow the dates or raise the budget. Unknown fields and invalid values fail before collection or billing.

#### Output and coverage

The reduced real smoke example above illustrates the stable field names. Full rows also include `additionalInformation`, `unitName`, `statusId`, `status`, `updatedAt`, `proposalOpeningAt`, `sourceUrl` and `collectedAt`. Missing optional fields are null; zero is preserved. Source timestamps remain unchanged, including timestamps without a timezone. Only `collectedAt` is a UTC collection timestamp.

IDs are deduplicated within a run. The default key-value store's `SUMMARY` record provides `pagesFetched`, `recordsScanned`, `matched`, `delivered`, normalized input, `truncated` and `stopReason`: `complete`, `maxResults`, `maxRequests`, or `spendingLimit`. `collectionStopReason` preserves the original collection outcome. Exactly reaching the result ceiling conservatively marks truncation. Complete means traversal of the selected pages, not guaranteed coverage of every Brazilian tender.

Modalities follow input order, with upstream page ordering; there is no relevance or deadline sort. A global limit may stop before later modalities. The source can change between pages, so the query is not an atomic snapshot. Recent publication does not necessarily mean proposals are still open.

HTTP 204 is a valid empty response. HTTP failures, explicit warnings/errors and malformed payloads fail the run instead of being silently treated as empty success. Collection finishes before billing; a collection failure discards the batch without event charges or delivery. Delivery errors may leave earlier rows in the dataset, with an error summary.

#### Pricing

**US$2 per 1,000 unique matching tenders**, charged through the `tender-found` event at US$0.002 each. No result-event charge for rejected records, duplicates, empty searches or collection errors. No subscription or own startup fee. Apify platform costs, if applicable, are separate.

The Store's actual displayed pricing governs. This package does not publish or configure remote pricing.

In PPE mode, charging precedes dataset delivery. Uncharged rows are not delivered when a spending limit is reached; an authorized last row is delivered before stopping. Billing and dataset writes are separate: failure after charging may require operator reconciliation. Without state, repeated runs may charge again. With state, previously delivered versions are suppressed before charging. Local/non-PPE runs do not call `Actor.charge`.

#### Operational limits and attribution

Sequential requests with at least one second between attempts, a 20-second deadline, 4 MiB response cap and up to three attempts for HTTP 429/5xx. Retry-After is honored up to 60 seconds; longer delays fail for a later run. Network and authentication failures are not bypassed. Only the four enumerated official HTTPS endpoints below are allowed; redirects, source-system links, documents, login challenges and arbitrary URLs are not followed.

This actor returns tender metadata, not attachments, item details, supplier registration, alerts or legal analysis. Missing source submissions are outside its coverage. Verify official notices and deadlines before bidding.

Data source: [PNCP Query API](https://pncp.gov.br/api/consulta/v3/api-docs), [official open-data explanation](https://www.gov.br/pncp/pt-br/acesso-a-informacao/copy_of_dados-abertos). Independent tool, not affiliated with or endorsed by the Brazilian government. The service charges for filtering and structuring; the public source remains free. No third-party attachments or official branding are redistributed.

#### Modes and cross-run state

`mode` is `published` (default publication behavior), `updated` (global-update window) or `open` (currently open proposals). `updated` queries `/api/consulta/v1/contratacoes/atualizacao`, selecting `dataAtualizacaoGlobal` within the supplied dates even for older publications. `sourceGlobalUpdatedAt` is additive; `publishedAt` and `updatedAt` retain their meanings.

`open` queries `/api/consulta/v1/contratacoes/proposta` with `dataFinal=endDate` in yyyyMMdd, modality, optional UF/CNPJ and pagination. It sends no `dataInicial`, ignores `startDate` and applies no publication filter. PNCP selects currently open proposals; `endDate` is the upstream horizon, not a historical snapshot date. No extra local deadline filter is inferred. Examples: `{"mode":"updated","startDate":"2026-10-15","endDate":"2026-10-15"}` and `{"mode":"open","endDate":"2026-11-15"}`. Parameters follow the [official OpenAPI](https://pncp.gov.br/pncp-consulta/v3/api-docs), saved with HTTP 200 in `reports/melhoria/openapi.json`.

Default modalities are **only `[6]`**. The [versioned official snapshot](../src/data/modalities-2026-10-15.json), fetched from [`/api/pncp/v1/modalidades`](https://pncp.gov.br/api/pncp/v1/modalidades), drives validation: only present IDs with `statusAtivo=true` are accepted. All current snapshot IDs are active. Refresh snapshot and schema together after checking the source; an official ID does not guarantee available tenders.

Set optional `stateStoreName` (e.g. `supplier-monitor`) to use the same named Apify key-value store across runs. Omit it for the original behavior. One record per tender `id` (SHA-256 key) stores the last delivered version. The version hashes all normalized fields except observation time `collectedAt`, query `sourceUrl`, and version markers. Identical versions are skipped before billing; a changed `proposalClosingAt` or other relevant field is delivered with `changeType="changed"`, first deliveries with `changeType="new"`, both with `versionHash`.

State is saved after dataset delivery, never after a refused charge or failed push. Billing, dataset and state are separate operations: failure after delivery but before saving state may cause repeats and repeat charges. Use one store per monitor/consumer and run serially; there is no concurrent-run lock. Do not share names across projects. Collection ceilings apply before suppression: `matched` counts collected matches and `delivered` counts delivered versions, so the ceiling can hide later pages. No watermark/resume or exactly-once guarantee is added.

[Native named key-value storage](https://docs.apify.com/platform/storage/key-value-store) is available on [Apify Free](https://apify.com/pricing) without an extra paid database/service; platform usage limits/credits still apply. Local storage persists under `storage/key_value_stores/<name>`. State grows per ID without automatic removal. Keep the same name for continuity. No paid service or account change was made.

Exact allowlist on `https://pncp.gov.br`: `/api/consulta/v1/contratacoes/publicacao`, `/api/consulta/v1/contratacoes/atualizacao`, `/api/consulta/v1/contratacoes/proposta`, `/api/pncp/v1/modalidades`. Production runs read the bundled catalog, avoiding an extra network request.

The modalities form uses a numeric array and lists the active IDs and names in its help text. The default remains `[6]`; runtime validation rejects missing or inactive IDs.

#### Exemplo rápido e limite de tempo / Quick example and time budget

O botão de restaurar exemplo usa publicação em **2026-10-14**, modalidade `[6]`, até **5 resultados e 1 página**, sem filtros ou estado persistente. Entrada vazia ou composta apenas pelos defaults da plataforma usa esse mesmo exemplo histórico; forneça datas explícitas para monitorar outros períodos. Limites omitidos em entradas explícitas continuam em 100 resultados/20 páginas.
A coleta para em 180 s, novas entregas param em 210 s e o Actor solicita encerramento bem-sucedido em até 221 s (saída forçada com código 0 aos 230 s se o SDK travar). Resultados parciais ficam no dataset; `SUMMARY.truncated` e `stopReason=timeBudget|upstreamError` indicam cobertura incompleta. HTTP 429/5xx e falhas de rede têm até 3 tentativas com backoff; erros HTTP permanentes encerram a coleta sem repetir. Falhas de validação ou dados malformados continuam falhando. Indisponibilidade total do PNCP pode deixar o dataset vazio e reprovar o QA.

Restore example uses **2026-10-14**, modality `[6]`, at most **5 results and 1 page**, without filters or persistent state. Empty input or input containing only platform defaults uses the same historical example; supply explicit dates for other periods. Omitted limits on explicit inputs remain 100 results/20 pages.
Collection stops at 180 s, new deliveries at 210 s, and the Actor requests successful shutdown by 221 s (forced exit code 0 at 230 s if SDK shutdown stalls). Partial data remains in the dataset; `SUMMARY.truncated` and `stopReason=timeBudget|upstreamError` signal incomplete coverage. HTTP 429/5xx and network failures retry up to 3 attempts with backoff; permanent HTTP failures stop collection without retry. Invalid input and malformed data still fail. A complete PNCP outage may leave the dataset empty and fail QA.

# Actor input Schema

## `startDate` (type: `string`):

Obrigatória em published/updated, YYYY-MM-DD; ignorada em open. Required in published/updated, ignored in open.

## `endDate` (type: `string`):

Obrigatória YYYY-MM-DD; janela published/updated de até 31 dias; em open enviada como dataFinal ao PNCP. Required; published/updated window up to 31 days; open passes dataFinal to PNCP.

## `keywords` (type: `array`):

OU entre termos; busca literal sem acentos em objeto e informação complementar. OR across terms; accent-insensitive literal substring search in object and additional information.

## `agencyName` (type: `string`):

Trecho do nome, sem diferenciar acentos/maiúsculas. Substring of agency name, case/accent insensitive.

## `agencyCnpj` (type: `string`):

14 dígitos ou formato pontuado; filtro PNCP. 14 digits or formatted CNPJ; PNCP filter.

## `state` (type: `string`):

Opcional; uma UF. Optional; one Brazilian state.

## `modalities` (type: `array`):

IDs ativos / Active IDs (2026-10-15): 1 = Leilão - Eletrônico; 2 = Diálogo Competitivo; 3 = Concurso; 4 = Concorrência - Eletrônica; 5 = Concorrência - Presencial; 6 = Pregão - Eletrônico; 7 = Pregão - Presencial; 8 = Dispensa; 9 = Inexigibilidade; 10 = Manifestação de Interesse; 11 = Pré-qualificação; 12 = Credenciamento; 13 = Leilão - Presencial; 14 = Inaplicabilidade da Licitação; 15 = Chamada pública; 16 = Concorrência – Eletrônica Internacional; 17 = Concorrência – Presencial Internacional; 18 = Pregão – Eletrônico Internacional; 19 = Pregão – Presencial Internacional. Padrão / Default: \[6]. Validação de IDs ativos no runtime / Active IDs validated at runtime.

## `maxResults` (type: `integer`):

Teto de licitações únicas correspondentes. Maximum unique matching tenders.

## `maxRequests` (type: `integer`):

Orçamento global de páginas (50 registros/página). Retry HTTP pode gerar até 3 tentativas por página. Global page budget, 50 records/page, up to 3 HTTP attempts/page.

## `mode` (type: `string`):

published: publicação; updated: atualização global; open: propostas abertas até dataFinal, sem filtro de publicação. Publication / global update / currently open proposals through dataFinal, without publication filtering.

## `stateStoreName` (type: `string`):

Opcional: store nomeado estável para suprimir versões entregues; omitir desliga estado. Use um nome por monitor, sem execuções concorrentes. Optional stable named store for delivered versions; omit to disable. Use one name per monitor, no concurrent runs.

## Actor input object example

```json
{
  "startDate": "2026-10-14",
  "endDate": "2026-10-14",
  "keywords": [],
  "modalities": [
    6
  ],
  "maxResults": 5,
  "maxRequests": 1,
  "mode": "published"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startDate": "2026-10-14",
    "endDate": "2026-10-14",
    "maxResults": 5,
    "maxRequests": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("prized_rainstorm/licitacoes-monitor").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startDate": "2026-10-14",
    "endDate": "2026-10-14",
    "maxResults": 5,
    "maxRequests": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("prized_rainstorm/licitacoes-monitor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startDate": "2026-10-14",
  "endDate": "2026-10-14",
  "maxResults": 5,
  "maxRequests": 1
}' |
apify call prized_rainstorm/licitacoes-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,prized_rainstorm/licitacoes-monitor"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/c55QBl9mINx1l4Lhy/builds/Gx4o0bT9gJhPmUmLa/openapi.json
