portalcompraspublicas.com.br APIportalcompraspublicas.com.br ↗
Access Brazilian public tender data via 8 endpoints: listings, full details, items, documents, clarifications, winners, and filter parameters.
curl -X GET 'https://api.parse.bot/scraper/0885dad1-c891-4d2b-8aad-4da7804545e2/list_licitacoes?page=1&limit=5' \ -H 'X-API-Key: $PARSE_API_KEY'
List or search for public tenders (licitações) with optional filters and pagination. Returns paginated results ordered by most recent.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). |
| limit | integer | Number of results per page. |
| objeto | string | Search keyword for the tender object/description. |
| codigo_uf | integer | State (UF) code to filter by, from list_ufs or get_search_parameters. |
| data_final | string | End date filter in YYYY-MM-DD format. |
| data_inicial | string | Start date filter in YYYY-MM-DD format. |
| codigo_status | integer | Status code filter: 1 (Recebendo Propostas), 2 (Em Andamento), 3 (Finalizado), 4 (Iminência de deserto), 25 (Em Republicação). |
| codigo_modalidade | integer | Modality code filter, from get_search_parameters. |
{
"type": "object",
"fields": {
"total": "integer total number of matching tenders",
"result": "array of tender summary objects with codigoLicitacao, numero, resumo, razaoSocial, status, urlReferencia, etc.",
"nextPage": "integer or null, next page number",
"pageCount": "integer total number of pages",
"currentPage": "integer current page number",
"previousPage": "integer or null, previous page number"
},
"sample": {
"data": {
"total": 377021,
"result": [
{
"numero": "013/2024",
"resumo": "CHAMAMENTO PÚBLICO PARA CREDENCIAMENTO DE PARECERISTAS PARA O SETOR CULTURAL DE ATIBAIA.",
"status": {
"codigo": 1,
"descricao": "Recebendo Propostas"
},
"razaoSocial": "Prefeitura Municipal da Estância de Atibaia",
"urlReferencia": "/sp/prefeitura-municipal-da-estancia-de-atibaia-3319/cred-013-2024-2025-343584",
"codigoLicitacao": 343584
}
],
"nextPage": 2,
"pageCount": 37703,
"currentPage": 1,
"previousPage": null
},
"status": "success"
}
}About the portalcompraspublicas.com.br API
This API exposes 8 endpoints covering public procurement data from Brazil's Portal de Compras Públicas, spanning tender listings, full tender details, attached documents, clarification logs, and award results. The list_licitacoes endpoint lets you search and paginate across all active and historical tenders, filtering by state code, modality, status, and date range. Coverage spans all 27 Brazilian states and multiple procurement modalities including Pregão Eletrônico and others returned by get_search_parameters.
Tender Listings and Details
The list_licitacoes endpoint returns paginated tender summaries, each including codigoLicitacao, numero, resumo, razaoSocial, status, and urlReferencia. You can narrow results using objeto (keyword search on the tender description), codigo_uf (state code), codigo_modalidade, codigo_status, and date range filters data_inicial/data_final. Status codes cover active states like 1 (Recebendo Propostas), 2 (Em Andamento), and 3 (Finalizado), among others. To get the full record for any tender, pass its urlReferencia slug to get_licitacao_detail, which returns fields including tipoPregao, numeroProcesso, dataHoraAbertura, statusProcesso, and razaoSocialComprador.
Items, Documents, and Clarifications
list_licitacao_items takes a codigo_licitacao and returns either flat items or lot-grouped items depending on the isLote boolean in the response — when true, results are nested under lotes; when false, under itens.result. list_documents returns all attachments for a tender, including the document nome, tipo (Edital, Documento Anexo, Relatorio, Documento), and a download url — note that some entries have a null url and instead use tipoDownLoad and parametros fields to construct dynamic links. list_clarifications returns the tender's chat log as frasesChat objects with apelido, dataHoraFrase, and frase, paginated in reverse chronological order.
Winners and Reference Data
list_licitacao_winners scans a tender's items and returns those with situacao codes 7 (Homologado), 8 (Adjudicado), or 9 in the vencedores array, alongside a totalVencedores count. For tenders that are still open, this returns an empty array. Two utility endpoints support filter construction: list_ufs returns all 27 state codes and abbreviations, and get_search_parameters returns a superset including valid modalidades, status, julgamentos, and realizacoes arrays — useful for building a complete filter UI or validating inputs before querying.
- Monitor new public tenders in a specific Brazilian state by filtering
list_licitacoeswithcodigo_ufanddata_inicial - Track award outcomes by polling
list_licitacao_winnersfor tenders approaching their closing date - Download and archive all tender documents using the
urlandtipoDownLoadfields fromlist_documents - Build a supplier alert system that matches
objetokeywords in tender descriptions to company product categories - Audit procurement activity for a specific buying organization using
razaoSocialCompradorfromget_licitacao_detail - Analyze clarification patterns by extracting Q&A threads from
list_clarificationsacross multiple tenders - Populate a tender search UI with valid filter options using
get_search_parametersfor modalities, statuses, and states
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Portal de Compras Públicas have an official developer API?+
How does `list_licitacao_items` handle tenders with lots versus individual items?+
isLote boolean. When false, item records appear under itens.result. When true, they are grouped under lotes with their own paginated result array. Check isLote first before traversing the response.Some document entries in `list_documents` have a null `url` — what does that mean?+
tipoDownLoad integer and parametros fields are used instead of a direct URL. The specific document link must be constructed from those fields rather than read directly from url.Does the API expose supplier bid amounts or proposal details for active tenders?+
list_licitacao_winners) and clarification chat logs, but individual supplier bid amounts during the active bidding phase are not exposed. You can fork this API on Parse and revise it to add an endpoint covering proposal data if that becomes available.Can I filter tenders by municipality rather than just by state?+
list_licitacoes endpoint filters by codigo_uf (state level) and keyword (objeto), but there is no dedicated municipality-level filter parameter. You can fork this API on Parse and revise it to add municipality filtering if the underlying data supports it.