ceplivre – API de CEPs para formulários
Postado por: Pedro Rogério em
Você provavelmente já deve ter passado por um daqueles formulários onde ao colocar o CEP da rua onde você mora, ele automaticamente preenche os outros campos com o seu endereço. Pois bem, por trás disso existe um simples código que busca em um banco de dados seu endereço através do seu CEP.
Até aí tudo bem, mas e para desenvolver uma engenhoca dessa? Manter o seu banco de dados com os CEPs de todo o brasil atualizados não é tarefa fácil, por isso indico a vocês um site que acabei descobrindo esses dias, o ceplivre, onde através do seu sistema provem informações básicas de endereços, códigos do IBGE, códigos DDD (Discagem Direta à Distância), altitude, área e coordenadas (latitude e longitude) de todas as cidades brasileiras.
Para você ter idéia, hoje o ceplivre conta com uma base de mais de 630.000 CEPs cadastrados que são atualizados diariamente. Manter uma base dessas atualizada não é tarefa fácil, por isso eles dispõem de diversos planos, desde o plano Free, onde você pode efetuar até 15 consultas por dia, até o Plano Premium, com pesquisas ilimitadas e acesso a todas as features do sistema.
O webservice do ceplivre é compatível com todas as principais linguagens de programação web, entregando dados em formatos CSV, XML e JSON. Para utilizar o sistema é simples, basta desenvolver uma rotina que faça acessos HTTP ao servidor, onde as URLs de pesquisa seguem a seguinte estrutura:
http://ceplivre.com.br/consultar/$tipo/$key/$busca/$formato
- $tipo é o tipo de busca, por CEP (cep) ou por endereço (logradouro).
- $key é a chave de autenticação enviada por e-mail na confirmação da assinatura.
- $busca é o termo de busca. Se for um CEP, o código (01001-000). Se for um endereço, parte do nome (Paulista).
- $formato é o formato do resultado da busca que pode ser XML (xml), CSV (csv) ou JSON (json).
Portanto, para efetuar uma busca em formato JSON, basta utilizar a seguinte URL:
http://ceplivre.com.br/consultar/cep/sua_key_aqui/01001-000/json
Estando tudo Ok, seria retornado o seguinte JSON:
{
"cep": [
{
"tp_logradouro": "Praça",
"tp_logradouro_id": "8",
"logradouro": "da Sé",
"bairro": "Sé",
"cidade": "São Paulo",
"uf_sigla": "SP",
"ufnome": "São Paulo",
"id_estado_ibge": "35",
"cep": "01001-000",
"muncoddv": "3550308",
"ddd": "11",
"altitude": "760",
"latitude": "-23.548",
"longitude": "-46.636",
"area": "1522.986",
"capital": "S"
}
]
}
Agora por exemplo eu poderia manipular esses dados com JavaScript para dar mais interatividade ao meu formulário quando o usuário preencher o campo CEP.














Legal, mas o serviço é confiável, mesmo? No ar 24/7?
A partir do momento que você paga por um serviço, ele tem que funcionar, por bem ou por mal.
15 ceps por dia no plano free? mas que cep”livre”.
É tipo um frango de padaria né, levar é R$10, sentir o cheirinho é de graça. rs
Mas apesar da brincadeira achei o serviço muito bom.
ceppago seria um nome mais correto.
+1
+1
Livre? 15 consultas/dia não da nem pro cheiro
Base atualizada? Por quem? Esta informação está baseada em que?
Fiz um teste muito básico (e olha que essa história de pesquisar CEPs dá bastante pano para a manga)…
Testei o CEP 93265-460, da minha rua… Ele nunca deu problemas em nenhum sistema (com base atualizada, é claro), pois na cidade o CEP é por rua e esta rua é muiro pequena, não cortando mais de um bairro e nem possuindo mais de um CEP… Esse é um dos casos mais básicos para teste (acho que só teste de CEP geral pode ser mais simples que isto)…
Resultado:
1) Nome do bairro está errado, já foi alterado há bastante tempo para de Christ para Liberdade…
2) Nome do bairro não era Cristi e sim Christ…
Para ter uma idéia, já deve fazer mais de 2 anos que o nome do bairro foi alterado…
Não uso esta aplicação nem de graça… Quem dirá pagando!
Opa Marlon, ontem resolvi fazer algo semelhante.
Criei um webservice de cep que utiliza os dados do próprio correio.
http://www.feliperoberto.com.br/api/correios/cep.php?cep=93265460
Os dados exibidos estão corretos? Pois vi que são diferentes do que você citou no post?
Se estiver certo pode usar a vontade (até meu servidor travar, é um plano baratinho, rs), se não, pode me ajudar a corrigir.
Queria aproveitar e perguntar ao Pedro se posso publicar aqui um tutorial explicando como foi feito.
Abraço.
Felipe, parabéns pela iniciativa. Pra evitar de seu servidor superlotar faz o seguinte:
1) Ativa um cache pro browser longo via htaccess
http://kevin.vanzonneveld.net/techblog/article/control_cache_expire_dates_using_htaccess/
2) Ativa um cache PHP interno de pelo menos 1 dia pra não sobrecarregar seu PHP (afinal, um cep não muda de um dia pro outro).
http://imasters.com.br/artigo/11191/php/caching_em_php_com_uma_tecnica_obscura_mas_muito_eficiente/
(seu servidor irá se encher de arquivos pequenos, mas acho que talvez seja útil)
3) Ative o Cloudflare no seu domínio. É um CDN de cache muito útil e com versão free.
Pronto. Acho que assim você fica tranquilo.
Acho que o JSON poderia ser colocado dentro de uma chamada a função (que nem os json do yahoo), assim o script inciaria aquela função só quando json for carregado pra não termos que usar timeout.
Exemplo de retorno desejado:
jsonCepLoaded({
“cep”: [
{
"tp_logradouro": "Praça",
"tp_logradouro_id": "8",
"logradouro": "da Sé",
"bairro": "Sé",
"cidade": "São Paulo",
"uf_sigla": "SP",
"ufnome": "São Paulo",
"id_estado_ibge": "35",
"cep": "01001-000",
"muncoddv": "3550308",
"ddd": "11",
"altitude": "760",
"latitude": "-23.548",
"longitude": "-46.636",
"area": "1522.986",
"capital": "S"
}
]
});
Assim, eu mesmo declararia a função jsonCepLoaded dizendo o que faria com o json que chegou.
Ah, e 100 ceps diários por 15 reais é bem caro.
Se eles usarem sistemas de cache no server, caches proxy (como o cloudflare por ex) daria pra baixar bem mais os preços.
Pronto, agora não precisa pagar. Você pode ter seu próprio webservice de cep.
http://www.pinceladasdaweb.com.br/blog/2012/01/31/webservice-consulta-de-cep-diretamente-ao-site-dos-correios/
Muito bacana, de fato não conhecia a ferramenta.
Vou experimentar. Obrigado.
Muito interessante o post! Pessoal… aproveitando, quem puder dá um pulinho no meu blog: http://www.estradaweb.wordpress.com estou iniciando ainda no aprendizado web, mas sempre que puder vou tentar postar algo interessante lah! Abço
não sei o que é pior… a incompetência do Correios ou esse teu esquema de grana fácil aí
todo mundo sabe que os Correios mesmo deveria disponibilizar essa API e de graça..
além disso, existe o http://www.republicavirtual.com.br/ que é público e free, tem as gambi pra pegar direto da porcaria do site e têm também a API de GEOCODE do Google(que também é free) que provávelmente é o que você usa pras suas funcionalidades “premium”…
“Há uma empresa por trás, o que gera confiança e segurança para você;” que piada!
resumindo, ganhando dinheiro em cima da ignorância da galera…
pelo post achei que quem tinha escrito tinha sido o próprio criador, já que parece mais um comercial… como questionaram antes, como essa base é mantida diáriamente se a informação é dos correios? como ele pode garantir sem explicar como? a única forma seria um acordo especial da empresa dele com os correios, o que óbviamente não existe
ou o cara trabalha nos correios e rouba um dump da base CEP todos os dias?