ViaCEP
Consulte CEPs de todo o Brasil

Procurando um webservice gratuito e de alto desempenho para consultar Códigos de Endereçamento Postal (CEP) do Brasil? Utilize o serviço, melhore a qualidade de suas aplicações web e colabore para manter esta base de dados atualizada.

Acessando o webservice de CEP

Para acessar o webservice, um CEP no formato de {8} dígitos deve ser fornecido, por exemplo: "01001000".
Após o CEP, deve ser fornecido o tipo de retorno desejado, que deve ser "json", "xml", "piped" ou "querty".

Exemplo: viacep.com.br/ws/01001000/json/

Validação do CEP

Quando consultado um CEP de formato inválido, por exemplo: "950100100" (9 dígitos), "95010A10" (alfanumérico), "95010 10" (espaço), o código de retorno da consulta será um 400 (Bad Request). Antes de acessar o webservice, valide o formato do CEP e certifique-se que o mesmo possua {8} dígitos. Exemplo de como validar o formato do CEP em javascript está disponível nos exemplos abaixo.

Quando consultado um CEP de formato válido, porém inexistente, por exemplo: "99999999", o retorno conterá um valor de "erro" igual a "true". Isso significa que o CEP consultado não foi encontrado na base de dados. Veja como manipular este "erro" em javascript nos exemplos abaixo.

Formatos de Retorno

Veja exemplos de acesso ao webservice e os diferentes tipos de retorno:

JSON


    {
      "cep": "01001-000",
      "logradouro": "Praça da Sé",
      "complemento": "lado ímpar",
      "bairro": "Sé",
      "localidade": "São Paulo",
      "uf": "SP",
      "unidade": "",
      "ibge": "3550308",
      "gia": "1004"
    }
            

JSONP


    callback_name({
      "cep": "01001-000",
      "logradouro": "Praça da Sé",
      "complemento": "lado ímpar",
      "bairro": "Sé",
      "localidade": "São Paulo",
      "uf": "SP",
      "unidade": "",
      "ibge": "3550308",
      "gia": "1004"
    });
            

XML


    <?xml version="1.0" encoding="UTF-8"?>
    <xmlcep>
        <cep>01001-000</cep>
        <logradouro>Praça da Sé</logradouro>
        <complemento>lado ímpar</complemento>
        <bairro>Sé</bairro>
        <localidade>São Paulo</localidade>
        <uf>SP</uf>
        <unidade></unidade>
        <ibge>3550308</ibge>
        <gia>1004</gia>
    </xmlcep>
            

PIPED


    cep:01001-000|logradouro:Praça da Sé|complemento:lado ímpar|bairro:Sé|
    localidade:São Paulo|uf:SP|unidade:|ibge:3550308|gia:1004
            

QUERTY


    cep=01001-000&logradouro=Pra%C3%A7a+da+S%C3%A9&complemento=lado+%C3%ADmpar&
    bairro=S%C3%A9&localidade=S%C3%A3o+Paulo&uf=SP&unidade=&ibge=3550308&gia=1004
            

Origem código IBGE dos municípios: Acessar Site
Origem código GIA/ICMS (apenas SP disponível): Visualizar PDF (Pág.30)

Exemplos: Auto Preenchimento de Endereço via CEP

Exemplo usando jQuery

Exemplo de acesso ao webservice com a biblioteca jQuery/Json.
Preenchimento de endereço via CEP com jQuery

Exemplo em Javascript

Exemplo de acesso ao webservice com Javascript/Json.
Preenchimento de endereço via CEP com Javascript

Pesquisa de CEP

Existem situações como em um cadastramento online onde o cliente desconhece o seu CEP e será necessária uma consulta para verificar a existência de um CEP que corresponda ao endereço informado. Para consultar um CEP em nossa base de dados são necessários três parâmetros obrigatórios (UF, Cidade e Logradouro), sendo que para Cidade e Logradouro também é obrigatório um número mínimo de três caracteres a fim de evitar resultados muito abrangentes.

Identico a consulta por CEP, na pesquisa por endereço também é necessário informar o formato do retorno que deve ser "json" ou "xml". O resultado será ordenado pela proximidade do nome do logradouro e possui limite máximo de 100 (cem) CEPs. Desta forma, quanto mais específico os parâmentros de entrada maior será a precisão do resultado.

Exemplo: viacep.com.br/ws/RS/Porto Alegre/Olavo/json/

Neste exemplo será pesquisado na cidade de "Porto Algre/RS" por todos os logradouros que contenham "Olavo" em seu nome. Quando o nome da cidade ou do logradouro não contiver ao menos três caracteres o código de retorno será um 400 (Bad Request).

Achou um CEP desatualizado?

Acesse o formulário e atualize on-line.
Atualizar CEP

Módulos e Pacotes desenvolvidos por Colaboradores

PHP/Drupal: Address Field Via CEP (recidive)

PHP/Laravel 4: Laravel CEP (diasfulvio)

PHP/Laravel 5.1 | 5.0 ZIPCode (diasfulvio)

PHP/Zend Framework 2: InfanaticaCepModule (diogomascarenha)

PHP/CodeIgniter v3: CodeIgniter3.x-Libraries (parg-programador)

.NET/Microsoft: Canducci CEP (diasfulvio)

PL/SQL/Oracle: PLSQL Cep (maxwbh)

Java: Java ViaCEP (parg-programador)

Java: CepUtil (uliss3s)

Java/Android: ViaCEP-Android (parg-programador)

Java/GWT/Android: ViaCEP Client (gilberto-torrezan)

Delphi/Pascal: ConsultaCepViaCep (itasouza)

Delphi/Pascal: BuscaCEP (scsoftwarecta)

C++/Qt: ViaCepConsulta (heriklyma)

Ruby: ViaCep (marcelobarreto)

AngularJs: ViaCep-AngularJs (toione)

AngularJs: Angular-VIACep (cesarbarone)

Node.Js: Busca Cep (wagoid)

Python ViaCep-Python (leogregianin)

Python/Flask: VIACep-Flask (leogregianin)

Jquery: Buscar CEP por Rua (Inkeliz)

Objective-C: Api-ViaCEP (scraipt)

Webservice SIGEP dos Correios

Finalmente os Correios disponibilizaram um Webservice gratuito, pelo menos por enquanto, para consultar endereços a partir do CEP.

Para o método "consultaCEP" não é necessário autenticação.
Para os demais você vai precisar de um usuário e senha (que você consegue com os Correios).

O acesso ao Webservice se dá a partir da URL:

https://apps.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente?wsdl
Manual_de_Implementacao_do_Web_Service_SIGEPWEB_Logistica_Reversa.pdf