Resultado final · TSE
Início › Dados › Aprenda

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)

  1. 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.
  2. 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.
  3. Resumo por escola. Na página da sua cidade no Voto Aberto, o resultado aparece somado por local de votação (escola), com mapa.
  4. 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.
  5. 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

  1. Um BU, sem programar. Site de Resultados do TSE, opção de dados de urna, e escolha UF, município, zona e seção.
  2. 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.
  3. 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.
  4. O QR code. Cada BU impresso traz um ou mais QR codes. O texto é uma sequência de pares CHAVE:VALOR separados 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())

O 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

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 dados

Precisa 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

API do TSE: como pegar o resultado da eleição em JSONAPI de resultados · JSONResultado por seção eleitoral: como ver e baixarDados Abertos · votação por seçãoLocais de votação 2026: lista com endereço e coordenadasDados Abertos · eleitorado por local de votação

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”.