Dados das eleições para jornalistas, pesquisadores e desenvolvedores
Os mesmos dados públicos que alimentam a Colinha Digital — resultados de 1998 a 2026 por estado, município, zona, colégio e seção eleitoral, boletins de urna, perfil do eleitorado, candidatos e o resultado oficial da apuração (1º e 2º turno de 2026) — em JSON, com documentação em português. Grátis, com limite de uso.
Versão 1.0 · atualizada em 26/10/2026 (resultado do 2º turno) · endereço base https://colinhadigital.com/api/v1/
1Começo rápido
JSON em UTF-8
Respostas compactas (listas em vez de nomes repetidos), comprimidas com gzip quando o cliente aceita.
Chave opcional
Funciona sem chave, com limite menor. A chave gratuita aumenta o limite: envie no cabeçalho X-API-Key.
CORS liberado
Dá para chamar direto do navegador (GET). Em site público, prefira chamar sem chave ou pelo seu servidor: a chave no navegador fica visível.
# sem chave (até ~1 pedido/s e 1.000 por dia por IP) curl -s --compressed "https://colinhadigital.com/api/v1/resultados/br/1" # com chave gratuita (até ~10 pedidos/s e 50.000 por dia) curl -s --compressed -H "X-API-Key: SUA_CHAVE" \ "https://colinhadigital.com/api/v1/municipios/pe/25216/resultados/11?e=2024-1" # resultado oficial do 2º turno (presidente, Brasil) curl -s -H "X-API-Key: SUA_CHAVE" "https://colinhadigital.com/api/v1/apuracao?cargo=1&abr=br&turno=2"
const API = "https://colinhadigital.com/api/v1/"; async function get(rota) { const r = await fetch(API + rota, { headers: { "X-API-Key": "SUA_CHAVE" } }); if (r.status === 429) { // passou do limite: espere e tente de novo const s = +r.headers.get("Retry-After") || 2; await new Promise(ok => setTimeout(ok, s * 1000)); return get(rota); } if (!r.ok) throw new Error((await r.json()).erro); return r.json(); } const d = await get("apuracao?cargo=1&abr=br&turno=1&top=4"); d.candidatos.forEach(c => console.log(`${c.urna} (${c.n}): ${c.pct}%`));
import time, requests API = "https://colinhadigital.com/api/v1/" s = requests.Session() s.headers["X-API-Key"] = "SUA_CHAVE" # sem esta linha funciona com limite menor def get(rota, **params): while True: r = s.get(API + rota, params=params, timeout=60) if r.status_code == 429: # respeite o Retry-After time.sleep(int(r.headers.get("Retry-After", "2"))) continue r.raise_for_status() return r.json() d = get("resultados/pe/11", e="2024-1", m=25216) # prefeito de Petrolina (PE), 2024 for n, urna, partido, _, votos, *_ in d["cands"]: print(n, urna, partido, votos)
Para descobrir o código de um município, use /api/v1/busca/lugares?q=nome (código TSE de 5 dígitos; o código do IBGE vem junto).
Há uma lista de todas as rotas em /api/v1/.
2Limites de uso
| Por segundo | Por dia | Contado por | |
|---|---|---|---|
| Sem chave | ≈ 1 (rajadas de até 5) | 1.000 | endereço IP (só na memória do servidor) |
| Com chave gratuita | ≈ 10 (rajadas de até 20) | 50.000 | chave |
O dia vira à meia-noite de Brasília. Toda resposta traz os cabeçalhos X-Limite-Dia, X-Restante-Dia e X-Limite-Segundo.
Passou do limite? Você recebe 429 com Retry-After (segundos para tentar de novo). Precisa de mais? fale com a gente.
Cache-Control indica por quanto tempo).
O resultado de 2026 (1º e 2º turno) já foi totalizado pelo TSE e não muda mais: guarde as respostas no seu sistema em vez de consultar a apuração repetidamente.3Chave gratuita
Só pedimos o nome do projeto e um e-mail de contato. A chave aparece uma única vez na tela — guarde-a.
Use no cabeçalho X-API-Key. Ela não será mostrada de novo — guardamos só uma impressão digital (hash) dela.
Já tenho uma chave
4Rotas
Todas são GET e começam com https://colinhadigital.com/api/v1/. O botão “Experimente” chama a API daqui mesmo, sem chave
(conta no limite do seu IP) e mostra o começo da resposta.
Eleições e busca
Eleições disponíveis (gerais e municipais, 1998–2026, 1º e 2º turnos) e a padrão.
Campos da resposta
- eleicoes[]
- e (ANO-TURNO), ano, turno, tipo (G = geral, M = municipal), ufs, gerado (data do processamento), fotos, perfil
/api/v1/eleicoes Resumo da eleição por UF: eleitores aptos, comparecimento, seções, colégios, municípios e totais de cada cargo.
Parâmetros
- e
- eleição no formato ANO-TURNO (ex.: 2022-1, 2024-2). Sem ele = 2026-1. Lista em /eleicoes
Campos da resposta
- ufs[]
- uf, nome, aptos, comp, nsec, nloc, nmun, cargos{código: nome, vagas, t2, ncand, val, br, nu, tot}
- br
- presidente no país (quando houver)
/api/v1/indice?e=2022-1 Busca de candidatos por nome de urna ou número.
Parâmetros
- q
- texto ou número (mín. 2 caracteres)
- uf
- sigla (opcional)
- cargo
- código do cargo (opcional)
- mun
- código TSE do município (eleição municipal)
- lim
- até 80
- e
- eleição no formato ANO-TURNO (ex.: 2022-1, 2024-2). Sem ele = 2026-1. Lista em /eleicoes
Campos da resposta
- r[]
- [uf, cargo, número, nome de urna, partido, votos, posição, situação, eleito (0/1), sq (id TSE), município, nome do município]
/api/v1/busca/candidatos?q=silva&uf=PE&cargo=6 Busca de municípios, zonas eleitorais, bairros e colégios (locais de votação).
Parâmetros
- q
- texto, nº da zona (“zona 31”) ou nº do local
- uf
- prioriza a UF
- mun
- prioriza o município
- lim
- 3 a 25
- e
- eleição no formato ANO-TURNO (ex.: 2022-1, 2024-2). Sem ele = 2026-1. Lista em /eleicoes
Campos da resposta
- m[]
- municípios: [uf, código TSE, nome, capital (0/1), aptos, seções, colégios]
- z[]
- zonas: [uf, município, nome, zona, colégios, seções, aptos]
- b[]
- bairros: [uf, município, nome do município, id do bairro, bairro, colégios, aptos]
- l[]
- colégios: [uf, município, nome do município, id do colégio, zona, nº do local TSE, nome, bairro, endereço, seções, aptos]
/api/v1/busca/lugares?q=petrolina Resultados
Resultado do cargo na UF: candidatos, chapas e o resultado em cada município. Use uf=br e cargo=1 para presidente por UF. Em eleição municipal, passe m= para ver a disputa de um município.
Parâmetros
- uf
- sigla minúscula ou br
- cargo
- 1 presidente · 3 governador · 5 senador · 6 deputado federal · 7 deputado estadual · 8 deputado distrital · 11 prefeito · 13 vereador
- m
- código TSE do município (eleições municipais)
- e
- eleição no formato ANO-TURNO (ex.: 2022-1, 2024-2). Sem ele = 2026-1. Lista em /eleicoes
Campos da resposta
- info
- uf, nome, aptos, comp (comparecimento), nsec, nloc, nmun, dados_tse (data do arquivo do TSE), cargo{vagas, qe (quociente eleitoral), val, br, nu, tot, leg}
- cands[]
- [número, nome de urna, partido, nº do partido, votos, posição, situação, eleito (0/1), sq, chapa, voto válido (0/1)]
- legs[]
- chapas/federações: [chave, nome, siglas, tipo, vagas obtidas, votos nominais, votos de legenda, nº dos partidos]
- muns[]
- [código TSE, código IBGE, nome, capital, aptos, comp, seções, colégios, válidos, brancos, nulos, total, legenda, 1º (nº), votos do 1º, 2º (nº), votos do 2º, menos votado (nº), votos dele, nº com voto, nº empatados]
/api/v1/resultados/pe/11?e=2024-1&m=25216 Em cada UF: 1º, 2º e o menos votado do cargo (governador, senador, deputados…).
Parâmetros
- cargo
- 1 presidente · 3 governador · 5 senador · 6 deputado federal · 7 deputado estadual · 8 deputado distrital · 11 prefeito · 13 vereador
- e
- eleição no formato ANO-TURNO (ex.: 2022-1, 2024-2). Sem ele = 2026-1. Lista em /eleicoes
Campos da resposta
- u{UF}
- [nº 1º, urna, partido, votos, nº 2º, urna, partido, votos, nº menos votado, urna, partido, votos, nº com voto, nº empatados, nº de válidos]
/api/v1/panorama/3 Um candidato: dados e votos/posição em cada município da UF (presidente: informe a UF desejada).
Parâmetros
- m
- município (eleição municipal)
- e
- eleição no formato ANO-TURNO (ex.: 2022-1, 2024-2). Sem ele = 2026-1. Lista em /eleicoes
Campos da resposta
- c
- [número, nome, urna, partido, nº do partido, sq, coligação, chapa, situação, eleito, válido, votos, posição]
- mv[]
- [código do município, votos, posição no município]
- chapa[]
- outros candidatos da mesma chapa (proporcionais)
/api/v1/candidatos/pe/1/13 Ficha declarada ao TSE (só 2026): perfil, bens declarados e totais de campanha. Para presidente use uf=br.
Campos da resposta
- perfil
- nome, urna, idade, gênero, cor/raça, instrução, estado civil, ocupação, naturalidade, partido, federação, coligação, redes
- bens
- bens_total, bens_n, bens[] = [tipo, descrição, valor]
- campanha
- rec (receitas), desp (despesas contratadas), pago, rec_orig/rec_fonte/desp_tipo (resumos), doad_n e forn_n (quantidades)
- fora da API
- CPF (mesmo mascarado) e a lista nominal de doadores e fornecedores
/api/v1/candidatos/br/1/13/ficha Município, colégio, seção e boletim de urna
Colégios eleitorais (locais de votação) com coordenadas, bairros e zonas do município.
Parâmetros
- e
- eleição no formato ANO-TURNO (ex.: 2022-1, 2024-2). Sem ele = 2026-1. Lista em /eleicoes
Campos da resposta
- mun
- [código TSE, IBGE, nome, capital, aptos, comp, seções, colégios, zonas]
- locs[]
- [id do colégio, zona, nº do local TSE, nome, bairro, endereço, latitude, longitude, seções, aptos, comp, id do bairro]
- bai[]
- [id do bairro, nome, índice no mapa de bairros (−1 = fora da malha)]
/api/v1/municipios/pe/25216 Resultado no município: totais, mais votados e líderes por colégio, bairro e zona.
Parâmetros
- e
- eleição no formato ANO-TURNO (ex.: 2022-1, 2024-2). Sem ele = 2026-1. Lista em /eleicoes
Campos da resposta
- t
- [válidos, brancos, nulos, total, legenda, 1º, votos do 1º, 2º, votos do 2º]
- top[]
- [candidato, votos, posição]
- lt[]
- por colégio: [id, válidos, brancos, nulos, total, 1º, votos, 2º, votos, menos votado, votos, nº com voto, nº empatados]
- bt / zt
- por bairro / zona: {id: [[candidato, votos] … 3 primeiros]}
- bu / zu
- menos votado por bairro / zona
/api/v1/municipios/pe/25216/resultados/11?e=2024-1 Um colégio: seções e resultado de cada cargo; com cargo= traz seção por seção.
Parâmetros
- cargo
- detalha por seção
- n
- números para acompanhar (até 8, separados por vírgula)
- e
- eleição no formato ANO-TURNO (ex.: 2022-1, 2024-2). Sem ele = 2026-1. Lista em /eleicoes
Campos da resposta
- loc
- mesmos campos de locs[]
- cargos{}
- {cargo: {t: [válidos, brancos, nulos, total], top: [[candidato, votos, posição]]}}
- secs[]
- [seção, aptos]
- st / sv
- com cargo=: totais e votos por seção
/api/v1/municipios/pe/25216/colegios/0?cargo=1 Boletim de urna de uma seção (2012–2026), com a situação do acervo de arquivos de urna do TSE.
Parâmetros
- e
- eleição no formato ANO-TURNO (ex.: 2022-1, 2024-2). Sem ele = 2026-1. Lista em /eleicoes
Campos da resposta
- cargos[]
- cargo, nome, aptos, comp, nom (nominais), leg, br, nu, val, tot, c[] = [número, urna, partido, votos, …]
- urna
- dados do boletim: modelo, abertura, encerramento, etc. (quando publicados pelo TSE)
- acervo
- se há arquivos originais da urna disponíveis
/api/v1/boletins/pe/25216/83/1 Perfil do eleitorado
Perfil do eleitorado da UF e de cada município (TSE, 2010–2026). uf=br = país por UF.
Parâmetros
- e
- eleição no formato ANO-TURNO (ex.: 2022-1, 2024-2). Sem ele = 2026-1. Lista em /eleicoes
Campos da resposta
- info.dims
- rótulos das dimensões: g gênero, f faixa etária, e escolaridade, c estado civil, r raça/cor, x outros (biometria, deficiência, nome social…)
- tot / muns{}
- contagens na mesma ordem dos rótulos
/api/v1/perfil/pe Perfil do eleitorado do município e de cada colégio.
Parâmetros
- e
- eleição no formato ANO-TURNO (ex.: 2022-1, 2024-2). Sem ele = 2026-1. Lista em /eleicoes
Campos da resposta
- mun
- contagens do município por dimensão
- locs{}
- contagens por colégio (id)
/api/v1/perfil/pe/25216 Resultado oficial da apuração de 2026 (1º e 2º turno)
Resultado oficial do TSE para presidente e governador, por Brasil, estado ou município (um município por pedido: abr = UF + código TSE), no 1º e no 2º turno de 2026. O 2º turno foi totalizado pelo TSE em 25/10/2026 às 23:27 (Brasília).
Parâmetros
- cargo
- 1 presidente ou 3 governador
- abr
- br, uf (ex.: am) ou uf+município TSE (ex.: am02550)
- turno
- 1 ou 2
- top
- limita a lista de candidatos (até 50)
Campos da resposta
- status
- ok · aguardando (eleição ainda sem dados do TSE) · indisponivel
- secoes
- pct, apuradas, total
- elei
- aptos, comp, pcomp, abst, pabst
- votos
- validos, brancos, nulos (+ percentuais)
- candidatos[]
- n, urna, partido, votos, pct (% dos válidos), situacao, eleito
- ger
- data e hora do arquivo do TSE
/api/v1/apuracao?cargo=1&abr=br&turno=1&top=4 Códigos TSE dos municípios de uma UF (para montar abr=).
Parâmetros
- uf
- sigla
Campos da resposta
- municipios[]
- cd (código TSE), nm (nome), cdi (IBGE)
/api/v1/apuracao/municipios?uf=am Quem disputou o 2º turno de 25/10/2026: presidente e governador (AC, AM, DF, ES, RN, TO), em ordem de número. Votos, percentual e situação de cada um (Eleito / Não eleito, do TSE) estão em /api/v1/apuracao com turno=2.
Campos da resposta
- presidente[] / governadores{UF}[]
- n, urna, part, vice, vice_part, sq, vice_sq, foto (cópia local), foto_tse
- estados_governador
- UFs com 2º turno de governador
/api/v1/2turno/candidatos Gerenciar a chave
Cria uma chave: {"projeto": "...", "email": "...", "aceite": true}. Até 3 chaves por conexão por dia. Só pelo formulário acima ou pelo seu servidor (não aceita chamadas de outros sites pelo navegador).
Uso de hoje, limites e dados da chave enviada em X-API-Key (e-mail aparece mascarado).
Apaga a chave, o e-mail e a contagem de uso, na hora.
5Códigos usados
| Campo | Valores |
|---|---|
e | ANO-TURNO: eleições gerais 1998, 2002 … 2026 e municipais 2000 … 2024; turno 1 ou 2. Para o 2º turno de 2026 (2026-2), os resultados por seção entram quando o TSE publicar os dados abertos de votação por seção; até lá, o resultado por Brasil, estado e município está em /api/v1/apuracao (turno=2). Lista viva em /api/v1/eleicoes. |
cargo | 1 presidente · 3 governador · 5 senador · 6 deputado federal · 7 deputado estadual · 8 deputado distrital · 11 prefeito · 13 vereador |
uf | sigla em minúsculas (ac … to); br onde indicado; zz = votos no exterior (boletins). |
municipio | código do TSE (até 5 dígitos), não o do IBGE. Ex.: Petrolina (PE) = 25216; Manaus (AM) = 2550. |
situação | texto do TSE: Eleito, Eleito por QP, Eleito por média, 2º turno, Não eleito, Suplente… |
| números | votos são inteiros; percentuais (apuração) com 2 casas, sobre os votos válidos. |
Limites conhecidos dos dados do TSE: 1998 sem presidente e sem nº de local; 2000 com alguns estados incompletos; perfil do eleitorado só de 2010 em diante; boletins de urna de 2012 em diante. Detalhes e correções no registro de correções do Raio-X.
6Erros
| Código | Quando acontece |
|---|---|
| 400 | parâmetro inválido (ou cadastro incompleto). |
| 401 | chave em formato errado, apagada ou inexistente. Sem chave não há 401. |
| 403 | chave suspensa por uso fora dos termos, ou apuração desligada no momento. |
| 404 | rota, eleição, UF, município, colégio, seção ou candidato que não existe. |
| 429 | limite por segundo ou por dia atingido — veja Retry-After. |
| 5xx | falha nossa ou do TSE. Tente de novo em alguns minutos. |
O corpo do erro é sempre JSON: {"erro": "mensagem em português", "documentacao": "https://colinhadigital.com/dados/"}.
7Termos de uso (versão 2026-10-10)
- Dados públicos. A origem é o Tribunal Superior Eleitoral (TSE) e outras fontes oficiais indicadas. A Colinha Digital, da Vorax Segurança Cibernética, organiza e trata esses dados. Não é sistema oficial e não tem vínculo com a Justiça Eleitoral, partidos ou candidatos.
- Sem garantia. A API é oferecida “como está”, sem garantia de disponibilidade ou de ausência de erros. O resultado oficial é sempre o publicado pelo TSE — confira lá antes de qualquer decisão importante.
- Cite a fonte. Ao publicar qualquer coisa feita com estes dados, cite “Colinha Digital / Vorax” e a fonte TSE (veja como citar). A reutilização, inclusive comercial, é permitida com essa atribuição.
- É proibido usar a API para disparo em massa de mensagens (WhatsApp, SMS, e-mail, robôs), para desinformação ou para apresentar dados alterados como se fossem oficiais; para identificar, expor ou perseguir pessoas; ou para contornar os limites (várias chaves, troca de IPs).
- Lei eleitoral. Quem usa os dados responde pelo que publica, inclusive perante a legislação eleitoral (Lei 9.504/1997 e resoluções do TSE). A API não contém pesquisas eleitorais.
- Suspensão e mudanças. Podemos suspender chaves usadas fora destes termos e ajustar limites. Mudanças que quebrem a compatibilidade irão para um novo endereço (/api/v2) com aviso nesta página.
- Prioridade do site. Em picos (dia de eleição e apuração), a API pode ficar mais lenta para preservar o atendimento ao eleitor no site.
8Como citar
Texto curto (gráficos, matérias, posts)
Fonte: TSE, via Colinha Digital / Vorax (colinhadigital.com/dados)
ABNT (NBR 6023)
VORAX SEGURANÇA CIBERNÉTICA. Colinha Digital: dados eleitorais públicos — API v1. Dados de origem: Tribunal Superior Eleitoral (TSE). [S. l.]: Vorax, 2026. Disponível em: https://colinhadigital.com/dados/. Acesso em: 10 out. 2026.
BibTeX
@misc{colinhadigital_api_2026,
author = {{Vorax Segurança Cibernética}},
title = {Colinha Digital: dados eleitorais públicos (API v1)},
year = {2026},
howpublished = {\url{https://colinhadigital.com/dados/}},
note = {Dados de origem: Tribunal Superior Eleitoral (TSE). Acesso em: 2026-10-10}
}
9Privacidade (LGPD)
- Sem chave: não guardamos nada sobre os seus pedidos além do registro técnico do servidor web (IP, horário e endereço pedido), apagado automaticamente pela rotação de registros. A contagem do limite por IP fica só na memória do servidor.
- Com chave: guardamos o nome do projeto, o e-mail, a data do cadastro, a versão dos termos aceitos, a contagem de pedidos por dia (90 dias) e a data do último uso. Para frear cadastros automáticos, guardamos por até 2 dias uma impressão digital (hash) do IP do cadastro — nunca o IP em si.
- Finalidade do e-mail: exclusivamente contato sobre a API (avisos de mudança, falhas, uso abusivo). Base legal: procedimentos para atender ao seu pedido (art. 7º, V, da LGPD) e legítimo interesse na segurança do serviço (art. 7º, IX). O e-mail nunca é publicado, vendido, compartilhado, usado para propaganda ou campanha, nem entra em relatórios.
- Prazo: enquanto a chave existir. Chave sem uso por 12 meses é apagada com o e-mail. Você mesmo pode apagar tudo a qualquer momento no formulário acima.
- A chave é guardada só como hash: nem a Vorax consegue lê-la depois de criada.
- Seus direitos (acesso, correção, exclusão) e o contato do encarregado estão na Política de privacidade.
?Dúvidas, limite maior ou parceria
Fale com a Vorax pelo WhatsApp +55 92 98466-7519. Para jornais, TVs e rádios há também a versão com a marca do veículo.