API pública
Tudo o que este portal mostra também sai em JSON. Sem chave, sem cadastro, sem cota — e sem pedir licença para usar.
Como ela funciona
São arquivos, não um serviço. O portal roda numa hospedagem compartilhada, sem processo residente. Cada endereço abaixo é um arquivo JSON gravado na mesma geração que desenha as páginas. Isso tem uma consequência boa e uma limitação, e as duas importam.
A boa: não cai sob carga, não tem limite de chamadas, não expira token, e o que a API devolve é exatamente o que a página mostra — sai da mesma build. Não existe caminho por onde um número divirja do outro.
A limitação: não há consulta. Não dá para filtrar, ordenar ou paginar pelo endereço; você baixa o arquivo e filtra do seu lado. Para uma base deste tamanho isso é honesto — o índice inteiro tem menos de um megabyte.
Os endereços
| Endereço | O que devolve |
|---|---|
| /candidaturas.json | Índice de todas as 20.836 candidaturas de
2026, em vetores enxutos: [sq, nome de urna, número, UF, cargo,
partido, nome para busca, unidade eleitoral]. É o mesmo arquivo
que alimenta a busca da home. |
/comparar/<sq>.json |
A ficha de uma candidatura: patrimônio, receitas, despesas,
situação, maiores doadores e histórico eleitoral. O sq é
o número sequencial do TSE, que vem no índice acima. |
| /municipios.json | Os municípios com página no portal, como
[código, nome, UF]. |
| /api/v1/disputas.json | As 55 disputas majoritárias — Presidência, os governos e o Senado —, com o endereço da página de cada uma. |
| /api/v1/fontes.json | As 23 fontes que o portal lê, quando cada uma foi lida, quantos registros vieram, em quantas horas ela deveria ser relida e se está atrasada. Serve para você desconfiar de nós com método. |
| /api/v1/veiculos.json | Os veículos de imprensa acompanhados e a linha que cada um assume publicamente. Mesma lista de Na imprensa. |
| /api/v1/resumo.json | Os totais do portal — candidaturas, bens, receitas, pesquisas, emendas, votos. Os mesmos números da sala de imprensa. |
Um exemplo inteiro
Achar uma candidatura pelo nome e abrir a ficha dela, em três linhas:
curl -s https://meuvoto.org.br/candidaturas.json \
| jq -r '.[] | select(.[6] | test("LULA")) | "\(.[0])\t\(.[1])\t\(.[5])"'
curl -s https://meuvoto.org.br/comparar/280002542548.json | jq .
O campo 6 é o nome completo já em maiúsculas e sem
acento, para casar sem tropeçar em cedilha. O campo 0 é o
sq_candidato, que é a chave de tudo.
O que pedimos, e o que não exigimos
- Os dados não são nossos. Vêm do TSE, da Câmara, do Senado, do Portal da Transparência e do IBGE — são públicos na origem, e ninguém precisa da nossa autorização para usá-los. O que fizemos foi juntar, casar e conferir.
- Crédito é pedido, não cobrado. Se este trabalho te poupou tempo, cite MeuVoto com link. Se não citar, siga usando assim mesmo.
- Cite a origem junto. Se o número for para uma matéria ou um estudo, diga também de onde ele veio antes de passar por aqui. O portal é um intermediário, e intermediário errado é possível.
- Não use isto para ranquear candidaturas. É um pedido, não uma cláusula: o portal recusa a nota, o placar e a recomendação por princípio, e a API existe para ampliar o acesso ao dado, não para terceirizar o que decidimos não fazer.
- Baixe uma vez, não em laço. São arquivos estáticos e aguentam desaforo, mas eles só mudam quando a build roda. Reler a cada minuto não traz nada de novo.
Estabilidade e aviso de mudança
O prefixo /api/v1/ é uma promessa: enquanto ele existir, os
campos que estão lá continuam existindo com o mesmo significado. Campo novo
pode aparecer; campo antigo não muda de sentido sem mudar de versão.
Os três endereços da raiz — /candidaturas.json,
/municipios.json e /comparar/ — nasceram para o
próprio site e por isso não carregam essa promessa formal. São estáveis na
prática, e qualquer mudança neles entra em
/correcoes.
Erro em dado publicado é corrigido e registrado. Se você encontrar um, avise — a correção vale mais para nós do que para você.