Você já deve ter ouvido falar em API’s, de suas vantagens, praticidade e como podem oferecer vários recursos para agregarem ao seu Software. E é sobre um destes recursos que venho falar para você aqui neste post: Como Consultar CEP através da ViaCep API.
O ViaCep é um WebService que serve para Consultar CEP de endereçamento do Brasil gratuitamente. Para Consultar CEP basta você fazer uma requisição http para a API do ViaCep e então obter o retorno com informações como CEP, nome da Cidade, Código do Município, UF, etc.
Por exemplo, se você deseja consultar o Código de Município de um determinado CEP, basta fazer a requisição na URL viacep.com.br/ws informando o CEP e o formato do retorno, se você prefere em Json, xml, piped, etc.
Exemplos:
Para exemplificar, preparamos um vídeo demonstrando o passo a passo para realizar a consulta de um determinado endereço através do ViaCep API. Se você preferir, abaixo do vídeo temos um exemplo em texto também mostrando o passo a passo para essa consulta.
Requisição
https://viacep.com.br/ws/96785192/json/
Retorno
{
"cep": "96785-192",
"logradouro": "",
"complemento": "",
"bairro": "",
"localidade": "Camaquã",
"uf": "RS",
"ibge": "4303509",
"gia": "",
"ddd": "",
"siafi": ""
}
Pode-se também pesquisar pelo nome da cidade para obter o CEP e o código de município sendo possível informar até mesmo um endereço na consulta.
Requisição:
viacep.com.br/ws/RS/Camaqua/Bentogoncalves/json
Retorno:
[
{
“cep”: “96180-971”,
“logradouro”: “Rua Bento Gonçalves”,
“complemento”: “1320”,
“bairro”: “Centro”,
“localidade”: “Camaquã”,
“uf”: “RS”,
“unidade”: “CDD Camaquã”,
“ibge”: “4303509”,
“gia”: “”
}
]
Se desejar testar estas requisições você pode utilizar o Postman.
O Postman é uma ferramenta disponibilizada para desenvolvedores de API bem intuitiva e fácil de usar. Ela permite fazer requisições e visualizar os retornos das APIs como os exemplos acima. Basta definir o tipo da requisição com GET e passar o link da requisição com os dados que deseja consultar, ao clicar em Send será exibida a resposta da API.


E como exemplo de como essa requisição funcionaria em uma determinada linguagem, temos abaixo um código em javascript onde defini-se o tipo da requisição como GET e é passada por parâmetro a variável urlEnvio com a URL de consulta junto com o CEP que deseja consultar e o tipo de retorno da API.
function enviaConteudoParaAPI(urlEnvio){
var content, retorno;
$.ajax({
type: ‘GET’,
timeout: 10000,
async: false,
url: urlEnvio,
}).then(function(response){
retorno = response;
}, function(response){
retorno = response;
});
return retorno;
}
Como mostrado nos exemplos, a integração com APIs é simples e em alguns casos pode-se encontrar exemplos de códigos prontos como este do ViaCep. Acessando a página do ViaCep você encontrará exemplos de requisições e um acervo com exemplos de códigos prontos em diversas linguagens de programação.
Outra API excelente que pode facilitar muito o dia-a-dia dos Desenvolvedores é a API do IBPT, onde você pode informar automaticamente o cálculo do valor aproximado dos tributos nas emissões de NFe e NFCe.
Nos siga nas nossas Redes Sociais:
Gostou do Post? Caso você não conheça nossa API entre em contato conosco!
estou tentando usar aqui o viaCEP como esta na internet e simplesmente nao funciona de jeito nenhum, incluise fiz da minha maneira com AsyncTask por que no jeito que esta a classe da erro aqui JSONObject(getHttpGET(url)) nao roda nem pensa.
Olá Adilson, tudo bem?
Para uma orientação mais precisa precisamos saber em qual Linguagem de Programação você está desenvolvendo a comunicação e também de qual link você pegou o exemplo.
Um abraço!
Como fazer em javascript ?
const pegarEndereco = () => {
return fetch(“viacep.com.br/ws/08420090/json/”, {
method: “GET”,
})
.then((response) => {
console.log(response.data)
})
.catch((error) =>
console.log(error)
);
};
esta dando undefined
boa tarde!!!
Conseguiria usar para uma consulta em Lote de 180.000 CEPs para atualização e correção em uma base.
Estou usando a chamada via SQL server, mas acredito que por mais que coloque delays entre as consultas é provável que o sistema considere um ataque e bloquei o endereço.
Obrigado
Olá Adamario, tudo bem?
Não temos informações sobre a possibilidade de realizar consulta de um lote de CEPs, portanto acredito que terá que fazer um a um.
Espero ter ajudado.
Grande abraço!
Como faço para calcular o cep para saber que nao saiu daquela cidade ?
Essa api suporta quantas consultar por dia de um único domínio de forma gratuita?
Olá Nelson, tudo bem?
O Viacep é uma API gratuita, até onde sabemos não há um limite de consultas.
Espero ter ajudado.
Grande abraço!
Estou tendo um problema sempre que faço uma requisição ao viacep, me retorna erro de cors
Qual o limite de requisições por API (xml) ? quantos CEPs posso consultar por vez ?
Olá José, tudo bem?
Acredito que não há um limite de requisições, podes fazer quantas requisições você precisar, mas agora,
uma requisição pode retornar até 50 CEPs diferentes, ordenados conforme a proximidade do endereço da consulta,
quanto mais precisa for a consulta mais exato vai ser o retorno.
Espero te ajudado!
Abraço,
Fábio Lucas
Ola, sabe dizer se existe alguma consulta que retorne se o CEP tem restrição de entrega?
que seria o resultado da consulta no link abaixo:
https://www2.correios.com.br/sistemas/precosPrazos/restricaoentrega/
desde já obrigado.
Opa Denis tudo bem?
Acredito que quem pode responder com mais exatidão seria os Correios,
por um acaso você já tentou contato?
Acredito que no retorno da consulta por CEP, não retorna nada de restrição de entrega
Espero ter ajudado
Pessoal sabe se tem algum bloqueio do Site Viacep quando são realizada varias consultas de Cep em massa….
Desde ja agradeço…
Opa Jairo tudo bem?
Então, perguntei para o time de suporte. Olha só!
O Webservice tem um limite de requisições.
Segundo o próprio ViaCep:”Ao constatar o uso de scripts
de acesso massivo seu IP será automaticamente bloqueado por tempo indeterminado.”
a fonte é do github.
https://github.com/Coesta/buscaCepEndereco
Espero ter ajudado, ótimo fim de semana!
Gostaria de saber como faço para retornar um erro como: “Cep inválido”, caso o cep seja preenchido incorretamente, pois ele retorna isso:
Warning: simplexml_load_file(http://viacep.com.br/ws/2/xml/): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in D:\xampp\htdocs\get_saddress.php on line 8
Warning: simplexml_load_file(): I/O warning : failed to load external entity “http://viacep.com.br/ws/2/xml/” in D:\xampp\htdocs\get_saddress.php on line 8
Notice: Trying to get property ‘logradouro’ of non-object in D:\xampp\htdocs\get_saddress.php on line 13
Opa Frederico tudo bem?
Pelo que pudemos ver aqui…
você está tentando obter um atributo de algo que não é um objeto.
Então você deveria investigar um pouco mais sobre esse retorno,
pois você pode não estar validando corretamente, ou se já está,
seria interessante ver se retorna algum codigo de status,
e a partir deste status aplicar uma validação de “dados enviados incorretamente”
Espero ter te ajudado! Ótima semana
Opa Frederico tudo bem?
Pelo que pudemos ver aqui…
você está tentando obter um atributo de algo que não é um objeto.
Então você deveria investigar um pouco mais sobre esse retorno,
pois você pode não estar validando corretamente, ou se já está,
seria interessante ver se retorna algum codigo de status,
e a partir deste status aplicar uma validação de “dados enviados incorretamente”
Espero ter te ajudado! Ótima semana
Olá boa tarde.
Uma dúvida: a fonte desses dados é oficial dos Correios?
Olá Antonio tudo bem?
Todos os dados pelo que eu vi são do IBGE,
mas não posso confirmar se os correios usam os dados do IBGE
Espero ter ajudado. Abraço!
Olá Antonio tudo bem?
Todos os dados pelo que eu vi são do IBGE,
mas não posso confirmar se os correios usam os dados do IBGE
Espero ter ajudado. Abraço!