O CEIS (Cadastro Nacional de Empresas Inidôneas e Suspensas) é um banco de dados mantido pela Controladoria-Geral da União (CGU) que consolida a relação de empresas e pessoas físicas que sofreram sanções que as tornam impedidas de participar de licitações ou celebrar contratos com a Administração Pública.
O CEIS reúne informações de todos os entes federativos (federal, estadual e municipal) e é uma das ferramentas mais importantes para prevenir a contratação de empresas com histórico de irregularidades. As sanções incluem:
Declaração de inidoneidade (Lei 8.666/93, art. 87, IV — largamente substituida pela Lei 14.133/2021, Nova Lei de Licitacoes)
Suspensão temporária de participação em licitações (Lei 8.666/93, art. 87, III — largamente substituida pela Lei 14.133/2021)
Impedimento de licitar e contratar (Lei 10.520/02, art. 7 — largamente substituida pela Lei 14.133/2021)
O CEIS, junto com o CNEP, CEPIM e CEAF, forma o conjunto de cadastros de sanções do Portal da Transparência, essencial para detectar empresas e pessoas envolvidas em corrupção.
def verificar_empresa(cnpj: str): """ Verifica se uma empresa consta no CEIS. Args: cnpj: CNPJ da empresa (apenas números) Returns: True se a empresa estiver sancionada, False caso contrário """ resultado = consultar_ceis(cnpj=cnpj) if resultado: print(f"ALERTA: Empresa {cnpj} encontrada no CEIS!") for s in resultado: print(f" Sanção: {s.get('categoriaSancao', 'N/A')}") print(f" Início: {s.get('dataInicioSancao', 'N/A')}") print(f" Fim: {s.get('dataFimSancao', 'N/A')}") print(f" Órgão sancionador: {s.get('orgaoSancionador', 'N/A')}") return True else: print(f"Empresa {cnpj} NÃO consta no CEIS.") return False# Verificar uma empresaverificar_empresa("00000000000191")
import timedef verificar_lote_cnpjs(cnpjs: list): """ Verifica uma lista de CNPJs contra o CEIS. Args: cnpjs: Lista de CNPJs para verificar Returns: DataFrame com resultados """ resultados = [] for cnpj in cnpjs: sancoes = consultar_ceis(cnpj=cnpj) if sancoes: for s in sancoes: resultados.append({ "cnpj": cnpj, "nome": s.get("nomeSancionado"), "categoria": s.get("categoriaSancao"), "inicio": s.get("dataInicioSancao"), "fim": s.get("dataFimSancao"), "orgao": s.get("orgaoSancionador"), }) time.sleep(2) # Respeitar rate limit de 30 req/min return pd.DataFrame(resultados)# Exemplo: verificar uma lista de fornecedoresfornecedores = ["00000000000191", "33000167000101", "00360305000104"]df_sancoes = verificar_lote_cnpjs(fornecedores)print(f"Fornecedores sancionados encontrados: {len(df_sancoes)}")