O BNMP (Banco Nacional de Medidas Penais e Prisões) é o cadastro nacional mantido pelo Conselho Nacional de Justiça (CNJ) que reúne todos os mandados de prisão, medidas penais e informações sobre a população carcerária do Brasil. Instituído pela Lei nº 12.403/2011 e regulamentado pela Resolução CNJ nº 137/2011, o BNMP é o instrumento oficial para controle e consulta de mandados de prisão em âmbito nacional.
A versão atual é o BNMP 3.0, lançada em 2024, que trouxe avanços significativos em relação ao BNMP 2.0:
Mandados de prisão — temporária, preventiva, definitiva (condenação), civil (alimentos)
Guias de recolhimento — documentos que autorizam a execução da pena
Alvarás de soltura — ordens de liberação
Contramandados — revogação de mandados anteriores
Mandados de internação — medidas de segurança
Audiências de custódia — dados de custódia incluídos (anteriormente no SISTAC separado)
Dados sociodemográficos — informações ampliadas sobre a população carcerária
Relatos de tortura — documentação de alegações de tortura (novo no BNMP 3.0)
Magistrados, membros do Ministério Público e autoridades policiais possuem acesso ampliado ao BNMP via certificado digital (e-CPF/e-CNPJ), com funcionalidades de cadastro, atualização e baixa de mandados.
import pandas as pd# Workflow recomendado: consulta no portal + registro estruturado# Este exemplo demonstra como organizar os resultados de consultas# ao BNMP em uma planilha para análises posteriores.consultas = { "data_consulta": ["2025-01-15", "2025-01-15", "2025-01-16"], "nome_consultado": ["João da Silva", "Maria Santos", "Carlos Oliveira"], "resultado": ["mandado_encontrado", "nenhum_mandado", "mandado_encontrado"], "tipo_mandado": ["Prisão preventiva", None, "Prisão definitiva"], "numero_mandado": ["0001234-56.2023.1.00.0001", None, "0007890-12.2023.1.00.0002"], "tribunal_origem": ["TJSP", None, "TJRJ"], "observacoes": [ "Mandado expedido em 10/2023", "Nenhum registro encontrado", "Trânsito em julgado em 08/2023", ],}df = pd.DataFrame(consultas)df["data_consulta"] = pd.to_datetime(df["data_consulta"])print("Registro de consultas ao BNMP:")print(df.to_string(index=False))
import requests# Após identificar um mandado de prisão no BNMP,# é possível buscar o processo correspondente no DataJud.API_KEY = "SEU_TOKEN_DATAJUD"headers = { "Authorization": f"APIKey {API_KEY}", "Content-Type": "application/json",}def buscar_processo_por_numero(tribunal: str, numero_processo: str) -> dict: """ Busca detalhes de um processo no DataJud a partir do número identificado em um mandado de prisão do BNMP. Args: tribunal: Sigla do tribunal (ex: 'tjsp') numero_processo: Número do processo (formato CNJ) Returns: Dados do processo """ url = f"https://api-publica.datajud.cnj.jus.br/api_publica_{tribunal}/_search" query = { "query": { "match": { "numeroProcesso": numero_processo, } } } response = requests.post(url, headers=headers, json=query) response.raise_for_status() resultado = response.json() hits = resultado.get("hits", {}).get("hits", []) if hits: return hits[0]["_source"] return {}# Exemplo: buscar processo vinculado a um mandado do BNMPprocesso = buscar_processo_por_numero("tjsp", "0001234-56.2023.8.26.0100")if processo: print(f"Classe: {processo.get('classe', {}).get('nome')}") print(f"Órgão julgador: {processo.get('orgaoJulgador', {}).get('nome')}")