—CEPs
Migrando do ViaCEP
A rota /ws/{cep}/json/ responde igual ao ViaCEP, incluindo a
máscara no campo cep e o {"erro":"true"} com HTTP 200
para CEP inexistente. Trocar o domínio basta:
- https://viacep.com.br/ws/01001000/json/
+ https://cep.is/ws/01001000/json/
Em código novo prefira /{cep}: mesmos campos, CEP sem máscara e
status HTTP que dá para confiar.
Google Sheets
Um CEP por célula, com IMPORTDATA lendo o CSV:
=IMPORTDATA("https://cep.is/01001000.csv")
Uma coluna inteira de uma vez, sem uma requisição por linha:
=IMPORTDATA("https://cep.is/csv?ceps="&TEXTJOIN(",";1;A2:A50))
São até 500 CEPs por chamada e as linhas voltam na ordem pedida — CEP
inexistente vira uma linha com só o CEP preenchido, para não desalinhar a
planilha. ?cabecalho=0 omite a linha de cabeçalho e
?bom=1 corrige os acentos ao abrir no Excel do Windows.
Fontes
| dado | fonte |
|---|---|
| CEP, logradouro, bairro, localidade, UF | DNE — Correios |
| código de município, estado, região | IBGE |
| DDD | Anatel |
| código SIAFI | Tesouro Nacional |
São dados públicos, redistribuídos aqui sem vínculo com os órgãos acima.
Uso
curl https://cep.is/01001000
Erros
| situação | status | corpo |
|---|---|---|
| CEP encontrado | 200 | o objeto do CEP |
| CEP não existe | 404 | {"erro":"cep_nao_encontrado"} |
| CEP malformado | 400 | {"erro":"cep_invalido"} |
| rota desconhecida | 404 | {"erro":"rota_nao_encontrada"} |
De que cidade era o CEP que não existe
O 404 de /{cep} traz um objeto faixa quando dá para
dizer a que município aquele número pertenceria:
$ curl https://cep.is/25845000
{
"erro": "cep_nao_encontrado",
"mensagem": "CEP não existe na base do DNE",
"faixa": {
"localidade": "Areal",
"uf": "RJ",
"estado": "Rio de Janeiro",
"regiao": "Sudeste",
"ibge": "3300225",
"cep_ini": "25845001",
"cep_fim": "25849899",
"ceps": 118
}
}
Serve para o erro mais comum de quem digita CEP: saber a cidade e chutar o
-000. Cidade pequena costuma ter um CEP único terminado em
-000, mas 957 municípios são codificados por logradouro e nunca
receberam esse número — Areal atende de 25845-001 em diante.
cep_ini e cep_fim são o menor e o maior CEP que
existem no município, não os limites que o DNE publica. A faixa é
esparsa: os 118 CEPs de Areal estão espalhados num intervalo de quase cinco mil
números, e é por isso que ceps vem junto. Não trate a faixa como
lista de CEPs válidos.
O objeto é omitido — nunca null — quando o CEP cai numa faixa
que os Correios não atribuíram a município nenhum. E continua sendo 404: é
contexto do erro, não um endereço. O espelho /ws/{cep}/json/ não
muda, porque espelho que ganha campo deixa de ser espelho.