Pular para o conteúdo
PHP

PHP — Obtendo Estados e Cidades e seus Códigos do IBGE

Capa do artigo: 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.br

Antes 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! 👋

PHP

Leia também