/api/v1/healthSistemaHealth check
Verifica se o serviço está disponível. Esta operação não exige API key.
Sem parâmetros.
Portal do desenvolvedor
A BrasilAddress transforma CEP, logradouros, municípios e coordenadas em uma API REST previsível, com dados nacionais e contratos versionados.
Crie uma conta, escolha um plano publicado no catálogo e gere uma chave no portal do cliente. A chave completa aparece somente no momento da criação.
Os endpoints protegidos aceitam uma chave em um destes headers. O health check e o readiness são públicos.
X-API-Key: SUA_API_KEY
Authorization: Bearer SUA_API_KEYA API não aceita chaves em query string. Respostas sem credencial retornam 401 authentication_required; credenciais inválidas retornam 401 invalid_api_key.
Use o exemplo abaixo com uma chave ativa. A URL dos exemplos vem da configuração BRASILADDRESS_API_PUBLIC_BASE_URL.
curl --fail-with-body --connect-timeout 5 --max-time 15 \
-H "X-API-Key: SUA_API_KEY" \
https://brasiladdress.io/api/v1/cep/01001000As consultas retornam um envelope JSON. data contém os registros; meta informa página, limite, ambiguidade ou cobertura quando aplicável.
{
"data": [{
"street": "Praça da Sé",
"district": "Sé",
"city": "São Paulo",
"uf": "SP",
"ibge_code": 3550308,
"cep": "01001000",
"number": null,
"latitude": null,
"longitude": null,
"precision": null,
"source": "base nacional"
}],
"meta": {"count": 1}
}Cada requisição autenticada reserva uma unidade da quota mensal da assinatura e passa pelo limite de requisições por minuto mais o burst contratado. Ao exceder um limite, a API responde 429 e envia Retry-After.
Retry-After. Para falhas transitórias, use backoff exponencial com jitter e limite o número de tentativas.| Status | Código | Quando acontece |
|---|---|---|
401 | authentication_required / invalid_api_key | Chave ausente, expirada, revogada ou inválida. |
403 | access_denied | Credencial sem a permissão exigida. |
422 | invalid_cep, invalid_query, invalid_coordinates | Parâmetro ausente, inválido ou fora do domínio aceito. |
429 | rate_limited / quota_exceeded | Limite por minuto ou quota mensal atingido. |
503 | not_ready | Dependência de dados indisponível no readiness. |
{"error":{"code":"invalid_query","message":"q deve ter ao menos 3 caracteres."}}O contrato atual vive em /api/v1. Respostas são JSON UTF-8 e os filtros de texto são normalizados para busca. O campo source e a observação de cobertura ajudam a interpretar a procedência dos registros.
Esta lista é derivada dos controllers reais. Use o explorer para preencher parâmetros e executar uma chamada manual.
/api/v1/healthSistemaVerifica se o serviço está disponível. Esta operação não exige API key.
Sem parâmetros.
/api/v1/readinessSistemaVerifica se a base de dados está pronta para atender requisições.
Sem parâmetros.
/api/v1/cep/{cep}EndereçosRetorna os registros associados a um CEP normalizado.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
ceppath | string | Sim | CEP com 8 dígitos, com ou sem máscara. Exemplo: 01001000 |
/api/v1/addresses/searchEndereçosPesquisa por logradouro, bairro, cidade, UF, município IBGE, CEP e número.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
logradouroquery | string | Não | Parte do nome do logradouro. Exemplo: Paulista |
bairroquery | string | Não | Parte do nome do bairro. Exemplo: Bela Vista |
cidadequery | string | Não | Parte do nome da cidade. Exemplo: São Paulo |
ufquery | string | Não | Sigla da UF. Exemplo: SP |
municipioquery | integer | Não | Código IBGE do município. Exemplo: 3550308 |
cepquery | string | Não | CEP com 8 dígitos. Exemplo: 01001000 |
numeroquery | string | Não | Número do endereço. Exemplo: 100 |
pagequery | integer | Não | Página, iniciando em 1. Exemplo: 1 |
limitquery | integer | Não | Itens por página, limitado a 100. Exemplo: 20 |
/api/v1/enderecosEndereçosAlias em português para a busca de endereços.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
logradouroquery | string | Não | Parte do nome do logradouro. Exemplo: Paulista |
ufquery | string | Não | Sigla da UF. Exemplo: SP |
pagequery | integer | Não | Página, iniciando em 1. Exemplo: 1 |
limitquery | integer | Não | Itens por página, limitado a 100. Exemplo: 20 |
/api/v1/enderecos/buscaEndereçosBusca um termo normalizado no nome do logradouro.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
qquery | string | Sim | Termo com pelo menos um caractere. Exemplo: Avenida Paulista |
pagequery | integer | Não | Página, iniciando em 1. Exemplo: 1 |
limitquery | integer | Não | Itens por página, limitado a 100. Exemplo: 20 |
/api/v1/geocodeGeocodificaçãoEncontra candidatos de endereço para um texto e informa a ambiguidade.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
qquery | string | Sim | Consulta com pelo menos 3 caracteres. Exemplo: Avenida Paulista São Paulo |
limitquery | integer | Não | Máximo de 50 resultados. Exemplo: 10 |
/api/v1/geocodingGeocodificaçãoAlias em inglês para geocodificação.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
qquery | string | Sim | Consulta com pelo menos 3 caracteres. Exemplo: Avenida Paulista São Paulo |
limitquery | integer | Não | Máximo de 50 resultados. Exemplo: 10 |
/api/v1/reverseGeocodificaçãoRetorna endereços próximos de uma latitude e longitude dentro do Brasil.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
latquery | number | Sim | Latitude entre -34 e 6. Exemplo: -23.561684 |
lonquery | number | Sim | Longitude entre -74 e -28. Exemplo: -46.655981 |
limitquery | integer | Não | Máximo de 50 resultados. Exemplo: 10 |
/api/v1/autocompleteBuscaSugere logradouros a partir de um prefixo. Exige pelo menos 2 caracteres.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
qquery | string | Sim | Prefixo com pelo menos 2 caracteres. Exemplo: Avenida Pau |
limitquery | integer | Não | Máximo de 50 resultados. Exemplo: 10 |
/api/v1/municipiosGeografiaLista municípios e seus registros de cobertura, opcionalmente filtrados por UF.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
ufquery | string | Não | Sigla da UF. Exemplo: SP |
/api/v1/municipios/{codigoIbge}GeografiaRetorna um município pelo código IBGE.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
codigoIbgepath | integer | Sim | Código IBGE do município. Exemplo: 3550308 |
/api/v1/bairrosGeografiaLista bairros associados a um município.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
municipioquery | integer | Sim | Código IBGE do município. Exemplo: 3550308 |
/api/v1/logradourosGeografiaLista logradouros associados a um município.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
municipioquery | integer | Sim | Código IBGE do município. Exemplo: 3550308 |
Todos os exemplos usam a mesma API REST e tratam timeout, erros de HTTP e 429. Substitua a variável de ambiente pela chave armazenada no seu ambiente seguro.
const controller = new AbortController();
const timer = setTimeout(() => controller.abort(), 15000);
const response = await fetch(`${BASE_URL}/api/v1/cep/01001000`, {
headers: { 'X-API-Key': process.env.BRASILADDRESS_API_KEY },
signal: controller.signal
});
clearTimeout(timer);
if (response.status === 429) throw new Error(`Retry after ${response.headers.get('Retry-After')}s`);
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());import os, httpx
with httpx.Client(timeout=15) as client:
response = client.get(
os.environ["BRASILADDRESS_BASE_URL"] + "/api/v1/cep/01001000",
headers={"X-API-Key": os.environ["BRASILADDRESS_API_KEY"]},
)
if response.status_code == 429:
raise RuntimeError("Aguarde o Retry-After antes de tentar novamente")
response.raise_for_status()
print(response.json())$ch = curl_init(getenv('BRASILADDRESS_BASE_URL').'/api/v1/cep/01001000');
CURLOPT_HTTPHEADER => ['X-API-Key: '.getenv('BRASILADDRESS_API_KEY')],
CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 15,
]);
$body = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status === 429) throw new RuntimeException('Respeite Retry-After');
if ($status >= 400) throw new RuntimeException($body ?: curl_error($ch));
echo $body;As requisições são feitas pelo seu navegador contra a URL configurada. A chave fica somente na memória desta página, nunca em localStorage, URL ou serviço externo.
O resultado JSON aparecerá aqui.Os valores abaixo são carregados do catálogo de planos publicados, o mesmo usado na página comercial e administrado em /admin/planos.
Plano gratuito para desenvolvimento, testes e integração com a API BrasilAddress.
10.000requisições / mêsO catálogo ainda não possui planos visíveis para o público.
Para pequenas aplicações e lojas virtuais que precisam consultar e validar endereços brasileiros.
100.000requisições / mêsO catálogo ainda não possui planos visíveis para o público.
Para e-commerces e sistemas de gestão que precisam de consultas de endereços, autocomplete e geocodificação em maior escala.
500.000requisições / mêsO catálogo ainda não possui planos visíveis para o público.
Para transportadoras, plataformas logísticas e empresas com alto volume de consultas de endereços.
2.000.000requisições / mêsO catálogo ainda não possui planos visíveis para o público.
A especificação é gerada pelo contrato da aplicação e alimenta as três interfaces. Baixe o formato que preferir ou abra uma ferramenta interativa.
Status e suporte: use o health check para monitoramento técnico e o portal do cliente para consumo, chaves e assinatura.
O exemplo usa fetch, timeout e tratamento explícito de HTTP 429.
const response = await fetch(`${process.env.BRASILADDRESS_BASE_URL}/api/v1/cep/01001000`, {
headers: { 'X-API-Key': process.env.BRASILADDRESS_API_KEY ?? '' },
signal: AbortSignal.timeout(15000),
});
if (response.status === 429) throw new Error(`Retry-After: ${response.headers.get('Retry-After')}`);
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());