Dados Abertos · eleitorado por local de votação
Locais de votação 2026: lista com endereço e coordenadas
Por Voto Aberto · atualizado em 27/10/2026 · fonte: Tribunal Superior Eleitoral (TSE)
Resposta curta
A lista de locais de votação está no arquivo Eleitorado por local de votação do Portal de Dados Abertos do TSE: uma linha por seção, com o local, o endereço, o bairro, o CEP, a latitude, a longitude e o eleitorado.
O ZIP tem um CSV por UF (cerca de 170 MB no total). Agrupe por zona e número do local para ter uma linha por escola.
Quer só saber onde você vota?
- Seu local de votação. Consulte no e-Título ou no autoatendimento do site do TSE, com nome, CPF ou título.
- Resultado da sua escola. Na página da sua cidade no Voto Aberto, cada local de votação aparece com o resultado e no mapa.
Passo a passo com os arquivos do TSE
- Baixe o ZIP uma vez.
https://cdn.tse.jus.br/estatistica/sead/odsele/eleitorado_locais_votacao/eleitorado_local_votacao_2026.zip - Abra só a sua UF.
eleitorado_local_votacao_2026_SP.csv, por exemplo. O arquivo_BRASILrepete todas as UFs. - Filtre o turno e o município.
NR_TURNOeNM_MUNICIPIO(ouCD_MUNICIPIO, código do TSE). - Agrupe por zona e local. Some
QT_ELEITOR_ELEICAO_FEDERALe conte as seções.
Código pronto para copiar
# Locais de votação com endereço, coordenadas e eleitorado (Dados Abertos do TSE) com pandas
import os, urllib.request, zipfile
import pandas as pd
UF, MUNICIPIO = "SP", "CAMPINAS"
url = "https://cdn.tse.jus.br/estatistica/sead/odsele/eleitorado_locais_votacao/eleitorado_local_votacao_2026.zip"
arquivo = "eleitorado_local_votacao_2026.zip" # ~170 MB, todas as UFs; baixa uma vez só
if not os.path.exists(arquivo):
urllib.request.urlretrieve(url, arquivo)
z = zipfile.ZipFile(arquivo)
df = pd.read_csv(z.open(f"eleitorado_local_votacao_2026_{UF}.csv"), sep=";", encoding="latin-1", decimal=",")
df = df[(df["NR_TURNO"] == 1) & (df["NM_MUNICIPIO"] == MUNICIPIO)]
# Uma linha por local. NR_LOCAL_VOTACAO só é único dentro da zona.
# Use QT_ELEITOR_ELEICAO_FEDERAL (é o que bate com o total oficial de aptos em eleição geral).
locais = (df.groupby(["NR_ZONA", "NR_LOCAL_VOTACAO"])
.agg(nome=("NM_LOCAL_VOTACAO", "first"), endereco=("DS_ENDERECO", "first"), bairro=("NM_BAIRRO", "first"),
lat=("NR_LATITUDE", "first"), lon=("NR_LONGITUDE", "first"),
secoes=("NR_SECAO", "nunique"), aptos=("QT_ELEITOR_ELEICAO_FEDERAL", "sum"))
.reset_index().sort_values("aptos", ascending=False))
locais.loc[locais["lat"] == -1, ["lat", "lon"]] = None # -1 = sem coordenada
print(len(locais), "locais;", int(locais["aptos"].sum()), "eleitores aptos")
print(locais.head(10).to_string(index=False))
locais.to_csv(f"locais_{MUNICIPIO.lower()}.csv", index=False)# Locais de votação com endereço, coordenadas e eleitorado (Dados Abertos do TSE) com data.table
library(data.table)
options(timeout = 600)
uf <- "SP"; municipio <- "CAMPINAS"
arquivo <- "eleitorado_local_votacao_2026.zip" # ~170 MB, todas as UFs; baixa uma vez só
if (!file.exists(arquivo))
download.file("https://cdn.tse.jus.br/estatistica/sead/odsele/eleitorado_locais_votacao/eleitorado_local_votacao_2026.zip",
arquivo, mode = "wb")
csv <- unzip(arquivo, files = sprintf("eleitorado_local_votacao_2026_%s.csv", uf), exdir = tempdir())
df <- fread(csv, encoding = "Latin-1", dec = ",")[NR_TURNO == 1 & NM_MUNICIPIO == municipio]
# Uma linha por local. NR_LOCAL_VOTACAO só é único dentro da zona.
locais <- df[, .(nome = NM_LOCAL_VOTACAO[1], endereco = DS_ENDERECO[1], bairro = NM_BAIRRO[1],
lat = NR_LATITUDE[1], lon = NR_LONGITUDE[1],
secoes = uniqueN(NR_SECAO), aptos = sum(QT_ELEITOR_ELEICAO_FEDERAL)),
by = .(NR_ZONA, NR_LOCAL_VOTACAO)][order(-aptos)]
locais[lat == -1, `:=`(lat = NA, lon = NA)] # -1 = sem coordenada
head(locais, 10)O código em R usa os pacotes jsonlite e data.table (install.packages(c("jsonlite", "data.table"))).
Saída do Python para Campinas (SP): 268 locais e 873.613 eleitores aptos, o mesmo total do resultado oficial do 1º turno. O código em Python foi executado pelo Voto Aberto em 26/10/2026.
Erros comuns
- O número do local só vale dentro da zona: agrupe sempre por zona e número.
- Qual coluna de eleitorado: em eleição geral, use
QT_ELEITOR_ELEICAO_FEDERAL. Ela bate com o total oficial de aptos;QT_ELEITOR_SECAOnão bate. - Vírgula decimal: latitude e longitude vêm como
-22,86. Leia comdecimal=",". - Coordenadas faltando ou erradas: -1 significa sem coordenada, e algumas caem longe do município. Confira antes de pôr no mapa.
- Arquivo BRASIL duplicado: somar todos os CSVs do ZIP conta cada seção duas vezes.
- Local mudou: se o local de uma seção mudou depois do cadastro, o número antigo fica em
NR_LOCAL_VOTACAO_ORIGINAL. Para juntar com os votos, use município, zona e seção.
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 dadosPerguntas frequentes
Quantos locais de votação há no Brasil em 2026?
Somando as seções com votos para presidente no 1º turno, o Voto Aberto contou 94.709 locais de votação, incluindo o exterior.
Onde baixar a lista de locais de votação de 2026?
No Portal de Dados Abertos do TSE, conjunto 'Eleitorado 2026', arquivo 'Eleitorado por local de votação'.
A lista tem latitude e longitude?
Sim, nas colunas NR_LATITUDE e NR_LONGITUDE, com vírgula decimal. Alguns locais vêm sem coordenada (-1) ou com coordenada fora do município.
Como juntar locais de votação e resultado?
Pela chave município + zona + seção, que existe nos dois arquivos. O Voto Aberto publica essa junção pronta para presidente em 2026.
Quantos eleitores votam em cada escola?
Some QT_ELEITOR_ELEICAO_FEDERAL das seções do local. Na página da sua cidade no Voto Aberto, isso já está calculado.
Outros guias
Fontes: Portal de Dados Abertos — Eleitorado 2026. Como citar: “Voto Aberto, com dados do TSE”.