===== Como encontrar dados de contratações ===== - pncp.gov.br, no quadro contratações - o link levará para: https://pncp.gov.br/app/editais?q=&status=recebendo_proposta&pagina=1 - em geral, marca-se o encerradas" para ver as contratações cujo processo já foi realizado - por exemplo: https://pncp.gov.br/app/editais/63025530000104/2026/69 - em arquivos, costuma ter o PDF do edital - a seção **informação complementar** tem o código para acompanhar a contratação (o botão está com problema). neste caso é: 10212805910022026 - acessa a contratação: https://cnetmobile.estaleiro.serpro.gov.br/comprasnet-web/public/compras/acompanhamento-compra?compra=10212805910022026 Caso se tratar de uma contratação da USP, dá para ver mais documentos em: https://portalservicos.usp.br/contratacoes/banco/precos/ ===== API do compras.gov ===== # documentação https://pncp.gov.br/api/pncp/swagger-ui/index.html # geral https://pncp.gov.br/api/pncp/v1/orgaos/63025530000104/pca/2026/csv # pega o sequencial da unidade https://pncp.gov.br/api/pncp/v1/orgaos/63025530000104/pca/{uasg}/2026/sequenciaisplano # pegar os itens da sua unidade https://pncp.gov.br/api/pncp/v1/orgaos/63025530000104/pca/2026/{sequencial}/itens ===== gerador de "etiqueta" para TR ===== from datetime import datetime import json import requests import sys pca_id = 63025530000104 ano = 2026 uasg = 102136 numero = int(sys.argv[1]) if len(sys.argv) > 1 else 1 geral = "https://pncp.gov.br/api/pncp/v1/orgaos/{pca_id}/pca/{uasg}/{ano}/sequenciaisplano".format(pca_id=pca_id, uasg=uasg, ano=ano) r = requests.get(geral) tmp = json.loads(r.text) sequencial = tmp['sequencialPlano'] itens = "https://pncp.gov.br/api/pncp/v1/orgaos/{pca_id}/pca/{ano}/{sequencial}/itens".format(pca_id=pca_id, ano=ano, sequencial=sequencial) r = requests.get(itens) pca = json.loads(r.text) dfd = [d for d in pca if d['numeroItem'] == numero].pop() data = datetime.strptime(dfd['dataPublicacaoPncp'], "%Y-%m-%dT%H:%M:%S") print("ID PCA no PNCP: {pca_id}-0-{sequencial}/{ano};".format(pca_id=pca_id, sequencial=f"{sequencial:06d}", ano=ano)) print("Data de publicação no PNCP: {data};".format(data=data.strftime("%d/%m/%Y"))) print("Id do item no PCA: {uasg}-{sequencial}/{ano}-{numero};".format(uasg=uasg, sequencial=sequencial, ano=ano, numero=numero)) print("Classe/Grupo: {classe_codigo} - {classe_nome};".format(classe_codigo=dfd['classificacaoSuperiorCodigo'], classe_nome=dfd['classificacaoSuperiorNome'])) print("Identificador da Futura Contratação: {futura_id}.".format(futura_id=dfd['grupoContratacaoCodigo']))