PHP — Obtendo Estados e Cidades e seus Códigos do IBGE
Olá Gente
Você já precisou integrar com NFe e se deparou com a necessidade dos códigos do IBGE das cidades? Ou Simplesmente precisou criar um Select com todos os Estados e Cidades?
Para isto, o próprio IBGE possui uma API oficial e gratuita!
IBGE - API de serviço de dadosAPI de serviço de dados do IBGEservicodados.ibge.gov.brAntes iremos obter os Estados, para isto, faça uma GET para:
https://servicodados.ibge.gov.br/api/v1/localidades/estados
Exemplo:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://servicodados.ibge.gov.br/api/v1/localidades/estados",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_SSL_VERIFYPEER => false
));
$response = curl_exec($curl);
$response2 = json_decode($response, true);
curl_close($curl);
foreach( $response2 as $RegResponse )
{
var_dump($RegResponse);
echo "\n\r";
echo "\n\r";
}
?>
Iremos receber um array com todos estados, e em cada estado temos o Nome/Sigla e sua Região:
https://gist.github.com/cmacetko/9ffa3f2595f8acb1d1d631c1abfbec96
Agora iremos obter todas as cidades do estado “SC”.
Para isto, faça uma GET para a API abaixo:
https://servicodados.ibge.gov.br/api/v1/localidades/estados/[ESTADO]/distritos
Substituindo “[ESTADO]” pela Sigla do estado que você deseja consultar.
Exemplo:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://servicodados.ibge.gov.br/api/v1/localidades/estados/SC/distritos",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_SSL_VERIFYPEER => false
));
$response = curl_exec($curl);
$response2 = json_decode($response, true);
curl_close($curl);
foreach( $response2 as $RegResponse )
{
var_dump($RegResponse);
echo "\n\r";
echo "\n\r";
}
?>
Iremos receber um array com todas as cidades:
{
"id": 420005105,
"nome": "Abdon Batista",
"municipio": {
"id": 4200051,
"nome": "Abdon Batista",
"microrregiao": {
"id": 42009,
"nome": "Curitibanos",
"mesorregiao": {
"id": 4203,
"nome": "Serrana",
"UF": {
"id": 42,
"sigla": "SC",
"nome": "Santa Catarina",
"regiao": {
"id": 4,
"sigla": "S",
"nome": "Sul"
}
}
}
},
"regiao-imediata": {
"id": 420008,
"nome": "Joaçaba - Herval d'Oeste",
"regiao-intermediaria": {
"id": 4204,
"nome": "Chapecó",
"UF": {
"id": 42,
"sigla": "SC",
"nome": "Santa Catarina",
"regiao": {
"id": 4,
"sigla": "S",
"nome": "Sul"
}
}
}
}
}
}
Os principais dados aqui são:
- municipio.nome: O nome da Cidade
- municipio.id: O código IBGE da cidade
Recomendo também salvar o ID dos registros, para que você possa atualizar sua base periodicamente.
Por hoje é isto, queridos desenvolvedores! 👩💼
Até logo! 👋
Leia também
API Mágica: notificações Web Push no navegador com PHP
Web Push com a API Mágica em PHP puro: o navegador se inscreve, o seu site envia a notificação e a API conta o clique. Sem Composer e sem biblioteca.
IndexNow: avisando o Bing e o Yandex mais rápido
Como criar a chave do IndexNow e avisar Bing e Yandex das suas páginas novas com Node.js e PHP: as requisições, os erros reais e as armadilhas.
llms.txt: por que importa e como gerar em PHP
Por que o llms.txt importa para quem quer ser citado pela IA, e como gerar o seu em PHP puro lendo o sitemap.xml que voce ja tem.