Boletim de urna · BU
Boletim de urna: o que é, como consultar e baixar
Por Voto Aberto · atualizado em 27/10/2026 · fonte: Tribunal Superior Eleitoral (TSE)
Resposta curta
O boletim de urna (BU) é o extrato que cada urna imprime ao fim da votação, com os votos da seção. Ele é afixado na porta da seção e publicado pelo TSE.
Para um BU, use a consulta de boletim no site de Resultados do TSE ou leia o QR code impresso com o app oficial Boletim na Mão. Para todos os BUs de uma UF, baixe o arquivo bweb (CSV) no Portal de Dados Abertos.
Como ver o boletim de urna da sua seção (sem programar)
- No site do TSE. Abra o Resultados do TSE, escolha a eleição e o cargo, vá aos dados de urna e informe UF, município, zona e seção. Zona e seção estão no seu título de eleitor e no e-Título.
- Pelo QR code. Aponte a câmera do app oficial do TSE Boletim na Mão para o QR code do BU impresso, afixado na porta da seção. O app confere a assinatura digital.
- Resumo por escola. Na página da sua cidade no Voto Aberto, o resultado aparece somado por local de votação (escola), com mapa.
- Exterior. Quem votou fora do Brasil acha a seção do mesmo jeito; nos arquivos do TSE o exterior tem a sigla ZZ e o BU do 1º turno já está no Portal de Dados Abertos.
- 2º turno. Os boletins do 2º turno (25/10/2026) já podem ser vistos um a um no site de Resultados. O arquivo com todos os BUs do 2º turno em CSV ainda não estava no Portal de Dados Abertos em 27/10/2026.
Passo a passo com os arquivos do TSE
- Um BU, sem programar. Site de Resultados do TSE, opção de dados de urna, e escolha UF, município, zona e seção.
- Todos os BUs de uma UF. Conjunto 'Resultados 2026 – Boletim de Urna' no Portal de Dados Abertos: um ZIP por UF e turno, com o hash SHA-512 ao lado.
- Leia o CSV. Separador ponto e vírgula, Latin-1. Uma linha por seção, cargo e votável, com aptos, comparecimento, urna, abertura e encerramento.
- O QR code. Cada BU impresso traz um ou mais QR codes. O texto é uma sequência de pares
CHAVE:VALORseparados por espaço, com hash e assinatura digital. A lista completa de campos está no manual oficial do TSE.
Código pronto para copiar
# Boletins de urna de uma UF em CSV (arquivo "bweb" dos Dados Abertos) com pandas
import io, urllib.request, zipfile
import pandas as pd
url = "https://cdn.tse.jus.br/estatistica/sead/eleicoes/eleicoes2026/buweb/bweb_1t_AC_051020261403.zip"
z = zipfile.ZipFile(io.BytesIO(urllib.request.urlopen(url, timeout=600).read()))
csv_nome = next(n for n in z.namelist() if n.lower().endswith(".csv"))
bu = pd.read_csv(z.open(csv_nome), sep=";", encoding="latin-1",
usecols=["NM_MUNICIPIO", "NR_ZONA", "NR_SECAO", "DS_CARGO_PERGUNTA", "QT_APTOS",
"QT_COMPARECIMENTO", "NR_VOTAVEL", "NM_VOTAVEL", "QT_VOTOS", "NR_URNA_EFETIVADA",
"DT_ABERTURA", "DT_ENCERRAMENTO", "DS_SECOES_AGREGADAS"])
# O boletim de uma seção (a primeira do arquivo; troque por município, zona e seção que quiser)
mun, zona, sec = bu.iloc[0][["NM_MUNICIPIO", "NR_ZONA", "NR_SECAO"]]
secao = bu[(bu["NM_MUNICIPIO"] == mun) & (bu["NR_ZONA"] == zona) & (bu["NR_SECAO"] == sec)]
print(mun, "zona", zona, "seção", sec)
pres = secao[secao["DS_CARGO_PERGUNTA"] == "Presidente"].sort_values("NR_VOTAVEL")
print(pres[["NR_VOTAVEL", "NM_VOTAVEL", "QT_VOTOS"]].to_string(index=False))
print("Urna:", secao["NR_URNA_EFETIVADA"].iloc[0], "| abriu:", secao["DT_ABERTURA"].iloc[0],
"| encerrou:", secao["DT_ENCERRAMENTO"].iloc[0])
# Conferência: em cada seção e cargo, votos = comparecimento × nº de votos por eleitor (2 para senador em 2026)
soma = bu.groupby(["NM_MUNICIPIO", "NR_ZONA", "NR_SECAO", "DS_CARGO_PERGUNTA"], as_index=False).agg(
votos=("QT_VOTOS", "sum"), comp=("QT_COMPARECIMENTO", "first"))
soma["esperado"] = soma["comp"] * soma["DS_CARGO_PERGUNTA"].map(lambda c: 2 if c == "Senador" else 1)
print("Seções × cargos conferidos:", len(soma), "| não fecham:", (soma["votos"] != soma["esperado"]).sum())# Boletins de urna de uma UF em CSV (arquivo "bweb" dos Dados Abertos) com data.table
library(data.table)
options(timeout = 600)
url <- "https://cdn.tse.jus.br/estatistica/sead/eleicoes/eleicoes2026/buweb/bweb_1t_AC_051020261403.zip"
zip <- tempfile(fileext = ".zip")
download.file(url, zip, mode = "wb")
csv <- unzip(zip, exdir = tempdir())
bu <- fread(grep("\\.csv$", csv, value = TRUE, ignore.case = TRUE)[1], encoding = "Latin-1")
# Conferência: votos = comparecimento × nº de votos por eleitor (2 para senador em 2026)
soma <- bu[, .(votos = sum(QT_VOTOS), comp = QT_COMPARECIMENTO[1]),
by = .(NM_MUNICIPIO, NR_ZONA, NR_SECAO, DS_CARGO_PERGUNTA)]
soma[, esperado := comp * ifelse(DS_CARGO_PERGUNTA == "Senador", 2, 1)]
soma[votos != esperado, .N] # 0 = todos os boletins fechamO código em R usa os pacotes jsonlite e data.table (install.packages(c("jsonlite", "data.table"))).
Saída do Python: uma seção de Cruzeiro do Sul (AC), zona 4, seção 175, com votos por candidato; e a conferência das 11.350 combinações de seção e cargo do Acre no 1º turno, todas fechando. O código em Python foi executado pelo Voto Aberto em 26/10/2026.
Lendo o texto do QR code
# Lê o texto de um QR code do boletim de urna (o que um leitor de QR devolve) em um dicionário
# Formato: pares CHAVE:VALOR separados por espaço; um BU longo vem em vários QR codes (QRBU:1:3, QRBU:2:3...)
def ler_qr(texto):
campos = {}
for par in texto.split():
chave, _, valor = par.partition(":")
campos.setdefault(chave, []).append(valor)
return campos
def juntar(textos):
"""Junta os QR codes de um mesmo BU na ordem de QRBU."""
partes = sorted(textos, key=lambda t: int(ler_qr(t)["QRBU"][0].split(":")[0]))
return " ".join(partes)
# Exemplo ILUSTRATIVO (valores inventados; leia o QR do seu BU com o app Boletim na Mão ou qualquer leitor de QR)
exemplo = "QRBU:1:1 VRQR:1.5 UNFE:AC MUNI:01120 ZONA:0004 SECA:0175 HASH:ab12"
qr = ler_qr(juntar([exemplo]))
print(qr["UNFE"], qr["MUNI"], qr["ZONA"], qr["SECA"])Exemplo ilustrativo de leitura do texto do QR code. A lista de campos e a verificação da assinatura estão no manual oficial do TSE (QR code no boletim de urna).
Erros comuns
- Senador em 2026: cada eleitor votou em dois senadores, então a soma dos votos de senador é o dobro do comparecimento.
- Uma linha não é um voto: cada linha é um total (
QT_VOTOS) de um número numa seção. - Nome do arquivo com data e hora: o ZIP tem a data de geração no nome (
bweb_1t_AC_051020261403.zip). Pegue o endereço atual no portal. - O QR code sozinho não traz nomes: ele usa códigos numéricos. Os nomes vêm do arquivo de dados complementares do TSE.
Quer o dado já limpo?
O Voto Aberto publica o resultado de presidente em 2026 por município e por local de votação, com endereço e coordenadas, conferido com o total oficial do TSE. Licença CC BY 4.0.
Baixar o datasetTodos os dadosPrecisa do resultado por seção já casado com o local de votação geocodificado, de 2022 e 2026, por UF? Conte o que você precisa.
Perguntas frequentes
O que é o boletim de urna?
É o relatório que a urna eletrônica imprime quando a votação termina, com o total de votos da seção para cada candidato, os brancos, os nulos, o número de eleitores aptos e o comparecimento. Uma via é afixada na porta da seção e o TSE publica todos na internet.
Como consultar o boletim de urna da minha seção?
No site Resultados do TSE, na consulta de dados de urna, escolhendo UF, município, zona e seção (estão no título de eleitor e no e-Título). Também dá para ler o QR code do BU impresso com o app Boletim na Mão.
Como ver o boletim de urna do exterior?
Do mesmo jeito, escolhendo o país e a cidade em que você votou. Nos arquivos de dados abertos do TSE, o exterior tem a sigla ZZ.
Já dá para ver o boletim de urna do 2º turno de 2026?
Sim, seção por seção, no site Resultados do TSE. O arquivo em lote (bweb) do 2º turno ainda não estava no Portal de Dados Abertos em 27/10/2026.
Existe aplicativo para ler o boletim de urna?
Sim. O app oficial do TSE Boletim na Mão lê o QR code impresso no BU e confere a assinatura digital.
Onde baixar o boletim de urna de 2022?
No Portal de Dados Abertos do TSE, no conjunto 'Resultados 2022 – Boletim de Urna', com um arquivo por UF e turno.
Onde baixar todos os boletins de urna em CSV?
No Portal de Dados Abertos do TSE, conjunto 'Resultados 2026 – Boletim de Urna', um arquivo bweb por UF e turno.
O que tem no QR code do boletim de urna?
Os mesmos dados do BU impresso, em pares chave:valor, mais um hash cumulativo e uma assinatura digital que permitem conferir que o conteúdo veio da urna.
Outros guias
Fontes: Portal de Dados Abertos — Boletim de Urna 2026 · TSE — Manual do QR code no boletim de urna (2026) · Resultados — TSE. Como citar: “Voto Aberto, com dados do TSE”.