Busca de Endereços com Python: Consultar CEP com API ViaCEP

Aprenda fazer busca de endereços com Python usando a API de CEP ViaCEP. Consulte CEP, endereço e automatize buscas com código simples e eficiente.

Introdução

Quando a gente fala em busca de endereços com Python, muita gente imagina algo complexo, cheio de burocracias e documentação difícil de entender.

Mas a verdade é que você consegue consultar CEPs completos, descobrir ruas, bairros e até validar cadastros usando poucas linhas de código e tudo isso de forma rápida, gratuita e super prática.

Se você já precisou automatizar planilhas, completar dados incompletos ou integrar informações de endereço a um sistema, vai finalmente aprender como fazer isso do jeito certo.

Neste artigo, eu vou te mostrar como transformar o Python em uma ferramenta poderosa para buscar CEPs e endereços usando a API ViaCEP.

O processo é muito mais simples do que parece: você só precisa saber como montar o link certo, enviar uma requisição e interpretar a resposta. E pode ficar tranquilo — nada de complicação, nada de teoria demais. Aqui é tudo direto ao ponto e com exemplos reais.

No final, você vai estar pronto para usar essa automação nos seus projetos, formulários, planilhas, sistemas ou até em aplicações web. É o tipo de conhecimento que você aprende uma vez e usa para sempre. Vamos nessa?

Para fazer o download do(s) arquivo(s) utilizados na aula, preencha com o seu e-mail:

Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.

A busca de endereços com Python consiste em consultar um CEP em uma API pública, como a ViaCEP, e receber os dados do endereço (rua, bairro, cidade e estado) em formato JSON. Com a biblioteca requests, você envia o CEP ao endpoint viacep.com.br/ws/{cep}/json/ e trata a resposta no código, automatizando o preenchimento de endereços.

O que é a API ViaCEP e por que usá-la?

A API ViaCEP é um serviço gratuito que permite consultar CEPs e endereços de forma rápida, prática e sem precisar criar conta, gerar token ou passar por processos complicados de autenticação.

Para quem trabalha com busca de endereços com Python, automação de cadastros ou validação de dados, ela é quase perfeita: simples, estável e muito utilizada no Brasil inteiro.

Com ela, você pode tanto descobrir o endereço completo a partir de um CEP quanto encontrar todos os CEPs possíveis para uma rua específica — tudo em segundos.

A grande sacada é o quanto essa API facilita fluxos que, normalmente, dariam muito mais trabalho. Imagine automatizar cadastros, preencher planilhas, corrigir dados incompletos ou validar informações de clientes sem precisar digitar nada manualmente.

Usando a ViaCEP, isso vira realidade com algumas linhas de código. Você pode acessar o site oficial da API através desse link: https://viacep.com.br/

Como funciona a API de CEP

A ViaCEP funciona por meio de endpoints, que são links especiais capazes de receber uma requisição e retornar dados estruturados. Esses dados podem vir em diferentes formatos:

  • JSON (o mais usado e recomendado)
  • XML
  • PIPED
  • QUERY (em descontinuação, segundo a própria documentação)

Para consultar um CEP com essa API, usamos um endpoint simples como este:

Codigo
https://viacep.com.br/ws/20090002/json/

Nesse link, você troca 20090002 pelo CEP desejado, sem pontos, hífens ou espaços. Basta colar no seu navegador e a API então retornará algo assim:

JSON
{
  "cep": "20090-002",
  "logradouro": "Avenida Rio Branco",
  "bairro": "Centro",
  "localidade": "Rio de Janeiro",
  "uf": "RJ"
}

Ou seja: com um CEP válido, você recebe de volta todas as informações necessárias para preencher um endereço completo.

Endpoint de busca reversa (endereço → CEP)

Se você quer descobrir o CEP de um endereço, basta usar este formato:

Codigo
https://viacep.com.br/ws/RJ/Rio de Janeiro/Rio Branco/json/

O retorno não é um único dicionário, mas uma lista de até 50 resultados, cada um representando um endereço possível.

Isso é ótimo para logradouros longos, avenidas com muitos números ou bairros inteiros.

Limitações e vantagens da ViaCEP

A ViaCEP é excelente para automação, mas como qualquer API, tem pontos fortes e limitações que você precisa considerar.

Vantagens

  • Gratuita e sem autenticação: basta acessar o link.
  • Extremamente simples de usar: ideal para quem está começando com Python ou APIs.
  • Retorno rápido: perfeito para automações, planilhas e integrações simples.
  • Dados atualizados: integrações com a base dos Correios garantem precisão.
  • Compatível com qualquer linguagem: Python, JavaScript, PHP, etc.

Limitações

  • Não retorna número da casa: apenas intervalos aproximados (“de 32 a 62 – lado par”).
  • Limite de até 50 resultados na busca por logradouro.
  • Pode retornar {"erro": true} para CEP inexistente.
  • Não possui autenticação (bom para iniciantes, mas limitado para sistemas maiores).
  • Depende da disponibilidade do serviço: se o ViaCEP ficar fora do ar, sua automação também fica.

Apesar dessas limitações, para quem está desenvolvendo automação com Python, criando sistemas de cadastro, limpando bases de dados ou fazendo buscar rua por CEP com Python, ela entrega tudo o que você precisa — e entrega rápido.

Preparando o ambiente no Python

Antes de começar a fazer a busca de endereços com Python, você precisa preparar o ambiente da forma certa.

E a boa notícia é que esse processo é simples, rápido e funciona em qualquer editor: VS Code, PyCharm, Jupyter Notebook ou até o terminal.

Aqui vamos montar tudo o que você precisa para consultar CEPs, validar dados e automatizar seu fluxo sem dor de cabeça.

Instalando a biblioteca Requests

A biblioteca Requests é a responsável por fazer a comunicação entre o Python e a API de CEP. Sem ela, nada funciona. É ela que envia a requisição, recebe a resposta e permite que você leia o JSON retornado pela ViaCEP.

Para instalar:

Codigo
pip install requests

Depois, basta importar:

Python
import requests

Simples assim. Dois comandos e você já está pronto para consultar qualquer CEP e automatizar seu sistema.

Por que usar Requests?

  • É leve.
  • É rápida.
  • É a biblioteca mais usada no mundo para trabalhar com APIs.
  • Tem uma documentação acessível e fácil de entender (https://requests.readthedocs.io).

Tratando dados de entrada (CEP e endereço)

Quando alguém digita um CEP ou endereço em um formulário, dificilmente ele vem perfeito.
Podem aparecer hífens, pontos, espaços, letras ou até erros de digitação.

Se você tentar consultar a API ViaCEP com esses caracteres, ela vai retornar erro e sua automação quebra.

Por isso, uma das partes mais importantes da automação é tratar a entrada antes da requisição.

Remoção de hífen, ponto e espaços

A API só aceita CEP no formato:

Codigo
00000000

Ou seja: 8 dígitos, somente números.

Para limpar o CEP no Python:

Codigo
cep = cep.replace("-", "").replace(".", "").replace(" ", "")

Esse é o método mais prático para remover qualquer símbolo comum.

Validação do comprimento

Depois de limpar o CEP, você precisa verificar se ele ficou com 8 caracteres.

Codigo
if len(cep) == 8:
    # tudo certo, pode consultar
else:
    print("CEP inválido")

Essa é uma regra fundamental e segue também as boas práticas de validação de CEP, validar:

  • tamanho
  • caracteres permitidos
  • formato
  • consistência antes da requisição

Para reforçar essa validação, você pode garantir que todos os caracteres são números:

Codigo
if cep.isdigit() and len(cep) == 8:

Essa verificação evita erros como:

  • “0009O002” (com letra O)
  • “20.090-002” (não tratado)
  • “2009002 ” (espaço no final)

Erros comuns na digitação

Os erros mais frequentes em automações de API de CEP são:

  • CEP com 7 ou 9 dígitos
  • Caracteres especiais fora do padrão
  • Digitar “O” no lugar de “0”
  • Copiar e colar com espaços invisíveis
  • Endereço com caracteres faltando (ex.: “R Branc”)

Por isso, sempre limpe e valide tudo antes de enviar a requisição. Seu código fica mais seguro, mais rápido e evita chamadas desnecessárias para a API.

Consulta de CEP com Python (CEP → Endereço)

Depois de preparar o ambiente e validar o CEP, chegou a parte mais prática: transformar o número digitado pelo usuário em um endereço completo usando Python.

Essa é a automação mais comum quando falamos em busca de endereços com Python, porque permite preencher formulários automaticamente, validar cadastros, completar planilhas ou até alimentar sistemas internos.

E o mais legal é que tudo isso se resume a montar o link certo, enviar a requisição e interpretar a resposta. Vamos fazer isso juntos.

Construindo o endpoint passo a passo

Como vimos, a ViaCEP usa um padrão fixo de URL para consulta de CEP:

Codigo
https://viacep.com.br/ws/{CEP}/json/

Basta substituir {CEP} pelo número que você tratou anteriormente, sem pontos, sem hífens e com exatamente 8 dígitos.

Exemplo:

Codigo
cep = "20090002"
link = f"https://viacep.com.br/ws/{cep}/json/"

Esse link é o endpoint, o “endereço” onde o Python vai bater para pegar os dados.

Por que funciona assim?

Porque o ViaCEP usa o método GET, que permite enviar tudo pela própria URL, dispensando autenticação e tokens.

Fazendo a requisição GET

Agora que temos o endpoint, precisamos enviar a requisição. Isso é feito com o método requests.get():

Python
import requests

requisicao = requests.get(link)
print(requisicao)

Se tudo estiver certo, o servidor retorna:

Codigo
<Response [200]>

O código 200 significa que a consulta deu certo. Agora precisamos ler o conteúdo da resposta.

Para isso, usamos:

Codigo
dados = requisicao.json()
print(dados)

Esse .json() transforma a resposta em um dicionário Python fácil de manipular.

Por que ler como JSON?

Porque esse formato é o mais usado em APIs modernas. Ele organiza os dados em pares chave: valor, exatamente como o Python gosta de trabalhar.

Entendendo o retorno: logradouro, bairro, cidade e UF

A resposta típica da ViaCEP vem assim:

Resultado da busca de CEP
JSON
{
  "cep": "20090-002",
  "logradouro": "Avenida Rio Branco",
  "complemento": "de 32 a 62 - lado par",
  "bairro": "Centro",
  "localidade": "Rio de Janeiro",
  "uf": "RJ"
}

Cada campo representa uma parte do endereço:

  • cep → o próprio CEP consultado
  • logradouro → nome da rua/avenida
  • bairro → região do endereço
  • localidade → cidade
  • uf → estado
  • complemento → informações adicionais como intervalos de numeração

Para acessar os campos no Python:

Codigo
logradouro = dados["logradouro"]
bairro = dados["bairro"]
cidade = dados["localidade"]
uf = dados["uf"]

Esses valores permitem preencher formulários ou montar textos completos como:

Codigo
Avenida Rio Branco, Centro – Rio de Janeiro/RJ

Tratando erros (400, CEP inexistente e JSON com “erro”: true)

Nem todo CEP digitado vai existir. E nem toda requisição vai dar certo. Por isso, tratar erros é fundamental — tanto para estabilidade quanto para a experiência do usuário.

Erro 400 — requisição inválida

Se o CEP tiver letras, menos dígitos ou caracteres proibidos, a API retorna:

Codigo
<Response [400]>

Isso significa Bad Request, ou seja: o link foi montado errado.

CEP válido, mas inexistente

Esse é o mais traiçoeiro: Mesmo que o CEP tenha 8 dígitos e seja “válido” no formato, ele pode simplesmente não existir na base dos Correios.

A ViaCEP, nesse caso, retorna:

JSON
{"erro": true}

E é obrigatório tratar isso no Python:

Codigo
dados = requisicao.json()

if "erro" in dados:
    print("CEP não encontrado.")
else:
    print(dados)

Esse é o comportamento documentado na página oficial da API. Ignorar esse detalhe pode quebrar formulários ou alimentar sua base com valores nulos.

Ícone PythonPython Impressionador

Você vai aprender a linguagem de Programação que mais cresce no Mundo para fazer automações incríveis, desenvolver sites, fazer análises de dados, trabalhar com Ciência de Dados, Inteligência Artificial, mesmo que você nunca tenha tido nenhum contato com Programação na vida.

Começar agoraSeta para a direita
Fundo PythonTelas Python
Luz Python

Busca de Endereço com Python (Endereço → CEP)

Consultar CEP a partir de um endereço é tão útil quanto o processo inverso. Imagine ter uma lista com ruas e cidades, mas sem os CEPs — algo super comum em planilhas de clientes, cadastros antigos ou sistemas internos.

Com a ViaCEP, você transforma esse caos em dados organizados usando apenas Python.

Aqui entra a grande sacada: a API permite fazer uma busca aproximada usando UF + Cidade + Logradouro, retornando uma lista de endereços possíveis, cada um com seu respectivo CEP.

Vamos explorar como isso funciona na prática.

Como funciona a busca por UF, Cidade e Logradouro

A ViaCEP possui um endpoint específico para pesquisa reversa (endereço → CEP):

Codigo
https://viacep.com.br/ws/{UF}/{CIDADE}/{LOGRADOURO}/json/

Basta substituir as variáveis:

Codigo
uf = "RJ"
cidade = "Rio de Janeiro"
endereco = "Rio Branco"

link = f"https://viacep.com.br/ws/{uf}/{cidade}/{endereco}/json/"

Após montar o link, fazemos a requisição:

Codigo
requisicao = requests.get(link)
dados = requisicao.json()

Essa consulta retorna uma lista de resultados, e não um único endereço.

Por que funciona assim?

Porque logradouros podem ter:

  • múltiplos CEPs
  • diferentes faixas de numeração
  • lados pares e ímpares
  • mais de um bairro
  • variações no nome (Avenida vs Av., Rua vs R.)

Por que a API retorna até 50 endereços possíveis

A documentação do ViaCEP informa que a busca reversa pode retornar até 50 resultados. Isso acontece porque a API realiza um match parcial com o nome da rua:

  • Se você busca “Rio Branco”, podem aparecer:
    • “Avenida Rio Branco”
    • “Rua Rio Branco”
    • “Travessa Rio Branco”
    • E variações próximas

O nome não precisa estar 100% idêntico. A lógica da API tenta aproximar ao máximo — o que é ótimo para automação.

Exemplo real

Consultar “Rio Branco” no Rio de Janeiro pode retornar:

  • Avenida Rio Branco — Centro
  • Rua Rio Branco — Campo Grande
  • Travessa Rio Branco — Benfica
  • Variações com intervalos numéricos diferentes

Cada item virá com seu CEP, bairro, cidade e complemento.

Resultado da busca de endereços

Lidando com listas de dicionários no Python

Como o retorno é uma lista, você precisa percorrê-la para encontrar o CEP certo.

Iterando com for

Codigo
for item in dados:
    print(item["cep"], item["logradouro"], item["bairro"])

Filtrando resultados

Para pegar apenas “Avenida Rio Branco”, por exemplo:

Codigo
resultados_filtrados = [
    item for item in dados 
    if "Avenida" in item["logradouro"]
]

Identificando o CEP correto via complemento

A ViaCEP traz um campo chamado complemento, que indica faixas de numeração:

Exemplo:

Codigo
"de 32 a 62 - lado par"

Isso ajuda você a descobrir qual CEP pertence ao número específico digitado pelo usuário.

Codigo
numero = 40

for item in dados:
    comp = item["complemento"]
    if "32 a 62" in comp:
        print("CEP correspondente:", item["cep"])

Por que isso importa?

Porque logradouros longos, como avenidas grandes, podem ter múltiplos CEPs ao longo da mesma rua. Essa filtragem deixa sua automação mais precisa e confiável.

Transformando o retorno em tabela com Pandas

Quando a busca encontra muitos resultados, olhar tudo em lista fica cansativo. Por isso, transformar os dados em uma tabela com Pandas é a forma mais prática e ideal para relatórios, dashboards e validação de grandes bases.

Criando a tabela

Python
import pandas as pd

tabela = pd.DataFrame(dados)
display(tabela)

Pronto. Você tem uma tabela organizada com:

  • logradouro
  • bairro
  • localidade
  • CEP
  • UF
  • DDD
  • complemento
  • código IBGE
  • código SIAFI
Ajustando as informações de endereço

Por que usar Pandas aqui?

Segundo tutoriais de Data Engineering e boas práticas de ETL:

  • Pandas é excelente para limpeza, transformação e validação.
  • Facilita a exportação para CSV, Excel, SQL.
  • Permite filtros avançados para encontrar o CEP exato.

Como integrar CEP e Python em projetos reais

Agora que você já sabe consultar CEP e endereço usando Python, é hora de entender onde isso realmente faz diferença no dia a dia. A automação de CEP é extremamente útil em sistemas reais, desde cadastro simples até operações completas de logística.

E o melhor: você não precisa mudar nada no seu fluxo. Basta integrar a busca de endereços com Python no ponto certo e deixar a API ViaCEP fazer o trabalho pesado.

Criação de sistemas de cadastro automáticos

O uso mais comum é no autopreenchimento de formulários. Funciona assim:

  1. O usuário digita o CEP.
  2. Seu sistema chama a API ViaCEP.
  3. O Python retorna logradouro, bairro, cidade e UF.
  4. Os campos aparecem automaticamente preenchidos.

Isso reduz erros de digitação, acelera processos e melhora a experiência do usuário.

Validação de formulários

Antes de salvar no banco de dados, você pode:

  • validar se o CEP existe
  • checar se o endereço está completo
  • bloquear cadastros inconsistentes

Esse tipo de automação é padrão em qualquer aplicação profissional moderna.

Automação de planilhas

Se você trabalha com bases grandes, a API se torna ainda mais valiosa.

Buscar CEP em lote

Imagine uma planilha com 5.000 endereços sem CEP. Com Python + Pandas, você pode iterar linha por linha e usar:

Codigo
pd.DataFrame(resultados)

para gerar uma tabela completa de CEPs.

Complementar bases incompletas

Muitas empresas têm dados assim:

  • Rua sem número
  • Bairro faltando
  • CEP incorreto
  • Cidade digitada errado

A automação com Pandas ajuda a cruzar essas informações, padronizar e limpar tudo — prática comum em pipelines de ETL e citada em tutoriais de Data Engineering.

Construção de APIs próprias e microserviços

Se você pensa em algo mais avançado, também dá para integrar o ViaCEP dentro de uma API própria ou microserviço em Python. Nesse cenário, você encapsula a lógica de consulta e entrega isso para outros serviços da empresa.

Cenários comuns

  • ERP: cadastro de clientes, fornecedores e endereços comerciais.
  • E-commerce: calculadora de frete, conferência de endereço antes do envio.
  • Logística: roteirização, checagem rápida de zonas de entrega.
  • Validação antifraude: comparação entre CEP informado e endereço real.

Em todos esses casos, o Python atua como ponte entre os módulos internos — um modelo muito recomendado em arquiteturas modernas.

Melhores práticas ao usar APIs no Python

Trabalhar com a busca de endereços com Python exige mais do que só chamar a API e esperar o melhor.

Em sistemas reais, onde milhares de usuários podem consultar CEP ao mesmo tempo, é fundamental garantir que sua automação seja rápida, estável e à prova de erros.

Aqui estão as melhores práticas que você deve aplicar sempre que estiver integrando o Python com qualquer API, incluindo a ViaCEP.

Trate todos os erros possíveis

Uma API pode falhar por vários motivos, e o seu código precisa estar preparado para lidar com todos eles.

1. ConnectionError

Ocorre quando não há conexão com a internet ou o servidor não responde.

Codigo
try:
    response = requests.get(link)
except requests.exceptions.ConnectionError:
    print("Erro de conexão. Tente novamente.")

2. API fora do ar

Mesmo serviços estáveis como ViaCEP podem passar por instabilidade. Se a API retornar algo diferente de 200, trate isso imediatamente:

Codigo
if response.status_code != 200:
    print("Serviço temporariamente indisponível.")

3. Timeout

Se a resposta demorar demais, a requisição trava seu sistema. Por isso, sempre defina um tempo máximo de espera.

Codigo
requests.get(link, timeout=5)

4. JSON mal formatado

A API pode retornar um JSON inválido em casos raros. Você precisa prevenir o crash:

Codigo
try:
    dados = response.json()
except ValueError:
    print("Erro ao ler JSON.")

Evite bloqueios usando cache

Em aplicações maiores, como e-commerce, ERPs ou sistemas de logística, chamar a API ViaCEP milhares de vezes por dia pode causar lentidão ou até bloqueios temporários.

A solução é usar cache.

Por que usar cache?

  • Evita chamadas repetidas para o mesmo CEP.
  • Reduz carga no servidor externo.
  • Melhora o desempenho da sua aplicação.
  • Diminui custos de infraestrutura.

Ferramentas recomendadas

  • Redis (cache em memória, altíssima performance)
  • SQLite (cache leve em arquivo local)

Exemplo simples com dicionário Python (cache local)

Codigo
cache = {}

if cep in cache:
    return cache[cep]
else:
    dados = requests.get(link).json()
    cache[cep] = dados

Sites grandes usam exatamente o mesmo princípio, só que em escala.

Padrões recomendados: timeouts e try/except

Esses dois elementos transformam seu código em algo profissional.

Sempre use timeout

Sem timeout, seu programa pode travar esperando uma resposta que nunca chega.

Codigo
response = requests.get(link, timeout=5)

Sempre envolva requisições em try/except

Isso protege sua aplicação de falhas inesperadas e mantém tudo funcionando.

Codigo
try:
    response = requests.get(link, timeout=5)
    dados = response.json()
except Exception as e:
    print("Erro na requisição:", e)

Por que isso importa?

  • Evita travamentos.
  • Melhora a experiência do usuário.
  • Facilita logs e monitoramento.
  • Prepara seu sistema para escalabilidade.

Código completo usado no tutorial

Depois de entender cada etapa isoladamente, chegou o momento de ver tudo funcionando junto.

Aqui está o código completo da busca de endereços com Python, organizado, comentado e pronto para ser usado em qualquer projeto: sistemas de cadastro, automação de planilhas, microserviços ou scripts pessoais.

A ideia aqui é simples: você copia, cola e ajusta o que for necessário para o seu caso.

Código 1 — Consulta de CEP (CEP → Endereço)

Python
import requests

# CEP informado pelo usuário
cep = "20.090-002"

# Tratamento para deixar apenas números
cep = cep.replace("-", "").replace(".", "").replace(" ", "")

# Validação: CEP deve ter exatamente 8 dígitos
if len(cep) == 8 and cep.isdigit():

    # Endpoint do ViaCEP com o CEP tratado
    link = f"https://viacep.com.br/ws/{cep}/json/"

    # Requisição GET com timeout por segurança
    requisicao = requests.get(link, timeout=5)
    print("Status:", requisicao.status_code)

    # Lendo o JSON retornado
    dados = requisicao.json()

    # Verifica CEP inexistente
    if "erro" in dados:
        print("CEP não encontrado.")
    else:
        print(dados)

else:
    print("CEP inválido. Digite apenas números, com 8 dígitos.")

Esse bloco cobre o fluxo mais comum: dado um CEP, você recebe de volta logradouro, bairro, cidade e UF. Ideal para autopreenchimento e validação de formulários.

Código 2 — Busca por endereço (Endereço → CEP)

Python
import requests

# Dados informados pelo usuário
uf = "RJ"
cidade = "Rio de Janeiro"
endereco = "Rio Branco"

# Endpoint do ViaCEP para busca reversa
link = f"https://viacep.com.br/ws/{uf}/{cidade}/{endereco}/json/"

# Requisição GET
requisicao = requests.get(link, timeout=5)
print("Status:", requisicao.status_code)

# Lendo o JSON retornado (lista de dicionários)
dados = requisicao.json()

# Exibe todos os resultados encontrados
print(dados)

Esse trecho retorna até 50 possíveis CEPs. É útil em planilhas grandes, cadastros antigos e sistemas mais complexos.

Código 3 — Transformando resultados em tabela (Pandas)

Python
import pandas as pd

tabela = pd.DataFrame(dados)
display(tabela)

Com isso, você transforma os resultados em uma tabela estruturada — perfeita para análises, relatórios ou exportação para Excel.

Por que esse código funciona tão bem?

  • Ele trata os dados de entrada.
  • Ele usa timeout para evitar travamentos.
  • Ele usa .json() para ler os dados de forma simples.
  • Ele diferencia CEP inválido de CEP inexistente.
  • Ele mostra status da requisição para facilitar o debug.
  • Ele organiza a busca reversa em formato de lista, próprio para filtrar e iterar.

Ou seja: está pronto para uso em qualquer automação real de API de CEP.

Perguntas frequentes sobre busca de endereços com Python

1. O que é a API ViaCEP?

É uma API pública e gratuita brasileira que retorna dados de endereço a partir de um CEP (e também faz a busca reversa, do endereço para o CEP). A resposta vem em JSON, pronta para ser usada em sistemas, planilhas e scripts Python.

2. Como consultar um CEP com Python?

Use a biblioteca requests: faça requests.get para viacep.com.br/ws/CEP/json/ e leia o resultado com .json(). Você recebe rua, bairro, cidade e UF em um dicionário, prontos para usar no seu programa.

3. A API ViaCEP é gratuita?

Sim, a ViaCEP é gratuita e não exige cadastro nem chave de API para uso comum. Por isso é uma das formas mais simples de consultar endereços por CEP em projetos Python, embora possa ter limites em uso muito intenso.

4. Como tratar um CEP digitado errado?

Antes de consultar, limpe o CEP removendo hífen, pontos e espaços e valide se ele tem 8 dígitos. A própria ViaCEP também retorna um campo de erro quando o CEP não existe, permitindo avisar o usuário sem quebrar o programa.

Conclusão

Integrar a busca de endereços com Python ao seu dia a dia abre um mundo de possibilidades. Você aprendeu como consultar CEPs, buscar endereços completos, tratar erros, validar dados e até transformar tudo em tabelas para análise.

Com poucos comandos, você consegue automatizar tarefas repetitivas, melhorar cadastros, limpar planilhas e deixar qualquer sistema mais inteligente e eficiente. É um conhecimento simples, prático e extremamente útil para quem trabalha com dados, automação ou desenvolvimento.

Se você quer dar o próximo passo e dominar de vez automação, APIs, integrações e tudo que o Python oferece para elevar seu nível profissional, eu te recomendo o nosso curso completo Python Impressionador. Lá você aprofunda tudo que viu aqui e muito mais, com aulas práticas, projetos reais e um passo a passo que funciona na vida real.

Continue praticando, testando seus próprios scripts e explorando novas APIs. Quanto mais você treina, mais natural tudo isso fica e mais oportunidades surgem para você se destacar.

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

O que você aprende neste vídeo

Resposta rápida: Nesta aula, o instrutor ensina a consultar CEP e endereços em Python usando a API ViaCEP (gratuita). Você aprende os dois caminhos: dar um CEP e receber o endereço (rua, bairro, cidade, estado), e o contrário, dar um endereço e descobrir o CEP. Ele usa a biblioteca requests (requests.get), lê a resposta em JSON, extrai os dados do dicionário, trata o CEP e mostra a busca reversa (que devolve até 50 resultados) numa tabela do pandas.

Neste vídeo (22 min):

  • 0:00 - A API ViaCEP: gratuita, consulta um CEP e devolve o endereço (e faz o caminho contrário).
  • 2:00 - Como funciona a API: o endpoint (link GET) e o formato de resposta JSON.
  • 4:00 - A biblioteca requests: instalar e fazer a requisição com requests.get.
  • 8:00 - Extrair os dados da resposta (o JSON vira dicionário): pegar UF, cidade e bairro.
  • 10:00 - Tratar o CEP (replace) e validar os 8 dígitos antes de consultar.
  • 12:00 - Busca reversa: dar o endereço e receber até 50 CEPs, exibidos numa tabela do pandas.

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Posts mais recentes de Python

Posts mais recentes da Hashtag Treinamentos