O DataJud é a base nacional de dados do Poder Judiciário brasileiro, mantida pelo Conselho Nacional de Justiça (CNJ). Trata-se do maior repositório unificado de dados processuais do país, consolidando informações de processos judiciais de todos os ramos da Justiça: Estadual, Federal, Trabalhista, Eleitoral e Militar.
O sistema reúne dados de movimentações processuais, partes envolvidas (autores, réus, advogados), decisões, classes e assuntos processuais, seguindo o Modelo Nacional de Interoperabilidade (MNI) — padrão definido pelo CNJ para uniformizar a troca de informações entre os tribunais brasileiros.
A API do DataJud permite consultar:
Movimentações processuais — andamento cronológico de cada processo
Partes e advogados — autores, réus, terceiros interessados e representantes legais
Decisões e sentenças — dispositivos decisórios com classificação padronizada
Classes e assuntos processuais — tipologia do processo conforme Tabelas Processuais Unificadas (TPU)
Dados do órgão julgador — vara, comarca, tribunal
O DataJud é regulamentado pela Resolução CNJ nº 331/2020 e suas atualizações, que determinam a remessa obrigatória de dados por todos os tribunais do país.
Importante: O DataJud disponibiliza dados estruturados de processos judiciais, mas nem todas as informações são públicas. Processos em segredo de justiça têm acesso restrito.
A API do DataJud é baseada em Elasticsearch, permitindo consultas complexas com filtros, agregações e ordenações. As requisições são feitas via método POST com corpo JSON contendo a query Elasticsearch.
def listar_movimentacoes(tribunal: str, numero_processo: str) -> list: """ Lista as movimentações de um processo. Args: tribunal: Sigla do tribunal numero_processo: Número do processo (formato CNJ) Returns: Lista de movimentações ordenadas por data """ processo = buscar_processo(tribunal, numero_processo) if not processo: print("Processo não encontrado.") return [] movimentos = processo.get("movimentos", []) # Ordenar por data (mais recente primeiro) movimentos.sort(key=lambda m: m.get("dataHora", ""), reverse=True) return movimentos# Exemplomovimentos = listar_movimentacoes("tjsp", "1234567-89.2023.8.26.0100")for mov in movimentos[:10]: print(f"{mov.get('dataHora', 'N/A')} — {mov.get('nome', 'N/A')}")
Nem todos os tribunais enviam dados com a mesma qualidade e tempestividade. Alguns podem ter atraso na remessa de dados ao DataJud.
Processos em segredo de justiça
Processos sigilosos não estão disponíveis na API pública. Apenas metadados mínimos podem aparecer.
Dados de partes limitados
Informações pessoais das partes (CPF, nome completo) podem estar parcialmente ocultadas por questões de proteção de dados (LGPD).
Formato Elasticsearch
A API usa Elasticsearch Query DSL, o que exige familiaridade com essa sintaxe para consultas avançadas.
Rate limit por perfil
O volume de consultas permitido depende do perfil de acesso concedido pelo CNJ. Perfis de pesquisa acadêmica podem ter limites diferentes de perfis institucionais.
Padronização em andamento
Apesar do MNI, ainda há inconsistências na codificação de classes, assuntos e movimentações entre tribunais diferentes.
Sem dados financeiros
O DataJud não inclui valores de causa ou condenações de forma padronizada em todos os tribunais.
Disponibilidade
A API pode apresentar instabilidade em períodos de alta demanda. Implementar retry com backoff exponencial.
Documentação em evolução
A documentação da API no wiki do DataJud é atualizada periodicamente; verificar sempre a versão mais recente.