Download OpenAPI specification:
Documentação agregada das APIs PrismaData, cobrindo localização, roteamento, autenticação e consulta de precatórios/RPVs.
A PrismaData API fornece dados geoespaciais e socioeconômicos do Brasil através de endpoints REST. Com uma única coordenada (latitude/longitude) você obtém informações sobre favelas, renda, presídios, fronteiras, setor censitário e mais.
Base URL: https://api.prismadata.io/v1
ak_xxxxxxxxxxxxxxxx) — obtida no painel ou via suporteUse sua API Key diretamente no header X-Apikey de cada requisição. O gateway valida a chave e gerencia o token JWT internamente — não é necessário chamar /auth/token separadamente.
Envie uma coordenada para qualquer endpoint de localização. Exemplo: consultar o presídio mais próximo de um ponto.
A resposta é um JSON com campos prefixados por prismadata__<serviço>__. Veja a seção Formato de Resposta para detalhes.
curl:
curl "https://api.prismadata.io/v1/location/prison?lat=-25.5&lng=-54.5" \
-H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
Python (httpx):
import httpx
resp = httpx.get(
"https://api.prismadata.io/v1/location/prison",
params={"lat": -25.5, "lng": -54.5},
headers={"X-Apikey": "ak_xxxxxxxxxxxxxxxx"},
)
dados = resp.json()
nome = dados["prismadata__prison__nome_estabelecimento"]
print(nome or "Nenhum presídio próximo")
JavaScript (fetch):
const resp = await fetch(
"https://api.prismadata.io/v1/location/prison?lat=-25.5&lng=-54.5",
{ headers: { "X-Apikey": "ak_xxxxxxxxxxxxxxxx" } }
);
const dados = await resp.json();
const nome = dados.prismadata__prison__nome_estabelecimento;
console.log(nome ?? "Nenhum presídio próximo");
Todas as respostas da API incluem headers de rate limiting que informam o estado atual da sua cota de requisições.
| Header | Tipo | Descrição |
|---|---|---|
X-RateLimit-Limit |
integer | Número máximo de requisições permitidas por minuto para o usuário |
X-RateLimit-Remaining |
integer | Número de requisições restantes na janela atual |
X-RateLimit-Reset |
integer | Unix timestamp (segundos) indicando quando a janela de rate limit será reiniciada |
O rate limit é aplicado por usuário (identificado via token JWT) no API Gateway (KrakenD).
Além do rate limit por minuto, cada tenant pode possuir uma quota que limita o número total de requisições em um período maior (diário, semanal, mensal ou anual). Quando o tenant possui uma política de quota ativa, todas as respostas incluem os seguintes headers:
| Header | Tipo | Descrição |
|---|---|---|
X-Quota-Limit |
integer | Limite total de requisições da quota do tenant no período |
X-Quota-Used |
integer | Número de requisições já consumidas no período atual |
X-Quota-Remaining |
integer | Número de requisições restantes no período atual |
X-Quota-Period |
string | Período da quota: daily, weekly, monthly, yearly ou custom |
X-Quota-Reset |
integer | Unix timestamp (segundos) indicando quando a quota será reiniciada |
Quando a quota é excedida, a API retorna HTTP 429.
Quotas podem ser configuradas por endpoint ou globalmente para o tenant. Consulte seu contrato ou entre em contato com o suporte para detalhes sobre sua quota.
Quando o rate limit ou a quota são excedidos, a API retorna HTTP 429 com uma mensagem em texto plano indicando o motivo:
rate limit exceededlimit exceeded: 1000 requests used, limit is 1000Dica: Monitore o header
X-Quota-Remainingnas respostas para evitar o 429 proativamente — quando o valor estiver baixo, reduza a taxa de requisições.
Ao receber um 429, o cliente deve:
X-RateLimit-Reset ou X-Quota-Reset para saber quando a janela será reiniciada.Exemplo em Python:
import time, random, httpx
def request_com_retry(client, method, url, **kwargs):
for tentativa in range(5):
resp = client.request(method, url, **kwargs)
if resp.status_code != 429:
return resp
reset = (
resp.headers.get("X-RateLimit-Reset")
or resp.headers.get("X-Quota-Reset")
)
if reset:
wait = max(0, int(reset) - int(time.time())) + 1
else:
wait = (2 ** tentativa) + random.uniform(0, 1)
time.sleep(wait)
return resp
Todos os campos de resposta seguem o padrão prismadata__<serviço>__<campo>, facilitando a identificação da origem de cada dado.
| Serviço | Prefixo | Exemplo |
|---|---|---|
| Geocoder | prismadata__geocoder__ |
prismadata__geocoder__latitude |
| Favelas | prismadata__slum__ |
prismadata__slum__favela_nome |
| Renda Estática | prismadata__personal_income_static__ |
prismadata__personal_income_static__percentil_br |
| Renda PDF | prismadata__personal_income_pdf__ |
prismadata__personal_income_pdf__mean |
| Presídios | prismadata__prison__ |
prismadata__prison__nome_estabelecimento |
| Fronteiras | prismadata__border__ |
prismadata__border__faixa_fronteira |
| InfoSC | prismadata__infosc__ |
prismadata__infosc__cod_setor |
| Rotas | prismadata__routing_route__ |
prismadata__routing_route__distancia_m |
| Isocronas | prismadata__routing_isochrone__ |
prismadata__routing_isochrone__geometria |
| Validação de Endereços | prismadata__addr_validation__ |
prismadata__addr_validation__score |
Endpoints GET retornam um objeto JSON plano com os campos do serviço:
{
"prismadata__prison__nome_estabelecimento": "Unidade Penal X",
"prismadata__prison__distancia_borda_m": 1010.79,
"prismadata__prison__uf": "MS"
}
Endpoints batch retornam um dicionário onde as chaves são os identificadores enviados na requisição e os valores são os objetos de resposta:
{
"ponto_1": { "prismadata__prison__nome_estabelecimento": "...", ... },
"ponto_2": { "prismadata__prison__nome_estabelecimento": "...", ... }
}
Quando um ponto está fora da área de cobertura de um serviço, os campos de detalhe retornam null. Isso indica ausência de dados, não um erro.
Porém, indicadores de proximidade ou pertencimento podem ter valor mesmo quando os campos de detalhe são null. Exemplo para um ponto longe de qualquer presídio:
{
"prismadata__prison__ponto_dentro_presidio": false,
"prismadata__prison__distancia_borda_m": 85000.5,
"prismadata__prison__nome_estabelecimento": null,
"prismadata__prison__uf": null,
"prismadata__prison__tipo_estabelecimento": null
}
O padrão é: campos booleanos e de distância indicam relação espacial e geralmente têm valor; campos de detalhe (nome, tipo, UF) dependem de haver uma entidade próxima o suficiente.
Todas as respostas incluem os headers X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset. Veja a seção Rate Limiting & Quota para detalhes.
| Código | Significado | Content-Type | Ação recomendada |
|---|---|---|---|
| 200 | Sucesso | application/json |
— |
| 401 | Não autenticado | text/plain |
Verificar API Key ou token JWT |
| 403 | Sem permissão | text/plain |
Verificar roles do token |
| 404 | Não encontrado | text/plain |
Verificar URL do endpoint |
| 422 | Validação falhou | application/json ou vazio |
Corrigir parâmetros (ver abaixo) |
| 429 | Rate limit / quota | text/plain |
Ver seção Rate Limiting & Quota |
| 500 | Erro interno | text/plain |
Retry com backoff, contatar suporte |
Erros 401, 403, 404, 429 e 500 retornam texto plano — use resp.text, não resp.json(). Exemplos de mensagens reais:
| Código | Mensagem |
|---|---|
| 401 | failed to fetch JWT: auth service returned status: 401 Unauthorized |
| 404 | 404 page not found |
Erro 422 possui dois cenários distintos:
lat=abc), o gateway rejeita a requisição antes de encaminhá-la ao serviço. Neste caso o corpo da resposta é vazio (content-length: 0).lat ausente), o serviço retorna JSON no formato ValidationError.Importante: sempre verifique se o corpo da resposta 422 tem conteúdo antes de fazer parse JSON.
Quando os parâmetros enviados são inválidos e a requisição chega ao serviço, a API retorna um 422 com o formato padrão do FastAPI:
{
"detail": [
{
"type": "missing",
"loc": ["query", "lat"],
"msg": "Field required",
"input": null
}
]
}
Cada item em detail contém:
type: tipo do erro (ex: missing, value_error, type_error)loc: localização do parâmetro (ex: ["query", "lat"], ["body", "coordenadas"])msg: mensagem descritiva do erroinput: valor recebido (ou null se ausente)Python (httpx):
import httpx
resp = httpx.get(
"https://api.prismadata.io/v1/location/prison",
params={"lat": -25.5, "lng": -54.5},
headers={"X-Apikey": "ak_xxxxxxxxxxxxxxxx"},
)
if resp.status_code == 200:
dados = resp.json()
elif resp.status_code == 422:
# Gateway pode retornar 422 com body vazio
if resp.headers.get("content-type", "").startswith("application/json") and resp.text:
erros = resp.json()["detail"]
for erro in erros:
print(f"Erro em {erro['loc']}: {erro['msg']}")
else:
print("Parâmetro com tipo inválido (rejeitado pelo gateway)")
elif resp.status_code == 429:
reset = resp.headers.get("X-RateLimit-Reset")
print(f"Rate limit. Retry após timestamp {reset}")
else:
# 401, 403, 404, 500 — corpo é texto plano
print(f"Erro {resp.status_code}: {resp.text}")
JavaScript (fetch):
const resp = await fetch(
"https://api.prismadata.io/v1/location/prison?lat=-25.5&lng=-54.5",
{ headers: { "X-Apikey": "ak_xxxxxxxxxxxxxxxx" } }
);
if (resp.ok) {
const dados = await resp.json();
} else if (resp.status === 422) {
// Gateway pode retornar 422 com body vazio
const contentType = resp.headers.get("content-type") || "";
const body = await resp.text();
if (contentType.includes("application/json") && body) {
const { detail } = JSON.parse(body);
detail.forEach(e => console.error(`Erro em ${e.loc}: ${e.msg}`));
} else {
console.error("Parâmetro com tipo inválido (rejeitado pelo gateway)");
}
} else if (resp.status === 429) {
const reset = resp.headers.get("X-RateLimit-Reset");
console.warn(`Rate limit. Retry após timestamp ${reset}`);
} else {
// 401, 403, 404, 500 — corpo é texto plano
console.error(`Erro ${resp.status}: ${await resp.text()}`);
}
O token JWT tem validade configurável de 1 a 15 minutos (default: 15 min), definida pelo administrador da conta por usuário. O campo exp no payload do JWT contém o timestamp Unix de expiração.
X-Apikey (recomendado)O gateway renova o token automaticamente a cada requisição. Nenhum tratamento especial é necessário.
username/password via /auth/tokenAo gerenciar o JWT diretamente, extraia o campo exp dos claims e renove o token antes da expiração:
import httpx
import json
import base64
import time
BASE = "https://api.prismadata.io/v1"
class TokenManager:
def __init__(self, username: str, password: str):
self.username = username
self.password = password
self.token = None
self.exp = 0
def _obter_token(self):
resp = httpx.post(
f"{BASE}/auth/token",
data={"username": self.username, "password": self.password},
)
resp.raise_for_status()
self.token = resp.json()["access_token"]
# Extrair exp do payload JWT (segunda parte, base64)
payload = self.token.split(".")[1]
payload += "=" * (-len(payload) % 4) # padding
claims = json.loads(base64.urlsafe_b64decode(payload))
self.exp = claims["exp"]
def get_headers(self) -> dict:
if time.time() >= self.exp - 30: # renova 30s antes
self._obter_token()
return {"Authorization": f"Bearer {self.token}"}
mgr = TokenManager("user@email.com", "senha")
resp = httpx.get(
f"{BASE}/location/prison",
params={"lat": -25.5, "lng": -54.5},
headers=mgr.get_headers(),
)
O modo sandbox permite testar a integração com a API usando dados sintéticos. As respostas mantêm a mesma estrutura e tipos de dados da produção, mas com valores fictícios.
Sandbox é uma propriedade da conta do usuário, configurada pelo administrador no Portal Administrativo. Não é algo que o desenvolvedor ativa por requisição.
sandboxX-Sandbox em todas as requisiçõesNenhuma ação é necessária no código de integração. Se a conta é sandbox, todas as respostas já serão sintéticas automaticamente.
Solicite ao administrador a ativação do modo sandbox na sua conta para começar a receber dados sintéticos.
O SDK Python detecta automaticamente quando a conta está em modo sandbox e exibe um aviso durante a inicialização:
[PrismaData] Atenção: conta em modo sandbox — respostas contêm dados sintéticos.
Use operações em lote quando precisar consultar múltiplos pontos ou endereços em uma única chamada. Isso reduz latência e simplifica a integração.
| Endpoint | Método | Descrição |
|---|---|---|
/location/batch |
POST | Consulta de localização em lote (presídios, favelas, etc.) |
/location/batch/aggregator |
POST | Agregador de múltiplos serviços em lote |
/routing/batch/route |
POST | Cálculo de múltiplas rotas |
/routing/batch/isochrone |
POST | Cálculo de múltiplas isocronas |
Envie um JSON onde as chaves são identificadores únicos (strings) e os valores são arrays [latitude, longitude]:
{
"ponto_1": [-23.550520, -46.633308],
"ponto_2": [-22.906847, -43.172897]
}
A resposta é um dicionário com as mesmas chaves enviadas na requisição, mapeando para os objetos de resposta do serviço:
{
"ponto_1": {
"prismadata__prison__nome_estabelecimento": "...",
"prismadata__prison__distancia_borda_m": 1500.0
},
"ponto_2": {
"prismadata__prison__nome_estabelecimento": "...",
"prismadata__prison__distancia_borda_m": 3200.0
}
}
Para rotas, cada item contém coordenadas de origem e destino:
{
"rotas": [
{
"origem": {"lat": -19.9191, "lng": -43.9378},
"destino": {"lat": -19.9498, "lng": -43.9477}
}
]
}
| Serviço | Máx. itens por batch |
|---|---|
Localização (/location/batch) |
1024 |
Agregador (/location/batch/aggregator) |
1024 |
Roteamento (/routing/batch/route) |
16 |
Isocronas (/routing/batch/isochrone) |
16 |
Sem falha parcial: cada ponto é processado independentemente. Todos os pontos retornam resultado — pontos fora de cobertura recebem campos de detalhe null (veja seção Formato de Resposta).
Agregador sem serviços habilitados: se nenhum flag de serviço for informado via query parameter (slum, prison, border, etc.), a resposta contém objetos vazios {} para cada ponto.
A cobrança de chamadas batch é feita por número de itens no lote. Um batch com 10 pontos equivale a 10 chamadas individuais.
Python (httpx):
import httpx
coordenadas = {
"ponto_1": [-23.550520, -46.633308],
"ponto_2": [-22.906847, -43.172897],
}
resp = httpx.post(
"https://api.prismadata.io/v1/location/batch",
json=coordenadas,
headers={"X-Apikey": "ak_xxxxxxxxxxxxxxxx"},
)
resultados = resp.json()
for chave, dados in resultados.items():
print(f"{chave}: {dados}")
curl:
curl -X POST "https://api.prismadata.io/v1/location/batch" \
-H "X-Apikey: ak_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"ponto_1": [-23.55, -46.63], "ponto_2": [-22.90, -43.17]}'
JavaScript (fetch):
const coordenadas = {
ponto_1: [-23.550520, -46.633308],
ponto_2: [-22.906847, -43.172897]
};
const resp = await fetch(
"https://api.prismadata.io/v1/location/batch",
{
method: "POST",
headers: {
"X-Apikey": "ak_xxxxxxxxxxxxxxxx",
"Content-Type": "application/json"
},
body: JSON.stringify(coordenadas)
}
);
const resultados = await resp.json();
Object.entries(resultados).forEach(([chave, dados]) => {
console.log(`${chave}:`, dados);
});
Requer Python >= 3.10.
pip install prismadata
Extras opcionais:
pip install prismadata[pandas] # enriquecimento de DataFrames
pip install prismadata[sklearn] # transformer scikit-learn
pip install prismadata[cache] # cache local em disco
pip install prismadata[progress] # barra de progresso (tqdm)
pip install prismadata[all] # todos os extras
from prismadata import Client
client = Client(api_key="ak_xxxxxxxxxxxxxxxx")
# Consultar favela mais proxima
result = client.slum(lat=-23.55, lng=-46.63)
print(result)
# Geocodificar um endereco
geo = client.geocode(full_address="Av Paulista 1000, Sao Paulo")
print(geo)
O SDK aceita 3 formas de credencial (em ordem de prioridade):
1. API Key direta:
client = Client(api_key="ak_xxxxxxxxxxxxxxxx")
2. Usuario e senha:
client = Client(username="user@email.com", password="senha")
3. Variaveis de ambiente:
export PRISMADATA_APIKEY=ak_xxxxxxxxxxxxxxxx
# ou
export PRISMADATA_USERNAME=user@email.com
export PRISMADATA_PASSWORD=senha
client = Client() # detecta automaticamente
A renovacao do token JWT e automatica — o SDK cuida internamente.
from prismadata import AsyncClient
async with await AsyncClient.create(api_key="ak_xxxxxxxxxxxxxxxx") as client:
result = await client.slum(lat=-23.55, lng=-46.63)
print(result)
# Enriquecimento de DataFrames tambem funciona
enriched = await client.enrich(df, services=["slum", "income_static"])
O AsyncClient usa factory pattern — note o await antes de AsyncClient.create().
Todos os metodos do Client possuem equivalente assincrono no AsyncClient.
Para consultas em volume, use os metodos *_batch:
points = {
"p1": [-23.55, -46.63],
"p2": [-22.90, -43.17],
"p3": [-19.92, -43.94],
}
# Batch de favelas
result = client.slum_batch(points)
# Batch de presídios
result = client.prison_batch(points)
# Batch de renda estatica
result = client.personal_income_static_batch(points)
# Batch de renda PDF (distribuicao de probabilidade)
result = client.personal_income_pdf_batch(points)
# Batch de renda PDF com parametros demograficos
result = client.personal_income_pdf_batch_detailed({
"p1": {"lat": -23.55, "lng": -46.63, "gender": "M", "age": 50},
"p2": {"lat": -22.90, "lng": -43.17, "gender": "F", "age": 30, "is_responsible": True},
})
# Batch com multiplos servicos (agregador)
result = client.aggregate_batch(
points,
services=["slum", "prison", "infosc"],
)
O SDK divide automaticamente lotes grandes em chunks e reenvia com retry em caso de erro.
# Geocodificar enderecos em lote (max 512 por chunk)
addresses = {
"p1": {"endereco_completo": "Av Paulista 1000, Sao Paulo, SP"},
"p2": {"cep": "30130-165", "numero": "100", "logradouro": "Rua da Bahia"},
}
result = client.geocode_batch(addresses)
# Geocodificacao reversa em lote (max 1024 por chunk)
points = {"p1": [-23.55, -46.63], "p2": [-22.90, -43.17]}
result = client.reverse_geocode_batch(points)
# Geocodificacao + agregacao em lote
result = client.geocode_aggregate_batch(
addresses,
services=["slum", "infosc"],
)
# Cada resultado contem campos do geocoder + dos servicos solicitados
Consulta de dados cadastrais de pessoas juridicas (Receita Federal + geo). O SDK valida o CNPJ localmente (mod-11 alfanumerico, aceita mascara) antes de fazer a request.
# Lookup individual - shape flat (49 chaves escalares)
r = client.cnpj("82.554.437/0001-31")
print(r["prismadata__pessoa_juridica__razao_social"])
# Lookup raw - shape F1 com socios/CNAEs como listas
r_raw = client.cnpj_raw("82554437000131")
for socio in r_raw["prismadata__pessoa_juridica__socios"]:
print(socio["prismadata__pessoa_juridica__nome_ou_razao_social"])
# Batch flat (max 1024/chamada) - retorna dict indexado por CNPJ
batch = client.cnpj_batch(["82554437000131", "60701190076771"])
if batch["82554437000131"] is None:
print("CNPJ nao encontrado")
# Batch raw (max 256/chamada - payload maior)
batch_raw = client.cnpj_raw_batch(["82554437000131"])
# Metadata do dataset
meta = client.cnpj_metadata()
print(meta["prismadata__pessoa_juridica__total_cnpjs_carregados"])
O agregador anexa dados dos pilares geo (favela, presidio, fronteira, renda,
aglomeracao comercial, infosc, tipologia) numa unica chamada. Quando o CNPJ
nao tem lat/lng, as flags geo sao silenciosamente puladas — so vem o
bloco prismadata__pessoa_juridica__* com qualidade_geocodificacao_classificacao="FALHA".
r = client.cnpj_enriched(
"82554437000131",
slum=True, border=True, tipologia=True,
)
if "prismadata__slum__nome" in r:
print("Favela mais proxima:", r["prismadata__slum__nome"])
else:
print("Sem geo. Qualidade:",
r.get("prismadata__pessoa_juridica__qualidade_geocodificacao_classificacao"))
# Batch enriquecido (max 256/chamada)
batch = client.cnpj_batch_enriched(
["82554437000131", "60701190076771"],
slum=True, tipologia=True,
)
Tipologia retorna a finalidade (residencial, comercial, misto), especie cadastral e tipo de moradia do endereco CNEFE mais proximo. Base: Censo CNEFE-IBGE 2022, cobertura aproximada de 65% do territorio brasileiro.
# Por coordenada
result = client.tipologia(lat=-23.55, lng=-46.63)
# result["prismadata__tipologia__finalidade"] -> "RESIDENCIAL" / "NAO_RESIDENCIAL" / ...
# result["prismadata__tipologia__cobertura"] -> bool
# cobertura=False nao e erro - decide o que fazer no cliente
if not result["prismadata__tipologia__cobertura"]:
motivo = result.get("prismadata__tipologia__motivo_sem_cobertura")
# FORA_DE_AREA_BRASIL | CNEFE_NAO_CADASTRADO | DISTANCIA_EXCESSIVA
# Por endereco textual ou estruturado
result = client.tipologia_by_address(full_address="Av Paulista 1000, Sao Paulo, SP")
# ou com campos individuais (tem prioridade)
result = client.tipologia_by_address(
zipcode="01310-100", number=1000, city="Sao Paulo", state="SP",
)
# result["prismadata__tipologia__match_method"] indica match exato ou aproximado
# Metadata do dataset (versao, cobertura)
meta = client.tipologia_metadata()
print(meta["prismadata__tipologia__versao_dados"])
# Batch por coordenada (servidor caps a 1024/chunk - SDK chunka automaticamente)
result = client.tipologia_batch({
"p1": [-23.55, -46.63],
"p2": [-22.90, -43.17],
})
# Batch por endereco (servidor caps a 512/chunk)
result = client.tipologia_by_address_batch({
"a1": {"endereco_completo": "Av Paulista 1000, Sao Paulo, SP"},
"a2": {"cep": "30130-165", "numero": "100"},
})
Tipologia tambem esta disponivel via aggregator (consulte multiplos produtos numa unica chamada):
result = client.aggregate(
-23.55, -46.63,
services=["tipologia", "slum", "income_static"],
)
# ou em batch
result = client.aggregate_batch(
{"p1": [-23.55, -46.63], "p2": [-22.90, -43.17]},
services=["tipologia", "income_static"],
)
Aviso sobre confianca: em enderecos multi-unidade (shoppings, condominios,
predios comerciais), o servidor retorna indicador_estabelecimento=MULTIPLO_*
e confianca pode ser MEDIA ou BAIXA. Esses campos indicam que o
resultado e uma amostra, nao a unidade especifica. Veja documentacao completa
em https://docs.prismadata.io/tipologia.
Aglomeracoes comerciais sao poligonais continuas de tecido comercial denso (~11k regioes no Brasil), com atributos como qtd de PDVs, score, porte, vocacao, faixa de renda e trechos de rua ranqueados.
# Aglomeracao + trecho de rua mais proximo de um ponto
result = client.commercial_cluster(lat=-23.5613, lng=-46.6558)
# Top 3 aglomeracoes proximas (resposta indexada por 1_, 2_, 3_)
result = client.commercial_cluster(
lat=-23.5613, lng=-46.6558, top_n=3, radius_km=10.0,
)
# Filtrar por vocacao (aceita string ou lista)
result = client.commercial_cluster(
lat=-23.5613, lng=-46.6558,
vocation=["Moda", "Alimentacao"],
min_size="Grande",
)
# Enriquecimento de carteira de PDVs (ate 1024 pontos por request)
carteira = {
"pdv_1": [-23.5613, -46.6558],
"pdv_2": [-22.9068, -43.1729],
}
result = client.commercial_cluster_batch(carteira, top_n=1)
# result = {"pdv_1": {...campos flat...}, "pdv_2": {...}}
# Drill-down: detalhes de uma aglomeracao + todos os trechos
detail = client.commercial_cluster_detail("5ebd0eb4f6b4")
# Geometria (opcional, premium): GeoJSON dict ou WKT string
# Requer role `admin` ou `viewer:commercial_cluster` no JWT - fale com vendas.
r = client.commercial_cluster(-23.5613, -46.6558, include_geometry=True)
geom = r["prismadata__commercial_cluster__geometria"]
# geom e dict: {"type": "Polygon", "coordinates": [[[...]]]}
r_wkt = client.commercial_cluster(-23.5613, -46.6558, include_geometry=True, wkt=True)
# r_wkt[...geometria] e str: "POLYGON((...))"
# Sem a role: levanta GeometryNotAuthorizedError (HTTP 403).
# Batch nao suporta geometria - usar single point ou detail.
# Tentar incluir_geometria em batch levanta GeometryBatchNotSupportedError.
# Granularidade fina: trecho de rua mais proximo (raio em metros)
street = client.commercial_cluster_street(-23.5613, -46.6558, radius_m=200.0)
# Busca por filtros (sem ponto geografico) - lista paginada
results = client.commercial_cluster_search(
filters={
"state": ["SP", "RJ"],
"vocation": ["Moda"],
"size": ["Grande"],
"income_range": ["Premium", "Luxo"],
"min_pdv_count": 500,
"bbox": {"min_lat": -24, "min_lng": -47, "max_lat": -23, "max_lng": -46},
},
limit=50,
)
# Ranking top-N por criterio e escopo
top_sp = client.commercial_cluster_ranking(
criterion="score", scope="state", state="SP", top_n=20,
)
Para combinar commercial_cluster com outros produtos numa unica chamada,
use o aggregator (caminho preferido para enriquecimento de carteira):
# Por ponto
result = client.aggregate(
-23.5613, -46.6558,
services=["commercial_cluster", "slum", "prison"],
commercial_cluster_top_n=3,
commercial_cluster_raio_km=10.0,
)
# Por endereco textual (geocoda + enriquece)
result = client.geocode_aggregate(
full_address="Av Paulista 1000, Sao Paulo, SP",
services=["commercial_cluster", "slum"],
)
# Batch
result = client.aggregate_batch(
carteira,
services=["commercial_cluster", "border"],
commercial_cluster_top_n=1,
)
Com o extra pandas, enriqueca DataFrames diretamente:
import pandas as pd
from prismadata import Client
client = Client(api_key="ak_xxxxxxxxxxxxxxxx")
df = pd.DataFrame({
"lat": [-23.55, -22.90, -19.92],
"lng": [-46.63, -43.17, -43.94],
})
enriched = client.enrich(
df,
services=["slum", "prison", "income_static"],
)
print(enriched.columns.tolist())
Com o extra sklearn, use o transformer em pipelines de ML:
from sklearn.pipeline import Pipeline
from prismadata import Client
client = Client(api_key="ak_xxxxxxxxxxxxxxxx")
transformer = client.get_transformer(
services=["slum", "income_static"],
lat_col="latitude",
lng_col="longitude",
)
pipe = Pipeline([
("prismadata", transformer),
("model", your_model),
])
from prismadata import Client
from prismadata.exceptions import (
AuthenticationError,
BatchError,
RateLimitError,
PrismaDataError,
)
try:
client = Client(api_key="ak_xxxxxxxxxxxxxxxx")
result = client.slum(lat=-23.55, lng=-46.63)
except AuthenticationError:
print("Credenciais invalidas")
except RateLimitError:
print("Rate limit excedido, aguarde e tente novamente")
except PrismaDataError as e:
print(f"Erro da API: {e}")
Quando um lote grande falha parcialmente, o SDK coleta os resultados dos chunks
que deram certo e levanta BatchError com os dados parciais:
try:
result = client.slum_batch(large_point_dict)
except BatchError as e:
# Resultados dos chunks que deram certo
for key, value in e.partial_results.items():
process(key, value)
# Chaves dos chunks que falharam (para retry manual)
print(f"Falhou: {e.failed_keys}")
O SDK implementa retry automatico com backoff exponencial para erros transientes (429, 500, 502, 503, 504).
Alem disso, respeita os headers Retry-After e X-RateLimit-Reset do servidor.
SDK oficial em R para a API de inteligencia geoespacial da PrismaData (https://api.prismadata.io/v1). Este guia cobre instalacao, autenticacao, consultas individuais e em lote, enriquecimento de data.frames, integracao com tidymodels e tratamento de erros.
Quando disponivel no CRAN, basta executar:
install.packages("prismadata")
Para instalar a versao mais recente diretamente do repositorio:
# Instale o pacote remotes caso ainda nao tenha
install.packages("remotes")
# Instale o prismadata a partir do GitHub
remotes::install_github("prismadata/prismadata-r")
O pacote possui dependencias opcionais que habilitam funcionalidades extras. Instale conforme a necessidade:
# Cache em disco (para evitar chamadas repetidas a API)
install.packages("cachem")
# Enriquecimento de tibbles e manipulacao com dplyr
install.packages(c("tibble", "dplyr"))
# Integracao com tidymodels (step_prismadata)
install.packages("recipes")
Exemplo minimo para comecar a usar o pacote: criar um cliente, consultar a proximidade de favela para um par de coordenadas e inspecionar o resultado.
library(prismadata)
# Cria o cliente com sua chave de API
client <- prismadata_client(api_key = "ak_xxxxxxxxxxxxxxxx")
# Consulta a favela mais proxima de um ponto em Sao Paulo
resultado <- client$slum(lat = -23.55, lng = -46.63)
# Inspeciona o retorno
str(resultado)
# $ prismadata__favela__nome : chr "Paraisopolis"
# $ prismadata__favela__distancia_m : num 3420
# $ prismadata__favela__area_ha : num 102.3
# ...
O objeto client expoe metodos para todos os servicos da API: geocodificacao, inteligencia de localizacao, roteamento, validacao de enderecos e consultas de credito.
# Geocodificacao
geo <- client$geocode(full_address = "Av Paulista 1000, Sao Paulo, SP")
# Geocodificacao reversa
endereco <- client$reverse_geocode(lat = -23.5632, lng = -46.6542)
# Proximidade de presidio
presidio <- client$prison(lat = -23.55, lng = -46.63)
# Proximidade de fronteira
fronteira <- client$border(lat = -23.55, lng = -46.63)
# Informacoes do setor censitario (IBGE)
setor <- client$infosc(lat = -23.55, lng = -46.63)
# Estimativa de renda estatica
renda <- client$income_static(lat = -23.55, lng = -46.63)
# Calculo de rota entre dois pontos
rota <- client$route(
points = list(c(-23.55, -46.63), c(-22.90, -43.17)),
profile = "car"
)
# Isocrona (area alcancavel em 10 minutos de carro)
iso <- client$isochrone(lat = -23.55, lng = -46.63, time_limit = 600, profile = "car")
O pacote suporta tres formas de autenticacao, avaliadas na seguinte ordem de prioridade:
A forma mais simples. Voce recebe a chave no painel da PrismaData.
client <- prismadata_client(api_key = "ak_xxxxxxxxxxxxxxxx")
Autentica via endpoint /auth/token, obtendo um JWT que e renovado automaticamente.
client <- prismadata_client(
username = "usuario@empresa.com",
password = "minha_senha_segura"
)
Quando nenhum argumento e passado, o pacote busca credenciais automaticamente nas variaveis de ambiente. Isso e ideal para ambientes de producao, CI/CD e containers.
# Opcao A: defina a variavel PRISMADATA_APIKEY
Sys.setenv(PRISMADATA_APIKEY = "ak_xxxxxxxxxxxxxxxx")
# Opcao B: defina PRISMADATA_USERNAME e PRISMADATA_PASSWORD
Sys.setenv(PRISMADATA_USERNAME = "usuario@empresa.com")
Sys.setenv(PRISMADATA_PASSWORD = "minha_senha_segura")
# O cliente detecta as credenciais automaticamente
client <- prismadata_client()
A ordem de resolucao e:
api_key explicitousername + password explicitosPRISMADATA_APIKEYPRISMADATA_USERNAME + PRISMADATA_PASSWORDSe nenhuma credencial for encontrada, o pacote emite um erro do tipo prismadata_authentication_error com instrucoes de configuracao.
client <- prismadata_client(
api_key = "ak_xxxxxxxxxxxxxxxx",
timeout = 60, # Timeout de requisicao em segundos (padrao: 30)
cache = TRUE, # Habilita cache em disco (requer pacote cachem)
cache_ttl = 86400, # Tempo de vida do cache em segundos (padrao: 24h)
clean_columns = TRUE, # Remove prefixo "prismadata__" dos nomes de colunas
show_progress = TRUE, # Exibe barra de progresso em operacoes batch
app_name = "meu_app" # Nome da aplicacao enviado no header X-App
)
# Retorna informacoes do usuario autenticado
info <- client$me()
print(info)
# $username
# [1] "usuario@empresa.com"
# $roles
# [1] "admin" "full_reader"
Para consultar muitos pontos de uma vez, use os metodos *_batch(). O pacote faz o auto-chunking automaticamente: listas com mais de 1024 pontos sao divididas em blocos e enviadas sequencialmente, com barra de progresso.
# Cria uma lista nomeada de coordenadas (lat, lng)
pontos <- list(
"sp_centro" = c(-23.5505, -46.6333),
"rj_centro" = c(-22.9068, -43.1729),
"bh_centro" = c(-19.9191, -43.9386),
"poa_centro" = c(-30.0346, -51.2177),
"recife" = c(-8.0476, -34.8770)
)
# Consulta em lote
resultados <- client$slum_batch(pontos)
# Cada resultado e acessado pela chave do ponto
resultados$sp_centro$prismadata__favela__distancia_m
# [1] 2145.7
resultados$rj_centro$prismadata__favela__nome
# [1] "Morro da Providencia"
Consulta varios servicos simultaneamente para cada ponto (favela, presidio, fronteira, setor censitario).
pontos <- list(
"loc_1" = c(-23.55, -46.63),
"loc_2" = c(-22.90, -43.17)
)
resultados <- client$aggregate_batch(
points = pontos,
services = c("slum", "prison", "infosc")
)
# O resultado de cada ponto contem campos de todos os servicos solicitados
resultados$loc_1$prismadata__favela__distancia_m
resultados$loc_1$prismadata__presidio__distancia_m
resultados$loc_1$prismadata__info_sc__cod_setor
Calcula multiplas rotas de uma vez. O limite por chunk para roteamento e de 16 itens.
# Cada item deve conter um elemento "points" com a lista de coordenadas
itens_rota <- list(
list(points = list(c(-23.55, -46.63), c(-23.56, -46.65))),
list(points = list(c(-22.90, -43.17), c(-22.91, -43.20))),
list(points = list(c(-19.92, -43.94), c(-19.93, -43.96)))
)
resultados <- client$route_batch(itens_rota, profile = "car")
# Estrutura do retorno
resultados$TOTAL # Total de rotas solicitadas
resultados$SUCESSOS # Quantidade de rotas calculadas com sucesso
resultados$FALHAS # Quantidade de falhas
resultados$RESULTADOS # Lista com os dados de cada rota
# Geocodificar enderecos em lote (max 512 por chunk)
enderecos <- list(
"p1" = list(endereco_completo = "Av Paulista 1000, Sao Paulo, SP"),
"p2" = list(cep = "30130-165", numero = "100", logradouro = "Rua da Bahia")
)
resultados <- client$geocode_batch(enderecos)
# Geocodificacao reversa em lote (max 1024 por chunk)
pontos <- list("p1" = c(-23.55, -46.63), "p2" = c(-22.90, -43.17))
resultados <- client$reverse_geocode_batch(pontos)
# Geocodificacao + agregacao em lote
resultados <- client$geocode_aggregate_batch(
enderecos,
services = c("slum", "infosc")
)
# Cada resultado contem campos do geocoder + dos servicos solicitados
resultados$p1$prismadata__geocoder__latitude
resultados$p1$prismadata__slum__favela_distancia_m
# Proximidade de presidio em lote
client$prison_batch(pontos)
# Proximidade de fronteira em lote
client$border_batch(pontos)
# Setor censitario em lote
client$infosc_batch(pontos)
# Isocronas em lote
itens_iso <- list(
list(lat = -23.55, lng = -46.63, time_limit = 600),
list(lat = -22.90, lng = -43.17, time_limit = 300)
)
client$isochrone_batch(itens_iso, profile = "car", direction = "outgoing")
slum_batch, prison_batch, border_batch, infosc_batch, aggregate_batch): limite de 1024 pontos por chunk.route_batch, isochrone_batch): limite de 16 itens por chunk.Quando a quantidade de pontos excede o limite, o pacote divide automaticamente em chunks, envia cada um separadamente e consolida os resultados. A barra de progresso e exibida quando ha mais de um chunk (desative com show_progress = FALSE no construtor do cliente).
O metodo client$enrich() recebe um data.frame com colunas de latitude e longitude e retorna o mesmo data.frame acrescido de colunas com dados geoespaciais da PrismaData.
# Data.frame de entrada com coordenadas
df <- data.frame(
id = c("loja_sp", "loja_rj", "loja_bh"),
lat = c(-23.5505, -22.9068, -19.9191),
lng = c(-46.6333, -43.1729, -43.9386)
)
# Enriquece com dados de favela, setor censitario e renda
enriquecido <- client$enrich(
df,
lat_col = "lat",
lng_col = "lng",
services = c("slum", "infosc", "income_static")
)
# O data.frame agora possui colunas adicionais
names(enriquecido)
# [1] "id" "lat" "lng"
# [4] "prismadata__favela__distancia_m" "prismadata__favela__nome"
# [7] "prismadata__info_sc__cod_setor" "prismadata__renda__mediana"
# ...
# Visualiza o resultado
head(enriquecido)
library(dplyr)
enriquecido <- client$enrich(df, services = c("slum", "prison")) |>
as_tibble() |>
filter(prismadata__favela__distancia_m < 5000) |>
arrange(prismadata__favela__distancia_m)
Para remover o prefixo prismadata__ e simplificar os nomes, crie o cliente com clean_columns = TRUE:
client <- prismadata_client(
api_key = "ak_xxxxxxxxxxxxxxxx",
clean_columns = TRUE
)
enriquecido <- client$enrich(df, services = c("slum"))
names(enriquecido)
# [1] "id" "lat" "lng" "favela_distancia_m" "favela_nome" ...
Voce tambem pode limpar nomes manualmente em qualquer momento:
# Limpa nomes de um vetor de caracteres
clean_columns(c("prismadata__favela__distancia_m", "prismadata__geocoder__latitude"))
# [1] "favela_distancia_m" "geocoder_latitude"
# Limpa nomes de um data.frame
df_limpo <- clean_columns(enriquecido)
O pacote oferece o step step_prismadata() para integracao direta com o framework tidymodels/recipes. Ele permite adicionar features geoespaciais ao seu pipeline de machine learning de forma declarativa.
library(recipes)
library(prismadata)
# Suponha um dataset de treino com coordenadas e uma variavel alvo
dados_treino <- data.frame(
lat = c(-23.55, -22.90, -19.92, -30.03, -8.05),
lng = c(-46.63, -43.17, -43.94, -51.22, -34.88),
valor = c(1500, 2300, 1800, 1200, 900),
target = c(1, 0, 1, 0, 1)
)
dados_teste <- data.frame(
lat = c(-23.56, -22.91),
lng = c(-46.64, -43.18),
valor = c(1600, 2100),
target = c(1, 0)
)
# Define a receita com o step de enriquecimento PrismaData
receita <- recipe(target ~ ., data = dados_treino) |>
step_prismadata(
lat, lng,
services = c("slum", "income_static"),
api_key = "ak_xxxxxxxxxxxxxxxx"
)
# Prepara a receita (faz as chamadas a API para os dados de treino)
receita_preparada <- prep(receita, training = dados_treino)
# Aplica a receita nos dados de teste (faz as chamadas para os dados de teste)
dados_enriquecidos <- bake(receita_preparada, new_data = dados_teste)
# O resultado e um tibble com as colunas originais + colunas de enriquecimento
print(dados_enriquecidos)
library(recipes)
library(prismadata)
receita <- recipe(target ~ ., data = dados_treino) |>
step_prismadata(
lat, lng,
services = c("slum", "prison", "infosc"),
api_key = "ak_xxxxxxxxxxxxxxxx",
clean_columns = TRUE
) |>
step_normalize(all_numeric_predictors()) |>
step_dummy(all_nominal_predictors())
prep(), uma chamada e feita com a primeira linha dos dados de treino para descobrir os nomes das colunas de enriquecimento. Em seguida, o dataset completo e enriquecido durante o bake().skip = TRUE pode ser usado para pular o step durante o bake() (util para debug).username/password tambem e suportada no step.O pacote define uma hierarquia de condicoes (errors) customizadas, todas herdando de prismadata_error. Isso permite capturar erros especificos com tryCatch.
| Classe | Descricao | Status HTTP |
|---|---|---|
prismadata_error |
Erro generico da API | Qualquer |
prismadata_authentication_error |
Falha de autenticacao (credenciais invalidas, token expirado) | 401, 403 |
prismadata_rate_limit_error |
Limite de requisicoes excedido | 429 |
prismadata_quota_error |
Cota de uso esgotada | 402 |
prismadata_validation_error |
Parametros de entrada invalidos | 422 |
prismadata_batch_error |
Falha parcial em operacao batch | -- |
tryCatch(
{
resultado <- client$slum(lat = -23.55, lng = -46.63)
print(resultado)
},
# Erro de autenticacao (credencial invalida ou expirada)
prismadata_authentication_error = function(e) {
message("Erro de autenticacao: ", conditionMessage(e))
message("Status HTTP: ", e$status_code)
},
# Limite de requisicoes por segundo excedido
prismadata_rate_limit_error = function(e) {
message("Rate limit excedido. Aguarde antes de tentar novamente.")
message("Status HTTP: ", e$status_code)
},
# Cota de uso esgotada (creditos insuficientes)
prismadata_quota_error = function(e) {
message("Cota esgotada: ", conditionMessage(e))
},
# Parametros de entrada invalidos
prismadata_validation_error = function(e) {
message("Dados de entrada invalidos: ", conditionMessage(e))
},
# Qualquer outro erro da API PrismaData
prismadata_error = function(e) {
message("Erro da API: ", conditionMessage(e))
message("Status HTTP: ", e$status_code)
message("Corpo da resposta: ", paste(e$body, collapse = ", "))
}
)
consulta_com_retry <- function(client, lat, lng, tentativas = 3) {
for (i in seq_len(tentativas)) {
resultado <- tryCatch(
client$slum(lat = lat, lng = lng),
prismadata_rate_limit_error = function(e) {
if (i < tentativas) {
tempo_espera <- 2^i
message(sprintf("Rate limit atingido. Tentativa %d/%d. Aguardando %ds...",
i, tentativas, tempo_espera))
Sys.sleep(tempo_espera)
NULL
} else {
stop("Rate limit excedido apos ", tentativas, " tentativas.")
}
}
)
if (!is.null(resultado)) return(resultado)
}
}
resultado <- consulta_com_retry(client, lat = -23.55, lng = -46.63)
O pacote ja implementa retry automatico com backoff exponencial para os seguintes status HTTP: 429 (rate limit), 500, 502, 503 e 504 (erros de servidor). Sao feitas ate 3 tentativas antes de emitir o erro. O header Retry-After e respeitado quando presente na resposta.
Operacoes em lote podem falhar parcialmente: parte dos chunks retorna com sucesso enquanto outros falham (por timeout, erro de servidor etc.). Nesses casos, o pacote emite um erro do tipo prismadata_batch_error que carrega tanto os resultados parciais quanto as chaves que falharam.
O erro prismadata_batch_error possui dois campos extras acessiveis no handler:
e$partial_results: lista nomeada com os resultados dos chunks que tiveram sucesso.e$failed_keys: vetor de caracteres com as chaves (IDs dos pontos) que falharam.# Lista grande de pontos
pontos <- list(
"p001" = c(-23.55, -46.63),
"p002" = c(-22.90, -43.17),
"p003" = c(-19.92, -43.94),
"p004" = c(-30.03, -51.22),
"p005" = c(-8.05, -34.88)
# ... imagine centenas de pontos
)
resultados <- tryCatch(
client$slum_batch(pontos),
# Captura falha parcial
prismadata_batch_error = function(e) {
message(sprintf(
"Falha parcial: %d resultados obtidos, %d chaves falharam",
length(e$partial_results),
length(e$failed_keys)
))
# Exibe quais chaves falharam
message("Chaves com falha: ", paste(e$failed_keys, collapse = ", "))
# Retorna os resultados parciais para nao perder o que ja foi processado
e$partial_results
},
# Outros erros da API
prismadata_error = function(e) {
message("Erro geral da API: ", conditionMessage(e))
NULL
}
)
# Processa os resultados parciais (se houver)
if (!is.null(resultados)) {
message(sprintf("Processando %d resultados parciais...", length(resultados)))
for (chave in names(resultados)) {
distancia <- resultados[[chave]]$prismadata__favela__distancia_m
message(sprintf(" %s: %.1f metros da favela mais proxima", chave, distancia))
}
}
consulta_batch_resiliente <- function(client, pontos, max_tentativas = 3) {
resultados_finais <- list()
pendentes <- pontos
for (tentativa in seq_len(max_tentativas)) {
if (length(pendentes) == 0) break
resultado <- tryCatch(
client$slum_batch(pendentes),
prismadata_batch_error = function(e) {
# Acumula resultados parciais
resultados_finais <<- c(resultados_finais, e$partial_results)
# Filtra apenas os pontos que falharam para retry
chaves_falha <- e$failed_keys
message(sprintf(
"Tentativa %d: %d sucessos, %d falhas. Retentando falhas...",
tentativa,
length(e$partial_results),
length(chaves_falha)
))
pendentes <<- pontos[chaves_falha]
NULL
}
)
if (!is.null(resultado)) {
# Tudo funcionou nesta tentativa
resultados_finais <- c(resultados_finais, resultado)
pendentes <- list()
}
}
if (length(pendentes) > 0) {
warning(sprintf(
"%d pontos nao puderam ser processados apos %d tentativas: %s",
length(pendentes),
max_tentativas,
paste(names(pendentes), collapse = ", ")
))
}
resultados_finais
}
# Uso
todos_resultados <- consulta_batch_resiliente(client, pontos)
Para operacoes de roteamento em lote, a estrutura do partial_results e diferente -- segue o formato com TOTAL, SUCESSOS, FALHAS e RESULTADOS:
itens_rota <- list(
list(points = list(c(-23.55, -46.63), c(-23.56, -46.65))),
list(points = list(c(-22.90, -43.17), c(-22.91, -43.20)))
)
resultado <- tryCatch(
client$route_batch(itens_rota, profile = "car"),
prismadata_batch_error = function(e) {
parcial <- e$partial_results
message(sprintf(
"Rotas: %d total, %d sucessos, %d falhas",
parcial$TOTAL,
parcial$SUCESSOS,
parcial$FALHAS
))
message("Indices com falha: ", paste(e$failed_keys, collapse = ", "))
# Retorna os resultados parciais
parcial
}
)
| Metodo | Descricao |
|---|---|
client$geocode() |
Geocodificacao de endereco |
client$reverse_geocode() |
Geocodificacao reversa |
client$slum() |
Proximidade de favela |
client$prison() |
Proximidade de presidio |
client$border() |
Proximidade de fronteira |
client$infosc() |
Setor censitario (IBGE) |
client$income_static() |
Estimativa de renda estatica |
client$income_pdf() |
Funcao densidade de probabilidade de renda |
client$route() |
Calculo de rota |
client$isochrone() |
Calculo de isocrona |
client$compare_address() |
Comparacao de endereco vs coordenadas |
client$validate_address() |
Validacao de endereco via GPS |
client$cluster_locations() |
Clusterizacao de localizacoes historicas |
client$precatory() |
Consulta de precatorios/RPV |
client$precatory_detail() |
Detalhamento de precatorios/RPV |
client$aggregate() |
Multiplos servicos em uma chamada |
client$slum_batch() |
Favela em lote |
client$prison_batch() |
Presidio em lote |
client$border_batch() |
Fronteira em lote |
client$infosc_batch() |
Setor censitario em lote |
client$aggregate_batch() |
Multiplos servicos em lote |
client$geocode_batch() |
Geocodificacao em lote |
client$reverse_geocode_batch() |
Geocodificacao reversa em lote |
client$geocode_aggregate_batch() |
Geocodificacao + agregacao em lote |
client$route_batch() |
Rotas em lote |
client$isochrone_batch() |
Isocronas em lote |
client$enrich() |
Enriquecimento de data.frame |
client$me() |
Informacoes do usuario autenticado |
step_prismadata() |
Step para recipes/tidymodels |
clean_columns() |
Limpeza de nomes de colunas |
Para mais informacoes, consulte a documentacao da API em https://docs.prismadata.io ou abra uma issue no repositorio GitHub.
Requer Node.js >= 18.
npm install prismadata
O pacote e publicado em CJS + ESM com tipos TypeScript embutidos — funciona em projetos JavaScript ou TypeScript sem dependencias extras.
import { PrismaDataClient } from "prismadata";
const client = new PrismaDataClient({ apiKey: "ak_xxxxxxxxxxxxxxxx" });
// Consultar favela mais proxima
const result = await client.slum(-23.55, -46.63);
console.log(result);
// Geocodificar um endereco
const geo = await client.geocode({ fullAddress: "Av Paulista 1000, Sao Paulo" });
console.log(geo);
Todos os metodos sao assincronos (Promise). O SDK nao expoe variante sincrona —
use await ou .then().
O SDK aceita 3 formas de credencial (em ordem de prioridade):
1. API Key direta:
const client = new PrismaDataClient({ apiKey: "ak_xxxxxxxxxxxxxxxx" });
2. Usuario e senha:
const client = new PrismaDataClient({
username: "user@email.com",
password: "senha",
});
3. Variaveis de ambiente:
export PRISMADATA_APIKEY=ak_xxxxxxxxxxxxxxxx
# ou
export PRISMADATA_USERNAME=user@email.com
export PRISMADATA_PASSWORD=senha
const client = new PrismaDataClient(); // detecta automaticamente
A renovacao do token JWT e automatica — o SDK cuida internamente. A autenticacao e iniciada de forma "eager" no construtor (concluida antes do primeiro request).
const client = new PrismaDataClient({
apiKey: "ak_xxxxxxxxxxxxxxxx",
timeout: 30, // Timeout por request em segundos (default: 30)
cache: true, // Cache em memoria (default: false)
cacheTtl: 86400, // TTL do cache em segundos (default: 86400)
cleanColumns: false, // Remove prefixo prismadata__ das respostas (default: false)
appName: "my-app", // Enviado como header X-App em cada request
});
O helper cleanColumns tambem e exposto como funcao standalone:
import { cleanColumns } from "prismadata";
const cleaned = cleanColumns(result);
// "prismadata__favela__distancia_m" -> "favela_distancia_m"
Para consultas em volume, use os metodos *Batch:
const points = {
p1: [-23.55, -46.63] as [number, number],
p2: [-22.90, -43.17] as [number, number],
p3: [-19.92, -43.94] as [number, number],
};
const slums = await client.slumBatch(points);
const prisons = await client.prisonBatch(points);
const borders = await client.borderBatch(points);
const sectors = await client.infoscBatch(points);
// Renda estatica em lote (percentil e faixa salarial)
const incomeStatic = await client.incomeStaticBatch(points);
// Renda PDF em lote (distribuicao de probabilidade)
const incomePdf = await client.incomePdfBatch(points);
// Renda PDF com parametros demograficos por ponto
const incomePdfDetailed = await client.incomePdfBatchDetailed({
p1: { lat: -23.55, lng: -46.63, gender: "M", age: 50 },
p2: { lat: -22.90, lng: -43.17, gender: "F", age: 30, is_responsible: true },
});
// Multiplos servicos numa unica chamada (agregador)
const aggregated = await client.aggregateBatch(points, {
services: ["slum", "prison", "infosc"],
});
O SDK divide automaticamente lotes grandes em chunks (1024 por chunk em endpoints de localizacao, 16 em endpoints de roteamento) e prossegue com os chunks restantes em caso de falha parcial.
// Geocodificar enderecos em lote
const addresses = {
p1: { endereco_completo: "Av Paulista 1000, Sao Paulo, SP" },
p2: { cep: "30130-165", numero: "100", logradouro: "Rua da Bahia" },
};
const geocoded = await client.geocodeBatch(addresses);
// Geocodificacao reversa em lote
const points = {
p1: [-23.55, -46.63] as [number, number],
p2: [-22.90, -43.17] as [number, number],
};
const reversed = await client.reverseGeocodeBatch(points);
// Geocodificacao + agregador em lote
const enriched = await client.geocodeAggregateBatch(addresses, {
services: ["slum", "infosc"],
});
Todos os metodos *Batch aceitam um callback opcional onProgress:
await client.slumBatch(points, (completed, total) => {
console.log(`${completed}/${total}`);
});
Aglomeracoes comerciais sao poligonais continuas de tecido comercial denso (~11k regioes no Brasil), com atributos como qtd de PDVs, score, porte, vocacao, faixa de renda e trechos de rua ranqueados.
// Aglomeracao + trecho de rua mais proximo de um ponto
const result = await client.commercialCluster(-23.5613, -46.6558);
// Top 3 aglomeracoes proximas (resposta indexada por 1_, 2_, 3_)
const top3 = await client.commercialCluster(-23.5613, -46.6558, {
topN: 3,
radiusKm: 10.0,
});
// Filtrar por vocacao (aceita string ou array) e porte minimo
const filtered = await client.commercialCluster(-23.5613, -46.6558, {
vocation: ["Moda", "Alimentacao"],
minSize: "Grande",
});
// Enriquecimento de carteira de PDVs (ate 1024 pontos por request)
const carteira = {
pdv_1: [-23.5613, -46.6558] as [number, number],
pdv_2: [-22.9068, -43.1729] as [number, number],
};
const batchResult = await client.commercialClusterBatch(carteira);
// batchResult = { pdv_1: { ...campos flat... }, pdv_2: { ... } }
// Drill-down: detalhes de uma aglomeracao + todos os trechos
const detail = await client.commercialClusterDetail("5ebd0eb4f6b4");
// Geometria (opcional, premium): GeoJSON object ou WKT string.
// Requer role `admin` ou `viewer:commercial_cluster` no JWT — fale com vendas.
const geojson = await client.commercialCluster(-23.5613, -46.6558, {
includeGeometry: true,
});
const geom = geojson.prismadata__commercial_cluster__geometria;
// geom e objeto: { type: "Polygon", coordinates: [[[...]]] }
const wkt = await client.commercialCluster(-23.5613, -46.6558, {
includeGeometry: true,
wkt: true,
});
// wkt.prismadata__commercial_cluster__geometria e string: "POLYGON((...))"
// Sem a role: lanca GeometriaNaoAutorizadaError (HTTP 403).
// Batch nao suporta geometria — use single point ou detail.
// Forcar incluir_geometria em batch lanca GeometriaBatchNaoSuportadoError.
// Granularidade fina: trecho de rua mais proximo (raio em metros)
const street = await client.commercialClusterStreet(-23.5613, -46.6558, {
radiusM: 200,
});
// Busca por filtros (sem ponto geografico) — lista paginada
const search = await client.commercialClusterSearch(
{
state: ["SP", "RJ"],
vocation: ["Moda"],
size: ["Grande"],
income_range: ["Premium", "Luxo"],
min_pdv_count: 500,
bbox: { min_lat: -24, min_lng: -47, max_lat: -23, max_lng: -46 },
},
{ limit: 50 },
);
// Ranking top-N por criterio e escopo
const topSp = await client.commercialClusterRanking({
criterio: "score",
escopo: "uf",
uf: "SP",
topN: 20,
});
Para combinar commercial_cluster com outros produtos numa unica chamada,
use o aggregator (caminho preferido para enriquecimento de carteira):
// Por ponto
const byPoint = await client.aggregate(-23.5613, -46.6558, {
services: ["commercial_cluster", "slum", "prison"],
commercial_cluster_top_n: 3,
commercial_cluster_raio_km: 10.0,
});
// Por endereco textual (geocoda + enriquece)
const byAddress = await client.geocodeAggregate({
fullAddress: "Av Paulista 1000, Sao Paulo, SP",
services: ["commercial_cluster", "slum"],
});
// Batch
const batchAgg = await client.aggregateBatch(carteira, {
services: ["commercial_cluster", "border"],
commercial_cluster_top_n: 1,
});
O modo sandbox e detectado automaticamente a partir do claim sandbox no JWT —
nao ha flag explicita no cliente nem header X-Sandbox a passar. Tokens
emitidos como sandbox retornam dados sinteticos em todos os endpoints, sem
consumir quota real. Quando o token e sandbox, o SDK emite um console.warn
no startup avisando o usuario.
Todos os erros estendem PrismaDataError, que carrega statusCode, body e
headers (quando disponiveis).
import {
PrismaDataClient,
AuthenticationError,
BatchError,
GeometriaBatchNaoSuportadoError,
GeometriaNaoAutorizadaError,
PrismaDataError,
QuotaExhaustedError,
RateLimitError,
} from "prismadata";
try {
const client = new PrismaDataClient({ apiKey: "ak_xxxxxxxxxxxxxxxx" });
const result = await client.slum(-23.55, -46.63);
} catch (error) {
if (error instanceof QuotaExhaustedError) {
console.log("Quota mensal esgotada — nao sera feito retry");
} else if (error instanceof RateLimitError) {
console.log("Rate limit excedido apos retries — aguarde e tente novamente");
} else if (error instanceof GeometriaNaoAutorizadaError) {
console.log("Sem a role viewer:commercial_cluster — fale com vendas");
} else if (error instanceof AuthenticationError) {
console.log("Credenciais invalidas");
} else if (error instanceof PrismaDataError) {
console.log(`Erro da API (${error.statusCode}): ${error.message}`);
}
}
Quando um lote grande falha parcialmente, o SDK coleta os resultados dos chunks
que deram certo e lanca BatchError com os dados parciais:
try {
const result = await client.slumBatch(largePointDict);
} catch (error) {
if (error instanceof BatchError) {
// Resultados dos chunks que deram certo
for (const [key, value] of Object.entries(error.partialResults)) {
process(key, value);
}
// Chaves dos chunks que falharam (para retry manual)
console.log(`Falhou: ${error.failedKeys.join(", ")}`);
}
}
O SDK implementa retry automatico com backoff exponencial para erros transientes
(429, 500, 502, 503, 504). Alem disso, respeita os headers Retry-After e
X-RateLimit-Reset do servidor. Quota esgotada (X-Quota-Remaining: 0) nao
e re-tentada — o erro QuotaExhaustedError e lancado imediatamente.
Apos qualquer request bem-sucedido, client.quotaInfo expoe o estado mais
recente da quota (a partir dos headers X-Quota-*) ou null quando o tenant
nao possui politica de quota:
await client.slum(-23.55, -46.63);
console.log(client.quotaInfo);
// { limit: 100000, used: 1234, remaining: 98766, period: "month", reset: 1717200000 }
O servico de autenticacao PrismaData gerencia credenciais, tokens JWT e API Keys para acesso as APIs de dados PrismaData.
Existem duas formas de autenticar nas APIs PrismaData. Recomendamos o uso de API Key por sua simplicidade e menor latencia.
A API Key e a forma mais simples de autenticacao. Basta envia-la no header X-Apikey em qualquer request ao gateway:
curl https://api.prismadata.io/v1/location/prison?lat=-25.5&lng=-54.5 \
-H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
Vantagens da API Key:
Para obter um token JWT diretamente, envie suas credenciais via POST /token:
curl -X POST https://api.prismadata.io/v1/auth/token \
-d "username=seu_usuario&password=sua_senha"
Em seguida, use o token retornado no header Authorization:
curl https://api.prismadata.io/v1/location/prison?lat=-25.5&lng=-54.5 \
-H "Authorization: Bearer eyJ..."
Importante sobre tokens JWT:
exp), tipicamente 15 minutosPOST /token| API Key | Token JWT | |
|---|---|---|
| Obtencao | Fornecida pelo administrador | POST /token com usuario/senha |
| Expiracao | Nao expira | Expira (claim exp, tipicamente 15min) |
| Renovacao | Automatica pelo gateway | Manual pelo cliente |
| Uso | Header X-Apikey |
Header Authorization: Bearer |
| Latencia | Menor (token cacheado no gateway) | Maior (requer chamada ao /token a cada expiracao) |
| Recomendado para | Integracao backend-to-backend, scripts, automacoes | Browsers, apps com login de usuario |
O endpoint /token aceita dois modos de autenticacao via application/x-www-form-urlencoded:
Com API Key (campo api_key):
curl -X POST https://api.prismadata.io/v1/auth/token \
-d "api_key=ak_xxxxxxxxxxxxxxxx"
Com usuario e senha (campos username e password):
curl -X POST https://api.prismadata.io/v1/auth/token \
-d "username=seu_usuario&password=sua_senha"
O token JWT contém os seguintes claims:
| Claim | Tipo | Descricao |
|---|---|---|
sub |
string | Username do usuario |
roles |
string[] | Roles atribuidos ao usuario |
rate_limit |
float | Limite de requisicoes por minuto |
allowed_network |
string | CIDR permitido (vazio = sem restricao) |
sandbox |
bool | Modo sandbox (dados sinteticos) |
tenant_id |
int/null | ID do tenant |
quota_limit |
int/null | Limite global de quota |
quota_limits |
object/null | Limites por endpoint |
quota_expiry |
int/null | Unix timestamp de expiracao da quota |
exp |
int | Unix timestamp de expiracao do token |
Headers do JWT: kid (Key ID), iss ("PrismaDataAuth"), alg (RS256).
Credenciais de acesso sao fornecidas pela equipe PrismaData. Para solicitar acesso, entre em contato pelo portal.
Autentica via usuario/senha ou API Key e retorna um token JWT assinado com RS256. O token e retornado no body e tambem em um cookie httpOnly para uso em browsers.
Login com API Key (recomendado): envie no campo api_key. A API Key nao expira e o gateway gerencia o token automaticamente, sem necessidade de controle de validade pelo cliente.
curl -X POST .../token -d "api_key=ak_xxxxxxxx"
Login com senha: envie username e password como form-urlencoded. O token JWT retornado possui expiracao (claim exp) e o cliente deve controlar sua validade, renovando-o antes da expiracao.
curl -X POST .../token -d "username=user&password=pass"
| username | string (Username) Default: "" Nome de usuario (usado apenas no login com senha). |
| password | string (Password) Default: "" Senha do usuario (usado apenas no login com senha). |
| api_key | string (Api Key) Default: "" API Key para autenticacao (recomendado). Quando informado, os campos username e password sao ignorados. |
curl -X POST "https://api.prismadata.io/v1/auth/token" \ -d "api_key=ak_xxxxxxxxxxxxxxxx"
{- "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InByaXNtYWRhdGEtMSIsImlzcyI6IlByaXNtYURhdGFBdXRoIn0...",
- "token_type": "bearer"
}Retorna os dados do usuario autenticado extraidos do token JWT. O token e obtido do cookie httpOnly ou do header Authorization: Bearer <token>.
curl "https://api.prismadata.io/v1/auth/me" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "username": "usuario_exemplo",
- "roles": [
- "full_reader"
], - "tenant_id": 1,
- "sandbox": false,
- "rate_limit": 60
}API de Identificacao de Pais por IP/Coordenada para Compliance PLD/FT.
Identifica o pais de origem de um acesso a partir de endereco IP ou coordenada geografica, retornando classificacao de risco, status em listas de sancoes internacionais (GAFI, OFAC, UE), paraisos fiscais (RFB, UE), deteccao de VPN/Proxy/TOR/Datacenter/Satelite, ASN (Autonomous System Number) e indice de confianca da geolocalizacao.
Cada resposta inclui assinatura digital Ed25519, funcionando como laudo tecnico verificavel por terceiros (auditores, BACEN, PF).
Identifica o pais a partir de IP ou coordenada.
| input_type required | string (Input Type) Tipo de entrada: 'ip' ou 'coordinate' |
Ip (string) or Ip (null) (Ip) Endereco IP | |
Latitude (number) or Latitude (null) (Latitude) Latitude | |
Longitude (number) or Longitude (null) (Longitude) Longitude | |
| enrich | boolean (Enrich) Default: true Ativa retorno de VPN/proxy/TOR/datacenter |
| check_sanctions | boolean (Check Sanctions) Default: true Verifica listas de sancoes e paraisos fiscais |
curl "https://api.prismadata.io/v1/identity/ipinfo?input_type=valor" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__ipinfo__input_type": "ip",
- "prismadata__ipinfo__input_ip": "185.220.101.42",
- "prismadata__ipinfo__resolved_latitude": 52.52,
- "prismadata__ipinfo__resolved_longitude": 13.405,
- "prismadata__ipinfo__country_code": "DE",
- "prismadata__ipinfo__country_name": "Germany",
- "prismadata__ipinfo__continent": "Europe",
- "prismadata__ipinfo__risk_level": "low",
- "prismadata__ipinfo__is_sanctioned": false,
- "prismadata__ipinfo__gafi_status": "not_listed",
- "prismadata__ipinfo__ofac_status": "not_listed",
- "prismadata__ipinfo__eu_status": "not_listed",
- "prismadata__ipinfo__bacen_alert": false,
- "prismadata__ipinfo__is_tax_haven_rfb": false,
- "prismadata__ipinfo__is_tax_haven_eu": false,
- "prismadata__ipinfo__is_vpn": true,
- "prismadata__ipinfo__is_proxy": false,
- "prismadata__ipinfo__is_tor_exit_node": true,
- "prismadata__ipinfo__is_datacenter": true,
- "prismadata__ipinfo__connection_type": "tor",
- "prismadata__ipinfo__asn": 51167,
- "prismadata__ipinfo__asn_org": "Contabo GmbH",
- "prismadata__ipinfo__geoip_confidence": 0.95,
- "prismadata__ipinfo__country_timezone": "Europe/Berlin",
- "prismadata__ipinfo__country_utc_offset": "+01:00",
- "prismadata__ipinfo__local_time": "2026-03-01T14:32:05+01:00",
- "prismadata__ipinfo__is_business_hours": true,
- "prismadata__ipinfo__query_id": "550e8400-e29b-41d4-a716-446655440000",
- "prismadata__ipinfo__timestamp": "2026-03-01T13:32:05.123Z",
- "prismadata__ipinfo__requester_ip": "203.0.113.42",
- "prismadata__ipinfo__requester_razao_social": "Toro Investimentos S.A.",
- "prismadata__ipinfo__requester_cnpj": "18.631.838/0001-46",
- "prismadata__ipinfo__query_time_ms": 7,
- "prismadata__ipinfo__signature_algorithm": "Ed25519",
- "prismadata__ipinfo__signature_value": "base64_encoded_signature_here",
- "prismadata__ipinfo__signature_key_id": "prismadata-signing-key-2026-01"
}Identifica o pais para um lote de IPs ou coordenadas (max 1024).
| input_type required | string (Input Type) Tipo de entrada: 'ip' ou 'coordinate' |
| enrich | boolean (Enrich) Default: true Ativa retorno de VPN/proxy/TOR/datacenter |
| check_sanctions | boolean (Check Sanctions) Default: true Verifica listas de sancoes e paraisos fiscais |
additional property | object (BatchItem) Item individual do lote. |
{- "property1": {
- "ip": "string",
- "latitude": -90,
- "longitude": -180
}, - "property2": {
- "ip": "string",
- "latitude": -90,
- "longitude": -180
}
}{ }Verifica a assinatura digital de uma resposta da API.
required | object (Signed Response) Resposta completa com assinatura |
{- "signed_response": { }
}{ }Retorna chaves publicas disponiveis para verificacao.
curl "https://api.prismadata.io/v1/identity/ipinfo/signing-keys" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{ }Listagem paginada de consultas com filtros.
Date From (string) or Date From (null) (Date From) Data inicio (ISO 8601) | |
Date To (string) or Date To (null) (Date To) Data fim (ISO 8601) | |
Risk Level (string) or Risk Level (null) (Risk Level) Filtro por nivel de risco | |
Country Code (string) or Country Code (null) (Country Code) Filtro por pais (ISO 3166-1) | |
Is Vpn (boolean) or Is Vpn (null) (Is Vpn) Filtro por VPN detectada | |
Is Sanctioned (boolean) or Is Sanctioned (null) (Is Sanctioned) Filtro por sancao | |
| page | integer (Page) >= 1 Default: 1 Pagina |
| page_size | integer (Page Size) [ 1 .. 200 ] Default: 50 Itens por pagina |
curl "https://api.prismadata.io/v1/identity/ipinfo/reports" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{ }Retorna laudo PDF auditavel de uma consulta.
| query_id required | string (Query Id) |
curl "https://api.prismadata.io/v1/identity/ipinfo/report/{query_id}" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{ }Download em lote de laudos PDF em formato ZIP (max 100).
Date From (string) or Date From (null) (Date From) Data inicio (ISO 8601) | |
Date To (string) or Date To (null) (Date To) Data fim (ISO 8601) | |
Risk Level (string) or Risk Level (null) (Risk Level) Filtro por nivel de risco | |
Country Code (string) or Country Code (null) (Country Code) Filtro por pais (ISO 3166-1) | |
Is Vpn (boolean) or Is Vpn (null) (Is Vpn) Filtro por VPN detectada | |
Is Sanctioned (boolean) or Is Sanctioned (null) (Is Sanctioned) Filtro por sancao |
curl "https://api.prismadata.io/v1/identity/ipinfo/reports/download" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{ }API de consulta de dados cadastrais e geocodificados de pessoas jurídicas brasileiras (CNPJ). A fonte primária é a base pública da Receita Federal, enriquecida com dados de geocodificação e sumarizações prontas para análise.
Todos os ~60 milhões de CNPJs publicados pela Receita Federal — ativos, suspensos, inaptos, baixados e nulos — atualizados na mesma cadência das publicações oficiais. Cada resposta traz data_publicacao_rfb e data_processamento para você auditar de qual versão dos dados o resultado veio.
Cada CNPJ retorna:
***.005.547-**), em conformidade com a LGPD — nunca é retornado em formato completo.MUITO_ALTA, ALTA, MEDIA, BAIXA, MUITO_BAIXA, FALHA). Quando o endereço da RFB não pôde ser geocodificado, esses campos vêm null — o CNPJ continua consultável, apenas sem coordenadas.Cada endpoint tem duas versões que retornam os mesmos dados de origem, mudando só a forma:
| Endpoint | Formato | Quando usar |
|---|---|---|
/cnpj/{cnpj}, /cnpj/batch, /cnpj/metadata |
Consulta padrão — sócios e CNAEs secundários vêm como agregações escalares (total_socios, total_socios_pf, total_socios_pj, total_socios_estrangeiro, cnae_secundario_1..3, total_cnaes_secundarios). Cada resultado tem exatamente 49 campos, todos escalares. |
Análise em massa (DataFrame, planilha, BI). Formato ideal para pipelines de ciência de dados. |
/cnpj/raw/{cnpj}, /cnpj/raw/batch, /cnpj/raw/metadata |
Consulta detalhada — sócios vêm como lista de objetos com todos os campos originais, e CNAEs secundários como lista de códigos. | Aplicações que precisam do detalhe de cada sócio ou de todos os CNAEs secundários (compliance, KYC, due diligence). |
Os endpoints /cnpj/{cnpj}/enriched (individual) e /cnpj/batch/enriched (em lote) combinam a consulta do CNPJ com serviços de localização da PrismaData em uma única chamada. Ative por parâmetros os enriquecimentos que você quer receber:
slum — proximidade e classificação de favelasprison — proximidade e detalhes do presídio mais próximoborder — situação em relação a fronteiras internacionaispersonal_income_static — renda média no pontopersonal_income_pdf — distribuição de renda no pontocommercial_cluster — aglomerações comerciais próximasinfosc — informações do setor censitáriotipologia — tipologia CNEFECada enriquecimento habilitado conta como uma consulta adicional para efeito de cota. Enriquecimentos solicitados para CNPJs sem coordenadas geocodificadas (latitude nula) não são executados e não contam.
Os endpoints em lote (/cnpj/batch e variantes) aceitam um body com a lista de CNPJs ({"cnpjs":[...]}) e retornam um objeto indexado pelo CNPJ. Valores null sinalizam CNPJs que não existem na base ou têm formato inválido — o restante do lote é processado normalmente.
Limites por chamada:
/cnpj/batch (consulta padrão): 1024 CNPJs/cnpj/raw/batch e /cnpj/batch/enriched (consultas com listas ou enriquecimentos): 256 CNPJsA API já suporta o novo formato alfanumérico de CNPJ que a Receita Federal passará a emitir (NT COCAD/SUARA 49/2024). Nos parâmetros de URL e nos bodies, você pode usar CNPJ com ou sem máscara, contendo dígitos e letras nas primeiras 12 posições e dígitos verificadores nas duas últimas.
Todos os campos retornam com o prefixo prismadata__pessoa_juridica__, seguindo o padrão de nomes da PrismaData API. Os SDKs oficiais oferecem a opção de remover esse prefixo automaticamente.
Nos endpoints enriquecidos, os campos dos enriquecimentos habilitados ganham prefixos próprios (por exemplo, prismadata__slum__ para favelas, prismadata__border__ para fronteiras).
Metadata cru com cobertura_geo aninhada.
curl "https://api.prismadata.io/v1/cnpj/raw/metadata" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__pessoa_juridica__versao_dados": "20260301",
- "prismadata__pessoa_juridica__data_publicacao_rfb": "2026-03-01",
- "prismadata__pessoa_juridica__data_processamento": "2026-06-24T12:51:48Z",
- "prismadata__pessoa_juridica__total_cnpjs_carregados": 800,
- "prismadata__pessoa_juridica__cobertura_geo": {
- "MUITO_ALTA": 371,
- "ALTA": 116,
- "MEDIA": 254,
- "BAIXA": 51,
- "MUITO_BAIXA": 8,
- "FALHA": 0,
- "SEM_GEO": 0
}
}Lote raw. OUTPUT eh dict {cnpj: CnpjF1_completo ou null}.
| cnpjs required | Array of strings (Cnpjs) non-empty |
{- "cnpjs": [
- "string"
]
}{- "82554437000131": {
- "prismadata__pessoa_juridica__bairro": "MERCES",
- "prismadata__pessoa_juridica__capital_social": "500000.00",
- "prismadata__pessoa_juridica__cep": "80810000",
- "prismadata__pessoa_juridica__cnae_principal_codigo": "6141800",
- "prismadata__pessoa_juridica__cnae_principal_descricao": "",
- "prismadata__pessoa_juridica__cnaes_secundarios": [
- "6110803",
- "6190699",
- "6190601",
- "4752100",
- "6204000"
], - "prismadata__pessoa_juridica__cnpj": "82554437000131",
- "prismadata__pessoa_juridica__cnpj_alfanumerico": false,
- "prismadata__pessoa_juridica__cnpj_basico": "82554437",
- "prismadata__pessoa_juridica__cnpj_dv": "31",
- "prismadata__pessoa_juridica__cnpj_ordem": "0001",
- "prismadata__pessoa_juridica__data_abertura": "1991-06-18",
- "prismadata__pessoa_juridica__data_processamento": "2026-06-24T12:51:48Z",
- "prismadata__pessoa_juridica__data_publicacao_rfb": "2026-03-01",
- "prismadata__pessoa_juridica__data_situacao_cadastral": "2005-11-03",
- "prismadata__pessoa_juridica__divergencia_endereco_rfb_geocoder": false,
- "prismadata__pessoa_juridica__endereco_existe": true,
- "prismadata__pessoa_juridica__endereco_normalizado": "AVENIDA MANOEL RIBAS, 2447 - MERCES, CURITIBA - PR, 80810-002",
- "prismadata__pessoa_juridica__id_loc": 6604984264422369000,
- "prismadata__pessoa_juridica__id_logradouro": 8339738480598698000,
- "prismadata__pessoa_juridica__latitude": "-25.415493",
- "prismadata__pessoa_juridica__logradouro": "MANOEL RIBAS",
- "prismadata__pessoa_juridica__longitude": "-49.298817",
- "prismadata__pessoa_juridica__matriz_filial": "MATRIZ",
- "prismadata__pessoa_juridica__motivo_situacao_cadastral": "SEM MOTIVO",
- "prismadata__pessoa_juridica__municipio_codigo": "0007535",
- "prismadata__pessoa_juridica__municipio_nome": "CURITIBA",
- "prismadata__pessoa_juridica__natureza_juridica_codigo": "2062",
- "prismadata__pessoa_juridica__natureza_juridica_descricao": "Sociedade Empresária Limitada",
- "prismadata__pessoa_juridica__nome_fantasia": "BARIGUI TELECOM",
- "prismadata__pessoa_juridica__numero": "2447",
- "prismadata__pessoa_juridica__porte": "DEMAIS",
- "prismadata__pessoa_juridica__qualidade_geocodificacao_classificacao": "ALTA",
- "prismadata__pessoa_juridica__qualidade_geocodificacao_score": 100,
- "prismadata__pessoa_juridica__razao_social": "TV BARIGUI LTDA",
- "prismadata__pessoa_juridica__situacao_cadastral": "ATIVA",
- "prismadata__pessoa_juridica__socios": [
- {
- "prismadata__pessoa_juridica__cnpj_cpf_socio": "***.005.547-**",
- "prismadata__pessoa_juridica__data_entrada": "2002-11-28",
- "prismadata__pessoa_juridica__faixa_etaria": "51-60",
- "prismadata__pessoa_juridica__identificador_socio": "PF",
- "prismadata__pessoa_juridica__nome_ou_razao_social": "ROBES SOLEI ROCHA",
- "prismadata__pessoa_juridica__qualificacao_codigo": "49",
- "prismadata__pessoa_juridica__qualificacao_descricao": "Sócio-Administrador"
}
], - "prismadata__pessoa_juridica__uf": "PR"
}
}Lookup raw — CnpjF1 completo com socios + cnaes_secundarios.
| cnpj required | string (Cnpj) CNPJ com ou sem mascara (alfanumerico aceito) |
curl "https://api.prismadata.io/v1/cnpj/raw/{cnpj}" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__pessoa_juridica__bairro": "MERCES",
- "prismadata__pessoa_juridica__capital_social": "500000.00",
- "prismadata__pessoa_juridica__cep": "80810000",
- "prismadata__pessoa_juridica__cnae_principal_codigo": "6141800",
- "prismadata__pessoa_juridica__cnae_principal_descricao": "",
- "prismadata__pessoa_juridica__cnaes_secundarios": [
- "6110803",
- "6190699",
- "6190601",
- "4752100",
- "6204000"
], - "prismadata__pessoa_juridica__cnpj": "82554437000131",
- "prismadata__pessoa_juridica__cnpj_alfanumerico": false,
- "prismadata__pessoa_juridica__cnpj_basico": "82554437",
- "prismadata__pessoa_juridica__cnpj_dv": "31",
- "prismadata__pessoa_juridica__cnpj_ordem": "0001",
- "prismadata__pessoa_juridica__data_abertura": "1991-06-18",
- "prismadata__pessoa_juridica__data_processamento": "2026-06-24T12:51:48Z",
- "prismadata__pessoa_juridica__data_publicacao_rfb": "2026-03-01",
- "prismadata__pessoa_juridica__data_situacao_cadastral": "2005-11-03",
- "prismadata__pessoa_juridica__divergencia_endereco_rfb_geocoder": false,
- "prismadata__pessoa_juridica__endereco_existe": true,
- "prismadata__pessoa_juridica__endereco_normalizado": "AVENIDA MANOEL RIBAS, 2447 - MERCES, CURITIBA - PR, 80810-002",
- "prismadata__pessoa_juridica__id_loc": 6604984264422369000,
- "prismadata__pessoa_juridica__id_logradouro": 8339738480598698000,
- "prismadata__pessoa_juridica__latitude": "-25.415493",
- "prismadata__pessoa_juridica__logradouro": "MANOEL RIBAS",
- "prismadata__pessoa_juridica__longitude": "-49.298817",
- "prismadata__pessoa_juridica__matriz_filial": "MATRIZ",
- "prismadata__pessoa_juridica__motivo_situacao_cadastral": "SEM MOTIVO",
- "prismadata__pessoa_juridica__municipio_codigo": "0007535",
- "prismadata__pessoa_juridica__municipio_nome": "CURITIBA",
- "prismadata__pessoa_juridica__natureza_juridica_codigo": "2062",
- "prismadata__pessoa_juridica__natureza_juridica_descricao": "Sociedade Empresária Limitada",
- "prismadata__pessoa_juridica__nome_fantasia": "BARIGUI TELECOM",
- "prismadata__pessoa_juridica__numero": "2447",
- "prismadata__pessoa_juridica__porte": "DEMAIS",
- "prismadata__pessoa_juridica__qualidade_geocodificacao_classificacao": "ALTA",
- "prismadata__pessoa_juridica__qualidade_geocodificacao_score": 100,
- "prismadata__pessoa_juridica__razao_social": "TV BARIGUI LTDA",
- "prismadata__pessoa_juridica__situacao_cadastral": "ATIVA",
- "prismadata__pessoa_juridica__socios": [
- {
- "prismadata__pessoa_juridica__cnpj_cpf_socio": "***.005.547-**",
- "prismadata__pessoa_juridica__data_entrada": "2002-11-28",
- "prismadata__pessoa_juridica__faixa_etaria": "51-60",
- "prismadata__pessoa_juridica__identificador_socio": "PF",
- "prismadata__pessoa_juridica__nome_ou_razao_social": "ROBES SOLEI ROCHA",
- "prismadata__pessoa_juridica__qualificacao_codigo": "49",
- "prismadata__pessoa_juridica__qualificacao_descricao": "Sócio-Administrador"
}
], - "prismadata__pessoa_juridica__uf": "PR"
}Metadata flat (cobertura_geo achatada por classe).
curl "https://api.prismadata.io/v1/cnpj/metadata" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__pessoa_juridica__versao_dados": "20260301",
- "prismadata__pessoa_juridica__data_publicacao_rfb": "2026-03-01",
- "prismadata__pessoa_juridica__data_processamento": "2026-06-24T12:51:48Z",
- "prismadata__pessoa_juridica__total_cnpjs_carregados": 800,
- "prismadata__pessoa_juridica__cobertura_geo_muito_alta": 371,
- "prismadata__pessoa_juridica__cobertura_geo_alta": 116,
- "prismadata__pessoa_juridica__cobertura_geo_media": 254,
- "prismadata__pessoa_juridica__cobertura_geo_baixa": 51,
- "prismadata__pessoa_juridica__cobertura_geo_muito_baixa": 8,
- "prismadata__pessoa_juridica__cobertura_geo_falha": 0,
- "prismadata__pessoa_juridica__cobertura_geo_sem_geo": 0
}Lote flat. OUTPUT eh dict {cnpj: CnpjF1Flat ou null}.
| cnpjs required | Array of strings (Cnpjs) non-empty |
{- "cnpjs": [
- "string"
]
}{- "82554437000131": {
- "prismadata__pessoa_juridica__bairro": "MERCES",
- "prismadata__pessoa_juridica__capital_social": "500000.00",
- "prismadata__pessoa_juridica__cep": "80810000",
- "prismadata__pessoa_juridica__cnae_principal_codigo": "6141800",
- "prismadata__pessoa_juridica__cnae_principal_descricao": "",
- "prismadata__pessoa_juridica__cnae_secundario_1": "6110803",
- "prismadata__pessoa_juridica__cnae_secundario_2": "6190699",
- "prismadata__pessoa_juridica__cnae_secundario_3": "6190601",
- "prismadata__pessoa_juridica__cnpj": "82554437000131",
- "prismadata__pessoa_juridica__cnpj_alfanumerico": false,
- "prismadata__pessoa_juridica__cnpj_basico": "82554437",
- "prismadata__pessoa_juridica__cnpj_dv": "31",
- "prismadata__pessoa_juridica__cnpj_ordem": "0001",
- "prismadata__pessoa_juridica__data_abertura": "1991-06-18",
- "prismadata__pessoa_juridica__data_processamento": "2026-06-24T12:51:48Z",
- "prismadata__pessoa_juridica__data_publicacao_rfb": "2026-03-01",
- "prismadata__pessoa_juridica__data_situacao_cadastral": "2005-11-03",
- "prismadata__pessoa_juridica__divergencia_endereco_rfb_geocoder": false,
- "prismadata__pessoa_juridica__endereco_existe": true,
- "prismadata__pessoa_juridica__endereco_normalizado": "AVENIDA MANOEL RIBAS, 2447 - MERCES, CURITIBA - PR, 80810-002",
- "prismadata__pessoa_juridica__id_loc": 6604984264422369000,
- "prismadata__pessoa_juridica__id_logradouro": 8339738480598698000,
- "prismadata__pessoa_juridica__latitude": "-25.415493",
- "prismadata__pessoa_juridica__logradouro": "MANOEL RIBAS",
- "prismadata__pessoa_juridica__longitude": "-49.298817",
- "prismadata__pessoa_juridica__matriz_filial": "MATRIZ",
- "prismadata__pessoa_juridica__motivo_situacao_cadastral": "SEM MOTIVO",
- "prismadata__pessoa_juridica__municipio_codigo": "0007535",
- "prismadata__pessoa_juridica__municipio_nome": "CURITIBA",
- "prismadata__pessoa_juridica__natureza_juridica_codigo": "2062",
- "prismadata__pessoa_juridica__natureza_juridica_descricao": "Sociedade Empresária Limitada",
- "prismadata__pessoa_juridica__nome_fantasia": "BARIGUI TELECOM",
- "prismadata__pessoa_juridica__numero": "2447",
- "prismadata__pessoa_juridica__porte": "DEMAIS",
- "prismadata__pessoa_juridica__qualidade_geocodificacao_classificacao": "ALTA",
- "prismadata__pessoa_juridica__qualidade_geocodificacao_score": 100,
- "prismadata__pessoa_juridica__razao_social": "TV BARIGUI LTDA",
- "prismadata__pessoa_juridica__situacao_cadastral": "ATIVA",
- "prismadata__pessoa_juridica__total_cnaes_secundarios": 5,
- "prismadata__pessoa_juridica__total_socios": 1,
- "prismadata__pessoa_juridica__total_socios_estrangeiro": 0,
- "prismadata__pessoa_juridica__total_socios_pf": 1,
- "prismadata__pessoa_juridica__total_socios_pj": 0,
- "prismadata__pessoa_juridica__uf": "PR"
}
}Lookup flat — sem socios nem cnaes_secundarios; agregacoes no lugar.
| cnpj required | string (Cnpj) CNPJ com ou sem mascara (alfanumerico aceito) |
curl "https://api.prismadata.io/v1/cnpj/{cnpj}" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__pessoa_juridica__bairro": "MERCES",
- "prismadata__pessoa_juridica__capital_social": "500000.00",
- "prismadata__pessoa_juridica__cep": "80810000",
- "prismadata__pessoa_juridica__cnae_principal_codigo": "6141800",
- "prismadata__pessoa_juridica__cnae_principal_descricao": "",
- "prismadata__pessoa_juridica__cnae_secundario_1": "6110803",
- "prismadata__pessoa_juridica__cnae_secundario_2": "6190699",
- "prismadata__pessoa_juridica__cnae_secundario_3": "6190601",
- "prismadata__pessoa_juridica__cnpj": "82554437000131",
- "prismadata__pessoa_juridica__cnpj_alfanumerico": false,
- "prismadata__pessoa_juridica__cnpj_basico": "82554437",
- "prismadata__pessoa_juridica__cnpj_dv": "31",
- "prismadata__pessoa_juridica__cnpj_ordem": "0001",
- "prismadata__pessoa_juridica__data_abertura": "1991-06-18",
- "prismadata__pessoa_juridica__data_processamento": "2026-06-24T12:51:48Z",
- "prismadata__pessoa_juridica__data_publicacao_rfb": "2026-03-01",
- "prismadata__pessoa_juridica__data_situacao_cadastral": "2005-11-03",
- "prismadata__pessoa_juridica__divergencia_endereco_rfb_geocoder": false,
- "prismadata__pessoa_juridica__endereco_existe": true,
- "prismadata__pessoa_juridica__endereco_normalizado": "AVENIDA MANOEL RIBAS, 2447 - MERCES, CURITIBA - PR, 80810-002",
- "prismadata__pessoa_juridica__id_loc": 6604984264422369000,
- "prismadata__pessoa_juridica__id_logradouro": 8339738480598698000,
- "prismadata__pessoa_juridica__latitude": "-25.415493",
- "prismadata__pessoa_juridica__logradouro": "MANOEL RIBAS",
- "prismadata__pessoa_juridica__longitude": "-49.298817",
- "prismadata__pessoa_juridica__matriz_filial": "MATRIZ",
- "prismadata__pessoa_juridica__motivo_situacao_cadastral": "SEM MOTIVO",
- "prismadata__pessoa_juridica__municipio_codigo": "0007535",
- "prismadata__pessoa_juridica__municipio_nome": "CURITIBA",
- "prismadata__pessoa_juridica__natureza_juridica_codigo": "2062",
- "prismadata__pessoa_juridica__natureza_juridica_descricao": "Sociedade Empresária Limitada",
- "prismadata__pessoa_juridica__nome_fantasia": "BARIGUI TELECOM",
- "prismadata__pessoa_juridica__numero": "2447",
- "prismadata__pessoa_juridica__porte": "DEMAIS",
- "prismadata__pessoa_juridica__qualidade_geocodificacao_classificacao": "ALTA",
- "prismadata__pessoa_juridica__qualidade_geocodificacao_score": 100,
- "prismadata__pessoa_juridica__razao_social": "TV BARIGUI LTDA",
- "prismadata__pessoa_juridica__situacao_cadastral": "ATIVA",
- "prismadata__pessoa_juridica__total_cnaes_secundarios": 5,
- "prismadata__pessoa_juridica__total_socios": 1,
- "prismadata__pessoa_juridica__total_socios_estrangeiro": 0,
- "prismadata__pessoa_juridica__total_socios_pf": 1,
- "prismadata__pessoa_juridica__total_socios_pj": 0,
- "prismadata__pessoa_juridica__uf": "PR"
}Consulta um CNPJ e, na mesma chamada, agrega dados de servicos de localizacao da PrismaData (favelas, presidios, renda, etc.). Habilite os enriquecimentos desejados por parametro de query.
Se o CNPJ nao tem coordenadas geocodificadas (por exemplo, quando o endereco cadastrado na Receita Federal nao pode ser geocodificado), os enriquecimentos solicitados nao sao executados — o resultado contem apenas os campos de pessoa_juridica.
Cota: cada enriquecimento habilitado conta como uma consulta adicional. Enriquecimentos pulados por falta de coordenadas nao contam.
| cnpj required | string CNPJ de 14 caracteres, com ou sem mascara. Aceita CNPJ alfanumerico. |
| slum | boolean Default: false Proximidade e classificacao de favelas. |
| prison | boolean Default: false Proximidade e detalhes do presidio mais proximo. |
| border | boolean Default: false Situacao em relacao a fronteiras internacionais. |
| personal_income_static | boolean Default: false Renda media no ponto. |
| personal_income_pdf | boolean Default: false Distribuicao de renda no ponto. |
| commercial_cluster | boolean Default: false Aglomeracoes comerciais proximas. |
| infosc | boolean Default: false Informacoes do setor censitario. |
| tipologia | boolean Default: false Tipologia CNEFE. |
| sandbox | boolean Default: false Se |
curl "https://api.prismadata.io/v1/cnpj/{cnpj}/enriched" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__pessoa_juridica__cnpj": "string",
- "prismadata__pessoa_juridica__razao_social": "string",
- "prismadata__pessoa_juridica__latitude": null,
- "prismadata__pessoa_juridica__longitude": null,
- "prismadata__pessoa_juridica__qualidade_geocodificacao_classificacao": null
}Consulta enriquecida em lote. Envie a lista de CNPJs e as flags de enriquecimento no body; receba um dicionario indexado pelo CNPJ.
Limite: 256 CNPJs por chamada. CNPJs invalidos ou nao encontrados vem como null no dicionario.
Cota: cada CNPJ conta como uma consulta base, mais uma consulta adicional por enriquecimento habilitado. Enriquecimentos pulados por falta de coordenadas nao contam.
| cnpjs required | Array of strings <= 256 items Lista de CNPJs a consultar. |
object Enriquecimentos a habilitar para todos os CNPJs do lote. |
{- "cnpjs": [
- "string"
], - "flags": {
- "slum": false,
- "prison": false,
- "border": false,
- "personal_income_static": false,
- "personal_income_pdf": false,
- "commercial_cluster": false,
- "infosc": false,
- "tipologia": false
}
}{- "property1": {
- "prismadata__pessoa_juridica__cnpj": "string",
- "prismadata__pessoa_juridica__razao_social": "string",
- "prismadata__pessoa_juridica__latitude": null,
- "prismadata__pessoa_juridica__longitude": null,
- "prismadata__pessoa_juridica__qualidade_geocodificacao_classificacao": null
}, - "property2": {
- "prismadata__pessoa_juridica__cnpj": "string",
- "prismadata__pessoa_juridica__razao_social": "string",
- "prismadata__pessoa_juridica__latitude": null,
- "prismadata__pessoa_juridica__longitude": null,
- "prismadata__pessoa_juridica__qualidade_geocodificacao_classificacao": null
}
}O dado de fronteiras indica se um ponto está localizado em uma faixa de fronteira e traz algumas informações desta fronteira, como proximidade da fronteira, qual é o país mais próximo e se a mancha urbana do município que o ponto se encontra está próximo da faixa de fronteira.
A faixa de fronteira, segundo o IBGE, é uma faixa de até 150 km de largura ao longo das fronteiras terrestres do Brasil, considerada importante para a defesa nacional. Essa área abrange 16,7% do território brasileiro.
Maiores informações podem ser encontradas na documentação de produto. Testes manuais com o fim de se compreender melhor o dado podem ser feitos aqui.
Busca as informações de fronteiras em lote. A cobrança desta api é feita em função do número de coordenadas contidas no lote.
| property name* additional property | Array of numbers (Coordinates) = 2 items Encapsula as coordenadas geográficas |
{- "point1": [
- -23.5505,
- -46.6333
], - "point2": [
- 40.7128,
- -74.006
]
}{- "1": {
- "prismadata__border__area_municipio_integrada_faixa_de_fronteira_km2": 609.19,
- "prismadata__border__area_total_municipio_km2": 609.19,
- "prismadata__border__distancia_geodesica_pais_mais_proximo_pt_km": 1.112,
- "prismadata__border__distancia_geodesica_pais_mais_proximo_sede_municipio_km": 1.014,
- "prismadata__border__distancia_geodesica_ponto_borda_faixa_de_fronteira_km": 0.757,
- "prismadata__border__municipio_possui_cidade_gemea": true,
- "prismadata__border__nome_municipio_de_fronteira": "Foz do Iguaçu",
- "prismadata__border__pais_mais_proximo": "PARAGUAI",
- "prismadata__border__pais_mais_proximo_pt": "PARAGUAI",
- "prismadata__border__ponto_contido_na_faixa_de_fronteira": true,
- "prismadata__border__porcentagem_area_municipio_faixa_de_fronteira": 100,
- "prismadata__border__sede_municipio_dentro_da_faixa_de_fronteira": true
}, - "2": {
- "prismadata__border__area_municipio_integrada_faixa_de_fronteira_km2": 5011.42,
- "prismadata__border__area_total_municipio_km2": 5011.42,
- "prismadata__border__distancia_geodesica_pais_mais_proximo_pt_km": 3.245,
- "prismadata__border__distancia_geodesica_pais_mais_proximo_sede_municipio_km": 2.871,
- "prismadata__border__distancia_geodesica_ponto_borda_faixa_de_fronteira_km": 12.34,
- "prismadata__border__municipio_possui_cidade_gemea": true,
- "prismadata__border__nome_municipio_de_fronteira": "Guaíra",
- "prismadata__border__pais_mais_proximo": "PARAGUAI",
- "prismadata__border__pais_mais_proximo_pt": "PARAGUAI",
- "prismadata__border__ponto_contido_na_faixa_de_fronteira": true,
- "prismadata__border__porcentagem_area_municipio_faixa_de_fronteira": 100,
- "prismadata__border__sede_municipio_dentro_da_faixa_de_fronteira": true
}
}Endpoint para consultar a proximidade do ponto às fronteiras brasileiras.
| lat required | number (Lat) ( -90 .. 90 ) Example: lat=-25.52568655357868 Latitude do ponto de consulta. |
| lng required | number (Lng) ( -180 .. 180 ) Example: lng=-54.59273323017718 Longitude do ponto de consulta. |
curl "https://api.prismadata.io/v1/location/border?lat=-25.52568655357868&lng=-54.59273323017718" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__border__area_municipio_integrada_faixa_de_fronteira_km2": 609.19,
- "prismadata__border__area_total_municipio_km2": 609.19,
- "prismadata__border__distancia_geodesica_pais_mais_proximo_pt_km": 1.112,
- "prismadata__border__distancia_geodesica_pais_mais_proximo_sede_municipio_km": 1.014,
- "prismadata__border__distancia_geodesica_ponto_borda_faixa_de_fronteira_km": 0.757,
- "prismadata__border__municipio_possui_cidade_gemea": true,
- "prismadata__border__nome_municipio_de_fronteira": "Foz do Iguaçu",
- "prismadata__border__pais_mais_proximo": "PARAGUAI",
- "prismadata__border__pais_mais_proximo_pt": "PARAGUAI",
- "prismadata__border__ponto_contido_na_faixa_de_fronteira": true,
- "prismadata__border__porcentagem_area_municipio_faixa_de_fronteira": 100,
- "prismadata__border__sede_municipio_dentro_da_faixa_de_fronteira": true
}Existem 3 entidades que compõem o dado de favelas: Favelas, complexos e ilhas.
As favelas propriamente ditas que são regiões que são classificadas desta forma pelo IBGE em função das características construtivas do domicílios contidos nesta região. Note que favelas, em conjunto, quando se encontram próximas, podem formar complexos de favelas.
Além disso, é possível a existência de regiões dentro de favelas ou complexos nas quais os aspectos construtivos dos domicílios não se enquadram dentro do conceito do IBGE para que um domicílio seja considerado de favela, contudo são regiões que estão cercadas por regiões de favela. Neste caso, denominou-se esta região de ilha, já que ela se encontra rodeada por favela apesar dela própria não ser uma região de favela. Frequentemente as ilhas, são regiões que contêm domicilios de conjuntos habitacionais.
Caso o ponto se encontre distante mais de 5000 metros de uma entidade valores vazios são retornados.
Maiores informações podem ser encontradas na documentação de produto. Testes manuais com o fim de se compreender melhor o dado podem ser feitos aqui.
Busca as informações de favelas em lote. A cobrança desta api é feita em função do número de coordenadas contidas no lote.
| property name* additional property | Array of numbers (Coordinates) = 2 items Encapsula as coordenadas geográficas |
{- "point1": [
- -23.5505,
- -46.6333
], - "point2": [
- 40.7128,
- -74.006
]
}{- "prismadata__slum__complexo_area_m2": 1755169.882444958,
- "prismadata__slum__complexo_distancia_centroid_m": 847.28,
- "prismadata__slum__complexo_distancia_m": 132.96,
- "prismadata__slum__complexo_dompp_total": 13901,
- "prismadata__slum__complexo_hash_id": 6146791748692800000,
- "prismadata__slum__complexo_municipio": "Belo Horizonte",
- "prismadata__slum__complexo_perimetro_m": 10054.86267269001,
- "prismadata__slum__complexo_total_favelas": 9,
- "prismadata__slum__complexo_uf": "Minas Gerais",
- "prismadata__slum__favela_area_m2": 114306.97,
- "prismadata__slum__favela_distancia_centroid_m": 280.37,
- "prismadata__slum__favela_distancia_m": 132.96,
- "prismadata__slum__favela_dompp_total": 1394,
- "prismadata__slum__favela_hash_id": 6476692552498676000,
- "prismadata__slum__favela_municipio": "Belo Horizonte",
- "prismadata__slum__favela_perimetro_m": 1992.69,
- "prismadata__slum__favela_uf": "Minas Gerais",
- "prismadata__slum__ilha_area_m2": 64746.69,
- "prismadata__slum__ilha_distancia_centroid_m": 1527.42,
- "prismadata__slum__ilha_distancia_m": 1369.38,
- "prismadata__slum__ilha_hash_id": -3871855200304948700,
- "prismadata__slum__ilha_perimetro_m": 1772.35,
- "prismadata__slum__ilha_tipo_geom_contenedora": "COMPLEXO"
}Endpoint para consultar a favela mais próxima a determinada coordenada geográfica.
| lat required | number (Lat) ( -90 .. 90 ) Example: lat=-19.933284645466298 Latitude do ponto de origem. |
| lng required | number (Lng) ( -180 .. 180 ) Example: lng=-43.9191946695413 Longitude do ponto de origem. |
curl "https://api.prismadata.io/v1/location/slum?lat=-19.933284645466298&lng=-43.9191946695413" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__slum__complexo_area_m2": 1755169.882444958,
- "prismadata__slum__complexo_distancia_centroid_m": 847.28,
- "prismadata__slum__complexo_distancia_m": 132.96,
- "prismadata__slum__complexo_dompp_total": 13901,
- "prismadata__slum__complexo_hash_id": 6146791748692800000,
- "prismadata__slum__complexo_municipio": "Belo Horizonte",
- "prismadata__slum__complexo_perimetro_m": 10054.86267269001,
- "prismadata__slum__complexo_total_favelas": 9,
- "prismadata__slum__complexo_uf": "Minas Gerais",
- "prismadata__slum__favela_area_m2": 114306.97,
- "prismadata__slum__favela_distancia_centroid_m": 280.37,
- "prismadata__slum__favela_distancia_m": 132.96,
- "prismadata__slum__favela_dompp_total": 1394,
- "prismadata__slum__favela_hash_id": 6476692552498676000,
- "prismadata__slum__favela_municipio": "Belo Horizonte",
- "prismadata__slum__favela_perimetro_m": 1992.69,
- "prismadata__slum__favela_uf": "Minas Gerais",
- "prismadata__slum__ilha_area_m2": 64746.69,
- "prismadata__slum__ilha_distancia_centroid_m": 1527.42,
- "prismadata__slum__ilha_distancia_m": 1369.38,
- "prismadata__slum__ilha_hash_id": -3871855200304948700,
- "prismadata__slum__ilha_perimetro_m": 1772.35,
- "prismadata__slum__ilha_tipo_geom_contenedora": "COMPLEXO"
}API de geocodificação de endereços brasileiros. Converte endereços em coordenadas GPS (geocodificação direta) e coordenadas em endereços (geocodificação reversa).
Cada resposta traz:
MUITO_ALTA, ALTA, MEDIA, BAIXA, MUITO_BAIXA, NAO_GEOCODIFICADO) — indicam o quão confiável é a resposta. Use como filtro antes de consumir o resultado.Quando o endereço não pode ser resolvido, os campos vêm vazios ou null — o endpoint continua respondendo 200 OK. Cliente decide o que fazer.
| Endpoint | Método | Input | Limite |
|---|---|---|---|
/location/geocoder |
GET | Endereço estruturado (cep, numero, logradouro, municipio, estado, etc) ou string única (endereco_completo) |
— |
/location/reverse_geocoder |
GET | Coordenada lat, lng |
— |
/location/geocoder/batch |
POST | Dict de endereços indexados por chaves do cliente | 512 itens |
/location/reverse_geocoder/batch |
POST | Dict de coordenadas indexadas por chaves do cliente | 1024 itens |
Nos endpoints batch, as chaves do dict de entrada são preservadas no OUTPUT para facilitar a correlação client-side. Itens com erro vêm como null no respectivo slot.
Todos os campos usam o prefixo prismadata__geocoder__ (direto) ou prismadata__reverse_geocoder__ (reverso), padrão dos produtos da PrismaData. Exemplo de payload de resposta direta:
{
"prismadata__geocoder__latitude": -19.9328,
"prismadata__geocoder__longitude": -43.9356,
"prismadata__geocoder__cep": "30130-165",
"prismadata__geocoder__numero": 601,
"prismadata__geocoder__logradouro": "RUA ALAGOAS",
"prismadata__geocoder__localidade": "SAVASSI",
"prismadata__geocoder__municipio": "BELO HORIZONTE",
"prismadata__geocoder__uf": "MG",
"prismadata__geocoder__endereco_completo": "RUA ALAGOAS, 601 - SAVASSI, BELO HORIZONTE - MG, 30130-165",
"prismadata__geocoder__score_qualidade_geocodificacao": 99.5,
"prismadata__geocoder__classificao_qualidade_geocodificacao": "ALTA"
}
Informações comerciais em prismadata.io/doc-comercial/geocoder/. Testes manuais com o fim de compreender melhor o dado podem ser feitos aqui.
Endpoint para se obter a latitude e longitude de um endereço.
Há duas formas de se realizar a geocodificação:
Caso o endereço completo seja fornecido, ele é quebrado nos campos internamente e se os campos forém fornecidos também, estes têm preferência sobre os campos extraídos do endereço completo. Por isso, sugere-se que, se possível, a geocodificação seja feita pelos campos individualizados e não pelo endereço completo.
Endereco Completo (string) or Endereco Completo (null) (Endereco Completo) Endereço completo a ser a ser geocodificado. Não é necessário informá-lo caso os campos que compõem o endereço sejam fornecidos separadamente | |
(Cep (Cep (string) or Cep (integer))) or Cep (null) (Cep) Example: cep=30130-165 CEP do endereço a ser geocodificado. | |
(Numero (Numero (string) or Numero (integer))) or Numero (null) (Numero) Numero do endereço a ser geocodificado | |
Tipo Logradouro (string) or Tipo Logradouro (null) (Tipo Logradouro) Tipo do logradouro a ser geocodificado.Ex: Rua, Avenida, etc. | |
Titulo Logradouro (string) or Titulo Logradouro (null) (Titulo Logradouro) Ex: Coronel, Senhor, Senhora, Professor, São, etc | |
Logradouro (string) or Logradouro (null) (Logradouro) O logradouro a ser geocodificado | |
Localidade (string) or Localidade (null) (Localidade) Localidade do endereço. Frequentemente a localidade é o Bairro do endereço | |
Municipio (string) or Municipio (null) (Municipio) Município do endereço | |
Estado (string) or Estado (null) (Estado) Unidade Federativa ou Estado do endereço |
curl "https://api.prismadata.io/v1/location/geocoder?cep=30130-165" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__geocoder__cep": "30130-165",
- "prismadata__geocoder__classificao_qualidade_geocodificacao": "MEDIA",
- "prismadata__geocoder__endereco_completo": "RUA ALAGOAS, 686 - SAVASSI, BELO HORIZONTE - MG, 30130-165",
- "prismadata__geocoder__latitude": -19.93292236328125,
- "prismadata__geocoder__localidade": "SAVASSI",
- "prismadata__geocoder__logradouro": "RUA ALAGOAS",
- "prismadata__geocoder__longitude": -43.935611724853516,
- "prismadata__geocoder__municipio": "BELO HORIZONTE",
- "prismadata__geocoder__numero": 686,
- "prismadata__geocoder__score_qualidade_geocodificacao": 75,
- "prismadata__geocoder__uf": "MG"
}Realiza a geocodificação reversa de um ponto, isto é, retorna o endereço de uma latitude e longitude. Se não for encontrado um endereço próximo ao ponto, retorna OUTPUT vazio.
| lat required | number (Lat) ( -90 .. 90 ) Latitude do ponto que se deseja realizar a geocodificação reversa |
| lng required | number (Lng) ( -180 .. 180 ) Longitude do ponto que se deseja realizar a geocodificação reversa |
curl "https://api.prismadata.io/v1/location/reverse_geocoder?lat=-25.5&lng=-25.5" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__reverse_geocoder__cep": "22420-008",
- "prismadata__reverse_geocoder__distancia_m": 7.02674626,
- "prismadata__reverse_geocoder__endereco_completo": "AVENIDA VIEIRA SOUTO, 516 - IPANEMA, RIO DE JANEIRO - RJ, 22420-008",
- "prismadata__reverse_geocoder__latitude_endereco": -22.986234664916992,
- "prismadata__reverse_geocoder__latitude_input": -22.98627572993613,
- "prismadata__reverse_geocoder__localidade": "IPANEMA",
- "prismadata__reverse_geocoder__logradouro": "AVENIDA VIEIRA SOUTO",
- "prismadata__reverse_geocoder__longitude_endereco": -43.2088508605957,
- "prismadata__reverse_geocoder__longitude_input": -43.208798617447684,
- "prismadata__reverse_geocoder__municipio": "RIO DE JANEIRO",
- "prismadata__reverse_geocoder__numero": 516,
- "prismadata__reverse_geocoder__uf": "RJ"
}Endpoint para geocodificacao em batch.
Recebe um dict de ate 512 enderecos indexados por chaves definidas pelo cliente e retorna as coordenadas de cada um, preservando as mesmas chaves na resposta.
curl "https://api.prismadata.io/v1/location/geocoder/batch" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "1": {
- "prismadata__geocoder__cep": "30130-165",
- "prismadata__geocoder__classificacao_qualidade_geocodificacao": "MUITO_ALTA",
- "prismadata__geocoder__endereco_completo": "RUA ALAGOAS, 686 - SAVASSI, BELO HORIZONTE - MG, 30130-165",
- "prismadata__geocoder__latitude": -19.93292236328125,
- "prismadata__geocoder__localidade": "SAVASSI",
- "prismadata__geocoder__logradouro": "RUA ALAGOAS",
- "prismadata__geocoder__longitude": -43.935611724853516,
- "prismadata__geocoder__municipio": "BELO HORIZONTE",
- "prismadata__geocoder__numero": 686,
- "prismadata__geocoder__score_qualidade_geocodificacao": 100,
- "prismadata__geocoder__uf": "MG"
}, - "2": {
- "prismadata__geocoder__cep": "01310-100",
- "prismadata__geocoder__classificacao_qualidade_geocodificacao": "BAIXA",
- "prismadata__geocoder__endereco_completo": "AVENIDA PAULISTA, 960 - BELA VISTA, SAO PAULO - SP, 01310-100",
- "prismadata__geocoder__latitude": -23.56524658203125,
- "prismadata__geocoder__localidade": "BELA VISTA",
- "prismadata__geocoder__logradouro": "AVENIDA PAULISTA",
- "prismadata__geocoder__longitude": -46.65198516845703,
- "prismadata__geocoder__municipio": "SAO PAULO",
- "prismadata__geocoder__numero": 960,
- "prismadata__geocoder__score_qualidade_geocodificacao": 45,
- "prismadata__geocoder__uf": "SP"
}
}Endpoint para geocodificacao reversa em batch.
Recebe um dict de ate 1024 coordenadas indexadas por chaves definidas pelo cliente e retorna o endereco mais proximo de cada uma, preservando as mesmas chaves na resposta.
curl "https://api.prismadata.io/v1/location/reverse_geocoder/batch" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "1": {
- "prismadata__reverse_geocoder__cep": "30140-010",
- "prismadata__reverse_geocoder__distancia_m": 48.35767446,
- "prismadata__reverse_geocoder__endereco_completo": "PRACA DA LIBERDADE, 450 - SAVASSI, BELO HORIZONTE - MG, 30140-010",
- "prismadata__reverse_geocoder__latitude_endereco": -19.93199348449707,
- "prismadata__reverse_geocoder__latitude_input": -19.932,
- "prismadata__reverse_geocoder__localidade": "SAVASSI",
- "prismadata__reverse_geocoder__logradouro": "PRACA DA LIBERDADE",
- "prismadata__reverse_geocoder__longitude_endereco": -43.937538146972656,
- "prismadata__reverse_geocoder__longitude_input": -43.938,
- "prismadata__reverse_geocoder__municipio": "BELO HORIZONTE",
- "prismadata__reverse_geocoder__numero": 450,
- "prismadata__reverse_geocoder__uf": "MG"
}, - "2": {
- "prismadata__reverse_geocoder__cep": "01332-030",
- "prismadata__reverse_geocoder__distancia_m": 44.69252378,
- "prismadata__reverse_geocoder__endereco_completo": "RUA CARLOS COMENALE, 241 - BELA VISTA, SAO PAULO - SP, 01332-030",
- "prismadata__reverse_geocoder__latitude_endereco": -23.560596466064453,
- "prismadata__reverse_geocoder__latitude_input": -23.561,
- "prismadata__reverse_geocoder__localidade": "BELA VISTA",
- "prismadata__reverse_geocoder__logradouro": "RUA CARLOS COMENALE",
- "prismadata__reverse_geocoder__longitude_endereco": -46.65599822998047,
- "prismadata__reverse_geocoder__longitude_input": -46.656,
- "prismadata__reverse_geocoder__municipio": "SAO PAULO",
- "prismadata__reverse_geocoder__numero": 241,
- "prismadata__reverse_geocoder__uf": "SP"
}
}API que retorna a tipologia de um endereço brasileiro — finalidade, espécie cadastral, tipo de moradia e indicador de multiplicidade — usando como fonte primária o CNEFE do Censo IBGE 2022.
Para uma coordenada lat/lng ou um endereço informado, cada resposta traz:
RESIDENCIAL, NAO_RESIDENCIAL, MISTO, INDETERMINADO) — quando disponível na fonte CNEFE ou inferida a partir da espécie cadastral. O campo finalidade_origem (CNEFE, DERIVADO, AUSENTE) indica se o valor veio declarado do IBGE ou foi inferido.DOMICILIO_PARTICULAR, DOMICILIO_COLETIVO, ESTABELECIMENTO_AGROPECUARIO, ESTABELECIMENTO_DE_ENSINO, ESTABELECIMENTO_DE_SAUDE, ESTABELECIMENTO_DE_OUTRAS_FINALIDADES, EDIFICACAO_EM_CONSTRUCAO_OU_REFORMA, ESTABELECIMENTO_RELIGIOSO.CASA, CASA_DE_VILA_OU_CONDOMINIO, APARTAMENTO, OUTROS.UNICO, MULTIPLO_ATE_10, MULTIPLO_MAIS_DE_10 ou MULTIPLO_DESCONHECIDO. Quando MULTIPLO_*, o endereço tem várias unidades cadastradas (shopping center, condomínio, prédio comercial) e a tipologia retornada é uma amostra entre elas.ALTA, MEDIA, BAIXA) — combinação da distância do match e da multiplicidade do estabelecimento. Use para filtrar antes de consumir.0.0 quando o endereço foi encontrado exatamente.EXATO_ESTRUTURADO (campos completos casaram exatamente), EXATO_TEXTO (string parseada casou exatamente), APROXIMADO (resultado por proximidade geográfica).Quando não há cobertura, o campo motivo_sem_cobertura esclarece a razão: FORA_DE_AREA_BRASIL, CNEFE_NAO_CADASTRADO, DISTANCIA_EXCESSIVA ou ENDERECO_NAO_RESOLVIDO.
| Endpoint | Método | Input | Limite |
|---|---|---|---|
/location/tipologia |
GET | Coordenada lat, lng |
— |
/location/tipologia/endereco |
GET | Endereço estruturado (cep, numero, logradouro, etc) ou string única |
— |
/location/tipologia/batch |
POST | Dict de coordenadas indexadas por chaves do cliente | 1024 itens |
/location/tipologia/endereco/batch |
POST | Dict de endereços indexados por chaves do cliente | 512 itens |
/location/tipologia/metadata |
GET | — | — |
Nos endpoints batch, as chaves do dict de entrada são preservadas no OUTPUT para facilitar a correlação client-side. Itens com erro vêm como null no respectivo slot.
A base CNEFE do IBGE cobre aproximadamente 65% do território brasileiro — regiões remotas, endereços novos não cadastrados ainda, condomínios fechados e prédios grandes onde o número da rua não bate com a unidade interna podem não estar cadastrados. O produto sempre responde 200 OK com cobertura=true/false no payload; o cliente decide o que fazer com cobertura=false.
Em endereços comerciais densos (shopping centers, prédios de escritório), o CNEFE pode listar apenas alguns dos estabelecimentos do prédio. O campo indicador_estabelecimento=MULTIPLO_* e confianca=MEDIA/BAIXA sinalizam esses casos ao cliente.
Todos os campos da resposta usam o prefixo prismadata__tipologia__, padrão dos produtos da PrismaData. Exemplo de payload:
{
"prismadata__tipologia__latitude": -23.5614,
"prismadata__tipologia__longitude": -46.6559,
"prismadata__tipologia__finalidade": "RESIDENCIAL",
"prismadata__tipologia__finalidade_origem": "DERIVADO",
"prismadata__tipologia__especie": "DOMICILIO_PARTICULAR",
"prismadata__tipologia__indicador_estabelecimento": null,
"prismadata__tipologia__tipo_moradia": "APARTAMENTO",
"prismadata__tipologia__cobertura": true,
"prismadata__tipologia__confianca": "ALTA",
"prismadata__tipologia__distancia_match_metros": 12.47,
"prismadata__tipologia__motivo_sem_cobertura": null
}
Além dos endpoints acima, a tipologia também está disponível como enriquecimento em outros produtos da PrismaData, com uma única chamada:
/location/aggregator — passe tipologia=true no query string. A resposta combina tipologia com os demais pilares de localização (favela, presídio, fronteiras, renda) da coordenada solicitada./cnpj/{cnpj}/enriched — passe tipologia=true no query string. A resposta combina o cadastro do CNPJ com a tipologia do endereço registrado na Receita Federal.Nesses casos, a cobrança acontece pela rota de enriquecimento, sem chamada adicional ao produto Tipologia.
Informações comerciais em prismadata.io/doc-comercial/tipologia/. Testes manuais podem ser feitos aqui.
Retorna a tipologia CNEFE (finalidade, espécie, indicador de estabelecimento, tipo de moradia) do endereço mais próximo da coordenada solicitada.
Sempre responde 200 OK. Verifique o campo cobertura no payload:
quando false, motivo_sem_cobertura indica a razão
(FORA_DE_AREA_BRASIL, CNEFE_NAO_CADASTRADO, DISTANCIA_EXCESSIVA).
distancia_match_metros é a distância geodésica até o endereço
CNEFE mais próximo — use para julgar a confiabilidade do match.
| lat required | number (Lat) ( -90 .. 90 ) Latitude WGS84 do ponto a consultar. |
| lng required | number (Lng) ( -180 .. 180 ) Longitude WGS84 do ponto a consultar. |
curl "https://api.prismadata.io/v1/location/tipologia?lat=-25.5&lng=-25.5" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__tipologia__latitude": -23.5614,
- "prismadata__tipologia__longitude": -46.6559,
- "prismadata__tipologia__finalidade": "RESIDENCIAL",
- "prismadata__tipologia__finalidade_origem": "DERIVADO",
- "prismadata__tipologia__especie": "DOMICILIO_PARTICULAR",
- "prismadata__tipologia__tipo_moradia": "APARTAMENTO",
- "prismadata__tipologia__cobertura": true,
- "prismadata__tipologia__confianca": "ALTA",
- "prismadata__tipologia__distancia_match_metros": 12.47
}Retorna a tipologia (finalidade, espécie cadastral, tipo de moradia) do endereço CNEFE-IBGE 2022 correspondente ao endereço informado.
O endereço pode ser passado de duas formas:
endereco_completo.cep, numero, logradouro, etc).
Quando os campos individuais são fornecidos, eles têm prioridade
sobre o que for extraído de endereco_completo.O campo match_method no payload indica o tipo de match obtido
(consulte a descrição do campo).
Sempre responde 200 OK. Verifique cobertura e
motivo_sem_cobertura para distinguir os casos sem resultado.
Endereco Completo (string) or Endereco Completo (null) (Endereco Completo) Endereço completo em uma string. Quando passado, libpostal extrai os campos. | |
(Cep (Cep (string) or Cep (integer))) or Cep (null) (Cep) CEP do endereço. | |
(Numero (Numero (string) or Numero (integer))) or Numero (null) (Numero) Número do endereço. | |
Tipo Logradouro (string) or Tipo Logradouro (null) (Tipo Logradouro) Tipo do logradouro (ex: Rua, Avenida). | |
Titulo Logradouro (string) or Titulo Logradouro (null) (Titulo Logradouro) Título do logradouro (ex: Doutor, São). | |
Logradouro (string) or Logradouro (null) (Logradouro) Nome do logradouro. | |
Localidade (string) or Localidade (null) (Localidade) Localidade (frequentemente bairro). | |
Municipio (string) or Municipio (null) (Municipio) Município. | |
Estado (string) or Estado (null) (Estado) UF (sigla ou nome). |
curl "https://api.prismadata.io/v1/location/tipologia/endereco" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__tipologia__latitude": -23.5614,
- "prismadata__tipologia__longitude": -46.6559,
- "prismadata__tipologia__finalidade": "RESIDENCIAL",
- "prismadata__tipologia__finalidade_origem": "DERIVADO",
- "prismadata__tipologia__especie": "DOMICILIO_PARTICULAR",
- "prismadata__tipologia__tipo_moradia": "APARTAMENTO",
- "prismadata__tipologia__cobertura": true,
- "prismadata__tipologia__confianca": "ALTA",
- "prismadata__tipologia__distancia_match_metros": 0,
- "prismadata__tipologia__match_method": "EXATO_ESTRUTURADO"
}Lookup de tipologia em batch por lat/lng.
Recebe um dict de até 1024 coordenadas indexadas por chaves definidas pelo cliente e retorna a tipologia de cada uma, preservando as mesmas chaves na resposta.
additional property | object (TipologiaBatchItem) Item de input do /tipologia/batch — uma coordenada. |
{- "casa_cliente_a": {
- "lat": -23.5614,
- "lng": -46.6559
}, - "casa_cliente_b": {
- "lat": -19.9319,
- "lng": -43.9386
}
}{- "SUCESSO": true,
- "EXCEPTION": "",
- "OUTPUT": {
- "casa_cliente_a": {
- "prismadata__tipologia__latitude": -19.93,
- "prismadata__tipologia__longitude": -43.94,
- "prismadata__tipologia__finalidade": "RESIDENCIAL",
- "prismadata__tipologia__finalidade_origem": "DERIVADO",
- "prismadata__tipologia__especie": "DOMICILIO_PARTICULAR",
- "prismadata__tipologia__tipo_moradia": "CASA",
- "prismadata__tipologia__cobertura": true,
- "prismadata__tipologia__confianca": "ALTA",
- "prismadata__tipologia__distancia_match_metros": 8.42
}, - "ponto_sem_cobertura": {
- "prismadata__tipologia__latitude": -10.123456,
- "prismadata__tipologia__longitude": -55.987654,
- "prismadata__tipologia__cobertura": false,
- "prismadata__tipologia__distancia_match_metros": 2840.12,
- "prismadata__tipologia__motivo_sem_cobertura": "CNEFE_NAO_CADASTRADO"
}
}
}Lookup de tipologia em batch por endereço.
Recebe um dict de até 512 endereços indexados por chaves do
cliente. Cada valor pode conter endereco_completo (string) ou
campos estruturados (cep, numero, logradouro, etc).
Retorna a tipologia de cada um, preservando as chaves.
additional property | object (TipologiaEnderecoBatchItem) Item de input do /tipologia/endereco/batch. Aceita
|
{- "cliente_a": {
- "endereco_completo": "Av Paulista 1000 SP"
}, - "cliente_b": {
- "cep": "30130-165",
- "numero": 601,
- "logradouro": "Alagoas",
- "municipio": "Belo Horizonte",
- "estado": "MG"
}
}{- "SUCESSO": true,
- "EXCEPTION": "",
- "OUTPUT": {
- "cliente_a": {
- "prismadata__tipologia__latitude": -23.5614,
- "prismadata__tipologia__longitude": -46.6559,
- "prismadata__tipologia__finalidade": "RESIDENCIAL",
- "prismadata__tipologia__finalidade_origem": "DERIVADO",
- "prismadata__tipologia__especie": "DOMICILIO_PARTICULAR",
- "prismadata__tipologia__tipo_moradia": "APARTAMENTO",
- "prismadata__tipologia__cobertura": true,
- "prismadata__tipologia__confianca": "ALTA",
- "prismadata__tipologia__distancia_match_metros": 0,
- "prismadata__tipologia__match_method": "EXATO_ESTRUTURADO"
}, - "cliente_b": {
- "prismadata__tipologia__latitude": -19.932592,
- "prismadata__tipologia__longitude": -43.935406,
- "prismadata__tipologia__finalidade": "NAO_RESIDENCIAL",
- "prismadata__tipologia__finalidade_origem": "DERIVADO",
- "prismadata__tipologia__especie": "ESTABELECIMENTO_DE_SAUDE",
- "prismadata__tipologia__indicador_estabelecimento": "MULTIPLO_ATE_10",
- "prismadata__tipologia__cobertura": true,
- "prismadata__tipologia__confianca": "MEDIA",
- "prismadata__tipologia__distancia_match_metros": 0,
- "prismadata__tipologia__match_method": "APROXIMADO"
}
}
}Retorna metadata da versão de dados CNEFE atualmente carregada (versão, data de referência, total de endereços, raio máximo).
curl "https://api.prismadata.io/v1/location/tipologia/metadata" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__tipologia__versao_dados": "20260601",
- "prismadata__tipologia__data_referencia_cnefe": "2022-01-01",
- "prismadata__tipologia__total_enderecos_carregados": 32500000,
- "prismadata__tipologia__raio_max_metros": 100
}A API de renda fornece estimativas da renda na região próxima de determinada coordenada geográfica. Veja que esta informação de renda não se refere à uma pessoa específica, mas sim a uma região em que ela mora ou se encontra em determinado momento.
Se a coordenada geográfica de entrada (latitude/longitude) não for localizada no Brasil, valores nulos serão retornados.
Maiores informações podem ser encontradas na documentação de produto:
Testes manuais com o fim de se compreender melhor o dado podem ser feitos aqui.
Endpoint para se consultar o endereço mais próximo à uma coordenada geográfica (latitude/longitude). Caso a coordenada não possua nenhum endereço próximo à vizinhança de 100 metros, valores nulos são retornados.
| lat required | number (Lat) ( -90 .. 90 ) Example: lat=-19.932378368680315 Latitude do ponto a ser estudado. |
| lng required | number (Lng) ( -180 .. 180 ) Example: lng=-43.9351245162891 Longitude do ponto a ser estudado. |
curl "https://api.prismadata.io/v1/location/personal_income_static?lat=-19.932378368680315&lng=-43.9351245162891" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__personal_income_static__faixa_sm_min": 5,
- "prismadata__personal_income_static__faixa_sm_max": 10,
- "prismadata__personal_income_static__percentil_br": 98,
- "prismadata__personal_income_static__percentil_mun": 90,
- "prismadata__personal_income_static__percentil_uf": 99
}Endpoint para se consultar a renda na coordenada geográfica. As informações retornadas são gerados por um modelo que é uma função de densidade de probabilidade (Probability Density Function - PDF). Opcionalmente, pode-se definir um perfil detalhado do indivíduo que se deseja estimar a renda.
| lat required | number (Lat) ( -90 .. 90 ) Example: lat=-19.932378368680315 Latitude do ponto de origem. |
| lng required | number (Lng) ( -180 .. 180 ) Example: lng=-43.9351245162891 Longitude do ponto de origem |
Genero (string) or Gender (null) (Gender) Example: gender=M Gênero da pessoa que se deseja analisar a renda. [M, F, male, female] | |
Age (number) or Age (null) (Age) Example: age=50 Idade da pessoa que se deseja analisar a renda | |
AtributosBooleanos (string) or Is Responsible (null) (Is Responsible) Example: is_responsible=false Indicador se as pessoas que se deseja analisar a renda são responsáveis pelo domicílio | |
Income Compared (number) or Income Compared (null) (Income Compared) Example: income_compared=10000 Renda a ser comparada com a renda da região. | |
Date Income (string) or Date Income (null) (Date Income) Example: date_income=2025-01-25 Data a ser consultada a renda no formato YYYY-MM-DD. Somente datas após 2022-01-01 são válidas. |
curl "https://api.prismadata.io/v1/location/personal_income_pdf?lat=-19.932378368680315&lng=-43.9351245162891&gender=M&age=50&is_responsible=false&income_compared=10000&date_income=2025-01-25" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__personal_income_pdf__qtde_pessoas": 475,
- "prismadata__personal_income_pdf__qtde_pessoas_sem_renda": 61,
- "prismadata__personal_income_pdf__renda_comparada_cdf": 69.58161423037396,
- "prismadata__personal_income_pdf__renda_comparada_pdf": 0.00004347742504677703,
- "prismadata__personal_income_pdf__renda_comparada_z_score": 0.5124048241824011,
- "prismadata__personal_income_pdf__renda_media_pessoas": 7977.094543374305,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_desvio_padrao": 8734.869682287694,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_maxima": 61487.85959498082,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_media": 9152.463546142017,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_mediana": 6781.762582549223,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_minima": 697.1449013796515,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_primeiro_quartil": 3582.7074159885547,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_qtde": 414,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_terceiro_quartil": 11412.45045466984,
- "prismadata__personal_income_pdf__renda_total": 3789119.908102795,
- "prismadata__personal_income_pdf__renda_total_m2": 95.5377576127026
}Endpoint batch para consulta de renda estática. Recebe múltiplos pontos e retorna percentis e faixa salarial para cada um.
| property name* additional property | Array of numbers (CoordPair) Par de coordenadas [lat, lng]. |
{- "property1": [
- 0
], - "property2": [
- 0
]
}{- "SUCESSO": true,
- "EXCEPTION": "string",
- "OUTPUT": {
- "property1": {
- "prismadata__personal_income_static__faixa_sm_min": 0,
- "prismadata__personal_income_static__faixa_sm_max": 0,
- "prismadata__personal_income_static__percentil_br": 0,
- "prismadata__personal_income_static__percentil_mun": 0,
- "prismadata__personal_income_static__percentil_uf": 0
}, - "property2": {
- "prismadata__personal_income_static__faixa_sm_min": 0,
- "prismadata__personal_income_static__faixa_sm_max": 0,
- "prismadata__personal_income_static__percentil_br": 0,
- "prismadata__personal_income_static__percentil_mun": 0,
- "prismadata__personal_income_static__percentil_uf": 0
}
}
}Endpoint batch para consulta de renda via PDF (Probability Density Function). Recebe múltiplos pontos, cada um com seus próprios parâmetros demográficos.
additional property | PdfPointInput (object) or Array of CoordPair (numbers) |
{- "property1": {
- "lat": -89,
- "lng": -179,
- "date_income": "2019-08-24",
- "gender": "string",
- "age": 16,
- "is_responsible": "string",
- "income_compared": 0
}, - "property2": {
- "lat": -89,
- "lng": -179,
- "date_income": "2019-08-24",
- "gender": "string",
- "age": 16,
- "is_responsible": "string",
- "income_compared": 0
}
}{- "SUCESSO": true,
- "EXCEPTION": "string",
- "OUTPUT": {
- "property1": {
- "prismadata__personal_income_pdf__qtde_pessoas": 0,
- "prismadata__personal_income_pdf__qtde_pessoas_sem_renda": 0,
- "prismadata__personal_income_pdf__renda_comparada_cdf": 0,
- "prismadata__personal_income_pdf__renda_comparada_pdf": 0,
- "prismadata__personal_income_pdf__renda_comparada_z_score": 0,
- "prismadata__personal_income_pdf__renda_media_pessoas": 0,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_desvio_padrao": 0,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_maxima": 0,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_media": 0,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_mediana": 0,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_minima": 0,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_primeiro_quartil": 0,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_qtde": 0,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_terceiro_quartil": 0,
- "prismadata__personal_income_pdf__renda_total": 0,
- "prismadata__personal_income_pdf__renda_total_m2": 0
}, - "property2": {
- "prismadata__personal_income_pdf__qtde_pessoas": 0,
- "prismadata__personal_income_pdf__qtde_pessoas_sem_renda": 0,
- "prismadata__personal_income_pdf__renda_comparada_cdf": 0,
- "prismadata__personal_income_pdf__renda_comparada_pdf": 0,
- "prismadata__personal_income_pdf__renda_comparada_z_score": 0,
- "prismadata__personal_income_pdf__renda_media_pessoas": 0,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_desvio_padrao": 0,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_maxima": 0,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_media": 0,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_mediana": 0,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_minima": 0,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_primeiro_quartil": 0,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_qtde": 0,
- "prismadata__personal_income_pdf__renda_pessoas_com_renda_terceiro_quartil": 0,
- "prismadata__personal_income_pdf__renda_total": 0,
- "prismadata__personal_income_pdf__renda_total_m2": 0
}
}
}O validador de endereços consiste em validar um ou mais endereços com um ou mais sinais de localização (frequentemente obtidos por GPS). Os endereços são comparados com os sinais indicando a concordância ou não da localização do(s) sinal(is) com o(s) endereço(s).
Maiores informações podem ser encontradas na documentação de produto. Testes manuais com o fim de se compreender melhor o dado podem ser feitos aqui.
Realiza a comparação de um endereço com determinada coordenada geográfica para avaliar a concordância (proximidade) entre eles.
| lat required | number (Lat) ( -90 .. 90 ) Latitude do ponto que se deseja realizar a geocodificação reversa |
| lng required | number (Lng) ( -180 .. 180 ) Longitude do ponto que se deseja realizar a geocodificação reversa |
Endereco Completo (string) or Endereco Completo (null) (Endereco Completo) Endereço completo a ser geocodificado. Não é necessário informá-lo caso os campos que compõem o endereço sejam fornecidos separadamente | |
(Cep (Cep (string) or Cep (integer))) or Cep (null) (Cep) Example: cep=30130-165 CEP do endereço a ser geocodificado. | |
(Numero (Numero (string) or Numero (integer))) or Numero (null) (Numero) Numero do endereço a ser geocodificado | |
Tipo Logradouro (string) or Tipo Logradouro (null) (Tipo Logradouro) Tipo do logradouro a ser geocodificado.Ex: Rua, Avenida, etc. | |
Titulo Logradouro (string) or Titulo Logradouro (null) (Titulo Logradouro) Ex: Coronel, Senhor, Senhora, Professor, São, etc | |
Logradouro (string) or Logradouro (null) (Logradouro) O logradouro a ser geocodificado | |
Localidade (string) or Localidade (null) (Localidade) Localidade do endereço. Frequentemente a localidade é o bairro ou região do endereço. | |
Municipio (string) or Municipio (null) (Municipio) Município do endereço. | |
Estado (string) or Estado (null) (Estado) Unidade Federativa ou Estado do endereço. |
curl "https://api.prismadata.io/v1/location/addr_validation/compare_address?lat=-25.5&lng=-25.5&cep=30130-165" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__valida_endereco_compare__classificacao_campos_endereco": "MUITO_PROXIMO",
- "prismadata__valida_endereco_compare__classificacao_cep": "PROXIMO",
- "prismadata__valida_endereco_compare__classificacao_distancia_geodesica": "IGUAL",
- "prismadata__valida_endereco_compare__classificacao_final": "MUITO_PROXIMO",
- "prismadata__valida_endereco_compare__classificacao_localidade": "IGUAL",
- "prismadata__valida_endereco_compare__classificacao_logradouro": "MUITO_DISTANTE",
- "prismadata__valida_endereco_compare__classificacao_municipio": "IGUAL",
- "prismadata__valida_endereco_compare__classificacao_numero": "PROXIMO",
- "prismadata__valida_endereco_compare__classificacao_uf": "IGUAL",
- "prismadata__valida_endereco_compare__distancia_geodesica_m": 62.926660837194,
- "prismadata__valida_endereco_compare__score_campos_endereco": 88.29072803942488,
- "prismadata__valida_endereco_compare__score_cep": 46.24072803942488,
- "prismadata__valida_endereco_compare__score_distancia_geodescia": 100,
- "prismadata__valida_endereco_compare__score_final": 94.14536401971245,
- "prismadata__valida_endereco_compare__score_localidade": 5,
- "prismadata__valida_endereco_compare__score_logradouro": 0.6,
- "prismadata__valida_endereco_compare__score_municipio": 20,
- "prismadata__valida_endereco_compare__score_numero": 6.45,
- "prismadata__valida_endereco_compare__score_uf": 10,
- "prismadata__valida_endereco_compare__sucesso_geocodificacao_direta": "True",
- "prismadata__valida_endereco_compare__sucesso_geocodificacao_reversa": "True"
}Valida uma lista de endereços com base no histórico de localização de um dispositivo. A validação indica se cada endereço da lista possui alguma relação com o dispositivo, como "MORADIA", "TRABALHO", "ATIPICO", etc.
required | Array of items (Locations) [ items = 3 items ] Lista de tuplas contendo sinais de localização. |
| enderecos required | Array of strings (Enderecos) <= 5 items Lista de endereços a serem validados |
{- "locations": [
- [
- 0,
- 0,
- 0
]
], - "enderecos": [
- "string"
]
}{- "items": [
- {
- "prismadata__valida_endereco__classificacao__atipico": 0,
- "prismadata__valida_endereco__classificacao__moradia": 83,
- "prismadata__valida_endereco__classificacao__proximidade": 100,
- "prismadata__valida_endereco__classificacao__trabalho": 83,
- "prismadata__valida_endereco__classificacao__visita_eventual": 0,
- "prismadata__valida_endereco__classificacao__visita_frequente": 7,
- "prismadata__valida_endereco__classificacao_provavel": "MORADIA",
- "prismadata__valida_endereco__endereco_validado": "Av. Artur Bernardes 216, Vila Paris - Belo Horizonte - MG",
- "prismadata__valida_endereco__geocoder__cep": "30380-752",
- "prismadata__valida_endereco__geocoder__classificao_qualidade_geocodificacao": "MUITO_ALTA",
- "prismadata__valida_endereco__geocoder__endereco_completo": "AVENIDA ARTUR BERNARDES, 216 - VILA PARIS, BELO HORIZONTE - MG, 30380-752",
- "prismadata__valida_endereco__geocoder__latitude": -19.949094772338867,
- "prismadata__valida_endereco__geocoder__localidade": "VILA PARIS",
- "prismadata__valida_endereco__geocoder__logradouro": "AVENIDA ARTUR BERNARDES",
- "prismadata__valida_endereco__geocoder__longitude": -43.9478874206543,
- "prismadata__valida_endereco__geocoder__municipio": "BELO HORIZONTE",
- "prismadata__valida_endereco__geocoder__numero": 216,
- "prismadata__valida_endereco__geocoder__score_qualidade_geocodificacao": 100,
- "prismadata__valida_endereco__geocoder__uf": "MG"
}, - {
- "prismadata__valida_endereco__classificacao__atipico": 0,
- "prismadata__valida_endereco__classificacao__moradia": 0,
- "prismadata__valida_endereco__classificacao__proximidade": 100,
- "prismadata__valida_endereco__classificacao__trabalho": 0,
- "prismadata__valida_endereco__classificacao__visita_eventual": 0,
- "prismadata__valida_endereco__classificacao__visita_frequente": 0,
- "prismadata__valida_endereco__classificacao_provavel": "PROXIMIDADE",
- "prismadata__valida_endereco__endereco_validado": "Rua São João Evangelista, 185, São Pedro - Belo Horizonte - MG",
- "prismadata__valida_endereco__geocoder__cep": "30330-152",
- "prismadata__valida_endereco__geocoder__classificao_qualidade_geocodificacao": "MUITO_ALTA",
- "prismadata__valida_endereco__geocoder__endereco_completo": "RUA SAO JOAO EVANGELISTA, 185 - SAO PEDRO, BELO HORIZONTE - MG, 30330-152",
- "prismadata__valida_endereco__geocoder__latitude": -19.947734832763672,
- "prismadata__valida_endereco__geocoder__localidade": "SAO PEDRO",
- "prismadata__valida_endereco__geocoder__logradouro": "RUA SAO JOAO EVANGELISTA",
- "prismadata__valida_endereco__geocoder__longitude": -43.937156677246094,
- "prismadata__valida_endereco__geocoder__municipio": "BELO HORIZONTE",
- "prismadata__valida_endereco__geocoder__numero": 185,
- "prismadata__valida_endereco__geocoder__score_qualidade_geocodificacao": 100,
- "prismadata__valida_endereco__geocoder__uf": "MG"
}, - {
- "prismadata__valida_endereco__classificacao__atipico": 100,
- "prismadata__valida_endereco__classificacao__moradia": 0,
- "prismadata__valida_endereco__classificacao__proximidade": 0,
- "prismadata__valida_endereco__classificacao__trabalho": 0,
- "prismadata__valida_endereco__classificacao__visita_eventual": 0,
- "prismadata__valida_endereco__classificacao__visita_frequente": 0,
- "prismadata__valida_endereco__classificacao_provavel": "ATIPICO",
- "prismadata__valida_endereco__endereco_validado": "Av. Vieira Souto, 302 - Ipanema - Rio de Janeiro - RJ",
- "prismadata__valida_endereco__geocoder__cep": "22420-004",
- "prismadata__valida_endereco__geocoder__classificao_qualidade_geocodificacao": "MEDIA",
- "prismadata__valida_endereco__geocoder__endereco_completo": "AVENIDA VIEIRA SOUTO, 284 - IPANEMA, RIO DE JANEIRO - RJ, 22420-004",
- "prismadata__valida_endereco__geocoder__latitude": -22.986597061157227,
- "prismadata__valida_endereco__geocoder__localidade": "IPANEMA",
- "prismadata__valida_endereco__geocoder__logradouro": "AVENIDA VIEIRA SOUTO",
- "prismadata__valida_endereco__geocoder__longitude": -43.201576232910156,
- "prismadata__valida_endereco__geocoder__municipio": "RIO DE JANEIRO",
- "prismadata__valida_endereco__geocoder__numero": 284,
- "prismadata__valida_endereco__geocoder__score_qualidade_geocodificacao": 50,
- "prismadata__valida_endereco__geocoder__uf": "RJ"
}, - {
- "prismadata__valida_endereco__classificacao__atipico": 0,
- "prismadata__valida_endereco__classificacao__moradia": 0,
- "prismadata__valida_endereco__classificacao__proximidade": 100,
- "prismadata__valida_endereco__classificacao__trabalho": 0,
- "prismadata__valida_endereco__classificacao__visita_eventual": 0,
- "prismadata__valida_endereco__classificacao__visita_frequente": 0,
- "prismadata__valida_endereco__classificacao_provavel": "PROXIMIDADE",
- "prismadata__valida_endereco__endereco_validado": "Av. Paulista, 1578 - Bela Vista, São Paulo - SP, 01310-200",
- "prismadata__valida_endereco__geocoder__cep": "01310-200",
- "prismadata__valida_endereco__geocoder__classificao_qualidade_geocodificacao": "MUITO_ALTA",
- "prismadata__valida_endereco__geocoder__endereco_completo": "AVENIDA PAULISTA, 1578 - BELA VISTA, SAO PAULO - SP, 01310-200",
- "prismadata__valida_endereco__geocoder__latitude": -23.562049865722656,
- "prismadata__valida_endereco__geocoder__localidade": "BELA VISTA",
- "prismadata__valida_endereco__geocoder__logradouro": "AVENIDA PAULISTA",
- "prismadata__valida_endereco__geocoder__longitude": -46.65565490722656,
- "prismadata__valida_endereco__geocoder__municipio": "SAO PAULO",
- "prismadata__valida_endereco__geocoder__numero": 1578,
- "prismadata__valida_endereco__geocoder__score_qualidade_geocodificacao": 100,
- "prismadata__valida_endereco__geocoder__uf": "SP"
}
]
}Realiza uma clusterização espacial dos pontos para identificar locais em que os sinais de localização são frequentes ou prolongados. Além disso, com as informações de timestamp classifica em diferentes graus, qual a afinidade do cluster com as seguintes classificações para o centróide do cluster:
| [0] | number |
| [1] | number |
| [2] | number |
[- [
- 0,
- 0,
- 0
]
]{- "items": [
- {
- "prismadata__cluster_historic_location__cep": "30380-752",
- "prismadata__cluster_historic_location__cluster_id": 0,
- "prismadata__cluster_historic_location__distancia_m": 12.64653078,
- "prismadata__cluster_historic_location__endereco_completo": "AVENIDA ARTUR BERNARDES, 228 - VILA PARIS, BELO HORIZONTE - MG, 30380-752",
- "prismadata__cluster_historic_location__latitude_endereco": -19.950218200683594,
- "prismadata__cluster_historic_location__latitude_input": -19.950141,
- "prismadata__cluster_historic_location__localidade": "VILA PARIS",
- "prismadata__cluster_historic_location__logradouro": "AVENIDA ARTUR BERNARDES",
- "prismadata__cluster_historic_location__longitude_endereco": -43.947635650634766,
- "prismadata__cluster_historic_location__longitude_input": -43.9477247,
- "prismadata__cluster_historic_location__moradia": 0.5853592589109377,
- "prismadata__cluster_historic_location__moradia_normalizado": 0.9687919528377141,
- "prismadata__cluster_historic_location__municipio": "BELO HORIZONTE",
- "prismadata__cluster_historic_location__numero": 228,
- "prismadata__cluster_historic_location__trabalho": 0.5158601560896914,
- "prismadata__cluster_historic_location__trabalho_normalizado": 0.9704367271420395,
- "prismadata__cluster_historic_location__uf": "MG",
- "prismadata__cluster_historic_location__visita_eventual": 0.0024057361519826295,
- "prismadata__cluster_historic_location__visita_eventual_normalizado": 0.0011620985380875505,
- "prismadata__cluster_historic_location__visita_frequente": 0.0348831742037481,
- "prismadata__cluster_historic_location__visita_frequente_normalizado": 0.08406721888423925
}, - {
- "prismadata__cluster_historic_location__cep": "30160-019",
- "prismadata__cluster_historic_location__cluster_id": 1,
- "prismadata__cluster_historic_location__distancia_m": 42.60808378,
- "prismadata__cluster_historic_location__endereco_completo": "RUA DA BAHIA, 2425 - SAVASSI, BELO HORIZONTE - MG, 30160-019",
- "prismadata__cluster_historic_location__latitude_endereco": -19.93621253967285,
- "prismadata__cluster_historic_location__latitude_input": -19.9359977,
- "prismadata__cluster_historic_location__localidade": "SAVASSI",
- "prismadata__cluster_historic_location__logradouro": "RUA DA BAHIA",
- "prismadata__cluster_historic_location__longitude_endereco": -43.940513610839844,
- "prismadata__cluster_historic_location__longitude_input": -43.9408513,
- "prismadata__cluster_historic_location__moradia": 0.013448697451330763,
- "prismadata__cluster_historic_location__moradia_normalizado": 0.022258108449909525,
- "prismadata__cluster_historic_location__municipio": "BELO HORIZONTE",
- "prismadata__cluster_historic_location__numero": 2425,
- "prismadata__cluster_historic_location__trabalho": 0.012064049133581927,
- "prismadata__cluster_historic_location__trabalho_normalizado": 0.02269490329708361,
- "prismadata__cluster_historic_location__uf": "MG",
- "prismadata__cluster_historic_location__visita_eventual": 0.5574400106335522,
- "prismadata__cluster_historic_location__visita_eventual_normalizado": 0.26927317897887126,
- "prismadata__cluster_historic_location__visita_frequente": 0.3065920058484537,
- "prismadata__cluster_historic_location__visita_frequente_normalizado": 0.7388759151697422
}, - {
- "prismadata__cluster_historic_location__cep": "06470-000",
- "prismadata__cluster_historic_location__cluster_id": 2,
- "prismadata__cluster_historic_location__distancia_m": 20.80692223,
- "prismadata__cluster_historic_location__endereco_completo": "ALAMEDA VENEZUELA, 862 - ALPHAVILLE 2, BARUERI - SP, 06470-000",
- "prismadata__cluster_historic_location__latitude_endereco": -23.492918014526367,
- "prismadata__cluster_historic_location__latitude_input": -23.4927481,
- "prismadata__cluster_historic_location__localidade": "ALPHAVILLE 2",
- "prismadata__cluster_historic_location__logradouro": "ALAMEDA VENEZUELA",
- "prismadata__cluster_historic_location__longitude_endereco": -46.861968994140625,
- "prismadata__cluster_historic_location__longitude_input": -46.8620559,
- "prismadata__cluster_historic_location__moradia": 0.004796388601523559,
- "prismadata__cluster_historic_location__moradia_normalizado": 0.007938206510107593,
- "prismadata__cluster_historic_location__municipio": "BARUERI",
- "prismadata__cluster_historic_location__numero": 862,
- "prismadata__cluster_historic_location__trabalho": 0.003000091983952338,
- "prismadata__cluster_historic_location__trabalho_normalizado": 0.0056437765383949845,
- "prismadata__cluster_historic_location__uf": "SP",
- "prismadata__cluster_historic_location__visita_eventual": 0.6489826034166849,
- "prismadata__cluster_historic_location__visita_eventual_normalizado": 0.3134931210362539,
- "prismadata__cluster_historic_location__visita_frequente": 0.04475742092528861,
- "prismadata__cluster_historic_location__visita_frequente_normalizado": 0.10786380504375039
}, - {
- "prismadata__cluster_historic_location__cep": "30140-100",
- "prismadata__cluster_historic_location__cluster_id": 3,
- "prismadata__cluster_historic_location__distancia_m": 9.39547144,
- "prismadata__cluster_historic_location__endereco_completo": "RUA CLAUDIO MANOEL, 862 - SAVASSI, BELO HORIZONTE - MG, 30140-100",
- "prismadata__cluster_historic_location__latitude_endereco": -19.933401107788086,
- "prismadata__cluster_historic_location__latitude_input": -19.933324900000002,
- "prismadata__cluster_historic_location__localidade": "SAVASSI",
- "prismadata__cluster_historic_location__logradouro": "RUA CLAUDIO MANOEL",
- "prismadata__cluster_historic_location__longitude_endereco": -43.93346405029297,
- "prismadata__cluster_historic_location__longitude_input": -43.93342455,
- "prismadata__cluster_historic_location__moradia": 0.0006113044296059438,
- "prismadata__cluster_historic_location__moradia_normalizado": 0.0010117322022686148,
- "prismadata__cluster_historic_location__municipio": "BELO HORIZONTE",
- "prismadata__cluster_historic_location__numero": 862,
- "prismadata__cluster_historic_location__trabalho": 0.0006509633550085262,
- "prismadata__cluster_historic_location__trabalho_normalizado": 0.0012245930224819308,
- "prismadata__cluster_historic_location__uf": "MG",
- "prismadata__cluster_historic_location__visita_eventual": 0.8613370214380509,
- "prismadata__cluster_historic_location__visita_eventual_normalizado": 0.41607160144678723,
- "prismadata__cluster_historic_location__visita_frequente": 0.028711234047935026,
- "prismadata__cluster_historic_location__visita_frequente_normalizado": 0.06919306090226829
}
]
}O dado de informações do setor censitário retorna, a partir de uma coordenada geográfica, as informações básicas acerca da proximidade do ponto.
Maiores informações podem ser encontradas na documentação de produto. Testes manuais com o fim de se compreender melhor o dado podem ser feitos aqui.
Busca as informações da região que o ponto se encontra
| lat required | number (Lat) ( -90 .. 90 ) Latitude do ponto de consulta |
| lng required | number (Lng) ( -180 .. 180 ) Longitude do ponto de consulta |
curl "https://api.prismadata.io/v1/location/infosc?lat=-25.5&lng=-25.5" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__infosc__area_km2": 0.140840328651949,
- "prismadata__infosc__municipio": "Ribeirão Pires",
- "prismadata__infosc__regiao": "Sudeste",
- "prismadata__infosc__situacao": "Urbana",
- "prismadata__infosc__tipo_sc": "NAO_ESPECIAL",
- "prismadata__infosc__tipo_situacao": "AREA_URBANA_ALTA_DENSIDADE",
- "prismadata__infosc__uf": "São Paulo"
}Busca as informações dos setores censitários em lote. A cobrança desta api é feita em função do número de coordenadas contidas no lote.
| property name* additional property | Array of numbers (Coordinates) = 2 items Encapsula as coordenadas geográficas |
{- "point1": [
- -23.5505,
- -46.6333
], - "point2": [
- 40.7128,
- -74.006
]
}{- "1": {
- "prismadata__infosc__area_km2": 0.035775460654104,
- "prismadata__infosc__municipio": "São Caetano do Sul",
- "prismadata__infosc__regiao": "Sudeste",
- "prismadata__infosc__situacao": "Urbana",
- "prismadata__infosc__tipo_sc": "NAO_ESPECIAL",
- "prismadata__infosc__tipo_situacao": "AREA_URBANA_ALTA_DENSIDADE",
- "prismadata__infosc__uf": "São Paulo"
}, - "2": {
- "prismadata__infosc__area_km2": 0.217476572958429,
- "prismadata__infosc__municipio": "Armação dos Búzios",
- "prismadata__infosc__regiao": "Sudeste",
- "prismadata__infosc__situacao": "Urbana",
- "prismadata__infosc__tipo_sc": "NAO_ESPECIAL",
- "prismadata__infosc__tipo_situacao": "AREA_URBANA_ALTA_DENSIDADE",
- "prismadata__infosc__uf": "Rio de Janeiro"
}
}Os dados do sistema penitenciário avalia a proximidade de determinada coordenada geográfica à um presídio do sistema penitenciário brasileiro. Além da indicação de proximidade do sinal de localização à um presídio, também são fornecidas informações que indicam o porte do presídio e a quantidade de estelionatários cumprindo pena no local.
Maiores informações podem ser encontradas na documentação de produto. Testes manuais com o fim de se compreender melhor o dado podem ser feitos aqui.
Busca as informações de proximidade a presídios em lote. A cobrança desta api é feita em função do número de coordenadas contidas no lote.
| property name* additional property | Array of numbers (Coordinates) = 2 items Encapsula as coordenadas geográficas |
{- "point1": [
- -23.5505,
- -46.6333
], - "point2": [
- 40.7128,
- -74.006
]
}{- "1": {
- "prismadata__prison__ambito": "ESTADUAL",
- "prismadata__prison__area_m2": 9235.269698947668,
- "prismadata__prison__distancia_borda_m": 1212.36,
- "prismadata__prison__distancia_centroide_m": 1251.05,
- "prismadata__prison__indice_lotacao_feminino": 0,
- "prismadata__prison__indice_lotacao_masculino": 3.6650485436893203,
- "prismadata__prison__indice_lotacao_total": 0.2728476821192053,
- "prismadata__prison__municipio": "Belo Horizonte",
- "prismadata__prison__nome_estabelecimento": "CENTRO DE REMAN. DO SIST. PRISIONAL - GAMELEIRA",
- "prismadata__prison__percentual_estelionato_feminino": 0,
- "prismadata__prison__percentual_estelionato_masculino": 0.006622516556291391,
- "prismadata__prison__percentual_estelionato_total": 0.006622516556291391,
- "prismadata__prison__perimetro_m": 399.26833501976216,
- "prismadata__prison__ponto_dentro_presidio": false,
- "prismadata__prison__pop_feminino_total": 0,
- "prismadata__prison__pop_masculino_total": 1510,
- "prismadata__prison__tipo_estabelecimento": "PRESOS_PROVISORIOS",
- "prismadata__prison__total_terceirizacoes": 1,
- "prismadata__prison__uf": "MG"
}, - "2": {
- "prismadata__prison__ambito": "ESTADUAL",
- "prismadata__prison__area_m2": 8985.493765362538,
- "prismadata__prison__distancia_borda_m": 4167.4,
- "prismadata__prison__distancia_centroide_m": 4232.06,
- "prismadata__prison__indice_lotacao_feminino": 1.033734939759036,
- "prismadata__prison__indice_lotacao_masculino": 0,
- "prismadata__prison__indice_lotacao_total": 0.9673659673659674,
- "prismadata__prison__municipio": "Belo Horizonte",
- "prismadata__prison__nome_estabelecimento": "Complexo Penitenciário Feminino Estevão Pinto",
- "prismadata__prison__percentual_estelionato_feminino": 0.011655011655011656,
- "prismadata__prison__percentual_estelionato_masculino": 0,
- "prismadata__prison__percentual_estelionato_total": 0.011655011655011656,
- "prismadata__prison__perimetro_m": 444.5365921456703,
- "prismadata__prison__ponto_dentro_presidio": false,
- "prismadata__prison__pop_feminino_total": 429,
- "prismadata__prison__pop_masculino_total": 0,
- "prismadata__prison__tipo_estabelecimento": "REGIME_FECHADO",
- "prismadata__prison__total_terceirizacoes": 1,
- "prismadata__prison__uf": "MG"
}
}Endpoint para consultar a proximidade do ponto ao presídio mais próximo do sistema penitenciário brasileiro.
| lat required | number (Lat) ( -90 .. 90 ) Example: lat=-25.52568655357868 Latitude do ponto de consulta. |
| lng required | number (Lng) ( -180 .. 180 ) Example: lng=-54.59273323017718 Longitude do ponto de consulta. |
curl "https://api.prismadata.io/v1/location/prison?lat=-25.52568655357868&lng=-54.59273323017718" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__prison__ambito": "ESTADUAL",
- "prismadata__prison__area_m2": 13732.882376760244,
- "prismadata__prison__distancia_borda_m": 1010.79,
- "prismadata__prison__distancia_centroide_m": 1076.73,
- "prismadata__prison__indice_lotacao_feminino": 0,
- "prismadata__prison__indice_lotacao_masculino": 2.0308641975308643,
- "prismadata__prison__indice_lotacao_total": 0.49240121580547114,
- "prismadata__prison__municipio": "Ponta Porã",
- "prismadata__prison__nome_estabelecimento": "Unidade Penal \"Ricardo Brandão\"",
- "prismadata__prison__percentual_estelionato_feminino": 0,
- "prismadata__prison__percentual_estelionato_masculino": 0.001519756838905775,
- "prismadata__prison__percentual_estelionato_total": 0.001519756838905775,
- "prismadata__prison__perimetro_m": 473.57341193471495,
- "prismadata__prison__ponto_dentro_presidio": false,
- "prismadata__prison__pop_feminino_total": 0,
- "prismadata__prison__pop_masculino_total": 658,
- "prismadata__prison__tipo_estabelecimento": "PRESOS_PROVISORIOS",
- "prismadata__prison__total_terceirizacoes": 5,
- "prismadata__prison__uf": "MS"
}A API de aglomerações comerciais mapeia cerca de 11 mil regiões do Brasil com alta concentração de estabelecimentos comerciais, classificadas por porte, vocação e perfil de renda. Cada aglomeração é uma poligonal contínua de tecido comercial denso, gerada algoritmicamente a partir do CNPJ da Receita Federal.
Dentro de cada aglomeração existem trechos de rua (linestrings recortadas do OpenStreetMap) com atributos e rankings próprios, permitindo drill-down do macro (aglomeração) para o micro (trecho).
Caso a coordenada de entrada esteja a mais de 5 km de qualquer aglomeração, valores nulos são retornados nos campos de detalhe.
Maiores informações podem ser encontradas na documentação de produto. Testes manuais com o fim de se compreender melhor o dado podem ser feitos aqui.
Retorna aglomeracao(oes) e trecho mais proximo de um ponto (lat, lng).
| lat required | number (Lat) ( -90 .. 90 ) Examples: lat=-19.9332 |
| lng required | number (Lng) ( -180 .. 180 ) Examples: lng=-43.9191 |
| top_n | integer (Top N) [ 1 .. 10 ] Default: 1 |
| raio_km | number (Raio Km) ( 0 .. 50 ] Default: 5 |
| incluir_trecho_mais_proximo | boolean (Incluir Trecho Mais Proximo) Default: true |
| incluir_trechos_da_aglomeracao | boolean (Incluir Trechos Da Aglomeracao) Default: false |
| incluir_geometria | boolean (Incluir Geometria) Default: false Retorna o poligono da aglomeracao. Requer role 'admin' ou 'viewer:commercial_cluster' no JWT — caso contrario retorna 403 GEOMETRIA_NAO_AUTORIZADA. |
| wkt | boolean (Wkt) Default: false Quando incluir_geometria=true, retorna a geometria em WKT (string 'POLYGON((...))') em vez de GeoJSON. Ignorado se incluir_geometria=false. |
Array of Vocacao (strings) or Vocacao (null) (Vocacao) | |
Porte Minimo (string) or Porte Minimo (null) (Porte Minimo) | |
Array of Faixa Renda (strings) or Faixa Renda (null) (Faixa Renda) | |
Versao Dados (string) or Versao Dados (null) (Versao Dados) | |
| flat | boolean (Flat) Default: false |
curl "https://api.prismadata.io/v1/location/commercial_cluster?lat=-25.5&lng=-25.5" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__commercial_cluster__aglomeracao_hash": "5ebd0eb4f6b4",
- "prismadata__commercial_cluster__aglomeracao_hash_contendo": "5ebd0eb4f6b4",
- "prismadata__commercial_cluster__area_ha": 10.11,
- "prismadata__commercial_cluster__centroide_lat": -23.561411,
- "prismadata__commercial_cluster__centroide_lng": -46.656262,
- "prismadata__commercial_cluster__concentracao": "Densa",
- "prismadata__commercial_cluster__contido": true,
- "prismadata__commercial_cluster__densidade_pdvs_km2": 50625.8,
- "prismadata__commercial_cluster__dentro_de_aglomeracao": true,
- "prismadata__commercial_cluster__distancia_borda_m": 57.99267672,
- "prismadata__commercial_cluster__distancia_m": 0,
- "prismadata__commercial_cluster__faixa_renda": "Luxo",
- "prismadata__commercial_cluster__latitude": -23.5613,
- "prismadata__commercial_cluster__longitude": -46.6558,
- "prismadata__commercial_cluster__municipio": "SAO PAULO",
- "prismadata__commercial_cluster__nome_aglomeracao": "Avenida Paulista / Alameda Ministro Rocha Azevedo - SAO PAULO/SP",
- "prismadata__commercial_cluster__nome_segmento": "Grande, Densa, Luxo de Diversificada",
- "prismadata__commercial_cluster__pct_alimentacao": 8.8,
- "prismadata__commercial_cluster__pct_alojamento": 0.6,
- "prismadata__commercial_cluster__pct_automotivo": 5.3,
- "prismadata__commercial_cluster__pct_combustiveis": 0.1,
- "prismadata__commercial_cluster__pct_construcao": 4.2,
- "prismadata__commercial_cluster__pct_eletronicos": 16.4,
- "prismadata__commercial_cluster__pct_entretenimento": 6.4,
- "prismadata__commercial_cluster__pct_moda": 10.9,
- "prismadata__commercial_cluster__pct_moveis": 9.2,
- "prismadata__commercial_cluster__pct_saude": 4.9,
- "prismadata__commercial_cluster__pct_supermercado": 0.8,
- "prismadata__commercial_cluster__pct_varejo_geral": 12.6,
- "prismadata__commercial_cluster__percentil_br_renda": 99.3,
- "prismadata__commercial_cluster__porte": "Grande",
- "prismadata__commercial_cluster__qtd_pdvs": 5117,
- "prismadata__commercial_cluster__rank_municipal_densidade": 8,
- "prismadata__commercial_cluster__rank_municipal_pdvs": 1,
- "prismadata__commercial_cluster__rank_municipal_score": 1,
- "prismadata__commercial_cluster__rank_nacional_densidade": 154,
- "prismadata__commercial_cluster__rank_nacional_pdvs": 1,
- "prismadata__commercial_cluster__rank_nacional_score": 1,
- "prismadata__commercial_cluster__rank_uf_densidade": 23,
- "prismadata__commercial_cluster__rank_uf_pdvs": 1,
- "prismadata__commercial_cluster__rank_uf_score": 1,
- "prismadata__commercial_cluster__renda_mediana": 8503.98,
- "prismadata__commercial_cluster__score_ponderado": 6402.5,
- "prismadata__commercial_cluster__trecho_aglomeracao_hash": "5ebd0eb4f6b4",
- "prismadata__commercial_cluster__trecho_buffer_m": 5,
- "prismadata__commercial_cluster__trecho_densidade_linear_km": 0,
- "prismadata__commercial_cluster__trecho_distancia_m": 5.47013445,
- "prismadata__commercial_cluster__trecho_extensao_m": 271.3,
- "prismadata__commercial_cluster__trecho_hash": "c4caea4ffc9d",
- "prismadata__commercial_cluster__trecho_logradouro": "Passagem Subterrânea Daher Elias Cutait",
- "prismadata__commercial_cluster__trecho_n_esquinas": 1,
- "prismadata__commercial_cluster__trecho_qtd_pdvs": 0,
- "prismadata__commercial_cluster__trecho_rank_aglomeracao_score": 9377,
- "prismadata__commercial_cluster__trecho_rank_municipal_densidade": 21043,
- "prismadata__commercial_cluster__trecho_rank_municipal_score": 21043,
- "prismadata__commercial_cluster__trecho_rank_nacional_densidade": 95187,
- "prismadata__commercial_cluster__trecho_rank_nacional_score": 95187,
- "prismadata__commercial_cluster__trecho_rank_uf_densidade": 38601,
- "prismadata__commercial_cluster__trecho_rank_uf_score": 38601,
- "prismadata__commercial_cluster__trecho_score_ponderado": 0,
- "prismadata__commercial_cluster__trecho_tipo_via": "AVENIDA",
- "prismadata__commercial_cluster__uf": "SP",
- "prismadata__commercial_cluster__vocacao": "Diversificada"
}Query para ate 1024 pontos em uma unica requisicao.
required | Array of objects (Pontos) [ 1 .. 1024 ] items |
| top_n_por_ponto | integer (Top N Por Ponto) [ 1 .. 10 ] Default: 1 |
| raio_km | number (Raio Km) ( 0 .. 50 ] Default: 2 |
| incluir_trecho_mais_proximo | boolean (Incluir Trecho Mais Proximo) Default: true |
| incluir_geometria | boolean (Incluir Geometria) Default: false |
| modo_resposta | string (Modo Resposta) ^(compacto|flat)$ Default: "compacto" |
Versao Dados (string) or Versao Dados (null) (Versao Dados) |
{- "pontos": [
- {
- "id_externo": "string",
- "latitude": -89,
- "longitude": -179
}
], - "top_n_por_ponto": 1,
- "raio_km": 2,
- "incluir_trecho_mais_proximo": true,
- "incluir_geometria": false,
- "modo_resposta": "compacto",
- "versao_dados": "string"
}{- "rj": {
- "prismadata__commercial_cluster__aglomeracao_hash": "5e28444d2cee",
- "prismadata__commercial_cluster__area_ha": 8.11,
- "prismadata__commercial_cluster__centroide_lat": -22.907453,
- "prismadata__commercial_cluster__centroide_lng": -43.176941,
- "prismadata__commercial_cluster__concentracao": "Densa",
- "prismadata__commercial_cluster__contido": false,
- "prismadata__commercial_cluster__densidade_pdvs_km2": 13079.9,
- "prismadata__commercial_cluster__dentro_de_aglomeracao": false,
- "prismadata__commercial_cluster__distancia_borda_m": 176.45172415,
- "prismadata__commercial_cluster__distancia_m": 176.45172415,
- "prismadata__commercial_cluster__faixa_renda": "Intermediária",
- "prismadata__commercial_cluster__latitude": -22.9068,
- "prismadata__commercial_cluster__longitude": -43.1729,
- "prismadata__commercial_cluster__municipio": "RIO DE JANEIRO",
- "prismadata__commercial_cluster__nome_aglomeracao": "Rua Bittencourt da Silva - RIO DE JANEIRO/RJ",
- "prismadata__commercial_cluster__nome_segmento": "Grande, Densa, Intermediária de Eletrônicos",
- "prismadata__commercial_cluster__pct_alimentacao": 15.2,
- "prismadata__commercial_cluster__pct_alojamento": 0.2,
- "prismadata__commercial_cluster__pct_automotivo": 1.5,
- "prismadata__commercial_cluster__pct_combustiveis": 0,
- "prismadata__commercial_cluster__pct_construcao": 1.1,
- "prismadata__commercial_cluster__pct_eletronicos": 46.9,
- "prismadata__commercial_cluster__pct_entretenimento": 4.6,
- "prismadata__commercial_cluster__pct_moda": 4.5,
- "prismadata__commercial_cluster__pct_moveis": 3.8,
- "prismadata__commercial_cluster__pct_saude": 4.4,
- "prismadata__commercial_cluster__pct_supermercado": 0.7,
- "prismadata__commercial_cluster__pct_varejo_geral": 4.9,
- "prismadata__commercial_cluster__percentil_br_renda": 78.3,
- "prismadata__commercial_cluster__porte": "Grande",
- "prismadata__commercial_cluster__qtd_pdvs": 1061,
- "prismadata__commercial_cluster__rank_municipal_densidade": 22,
- "prismadata__commercial_cluster__rank_municipal_pdvs": 2,
- "prismadata__commercial_cluster__rank_municipal_score": 6,
- "prismadata__commercial_cluster__rank_nacional_densidade": 554,
- "prismadata__commercial_cluster__rank_nacional_pdvs": 26,
- "prismadata__commercial_cluster__rank_nacional_score": 55,
- "prismadata__commercial_cluster__rank_uf_densidade": 56,
- "prismadata__commercial_cluster__rank_uf_pdvs": 2,
- "prismadata__commercial_cluster__rank_uf_score": 8,
- "prismadata__commercial_cluster__renda_mediana": 3442.88,
- "prismadata__commercial_cluster__score_ponderado": 1264.5,
- "prismadata__commercial_cluster__trecho_aglomeracao_hash": "5e28444d2cee",
- "prismadata__commercial_cluster__trecho_buffer_m": 5,
- "prismadata__commercial_cluster__trecho_densidade_linear_km": 136.8,
- "prismadata__commercial_cluster__trecho_distancia_m": 200.05615508,
- "prismadata__commercial_cluster__trecho_extensao_m": 58.5,
- "prismadata__commercial_cluster__trecho_hash": "b1c8ba1b9eca",
- "prismadata__commercial_cluster__trecho_logradouro": "Rua Anfilófio de Carvalho",
- "prismadata__commercial_cluster__trecho_n_esquinas": 1,
- "prismadata__commercial_cluster__trecho_num_final": 29,
- "prismadata__commercial_cluster__trecho_num_inicial": 29,
- "prismadata__commercial_cluster__trecho_qtd_pdvs": 8,
- "prismadata__commercial_cluster__trecho_rank_aglomeracao_score": 1668,
- "prismadata__commercial_cluster__trecho_rank_municipal_densidade": 998,
- "prismadata__commercial_cluster__trecho_rank_municipal_score": 2506,
- "prismadata__commercial_cluster__trecho_rank_nacional_densidade": 14216,
- "prismadata__commercial_cluster__trecho_rank_nacional_score": 47133,
- "prismadata__commercial_cluster__trecho_rank_uf_densidade": 1790,
- "prismadata__commercial_cluster__trecho_rank_uf_score": 4589,
- "prismadata__commercial_cluster__trecho_score_ponderado": 10.2,
- "prismadata__commercial_cluster__trecho_tipo_via": "RUA",
- "prismadata__commercial_cluster__uf": "RJ",
- "prismadata__commercial_cluster__vocacao": "Eletrônicos"
}, - "sp": {
- "prismadata__commercial_cluster__aglomeracao_hash": "5ebd0eb4f6b4",
- "prismadata__commercial_cluster__aglomeracao_hash_contendo": "5ebd0eb4f6b4",
- "prismadata__commercial_cluster__area_ha": 10.11,
- "prismadata__commercial_cluster__centroide_lat": -23.561411,
- "prismadata__commercial_cluster__centroide_lng": -46.656262,
- "prismadata__commercial_cluster__concentracao": "Densa",
- "prismadata__commercial_cluster__contido": true,
- "prismadata__commercial_cluster__densidade_pdvs_km2": 50625.8,
- "prismadata__commercial_cluster__dentro_de_aglomeracao": true,
- "prismadata__commercial_cluster__distancia_borda_m": 57.99267672,
- "prismadata__commercial_cluster__distancia_m": 0,
- "prismadata__commercial_cluster__faixa_renda": "Luxo",
- "prismadata__commercial_cluster__latitude": -23.5613,
- "prismadata__commercial_cluster__longitude": -46.6558,
- "prismadata__commercial_cluster__municipio": "SAO PAULO",
- "prismadata__commercial_cluster__nome_aglomeracao": "Avenida Paulista / Alameda Ministro Rocha Azevedo - SAO PAULO/SP",
- "prismadata__commercial_cluster__nome_segmento": "Grande, Densa, Luxo de Diversificada",
- "prismadata__commercial_cluster__pct_alimentacao": 8.8,
- "prismadata__commercial_cluster__pct_alojamento": 0.6,
- "prismadata__commercial_cluster__pct_automotivo": 5.3,
- "prismadata__commercial_cluster__pct_combustiveis": 0.1,
- "prismadata__commercial_cluster__pct_construcao": 4.2,
- "prismadata__commercial_cluster__pct_eletronicos": 16.4,
- "prismadata__commercial_cluster__pct_entretenimento": 6.4,
- "prismadata__commercial_cluster__pct_moda": 10.9,
- "prismadata__commercial_cluster__pct_moveis": 9.2,
- "prismadata__commercial_cluster__pct_saude": 4.9,
- "prismadata__commercial_cluster__pct_supermercado": 0.8,
- "prismadata__commercial_cluster__pct_varejo_geral": 12.6,
- "prismadata__commercial_cluster__percentil_br_renda": 99.3,
- "prismadata__commercial_cluster__porte": "Grande",
- "prismadata__commercial_cluster__qtd_pdvs": 5117,
- "prismadata__commercial_cluster__rank_municipal_densidade": 8,
- "prismadata__commercial_cluster__rank_municipal_pdvs": 1,
- "prismadata__commercial_cluster__rank_municipal_score": 1,
- "prismadata__commercial_cluster__rank_nacional_densidade": 154,
- "prismadata__commercial_cluster__rank_nacional_pdvs": 1,
- "prismadata__commercial_cluster__rank_nacional_score": 1,
- "prismadata__commercial_cluster__rank_uf_densidade": 23,
- "prismadata__commercial_cluster__rank_uf_pdvs": 1,
- "prismadata__commercial_cluster__rank_uf_score": 1,
- "prismadata__commercial_cluster__renda_mediana": 8503.98,
- "prismadata__commercial_cluster__score_ponderado": 6402.5,
- "prismadata__commercial_cluster__trecho_aglomeracao_hash": "5ebd0eb4f6b4",
- "prismadata__commercial_cluster__trecho_buffer_m": 5,
- "prismadata__commercial_cluster__trecho_densidade_linear_km": 0,
- "prismadata__commercial_cluster__trecho_distancia_m": 5.47013445,
- "prismadata__commercial_cluster__trecho_extensao_m": 271.3,
- "prismadata__commercial_cluster__trecho_hash": "c4caea4ffc9d",
- "prismadata__commercial_cluster__trecho_logradouro": "Passagem Subterrânea Daher Elias Cutait",
- "prismadata__commercial_cluster__trecho_n_esquinas": 1,
- "prismadata__commercial_cluster__trecho_qtd_pdvs": 0,
- "prismadata__commercial_cluster__trecho_rank_aglomeracao_score": 9377,
- "prismadata__commercial_cluster__trecho_rank_municipal_densidade": 21043,
- "prismadata__commercial_cluster__trecho_rank_municipal_score": 21043,
- "prismadata__commercial_cluster__trecho_rank_nacional_densidade": 95187,
- "prismadata__commercial_cluster__trecho_rank_nacional_score": 95187,
- "prismadata__commercial_cluster__trecho_rank_uf_densidade": 38601,
- "prismadata__commercial_cluster__trecho_rank_uf_score": 38601,
- "prismadata__commercial_cluster__trecho_score_ponderado": 0,
- "prismadata__commercial_cluster__trecho_tipo_via": "AVENIDA",
- "prismadata__commercial_cluster__uf": "SP",
- "prismadata__commercial_cluster__vocacao": "Diversificada"
}
}Retorna todos os atributos de uma aglomeracao e seus trechos de rua.
| aglomeracao_hash required | string (Aglomeracao Hash) |
| incluir_geometria | boolean (Incluir Geometria) Default: false Retorna o poligono da aglomeracao. Requer role 'admin' ou 'viewer:commercial_cluster' no JWT — caso contrario retorna 403 GEOMETRIA_NAO_AUTORIZADA. |
| wkt | boolean (Wkt) Default: false Quando incluir_geometria=true, retorna a geometria em WKT em vez de GeoJSON. Ignorado se incluir_geometria=false. |
| incluir_trechos | boolean (Incluir Trechos) Default: true |
Versao Dados (string) or Versao Dados (null) (Versao Dados) | |
| flat | boolean (Flat) Default: false |
curl "https://api.prismadata.io/v1/location/commercial_cluster/{aglomeracao_hash}" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__commercial_cluster__aglomeracao_hash": "5ebd0eb4f6b4",
- "prismadata__commercial_cluster__area_ha": 10.11,
- "prismadata__commercial_cluster__centroide_lat": -23.561411,
- "prismadata__commercial_cluster__centroide_lng": -46.656262,
- "prismadata__commercial_cluster__concentracao": "Densa",
- "prismadata__commercial_cluster__densidade_pdvs_km2": 50625.8,
- "prismadata__commercial_cluster__faixa_renda": "Luxo",
- "prismadata__commercial_cluster__municipio": "SAO PAULO",
- "prismadata__commercial_cluster__nome_aglomeracao": "Avenida Paulista / Alameda Ministro Rocha Azevedo - SAO PAULO/SP",
- "prismadata__commercial_cluster__nome_segmento": "Grande, Densa, Luxo de Diversificada",
- "prismadata__commercial_cluster__pct_alimentacao": 8.8,
- "prismadata__commercial_cluster__pct_alojamento": 0.6,
- "prismadata__commercial_cluster__pct_automotivo": 5.3,
- "prismadata__commercial_cluster__pct_combustiveis": 0.1,
- "prismadata__commercial_cluster__pct_construcao": 4.2,
- "prismadata__commercial_cluster__pct_eletronicos": 16.4,
- "prismadata__commercial_cluster__pct_entretenimento": 6.4,
- "prismadata__commercial_cluster__pct_moda": 10.9,
- "prismadata__commercial_cluster__pct_moveis": 9.2,
- "prismadata__commercial_cluster__pct_saude": 4.9,
- "prismadata__commercial_cluster__pct_supermercado": 0.8,
- "prismadata__commercial_cluster__pct_varejo_geral": 12.6,
- "prismadata__commercial_cluster__percentil_br_renda": 99.3,
- "prismadata__commercial_cluster__porte": "Grande",
- "prismadata__commercial_cluster__qtd_pdvs": 5117,
- "prismadata__commercial_cluster__rank_municipal_densidade": 8,
- "prismadata__commercial_cluster__rank_municipal_pdvs": 1,
- "prismadata__commercial_cluster__rank_municipal_score": 1,
- "prismadata__commercial_cluster__rank_nacional_densidade": 154,
- "prismadata__commercial_cluster__rank_nacional_pdvs": 1,
- "prismadata__commercial_cluster__rank_nacional_score": 1,
- "prismadata__commercial_cluster__rank_uf_densidade": 23,
- "prismadata__commercial_cluster__rank_uf_pdvs": 1,
- "prismadata__commercial_cluster__rank_uf_score": 1,
- "prismadata__commercial_cluster__renda_mediana": 8503.98,
- "prismadata__commercial_cluster__score_ponderado": 6402.5,
- "prismadata__commercial_cluster__trecho_10_buffer_m": 5,
- "prismadata__commercial_cluster__trecho_10_densidade_linear_km": 24.1,
- "prismadata__commercial_cluster__trecho_10_extensao_m": 41.5,
- "prismadata__commercial_cluster__trecho_10_logradouro": "way_1466877125",
- "prismadata__commercial_cluster__trecho_10_n_esquinas": 1,
- "prismadata__commercial_cluster__trecho_10_num_final": 1821,
- "prismadata__commercial_cluster__trecho_10_num_inicial": 1821,
- "prismadata__commercial_cluster__trecho_10_qtd_pdvs": 1,
- "prismadata__commercial_cluster__trecho_10_rank_aglomeracao_score": 8265,
- "prismadata__commercial_cluster__trecho_10_rank_municipal_densidade": 17109,
- "prismadata__commercial_cluster__trecho_10_rank_municipal_score": 17604,
- "prismadata__commercial_cluster__trecho_10_rank_nacional_densidade": 74927,
- "prismadata__commercial_cluster__trecho_10_rank_nacional_score": 80972,
- "prismadata__commercial_cluster__trecho_10_rank_uf_densidade": 30936,
- "prismadata__commercial_cluster__trecho_10_rank_uf_score": 32570,
- "prismadata__commercial_cluster__trecho_10_score_ponderado": 2,
- "prismadata__commercial_cluster__trecho_10_tipo_via": "SERVICO",
- "prismadata__commercial_cluster__trecho_10_trecho_hash": "1de9d4144413",
- "prismadata__commercial_cluster__trecho_11_buffer_m": 5,
- "prismadata__commercial_cluster__trecho_11_densidade_linear_km": 39.4,
- "prismadata__commercial_cluster__trecho_11_extensao_m": 25.4,
- "prismadata__commercial_cluster__trecho_11_logradouro": "way_1466733486",
- "prismadata__commercial_cluster__trecho_11_n_esquinas": 1,
- "prismadata__commercial_cluster__trecho_11_num_final": 41,
- "prismadata__commercial_cluster__trecho_11_num_inicial": 41,
- "prismadata__commercial_cluster__trecho_11_qtd_pdvs": 1,
- "prismadata__commercial_cluster__trecho_11_rank_aglomeracao_score": 9205,
- "prismadata__commercial_cluster__trecho_11_rank_municipal_densidade": 13280,
- "prismadata__commercial_cluster__trecho_11_rank_municipal_score": 20301,
- "prismadata__commercial_cluster__trecho_11_rank_nacional_densidade": 58445,
- "prismadata__commercial_cluster__trecho_11_rank_nacional_score": 92315,
- "prismadata__commercial_cluster__trecho_11_rank_uf_densidade": 23803,
- "prismadata__commercial_cluster__trecho_11_rank_uf_score": 37364,
- "prismadata__commercial_cluster__trecho_11_score_ponderado": 0.5,
- "prismadata__commercial_cluster__trecho_11_tipo_via": "SERVICO",
- "prismadata__commercial_cluster__trecho_11_trecho_hash": "a15b029a6c4c",
- "prismadata__commercial_cluster__trecho_12_buffer_m": 5,
- "prismadata__commercial_cluster__trecho_12_densidade_linear_km": 0,
- "prismadata__commercial_cluster__trecho_12_extensao_m": 95.1,
- "prismadata__commercial_cluster__trecho_12_logradouro": "Rua Plínio Figueiredo",
- "prismadata__commercial_cluster__trecho_12_n_esquinas": 2,
- "prismadata__commercial_cluster__trecho_12_qtd_pdvs": 0,
- "prismadata__commercial_cluster__trecho_12_rank_aglomeracao_score": 9377,
- "prismadata__commercial_cluster__trecho_12_rank_municipal_densidade": 21043,
- "prismadata__commercial_cluster__trecho_12_rank_municipal_score": 21043,
- "prismadata__commercial_cluster__trecho_12_rank_nacional_densidade": 95187,
- "prismadata__commercial_cluster__trecho_12_rank_nacional_score": 95187,
- "prismadata__commercial_cluster__trecho_12_rank_uf_densidade": 38601,
- "prismadata__commercial_cluster__trecho_12_rank_uf_score": 38601,
- "prismadata__commercial_cluster__trecho_12_score_ponderado": 0,
- "prismadata__commercial_cluster__trecho_12_tipo_via": "RESIDENCIAL",
- "prismadata__commercial_cluster__trecho_12_trecho_hash": "238d050842cd",
- "prismadata__commercial_cluster__trecho_13_buffer_m": 6.8,
- "prismadata__commercial_cluster__trecho_13_densidade_linear_km": 0,
- "prismadata__commercial_cluster__trecho_13_extensao_m": 68.3,
- "prismadata__commercial_cluster__trecho_13_logradouro": "Rua Professor Otávio Mendes",
- "prismadata__commercial_cluster__trecho_13_n_esquinas": 0,
- "prismadata__commercial_cluster__trecho_13_qtd_pdvs": 0,
- "prismadata__commercial_cluster__trecho_13_rank_aglomeracao_score": 9377,
- "prismadata__commercial_cluster__trecho_13_rank_municipal_densidade": 21043,
- "prismadata__commercial_cluster__trecho_13_rank_municipal_score": 21043,
- "prismadata__commercial_cluster__trecho_13_rank_nacional_densidade": 95187,
- "prismadata__commercial_cluster__trecho_13_rank_nacional_score": 95187,
- "prismadata__commercial_cluster__trecho_13_rank_uf_densidade": 38601,
- "prismadata__commercial_cluster__trecho_13_rank_uf_score": 38601,
- "prismadata__commercial_cluster__trecho_13_score_ponderado": 0,
- "prismadata__commercial_cluster__trecho_13_tipo_via": "RESIDENCIAL",
- "prismadata__commercial_cluster__trecho_13_trecho_hash": "77bdc3d54061",
- "prismadata__commercial_cluster__trecho_14_buffer_m": 5,
- "prismadata__commercial_cluster__trecho_14_densidade_linear_km": 0,
- "prismadata__commercial_cluster__trecho_14_extensao_m": 129.9,
- "prismadata__commercial_cluster__trecho_14_logradouro": "Praça Geremia Lunardelli",
- "prismadata__commercial_cluster__trecho_14_n_esquinas": 14,
- "prismadata__commercial_cluster__trecho_14_qtd_pdvs": 0,
- "prismadata__commercial_cluster__trecho_14_rank_aglomeracao_score": 9377,
- "prismadata__commercial_cluster__trecho_14_rank_municipal_densidade": 21043,
- "prismadata__commercial_cluster__trecho_14_rank_municipal_score": 21043,
- "prismadata__commercial_cluster__trecho_14_rank_nacional_densidade": 95187,
- "prismadata__commercial_cluster__trecho_14_rank_nacional_score": 95187,
- "prismadata__commercial_cluster__trecho_14_rank_uf_densidade": 38601,
- "prismadata__commercial_cluster__trecho_14_rank_uf_score": 38601,
- "prismadata__commercial_cluster__trecho_14_score_ponderado": 0,
- "prismadata__commercial_cluster__trecho_14_tipo_via": "RESIDENCIAL",
- "prismadata__commercial_cluster__trecho_14_trecho_hash": "f87d4661e241",
- "prismadata__commercial_cluster__trecho_15_buffer_m": 5,
- "prismadata__commercial_cluster__trecho_15_densidade_linear_km": 0,
- "prismadata__commercial_cluster__trecho_15_extensao_m": 41.5,
- "prismadata__commercial_cluster__trecho_15_logradouro": "way_1465985324",
- "prismadata__commercial_cluster__trecho_15_n_esquinas": 0,
- "prismadata__commercial_cluster__trecho_15_qtd_pdvs": 0,
- "prismadata__commercial_cluster__trecho_15_rank_aglomeracao_score": 9377,
- "prismadata__commercial_cluster__trecho_15_rank_municipal_densidade": 21043,
- "prismadata__commercial_cluster__trecho_15_rank_municipal_score": 21043,
- "prismadata__commercial_cluster__trecho_15_rank_nacional_densidade": 95187,
- "prismadata__commercial_cluster__trecho_15_rank_nacional_score": 95187,
- "prismadata__commercial_cluster__trecho_15_rank_uf_densidade": 38601,
- "prismadata__commercial_cluster__trecho_15_rank_uf_score": 38601,
- "prismadata__commercial_cluster__trecho_15_score_ponderado": 0,
- "prismadata__commercial_cluster__trecho_15_tipo_via": "SERVICO",
- "prismadata__commercial_cluster__trecho_15_trecho_hash": "7a12bd460bbb",
- "prismadata__commercial_cluster__trecho_16_buffer_m": 5,
- "prismadata__commercial_cluster__trecho_16_densidade_linear_km": 0,
- "prismadata__commercial_cluster__trecho_16_extensao_m": 26.7,
- "prismadata__commercial_cluster__trecho_16_logradouro": "way_1466733485",
- "prismadata__commercial_cluster__trecho_16_n_esquinas": 2,
- "prismadata__commercial_cluster__trecho_16_qtd_pdvs": 0,
- "prismadata__commercial_cluster__trecho_16_rank_aglomeracao_score": 9377,
- "prismadata__commercial_cluster__trecho_16_rank_municipal_densidade": 21043,
- "prismadata__commercial_cluster__trecho_16_rank_municipal_score": 21043,
- "prismadata__commercial_cluster__trecho_16_rank_nacional_densidade": 95187,
- "prismadata__commercial_cluster__trecho_16_rank_nacional_score": 95187,
- "prismadata__commercial_cluster__trecho_16_rank_uf_densidade": 38601,
- "prismadata__commercial_cluster__trecho_16_rank_uf_score": 38601,
- "prismadata__commercial_cluster__trecho_16_score_ponderado": 0,
- "prismadata__commercial_cluster__trecho_16_tipo_via": "SERVICO",
- "prismadata__commercial_cluster__trecho_16_trecho_hash": "4c463d557efb",
- "prismadata__commercial_cluster__trecho_17_buffer_m": 5,
- "prismadata__commercial_cluster__trecho_17_densidade_linear_km": 0,
- "prismadata__commercial_cluster__trecho_17_extensao_m": 25.4,
- "prismadata__commercial_cluster__trecho_17_logradouro": "way_1466733493",
- "prismadata__commercial_cluster__trecho_17_n_esquinas": 1,
- "prismadata__commercial_cluster__trecho_17_qtd_pdvs": 0,
- "prismadata__commercial_cluster__trecho_17_rank_aglomeracao_score": 9377,
- "prismadata__commercial_cluster__trecho_17_rank_municipal_densidade": 21043,
- "prismadata__commercial_cluster__trecho_17_rank_municipal_score": 21043,
- "prismadata__commercial_cluster__trecho_17_rank_nacional_densidade": 95187,
- "prismadata__commercial_cluster__trecho_17_rank_nacional_score": 95187,
- "prismadata__commercial_cluster__trecho_17_rank_uf_densidade": 38601,
- "prismadata__commercial_cluster__trecho_17_rank_uf_score": 38601,
- "prismadata__commercial_cluster__trecho_17_score_ponderado": 0,
- "prismadata__commercial_cluster__trecho_17_tipo_via": "SERVICO",
- "prismadata__commercial_cluster__trecho_17_trecho_hash": "08fcadd87168",
- "prismadata__commercial_cluster__trecho_18_buffer_m": 5,
- "prismadata__commercial_cluster__trecho_18_densidade_linear_km": 0,
- "prismadata__commercial_cluster__trecho_18_extensao_m": 55.4,
- "prismadata__commercial_cluster__trecho_18_logradouro": "way_1466827493",
- "prismadata__commercial_cluster__trecho_18_n_esquinas": 1,
- "prismadata__commercial_cluster__trecho_18_qtd_pdvs": 0,
- "prismadata__commercial_cluster__trecho_18_rank_aglomeracao_score": 9377,
- "prismadata__commercial_cluster__trecho_18_rank_municipal_densidade": 21043,
- "prismadata__commercial_cluster__trecho_18_rank_municipal_score": 21043,
- "prismadata__commercial_cluster__trecho_18_rank_nacional_densidade": 95187,
- "prismadata__commercial_cluster__trecho_18_rank_nacional_score": 95187,
- "prismadata__commercial_cluster__trecho_18_rank_uf_densidade": 38601,
- "prismadata__commercial_cluster__trecho_18_rank_uf_score": 38601,
- "prismadata__commercial_cluster__trecho_18_score_ponderado": 0,
- "prismadata__commercial_cluster__trecho_18_tipo_via": "SERVICO",
- "prismadata__commercial_cluster__trecho_18_trecho_hash": "6f7342fe610b",
- "prismadata__commercial_cluster__trecho_19_buffer_m": 6.8,
- "prismadata__commercial_cluster__trecho_19_densidade_linear_km": 0,
- "prismadata__commercial_cluster__trecho_19_extensao_m": 139.6,
- "prismadata__commercial_cluster__trecho_19_logradouro": "Alameda Casa Branca",
- "prismadata__commercial_cluster__trecho_19_n_esquinas": 2,
- "prismadata__commercial_cluster__trecho_19_qtd_pdvs": 0,
- "prismadata__commercial_cluster__trecho_19_rank_aglomeracao_score": 9377,
- "prismadata__commercial_cluster__trecho_19_rank_municipal_densidade": 21043,
- "prismadata__commercial_cluster__trecho_19_rank_municipal_score": 21043,
- "prismadata__commercial_cluster__trecho_19_rank_nacional_densidade": 95187,
- "prismadata__commercial_cluster__trecho_19_rank_nacional_score": 95187,
- "prismadata__commercial_cluster__trecho_19_rank_uf_densidade": 38601,
- "prismadata__commercial_cluster__trecho_19_rank_uf_score": 38601,
- "prismadata__commercial_cluster__trecho_19_score_ponderado": 0,
- "prismadata__commercial_cluster__trecho_19_tipo_via": "RESIDENCIAL",
- "prismadata__commercial_cluster__trecho_19_trecho_hash": "246e48b2f8a5",
- "prismadata__commercial_cluster__trecho_1_buffer_m": 8.5,
- "prismadata__commercial_cluster__trecho_1_densidade_linear_km": 5389.2,
- "prismadata__commercial_cluster__trecho_1_extensao_m": 874.9,
- "prismadata__commercial_cluster__trecho_1_logradouro": "Avenida Paulista",
- "prismadata__commercial_cluster__trecho_1_n_esquinas": 17,
- "prismadata__commercial_cluster__trecho_1_num_final": 2537,
- "prismadata__commercial_cluster__trecho_1_num_inicial": 26,
- "prismadata__commercial_cluster__trecho_1_qtd_pdvs": 4715,
- "prismadata__commercial_cluster__trecho_1_rank_aglomeracao_score": 1,
- "prismadata__commercial_cluster__trecho_1_rank_municipal_densidade": 8,
- "prismadata__commercial_cluster__trecho_1_rank_municipal_score": 1,
- "prismadata__commercial_cluster__trecho_1_rank_nacional_densidade": 29,
- "prismadata__commercial_cluster__trecho_1_rank_nacional_score": 1,
- "prismadata__commercial_cluster__trecho_1_rank_uf_densidade": 11,
- "prismadata__commercial_cluster__trecho_1_rank_uf_score": 1,
- "prismadata__commercial_cluster__trecho_1_score_ponderado": 5888.5,
- "prismadata__commercial_cluster__trecho_1_tipo_via": "AVENIDA",
- "prismadata__commercial_cluster__trecho_1_trecho_hash": "1ce5243bd241",
- "prismadata__commercial_cluster__trecho_20_buffer_m": 5,
- "prismadata__commercial_cluster__trecho_20_densidade_linear_km": 0,
- "prismadata__commercial_cluster__trecho_20_extensao_m": 271.3,
- "prismadata__commercial_cluster__trecho_20_logradouro": "Passagem Subterrânea Daher Elias Cutait",
- "prismadata__commercial_cluster__trecho_20_n_esquinas": 1,
- "prismadata__commercial_cluster__trecho_20_qtd_pdvs": 0,
- "prismadata__commercial_cluster__trecho_20_rank_aglomeracao_score": 9377,
- "prismadata__commercial_cluster__trecho_20_rank_municipal_densidade": 21043,
- "prismadata__commercial_cluster__trecho_20_rank_municipal_score": 21043,
- "prismadata__commercial_cluster__trecho_20_rank_nacional_densidade": 95187,
- "prismadata__commercial_cluster__trecho_20_rank_nacional_score": 95187,
- "prismadata__commercial_cluster__trecho_20_rank_uf_densidade": 38601,
- "prismadata__commercial_cluster__trecho_20_rank_uf_score": 38601,
- "prismadata__commercial_cluster__trecho_20_score_ponderado": 0,
- "prismadata__commercial_cluster__trecho_20_tipo_via": "AVENIDA",
- "prismadata__commercial_cluster__trecho_20_trecho_hash": "c4caea4ffc9d",
- "prismadata__commercial_cluster__trecho_21_buffer_m": 6.8,
- "prismadata__commercial_cluster__trecho_21_densidade_linear_km": 0,
- "prismadata__commercial_cluster__trecho_21_extensao_m": 26.6,
- "prismadata__commercial_cluster__trecho_21_logradouro": "Rua São Carlos do Pinhal",
- "prismadata__commercial_cluster__trecho_21_n_esquinas": 0,
- "prismadata__commercial_cluster__trecho_21_qtd_pdvs": 0,
- "prismadata__commercial_cluster__trecho_21_rank_aglomeracao_score": 9377,
- "prismadata__commercial_cluster__trecho_21_rank_municipal_densidade": 21043,
- "prismadata__commercial_cluster__trecho_21_rank_municipal_score": 21043,
- "prismadata__commercial_cluster__trecho_21_rank_nacional_densidade": 95187,
- "prismadata__commercial_cluster__trecho_21_rank_nacional_score": 95187,
- "prismadata__commercial_cluster__trecho_21_rank_uf_densidade": 38601,
- "prismadata__commercial_cluster__trecho_21_rank_uf_score": 38601,
- "prismadata__commercial_cluster__trecho_21_score_ponderado": 0,
- "prismadata__commercial_cluster__trecho_21_tipo_via": "RUA",
- "prismadata__commercial_cluster__trecho_21_trecho_hash": "8c5f545fedc9",
- "prismadata__commercial_cluster__trecho_22_buffer_m": 5,
- "prismadata__commercial_cluster__trecho_22_densidade_linear_km": 0,
- "prismadata__commercial_cluster__trecho_22_extensao_m": 38.2,
- "prismadata__commercial_cluster__trecho_22_logradouro": "Rua Engenheiro Monlevade",
- "prismadata__commercial_cluster__trecho_22_n_esquinas": 0,
- "prismadata__commercial_cluster__trecho_22_qtd_pdvs": 0,
- "prismadata__commercial_cluster__trecho_22_rank_aglomeracao_score": 9377,
- "prismadata__commercial_cluster__trecho_22_rank_municipal_densidade": 21043,
- "prismadata__commercial_cluster__trecho_22_rank_municipal_score": 21043,
- "prismadata__commercial_cluster__trecho_22_rank_nacional_densidade": 95187,
- "prismadata__commercial_cluster__trecho_22_rank_nacional_score": 95187,
- "prismadata__commercial_cluster__trecho_22_rank_uf_densidade": 38601,
- "prismadata__commercial_cluster__trecho_22_rank_uf_score": 38601,
- "prismadata__commercial_cluster__trecho_22_score_ponderado": 0,
- "prismadata__commercial_cluster__trecho_22_tipo_via": "RESIDENCIAL",
- "prismadata__commercial_cluster__trecho_22_trecho_hash": "20a7799a828a",
- "prismadata__commercial_cluster__trecho_23_buffer_m": 5,
- "prismadata__commercial_cluster__trecho_23_densidade_linear_km": 0,
- "prismadata__commercial_cluster__trecho_23_extensao_m": 62.2,
- "prismadata__commercial_cluster__trecho_23_logradouro": "Rua Itapeva",
- "prismadata__commercial_cluster__trecho_23_n_esquinas": 1,
- "prismadata__commercial_cluster__trecho_23_qtd_pdvs": 0,
- "prismadata__commercial_cluster__trecho_23_rank_aglomeracao_score": 9377,
- "prismadata__commercial_cluster__trecho_23_rank_municipal_densidade": 21043,
- "prismadata__commercial_cluster__trecho_23_rank_municipal_score": 21043,
- "prismadata__commercial_cluster__trecho_23_rank_nacional_densidade": 95187,
- "prismadata__commercial_cluster__trecho_23_rank_nacional_score": 95187,
- "prismadata__commercial_cluster__trecho_23_rank_uf_densidade": 38601,
- "prismadata__commercial_cluster__trecho_23_rank_uf_score": 38601,
- "prismadata__commercial_cluster__trecho_23_score_ponderado": 0,
- "prismadata__commercial_cluster__trecho_23_tipo_via": "RUA",
- "prismadata__commercial_cluster__trecho_23_trecho_hash": "c81546674c2d",
- "prismadata__commercial_cluster__trecho_2_buffer_m": 6.8,
- "prismadata__commercial_cluster__trecho_2_densidade_linear_km": 2023.5,
- "prismadata__commercial_cluster__trecho_2_extensao_m": 161.6,
- "prismadata__commercial_cluster__trecho_2_logradouro": "Alameda Ministro Rocha Azevedo",
- "prismadata__commercial_cluster__trecho_2_n_esquinas": 2,
- "prismadata__commercial_cluster__trecho_2_num_final": 1765,
- "prismadata__commercial_cluster__trecho_2_num_inicial": 596,
- "prismadata__commercial_cluster__trecho_2_qtd_pdvs": 327,
- "prismadata__commercial_cluster__trecho_2_rank_aglomeracao_score": 90,
- "prismadata__commercial_cluster__trecho_2_rank_municipal_densidade": 41,
- "prismadata__commercial_cluster__trecho_2_rank_municipal_score": 67,
- "prismadata__commercial_cluster__trecho_2_rank_nacional_densidade": 165,
- "prismadata__commercial_cluster__trecho_2_rank_nacional_score": 265,
- "prismadata__commercial_cluster__trecho_2_rank_uf_densidade": 62,
- "prismadata__commercial_cluster__trecho_2_rank_uf_score": 96,
- "prismadata__commercial_cluster__trecho_2_score_ponderado": 414.2,
- "prismadata__commercial_cluster__trecho_2_tipo_via": "RESIDENCIAL",
- "prismadata__commercial_cluster__trecho_2_trecho_hash": "32c019655747",
- "prismadata__commercial_cluster__trecho_3_buffer_m": 6.8,
- "prismadata__commercial_cluster__trecho_3_densidade_linear_km": 67.7,
- "prismadata__commercial_cluster__trecho_3_extensao_m": 236.4,
- "prismadata__commercial_cluster__trecho_3_logradouro": "Rua Peixoto Gomide",
- "prismadata__commercial_cluster__trecho_3_n_esquinas": 6,
- "prismadata__commercial_cluster__trecho_3_num_final": 870,
- "prismadata__commercial_cluster__trecho_3_num_inicial": 281,
- "prismadata__commercial_cluster__trecho_3_qtd_pdvs": 16,
- "prismadata__commercial_cluster__trecho_3_rank_aglomeracao_score": 3467,
- "prismadata__commercial_cluster__trecho_3_rank_municipal_densidade": 7909,
- "prismadata__commercial_cluster__trecho_3_rank_municipal_score": 4307,
- "prismadata__commercial_cluster__trecho_3_rank_nacional_densidade": 36931,
- "prismadata__commercial_cluster__trecho_3_rank_nacional_score": 23456,
- "prismadata__commercial_cluster__trecho_3_rank_uf_densidade": 14123,
- "prismadata__commercial_cluster__trecho_3_rank_uf_score": 8420,
- "prismadata__commercial_cluster__trecho_3_score_ponderado": 26.8,
- "prismadata__commercial_cluster__trecho_3_tipo_via": "RESIDENCIAL",
- "prismadata__commercial_cluster__trecho_3_trecho_hash": "fcfdd802d82d",
- "prismadata__commercial_cluster__trecho_4_buffer_m": 5,
- "prismadata__commercial_cluster__trecho_4_densidade_linear_km": 86.9,
- "prismadata__commercial_cluster__trecho_4_extensao_m": 161.1,
- "prismadata__commercial_cluster__trecho_4_logradouro": "Rua Carlos Comenale",
- "prismadata__commercial_cluster__trecho_4_n_esquinas": 1,
- "prismadata__commercial_cluster__trecho_4_num_final": 1688,
- "prismadata__commercial_cluster__trecho_4_num_inicial": 239,
- "prismadata__commercial_cluster__trecho_4_qtd_pdvs": 14,
- "prismadata__commercial_cluster__trecho_4_rank_aglomeracao_score": 4162,
- "prismadata__commercial_cluster__trecho_4_rank_municipal_densidade": 5578,
- "prismadata__commercial_cluster__trecho_4_rank_municipal_score": 5970,
- "prismadata__commercial_cluster__trecho_4_rank_nacional_densidade": 27576,
- "prismadata__commercial_cluster__trecho_4_rank_nacional_score": 30989,
- "prismadata__commercial_cluster__trecho_4_rank_uf_densidade": 9974,
- "prismadata__commercial_cluster__trecho_4_rank_uf_score": 11536,
- "prismadata__commercial_cluster__trecho_4_score_ponderado": 19,
- "prismadata__commercial_cluster__trecho_4_tipo_via": "RESIDENCIAL",
- "prismadata__commercial_cluster__trecho_4_trecho_hash": "c0fb825aff16",
- "prismadata__commercial_cluster__trecho_5_buffer_m": 5,
- "prismadata__commercial_cluster__trecho_5_densidade_linear_km": 464.1,
- "prismadata__commercial_cluster__trecho_5_extensao_m": 23.7,
- "prismadata__commercial_cluster__trecho_5_logradouro": "way_1466827845",
- "prismadata__commercial_cluster__trecho_5_n_esquinas": 1,
- "prismadata__commercial_cluster__trecho_5_num_final": 1347,
- "prismadata__commercial_cluster__trecho_5_num_inicial": 674,
- "prismadata__commercial_cluster__trecho_5_qtd_pdvs": 11,
- "prismadata__commercial_cluster__trecho_5_rank_aglomeracao_score": 4227,
- "prismadata__commercial_cluster__trecho_5_rank_municipal_densidade": 272,
- "prismadata__commercial_cluster__trecho_5_rank_municipal_score": 6085,
- "prismadata__commercial_cluster__trecho_5_rank_nacional_densidade": 1771,
- "prismadata__commercial_cluster__trecho_5_rank_nacional_score": 31509,
- "prismadata__commercial_cluster__trecho_5_rank_uf_densidade": 464,
- "prismadata__commercial_cluster__trecho_5_rank_uf_score": 11748,
- "prismadata__commercial_cluster__trecho_5_score_ponderado": 18.8,
- "prismadata__commercial_cluster__trecho_5_tipo_via": "SERVICO",
- "prismadata__commercial_cluster__trecho_5_trecho_hash": "857b220d77f1",
- "prismadata__commercial_cluster__trecho_6_buffer_m": 6.8,
- "prismadata__commercial_cluster__trecho_6_densidade_linear_km": 117,
- "prismadata__commercial_cluster__trecho_6_extensao_m": 136.7,
- "prismadata__commercial_cluster__trecho_6_logradouro": "Alameda Santos",
- "prismadata__commercial_cluster__trecho_6_n_esquinas": 6,
- "prismadata__commercial_cluster__trecho_6_num_final": 1482,
- "prismadata__commercial_cluster__trecho_6_num_inicial": 1398,
- "prismadata__commercial_cluster__trecho_6_qtd_pdvs": 16,
- "prismadata__commercial_cluster__trecho_6_rank_aglomeracao_score": 4984,
- "prismadata__commercial_cluster__trecho_6_rank_municipal_densidade": 3397,
- "prismadata__commercial_cluster__trecho_6_rank_municipal_score": 8092,
- "prismadata__commercial_cluster__trecho_6_rank_nacional_densidade": 18295,
- "prismadata__commercial_cluster__trecho_6_rank_nacional_score": 40480,
- "prismadata__commercial_cluster__trecho_6_rank_uf_densidade": 6056,
- "prismadata__commercial_cluster__trecho_6_rank_uf_score": 15482,
- "prismadata__commercial_cluster__trecho_6_score_ponderado": 13,
- "prismadata__commercial_cluster__trecho_6_tipo_via": "RUA",
- "prismadata__commercial_cluster__trecho_6_trecho_hash": "729ba961b8e5",
- "prismadata__commercial_cluster__trecho_7_buffer_m": 5,
- "prismadata__commercial_cluster__trecho_7_densidade_linear_km": 299.1,
- "prismadata__commercial_cluster__trecho_7_extensao_m": 23.4,
- "prismadata__commercial_cluster__trecho_7_logradouro": "Alameda Rio Claro",
- "prismadata__commercial_cluster__trecho_7_n_esquinas": 0,
- "prismadata__commercial_cluster__trecho_7_num_final": 1324,
- "prismadata__commercial_cluster__trecho_7_num_inicial": 1313,
- "prismadata__commercial_cluster__trecho_7_qtd_pdvs": 7,
- "prismadata__commercial_cluster__trecho_7_rank_aglomeracao_score": 5687,
- "prismadata__commercial_cluster__trecho_7_rank_municipal_densidade": 553,
- "prismadata__commercial_cluster__trecho_7_rank_municipal_score": 10053,
- "prismadata__commercial_cluster__trecho_7_rank_nacional_densidade": 3653,
- "prismadata__commercial_cluster__trecho_7_rank_nacional_score": 48902,
- "prismadata__commercial_cluster__trecho_7_rank_uf_densidade": 965,
- "prismadata__commercial_cluster__trecho_7_rank_uf_score": 19023,
- "prismadata__commercial_cluster__trecho_7_score_ponderado": 9.5,
- "prismadata__commercial_cluster__trecho_7_tipo_via": "PEDESTRE",
- "prismadata__commercial_cluster__trecho_7_trecho_hash": "d64e679d7b7b",
- "prismadata__commercial_cluster__trecho_8_buffer_m": 5,
- "prismadata__commercial_cluster__trecho_8_densidade_linear_km": 243.9,
- "prismadata__commercial_cluster__trecho_8_extensao_m": 32.8,
- "prismadata__commercial_cluster__trecho_8_logradouro": "way_1466877126",
- "prismadata__commercial_cluster__trecho_8_n_esquinas": 1,
- "prismadata__commercial_cluster__trecho_8_num_final": 1776,
- "prismadata__commercial_cluster__trecho_8_num_inicial": 1771,
- "prismadata__commercial_cluster__trecho_8_qtd_pdvs": 8,
- "prismadata__commercial_cluster__trecho_8_rank_aglomeracao_score": 6005,
- "prismadata__commercial_cluster__trecho_8_rank_municipal_densidade": 820,
- "prismadata__commercial_cluster__trecho_8_rank_municipal_score": 11029,
- "prismadata__commercial_cluster__trecho_8_rank_nacional_densidade": 5175,
- "prismadata__commercial_cluster__trecho_8_rank_nacional_score": 52978,
- "prismadata__commercial_cluster__trecho_8_rank_uf_densidade": 1392,
- "prismadata__commercial_cluster__trecho_8_rank_uf_score": 20774,
- "prismadata__commercial_cluster__trecho_8_score_ponderado": 8.2,
- "prismadata__commercial_cluster__trecho_8_tipo_via": "SERVICO",
- "prismadata__commercial_cluster__trecho_8_trecho_hash": "3f0935708477",
- "prismadata__commercial_cluster__trecho_9_buffer_m": 5,
- "prismadata__commercial_cluster__trecho_9_densidade_linear_km": 3.6,
- "prismadata__commercial_cluster__trecho_9_extensao_m": 274.1,
- "prismadata__commercial_cluster__trecho_9_logradouro": "Avenida Nove de Julho",
- "prismadata__commercial_cluster__trecho_9_n_esquinas": 0,
- "prismadata__commercial_cluster__trecho_9_qtd_pdvs": 1,
- "prismadata__commercial_cluster__trecho_9_rank_aglomeracao_score": 8265,
- "prismadata__commercial_cluster__trecho_9_rank_municipal_densidade": 21032,
- "prismadata__commercial_cluster__trecho_9_rank_municipal_score": 17604,
- "prismadata__commercial_cluster__trecho_9_rank_nacional_densidade": 95034,
- "prismadata__commercial_cluster__trecho_9_rank_nacional_score": 80972,
- "prismadata__commercial_cluster__trecho_9_rank_uf_densidade": 38567,
- "prismadata__commercial_cluster__trecho_9_rank_uf_score": 32570,
- "prismadata__commercial_cluster__trecho_9_score_ponderado": 2,
- "prismadata__commercial_cluster__trecho_9_tipo_via": "AVENIDA",
- "prismadata__commercial_cluster__trecho_9_trecho_hash": "5760208c3125",
- "prismadata__commercial_cluster__uf": "SP",
- "prismadata__commercial_cluster__vocacao": "Diversificada"
}Retorna trecho(s) de rua mais proximo(s) de um ponto.
| lat required | number (Lat) ( -90 .. 90 ) |
| lng required | number (Lng) ( -180 .. 180 ) |
| top_n | integer (Top N) [ 1 .. 10 ] Default: 1 |
| raio_m | number (Raio M) ( 0 .. 5000 ] Default: 200 |
| incluir_aglomeracao | boolean (Incluir Aglomeracao) Default: true |
Versao Dados (string) or Versao Dados (null) (Versao Dados) | |
| flat | boolean (Flat) Default: false |
curl "https://api.prismadata.io/v1/location/commercial_cluster/street?lat=-25.5&lng=-25.5" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__commercial_cluster__aglomeracao_hash": "5ebd0eb4f6b4",
- "prismadata__commercial_cluster__area_ha": 10.11,
- "prismadata__commercial_cluster__centroide_lat": -23.561411,
- "prismadata__commercial_cluster__centroide_lng": -46.656262,
- "prismadata__commercial_cluster__concentracao": "Densa",
- "prismadata__commercial_cluster__densidade_pdvs_km2": 50625.8,
- "prismadata__commercial_cluster__faixa_renda": "Luxo",
- "prismadata__commercial_cluster__municipio": "SAO PAULO",
- "prismadata__commercial_cluster__nome_aglomeracao": "Avenida Paulista / Alameda Ministro Rocha Azevedo - SAO PAULO/SP",
- "prismadata__commercial_cluster__nome_segmento": "Grande, Densa, Luxo de Diversificada",
- "prismadata__commercial_cluster__pct_alimentacao": 8.8,
- "prismadata__commercial_cluster__pct_alojamento": 0.6,
- "prismadata__commercial_cluster__pct_automotivo": 5.3,
- "prismadata__commercial_cluster__pct_combustiveis": 0.1,
- "prismadata__commercial_cluster__pct_construcao": 4.2,
- "prismadata__commercial_cluster__pct_eletronicos": 16.4,
- "prismadata__commercial_cluster__pct_entretenimento": 6.4,
- "prismadata__commercial_cluster__pct_moda": 10.9,
- "prismadata__commercial_cluster__pct_moveis": 9.2,
- "prismadata__commercial_cluster__pct_saude": 4.9,
- "prismadata__commercial_cluster__pct_supermercado": 0.8,
- "prismadata__commercial_cluster__pct_varejo_geral": 12.6,
- "prismadata__commercial_cluster__percentil_br_renda": 99.3,
- "prismadata__commercial_cluster__porte": "Grande",
- "prismadata__commercial_cluster__qtd_pdvs": 5117,
- "prismadata__commercial_cluster__rank_municipal_densidade": 8,
- "prismadata__commercial_cluster__rank_municipal_pdvs": 1,
- "prismadata__commercial_cluster__rank_municipal_score": 1,
- "prismadata__commercial_cluster__rank_nacional_densidade": 154,
- "prismadata__commercial_cluster__rank_nacional_pdvs": 1,
- "prismadata__commercial_cluster__rank_nacional_score": 1,
- "prismadata__commercial_cluster__rank_uf_densidade": 23,
- "prismadata__commercial_cluster__rank_uf_pdvs": 1,
- "prismadata__commercial_cluster__rank_uf_score": 1,
- "prismadata__commercial_cluster__renda_mediana": 8503.98,
- "prismadata__commercial_cluster__score_ponderado": 6402.5,
- "prismadata__commercial_cluster__trecho_aglomeracao_hash": "5ebd0eb4f6b4",
- "prismadata__commercial_cluster__trecho_buffer_m": 5,
- "prismadata__commercial_cluster__trecho_densidade_linear_km": 0,
- "prismadata__commercial_cluster__trecho_distancia_m": 5.47013445,
- "prismadata__commercial_cluster__trecho_extensao_m": 271.3,
- "prismadata__commercial_cluster__trecho_hash": "c4caea4ffc9d",
- "prismadata__commercial_cluster__trecho_logradouro": "Passagem Subterrânea Daher Elias Cutait",
- "prismadata__commercial_cluster__trecho_n_esquinas": 1,
- "prismadata__commercial_cluster__trecho_qtd_pdvs": 0,
- "prismadata__commercial_cluster__trecho_rank_aglomeracao_score": 9377,
- "prismadata__commercial_cluster__trecho_rank_municipal_densidade": 21043,
- "prismadata__commercial_cluster__trecho_rank_municipal_score": 21043,
- "prismadata__commercial_cluster__trecho_rank_nacional_densidade": 95187,
- "prismadata__commercial_cluster__trecho_rank_nacional_score": 95187,
- "prismadata__commercial_cluster__trecho_rank_uf_densidade": 38601,
- "prismadata__commercial_cluster__trecho_rank_uf_score": 38601,
- "prismadata__commercial_cluster__trecho_score_ponderado": 0,
- "prismadata__commercial_cluster__trecho_tipo_via": "AVENIDA",
- "prismadata__commercial_cluster__uf": "SP",
- "prismadata__commercial_cluster__vocacao": "Diversificada"
}Busca aglomeracoes por filtros sem ponto geografico.
FiltrosSearch (object) or null | |
| ordenar_por | string (Ordenar Por) Default: "score_ponderado" |
| ordem | string (Ordem) ^(asc|desc)$ Default: "desc" |
| limite | integer (Limite) [ 1 .. 200 ] Default: 50 |
| offset | integer (Offset) >= 0 Default: 0 |
Versao Dados (string) or Versao Dados (null) (Versao Dados) |
{- "filtros": {
- "uf": [
- "string"
], - "municipio": [
- "string"
], - "vocacao": { },
- "porte": [
- "string"
], - "faixa_renda": [
- "string"
], - "qtd_pdvs_min": 0,
- "qtd_pdvs_max": 0,
- "score_min": 0,
- "score_max": 0,
- "bbox": {
- "min_lat": 0,
- "min_lng": 0,
- "max_lat": 0,
- "max_lng": 0
}
}, - "ordenar_por": "score_ponderado",
- "ordem": "desc",
- "limite": 50,
- "offset": 0,
- "versao_dados": "string"
}{- "prismadata__commercial_cluster__aglomeracoes": [
- {
- "aglomeracao_hash": "5ebd0eb4f6b4",
- "area_ha": 10.11,
- "centroide_lat": -23.561411,
- "centroide_lng": -46.656262,
- "concentracao": "Densa",
- "densidade_pdvs_km2": 50625.8,
- "faixa_renda": "Luxo",
- "municipio": "SAO PAULO",
- "nome_aglomeracao": "Avenida Paulista / Alameda Ministro Rocha Azevedo - SAO PAULO/SP",
- "nome_segmento": "Grande, Densa, Luxo de Diversificada",
- "pct_alimentacao": 8.8,
- "pct_alojamento": 0.6,
- "pct_automotivo": 5.3,
- "pct_combustiveis": 0.1,
- "pct_construcao": 4.2,
- "pct_eletronicos": 16.4,
- "pct_entretenimento": 6.4,
- "pct_moda": 10.9,
- "pct_moveis": 9.2,
- "pct_saude": 4.9,
- "pct_supermercado": 0.8,
- "pct_varejo_geral": 12.6,
- "percentil_br_renda": 99.3,
- "porte": "Grande",
- "qtd_pdvs": 5117,
- "rank_municipal_densidade": 8,
- "rank_municipal_pdvs": 1,
- "rank_municipal_score": 1,
- "rank_nacional_densidade": 154,
- "rank_nacional_pdvs": 1,
- "rank_nacional_score": 1,
- "rank_uf_densidade": 23,
- "rank_uf_pdvs": 1,
- "rank_uf_score": 1,
- "renda_mediana": 8503.98,
- "score_ponderado": 6402.5,
- "uf": "SP",
- "vocacao": "Diversificada"
}, - {
- "aglomeracao_hash": "5af6276cef95",
- "area_ha": 11.54,
- "centroide_lat": -23.536416,
- "centroide_lng": -46.621632,
- "concentracao": "Densa",
- "densidade_pdvs_km2": 25180.2,
- "faixa_renda": "Intermediária",
- "municipio": "SAO PAULO",
- "nome_aglomeracao": "Rua Monsenhor Andrade - SAO PAULO/SP",
- "nome_segmento": "Grande, Densa, Intermediária de Moda",
- "pct_alimentacao": 3.6,
- "pct_alojamento": 0.1,
- "pct_automotivo": 0.2,
- "pct_combustiveis": 0.1,
- "pct_construcao": 0.2,
- "pct_eletronicos": 2.6,
- "pct_entretenimento": 1.1,
- "pct_moda": 68.5,
- "pct_moveis": 3.6,
- "pct_saude": 2.6,
- "pct_supermercado": 0.3,
- "pct_varejo_geral": 4.7,
- "percentil_br_renda": 80.2,
- "porte": "Grande",
- "qtd_pdvs": 2907,
- "rank_municipal_densidade": 21,
- "rank_municipal_pdvs": 3,
- "rank_municipal_score": 2,
- "rank_nacional_densidade": 293,
- "rank_nacional_pdvs": 3,
- "rank_nacional_score": 2,
- "rank_uf_densidade": 50,
- "rank_uf_pdvs": 3,
- "rank_uf_score": 2,
- "renda_mediana": 2953.31,
- "score_ponderado": 5074.2,
- "uf": "SP",
- "vocacao": "Moda"
}, - {
- "aglomeracao_hash": "28c7176d5825",
- "area_ha": 12.26,
- "centroide_lat": -23.532758,
- "centroide_lng": -46.620947,
- "concentracao": "Densa",
- "densidade_pdvs_km2": 22409.9,
- "faixa_renda": "Econômica",
- "municipio": "SAO PAULO",
- "nome_aglomeracao": "Rua Tiers - SAO PAULO/SP",
- "nome_segmento": "Grande, Densa, Econômica de Moda",
- "pct_alimentacao": 3.2,
- "pct_alojamento": 0,
- "pct_automotivo": 0.2,
- "pct_combustiveis": 0,
- "pct_construcao": 0.1,
- "pct_eletronicos": 4.8,
- "pct_entretenimento": 1.4,
- "pct_moda": 64.7,
- "pct_moveis": 4.4,
- "pct_saude": 2.1,
- "pct_supermercado": 0,
- "pct_varejo_geral": 7.4,
- "percentil_br_renda": 70,
- "porte": "Grande",
- "qtd_pdvs": 2747,
- "rank_municipal_densidade": 23,
- "rank_municipal_pdvs": 5,
- "rank_municipal_score": 3,
- "rank_nacional_densidade": 329,
- "rank_nacional_pdvs": 5,
- "rank_nacional_score": 3,
- "rank_uf_densidade": 60,
- "rank_uf_pdvs": 5,
- "rank_uf_score": 3,
- "renda_mediana": 1715.8,
- "score_ponderado": 4873,
- "uf": "SP",
- "vocacao": "Moda"
}
], - "prismadata__commercial_cluster__limite": 3,
- "prismadata__commercial_cluster__offset": 0,
- "prismadata__commercial_cluster__total": 1263
}Top-N aglomeracoes por criterio e escopo.
| criterio | string (Criterio) ^(score|pdvs|densidade)$ Default: "score" |
| escopo | string (Escopo) ^(nacional|uf|municipio)$ Default: "nacional" |
| top_n | integer (Top N) [ 1 .. 500 ] Default: 50 |
Uf (string) or Uf (null) (Uf) | |
Municipio (string) or Municipio (null) (Municipio) | |
Vocacao (string) or Vocacao (null) (Vocacao) | |
Versao Dados (string) or Versao Dados (null) (Versao Dados) |
curl "https://api.prismadata.io/v1/location/commercial_cluster/ranking" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__commercial_cluster__criterio": "score",
- "prismadata__commercial_cluster__escopo": "nacional",
- "prismadata__commercial_cluster__ranking": [
- {
- "aglomeracao_hash": "5ebd0eb4f6b4",
- "area_ha": 10.11,
- "centroide_lat": -23.561411,
- "centroide_lng": -46.656262,
- "concentracao": "Densa",
- "densidade_pdvs_km2": 50625.8,
- "faixa_renda": "Luxo",
- "municipio": "SAO PAULO",
- "nome_aglomeracao": "Avenida Paulista / Alameda Ministro Rocha Azevedo - SAO PAULO/SP",
- "nome_segmento": "Grande, Densa, Luxo de Diversificada",
- "pct_alimentacao": 8.8,
- "pct_alojamento": 0.6,
- "pct_automotivo": 5.3,
- "pct_combustiveis": 0.1,
- "pct_construcao": 4.2,
- "pct_eletronicos": 16.4,
- "pct_entretenimento": 6.4,
- "pct_moda": 10.9,
- "pct_moveis": 9.2,
- "pct_saude": 4.9,
- "pct_supermercado": 0.8,
- "pct_varejo_geral": 12.6,
- "percentil_br_renda": 99.3,
- "porte": "Grande",
- "qtd_pdvs": 5117,
- "rank_municipal_densidade": 8,
- "rank_municipal_pdvs": 1,
- "rank_municipal_score": 1,
- "rank_nacional_densidade": 154,
- "rank_nacional_pdvs": 1,
- "rank_nacional_score": 1,
- "rank_uf_densidade": 23,
- "rank_uf_pdvs": 1,
- "rank_uf_score": 1,
- "renda_mediana": 8503.98,
- "score_ponderado": 6402.5,
- "uf": "SP",
- "vocacao": "Diversificada"
}, - {
- "aglomeracao_hash": "5af6276cef95",
- "area_ha": 11.54,
- "centroide_lat": -23.536416,
- "centroide_lng": -46.621632,
- "concentracao": "Densa",
- "densidade_pdvs_km2": 25180.2,
- "faixa_renda": "Intermediária",
- "municipio": "SAO PAULO",
- "nome_aglomeracao": "Rua Monsenhor Andrade - SAO PAULO/SP",
- "nome_segmento": "Grande, Densa, Intermediária de Moda",
- "pct_alimentacao": 3.6,
- "pct_alojamento": 0.1,
- "pct_automotivo": 0.2,
- "pct_combustiveis": 0.1,
- "pct_construcao": 0.2,
- "pct_eletronicos": 2.6,
- "pct_entretenimento": 1.1,
- "pct_moda": 68.5,
- "pct_moveis": 3.6,
- "pct_saude": 2.6,
- "pct_supermercado": 0.3,
- "pct_varejo_geral": 4.7,
- "percentil_br_renda": 80.2,
- "porte": "Grande",
- "qtd_pdvs": 2907,
- "rank_municipal_densidade": 21,
- "rank_municipal_pdvs": 3,
- "rank_municipal_score": 2,
- "rank_nacional_densidade": 293,
- "rank_nacional_pdvs": 3,
- "rank_nacional_score": 2,
- "rank_uf_densidade": 50,
- "rank_uf_pdvs": 3,
- "rank_uf_score": 2,
- "renda_mediana": 2953.31,
- "score_ponderado": 5074.2,
- "uf": "SP",
- "vocacao": "Moda"
}, - {
- "aglomeracao_hash": "28c7176d5825",
- "area_ha": 12.26,
- "centroide_lat": -23.532758,
- "centroide_lng": -46.620947,
- "concentracao": "Densa",
- "densidade_pdvs_km2": 22409.9,
- "faixa_renda": "Econômica",
- "municipio": "SAO PAULO",
- "nome_aglomeracao": "Rua Tiers - SAO PAULO/SP",
- "nome_segmento": "Grande, Densa, Econômica de Moda",
- "pct_alimentacao": 3.2,
- "pct_alojamento": 0,
- "pct_automotivo": 0.2,
- "pct_combustiveis": 0,
- "pct_construcao": 0.1,
- "pct_eletronicos": 4.8,
- "pct_entretenimento": 1.4,
- "pct_moda": 64.7,
- "pct_moveis": 4.4,
- "pct_saude": 2.1,
- "pct_supermercado": 0,
- "pct_varejo_geral": 7.4,
- "percentil_br_renda": 70,
- "porte": "Grande",
- "qtd_pdvs": 2747,
- "rank_municipal_densidade": 23,
- "rank_municipal_pdvs": 5,
- "rank_municipal_score": 3,
- "rank_nacional_densidade": 329,
- "rank_nacional_pdvs": 5,
- "rank_nacional_score": 3,
- "rank_uf_densidade": 60,
- "rank_uf_pdvs": 5,
- "rank_uf_score": 3,
- "renda_mediana": 1715.8,
- "score_ponderado": 4873,
- "uf": "SP",
- "vocacao": "Moda"
}, - {
- "aglomeracao_hash": "6a922aaf7134",
- "area_ha": 10.66,
- "centroide_lat": -23.543889,
- "centroide_lng": -46.632183,
- "concentracao": "Densa",
- "densidade_pdvs_km2": 32773,
- "faixa_renda": "Econômica",
- "municipio": "SAO PAULO",
- "nome_aglomeracao": "Rua Comendador Abdo Schahin - SAO PAULO/SP",
- "nome_segmento": "Grande, Densa, Econômica de Eletrônicos",
- "pct_alimentacao": 3.5,
- "pct_alojamento": 0,
- "pct_automotivo": 0.6,
- "pct_combustiveis": 0,
- "pct_construcao": 1.9,
- "pct_eletronicos": 30.2,
- "pct_entretenimento": 4,
- "pct_moda": 12.9,
- "pct_moveis": 6.4,
- "pct_saude": 4.6,
- "pct_supermercado": 0.3,
- "pct_varejo_geral": 13.8,
- "percentil_br_renda": 49.2,
- "porte": "Grande",
- "qtd_pdvs": 3493,
- "rank_municipal_densidade": 15,
- "rank_municipal_pdvs": 2,
- "rank_municipal_score": 4,
- "rank_nacional_densidade": 241,
- "rank_nacional_pdvs": 2,
- "rank_nacional_score": 4,
- "rank_uf_densidade": 42,
- "rank_uf_pdvs": 2,
- "rank_uf_score": 4,
- "renda_mediana": 1776.55,
- "score_ponderado": 4446.8,
- "uf": "SP",
- "vocacao": "Eletrônicos"
}, - {
- "aglomeracao_hash": "ce3e4de7bd67",
- "area_ha": 7.29,
- "centroide_lat": -23.539398,
- "centroide_lng": -46.619278,
- "concentracao": "Densa",
- "densidade_pdvs_km2": 28978.5,
- "faixa_renda": "Intermediária",
- "municipio": "SAO PAULO",
- "nome_aglomeracao": "Rua Barão de Ladário - SAO PAULO/SP",
- "nome_segmento": "Grande, Densa, Intermediária de Moda",
- "pct_alimentacao": 3.3,
- "pct_alojamento": 0.2,
- "pct_automotivo": 0.4,
- "pct_combustiveis": 0,
- "pct_construcao": 0.3,
- "pct_eletronicos": 3.3,
- "pct_entretenimento": 0.4,
- "pct_moda": 75,
- "pct_moveis": 3.1,
- "pct_saude": 1.7,
- "pct_supermercado": 0.4,
- "pct_varejo_geral": 3.3,
- "percentil_br_renda": 67.6,
- "porte": "Grande",
- "qtd_pdvs": 2113,
- "rank_municipal_densidade": 18,
- "rank_municipal_pdvs": 6,
- "rank_municipal_score": 5,
- "rank_nacional_densidade": 260,
- "rank_nacional_pdvs": 6,
- "rank_nacional_score": 5,
- "rank_uf_densidade": 46,
- "rank_uf_pdvs": 6,
- "rank_uf_score": 5,
- "renda_mediana": 2305.82,
- "score_ponderado": 3831.8,
- "uf": "SP",
- "vocacao": "Moda"
}
], - "prismadata__commercial_cluster__total_retornado": 5
}Endpoints do API Gateway (KrakenD) que agregam múltiplas APIs de localização em uma única chamada. Permite consultar informações de favelas, renda, fronteiras, presídios, setores censitários e aglomerações comerciais simultaneamente.
O agregador é útil quando você precisa de múltiplas informações sobre uma mesma coordenada geográfica, reduzindo o número de requisições necessárias.
As 4 variantes (single/batch × com/sem geocoder) aceitam o mesmo conjunto
de flags de habilitação. As variantes /geocoder/* apenas adicionam uma
etapa prévia de geocodificação a partir de endereço — depois encaminham
para a mesma lógica de agregação.
Endpoint que agrega múltiplas APIs de localização em uma única chamada.
Habilite os dados desejados através dos parâmetros booleanos:
slum=true: retorna informações de favelasinfosc=true: retorna informações do setor censitárioprison=true: retorna informações de presídiosborder=true: retorna informações de fronteiraspersonal_income_static=true: retorna renda estáticapersonal_income_pdf=true: retorna renda dinâmica (PDF)commercial_cluster=true: retorna informações de aglomerações comerciaisA resposta contém apenas os campos dos serviços habilitados.
| lat required | number (Lat) ( -90 .. 90 ) Example: lat=-19.932378368680315 Latitude do ponto de consulta. |
| lng required | number (Lng) ( -180 .. 180 ) Example: lng=-43.9351245162891 Longitude do ponto de consulta. |
| slum | boolean (Slum) Default: false Habilita retorno de informações de favelas (prismadata__slum__*). |
| infosc | boolean (InfoSC) Default: false Habilita retorno de informações do setor censitário (prismadata__infosc__*). |
| prison | boolean (Prison) Default: false Habilita retorno de informações de presídios (prismadata__prison__*). |
| border | boolean (Border) Default: false Habilita retorno de informações de fronteiras (prismadata__border__*). |
| personal_income_static | boolean (Personal Income Static) Default: false Habilita retorno de renda estática (prismadata__personal_income_static__*). |
| personal_income_pdf | boolean (Personal Income PDF) Default: false Habilita retorno de renda dinâmica (prismadata__personal_income_pdf__*). |
| commercial_cluster | boolean (Commercial Cluster) Default: false Habilita retorno de informações de aglomerações comerciais (prismadata__commercial_cluster__*). |
Date Income (string) or Date Income (null) (Date Income) Example: date_income=2025-01-25 Data para consulta de renda PDF (YYYY-MM-DD). Requer personal_income_pdf=true. | |
Gender (string) or Gender (null) (Gender) Example: gender=M Gênero para filtro de renda PDF (M ou F). Requer personal_income_pdf=true. | |
Age (number) or Age (null) (Age) Example: age=50 Idade para filtro de renda PDF (15-90). Requer personal_income_pdf=true. | |
Is Responsible (string) or Is Responsible (null) (Is Responsible) Indica se é responsável pelo domicílio. Requer personal_income_pdf=true. | |
Income Compared (number) or Income Compared (null) (Income Compared) Example: income_compared=10000 Renda a ser comparada com a renda da região. Requer personal_income_pdf=true. |
curl "https://api.prismadata.io/v1/location/aggregator?lat=-19.932378368680315&lng=-43.9351245162891&date_income=2025-01-25&gender=M&age=50&income_compared=10000" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__slum__favela_distancia_m": 132.96,
- "prismadata__slum__favela_municipio": "Belo Horizonte",
- "prismadata__infosc__municipio": "Belo Horizonte",
- "prismadata__infosc__situacao": "Urbana",
- "prismadata__personal_income_static__faixa_sm_min": 5,
- "prismadata__personal_income_static__faixa_sm_max": 10,
- "prismadata__personal_income_static__percentil_br": 98,
- "prismadata__commercial_cluster__aglomeracao_hash": "5e28444d2cee",
- "prismadata__commercial_cluster__nome_aglomeracao": "Rua Bittencourt",
- "prismadata__commercial_cluster__contido": false
}Endpoint batch que agrega múltiplas APIs de localização para vários pontos em uma única chamada.
Envie um JSON com pontos no formato {"id": [lat, lng]} e habilite os
dados desejados via query parameters:
slum=true: retorna informações de favelasinfosc=true: retorna informações do setor censitárioprison=true: retorna informações de presídiosborder=true: retorna informações de fronteiraspersonal_income_static=true: retorna renda estáticapersonal_income_pdf=true: retorna renda dinâmica (PDF)commercial_cluster=true: retorna informações de aglomerações comerciaisQuando personal_income_pdf=true, os pontos podem opcionalmente usar o
formato de dicionário com parâmetros demográficos individuais:
{"id": {"lat": -23.55, "lng": -46.63, "gender": "M", "age": 35}}.
Pontos no formato [lat, lng] também são aceitos (sem filtros demográficos).
Os demais serviços normalizam automaticamente ambos os formatos para coordenadas.
A resposta contém um objeto com os mesmos IDs do request, cada um com os
campos prefixados por prismadata__<categoria>__.
| slum | boolean Default: false Habilita retorno de informações de favelas (prismadata__slum__*). |
| infosc | boolean Default: false Habilita retorno de informações do setor censitário (prismadata__infosc__*). |
| prison | boolean Default: false Habilita retorno de informações de presídios (prismadata__prison__*). |
| border | boolean Default: false Habilita retorno de informações de fronteiras (prismadata__border__*). |
| personal_income_static | boolean Default: false Habilita retorno de renda estática (prismadata__personal_income_static__*). |
| personal_income_pdf | boolean Default: false Habilita retorno de renda dinâmica PDF (prismadata__personal_income_pdf__*). Quando habilitado, os pontos podem usar formato de dicionário com parâmetros demográficos individuais (lat, lng, date_income, gender, age, is_responsible, income_compared). |
| commercial_cluster | boolean Default: false Habilita retorno de informações de aglomerações comerciais (prismadata__commercial_cluster__*). |
| property name* additional property | any |
{- "ponto_1": [
- -19.932378,
- -43.935124
], - "ponto_2": [
- -22.906847,
- -43.172897
]
}{- "ponto_1": {
- "prismadata__slum__favela_distancia_m": 132.96,
- "prismadata__slum__favela_municipio": "Belo Horizonte",
- "prismadata__infosc__municipio": "Belo Horizonte",
- "prismadata__infosc__situacao": "Urbana",
- "prismadata__personal_income_static__faixa_sm_min": 5,
- "prismadata__personal_income_static__faixa_sm_max": 10,
- "prismadata__personal_income_static__percentil_br": 98,
- "prismadata__commercial_cluster__aglomeracao_hash": "5e28444d2cee",
- "prismadata__commercial_cluster__nome_aglomeracao": "Rua Bittencourt"
}, - "ponto_2": {
- "prismadata__slum__favela_distancia_m": 1042.33,
- "prismadata__slum__favela_municipio": "Rio de Janeiro",
- "prismadata__infosc__municipio": "Rio de Janeiro",
- "prismadata__infosc__situacao": "Urbana",
- "prismadata__personal_income_pdf__mean": 3500,
- "prismadata__personal_income_pdf__median": 2800,
- "prismadata__commercial_cluster__aglomeracao_hash": "5ebd0eb4f6b4",
- "prismadata__commercial_cluster__nome_aglomeracao": "Avenida Paulista"
}
}Endpoint que primeiro geocodifica um endereço e depois agrega múltiplas APIs
de localização usando as coordenadas obtidas — equivalente a /aggregator
precedido de uma etapa de geocodificação.
Útil quando você tem um endereço (não coordenadas) e precisa de múltiplas informações sobre essa localização.
Aceita o mesmo conjunto de flags de habilitação que /aggregator:
slum=true: retorna informações de favelasinfosc=true: retorna informações do setor censitárioprison=true: retorna informações de presídiosborder=true: retorna informações de fronteiraspersonal_income_static=true: retorna renda estáticapersonal_income_pdf=true: retorna renda dinâmica (PDF)commercial_cluster=true: retorna informações de aglomerações comerciaisA resposta inclui também os campos prismadata__geocoder__* com o resultado
da geocodificação.
Endereco Completo (string) or Endereco Completo (null) (Endereco Completo) Endereço completo a ser geocodificado. | |
(Cep (Cep (string) or Cep (integer))) or Cep (null) (Cep) Example: cep=30130-165 CEP do endereço. | |
(Numero (Numero (string) or Numero (integer))) or Numero (null) (Numero) Número do endereço. | |
Tipo Logradouro (string) or Tipo Logradouro (null) (Tipo Logradouro) Tipo do logradouro (ex: Rua, Avenida). | |
Titulo Logradouro (string) or Titulo Logradouro (null) (Titulo Logradouro) Título do logradouro (ex: Coronel, Professor). | |
Logradouro (string) or Logradouro (null) (Logradouro) Nome do logradouro. | |
Localidade (string) or Localidade (null) (Localidade) Localidade (bairro) do endereço. | |
Municipio (string) or Municipio (null) (Municipio) Município do endereço. | |
Estado (string) or Estado (null) (Estado) Estado do endereço. | |
| slum | boolean Default: false Habilita retorno de informações de favelas (prismadata__slum__*). |
| infosc | boolean Default: false Habilita retorno de informações do setor censitário (prismadata__infosc__*). |
| prison | boolean Default: false Habilita retorno de informações de presídios (prismadata__prison__*). |
| border | boolean Default: false Habilita retorno de informações de fronteiras (prismadata__border__*). |
| personal_income_static | boolean Default: false Habilita retorno de renda estática (prismadata__personal_income_static__*). |
| personal_income_pdf | boolean Default: false Habilita retorno de renda dinâmica (prismadata__personal_income_pdf__*). |
| commercial_cluster | boolean Default: false Habilita retorno de informações de aglomerações comerciais (prismadata__commercial_cluster__*). |
Date Income (string) or Date Income (null) (Date Income) Example: date_income=2025-01-25 Data para consulta de renda PDF (YYYY-MM-DD). Requer personal_income_pdf=true. | |
Gender (string) or Gender (null) (Gender) Example: gender=M Gênero para filtro de renda PDF (M ou F). Requer personal_income_pdf=true. | |
Age (number) or Age (null) (Age) Example: age=50 Idade para filtro de renda PDF (15-90). Requer personal_income_pdf=true. | |
Is Responsible (string) or Is Responsible (null) (Is Responsible) Indica se é responsável pelo domicílio. Requer personal_income_pdf=true. | |
Income Compared (number) or Income Compared (null) (Income Compared) Example: income_compared=10000 Renda a ser comparada com a renda da região. Requer personal_income_pdf=true. |
curl "https://api.prismadata.io/v1/location/geocoder/aggregator?cep=30130-165&date_income=2025-01-25&gender=M&age=50&income_compared=10000" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__geocoder__latitude": -19.93292236328125,
- "prismadata__geocoder__longitude": -43.935611724853516,
- "prismadata__geocoder__municipio": "BELO HORIZONTE",
- "prismadata__slum__favela_distancia_m": 132.96,
- "prismadata__infosc__municipio": "Belo Horizonte",
- "prismadata__commercial_cluster__aglomeracao_hash": "5e28444d2cee",
- "prismadata__commercial_cluster__nome_aglomeracao": "Rua Bittencourt"
}Endpoint batch que primeiro geocodifica endereços e depois agrega múltiplas APIs
de localização usando as coordenadas obtidas — equivalente a /batch/aggregator
precedido de uma etapa de geocodificação por endereço.
Combina o /geocoder/aggregator com processamento em lote, permitindo enviar
até 1024 endereços de uma vez.
Envie um JSON com endereços no formato {"id": {"endereco_completo": "..."}} e
habilite os dados desejados via query parameters — mesmo conjunto de flags
de /batch/aggregator:
slum=true: retorna informações de favelasinfosc=true: retorna informações do setor censitárioprison=true: retorna informações de presídiosborder=true: retorna informações de fronteiraspersonal_income_static=true: retorna renda estáticapersonal_income_pdf=true: retorna renda dinâmica (PDF)commercial_cluster=true: retorna informações de aglomerações comerciaisQuando personal_income_pdf=true, os endereços podem opcionalmente incluir
parâmetros demográficos individuais no objeto
(date_income, gender, age, is_responsible, income_compared).
A resposta contém um objeto com os mesmos IDs do request, cada um com campos
prismadata__geocoder__* (resultado da geocodificação) + campos das APIs
habilitadas prefixados por prismadata__<categoria>__.
| slum | boolean Default: false Habilita retorno de informações de favelas (prismadata__slum__*). |
| infosc | boolean Default: false Habilita retorno de informações do setor censitário (prismadata__infosc__*). |
| prison | boolean Default: false Habilita retorno de informações de presídios (prismadata__prison__*). |
| border | boolean Default: false Habilita retorno de informações de fronteiras (prismadata__border__*). |
| personal_income_static | boolean Default: false Habilita retorno de renda estática (prismadata__personal_income_static__*). |
| personal_income_pdf | boolean Default: false Habilita retorno de renda dinâmica PDF (prismadata__personal_income_pdf__*). Quando habilitado, os endereços podem usar formato de dicionário com parâmetros demográficos individuais (date_income, gender, age, is_responsible, income_compared). |
| commercial_cluster | boolean Default: false Habilita retorno de informações de aglomerações comerciais (prismadata__commercial_cluster__*). |
additional property | object |
{- "ponto_1": {
- "endereco_completo": "Av Paulista 1000, Sao Paulo, SP"
}, - "ponto_2": {
- "cep": "30130-165",
- "numero": "100",
- "logradouro": "Rua da Bahia"
}
}{- "ponto_1": {
- "prismadata__geocoder__latitude": -23.56,
- "prismadata__geocoder__longitude": -46.65,
- "prismadata__geocoder__municipio": "SAO PAULO",
- "prismadata__slum__favela_distancia_m": 132.96,
- "prismadata__commercial_cluster__aglomeracao_hash": "5ebd0eb4f6b4",
- "prismadata__commercial_cluster__nome_aglomeracao": "Avenida Paulista"
}, - "ponto_2": {
- "prismadata__geocoder__latitude": -19.93,
- "prismadata__geocoder__longitude": -43.93,
- "prismadata__geocoder__municipio": "BELO HORIZONTE",
- "prismadata__slum__favela_distancia_m": 500.12,
- "prismadata__commercial_cluster__aglomeracao_hash": "5e28444d2cee",
- "prismadata__commercial_cluster__nome_aglomeracao": "Rua Bittencourt"
}
}Calcula rota entre pontos.
| points required | Array of strings (Points) >= 2 items Pontos no formato 'lat,lon' (minimo 2) |
| profile | string (Profile) Default: "car" Enum: "car" "foot" "bike" Perfil de roteamento |
curl "https://api.prismadata.io/v1/routing/route?points=valor" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__routing_route__geometria": "LINESTRING (-43.9378 -19.9191, -43.94 -19.93, -43.9477 -19.9498)",
- "prismadata__routing_route__distancia_m": 1500.5,
- "prismadata__routing_route__subida_m": 50,
- "prismadata__routing_route__descida_m": 30,
- "prismadata__routing_route__tempo_s": 180
}Calcula multiplas rotas em batch.
required | Array of objects (Items) [ 1 .. 16 ] items Lista de rotas a calcular |
| profile | string (Profile) Default: "car" Enum: "car" "foot" "bike" Perfil de roteamento |
{- "items": [
- {
- "points": [
- [
- 0
], - [
- 0
]
]
}
], - "profile": "car"
}{- "TOTAL": 2,
- "SUCESSOS": 2,
- "FALHAS": 0,
- "RESULTADOS": [
- {
- "prismadata__routing_route__sucesso": true,
- "prismadata__routing_route__dados": {
- "prismadata__routing_route__geometria": "LINESTRING (-43.9378 -19.9191, -43.9477 -19.9498)",
- "prismadata__routing_route__distancia_m": 1500.5,
- "prismadata__routing_route__subida_m": 50,
- "prismadata__routing_route__descida_m": 30,
- "prismadata__routing_route__tempo_s": 180
}
}, - {
- "prismadata__routing_route__sucesso": true,
- "prismadata__routing_route__dados": {
- "prismadata__routing_route__geometria": "LINESTRING (-43.95 -19.92, -43.96 -19.95)",
- "prismadata__routing_route__distancia_m": 2000,
- "prismadata__routing_route__subida_m": 40,
- "prismadata__routing_route__descida_m": 25,
- "prismadata__routing_route__tempo_s": 240
}
}
]
}Calcula isocrona a partir de um ponto.
| lat required | number (Lat) Latitude do ponto central |
| lng required | number (Lng) Longitude do ponto central |
| time_limit | integer (Time Limit) [ 60 .. 7200 ] Default: 600 Limite de tempo em segundos |
| profile | string (Profile) Default: "car" Enum: "car" "foot" "bike" Perfil de roteamento |
| sentido | string (Sentido) Default: "SAINDO" Enum: "INDO" "SAINDO" SAINDO (do ponto) ou INDO (para o ponto) |
curl "https://api.prismadata.io/v1/routing/isochrone?lat=-25.5&lng=-25.5" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__routing_isochrone__geometria": "POLYGON ((-43.9451043 -19.9496498, -43.94461115 -19.9496419, -43.94442885 -19.9491917, -43.9446328 -19.94891865, -43.945189150000004 -19.948811399999997, -43.945164500000004 -19.94856045, -43.94541065 -19.94774005, -43.946264299999996 -19.9471244, -43.946252900000005 -19.9469946, -43.947168649999995 -19.946969350000003, -43.94784435 -19.946944950000002, -43.948170399999995 -19.94692055, -43.9484147 -19.94660355, -43.94901205 -19.946596, -43.94911175 -19.94653495, -43.9491483 -19.94645745, -43.949202 -19.94647325, -43.9495532 -19.94705915, -43.9494535 -19.9471202, -43.949256649999995 -19.9474569, -43.94910625 -19.9476669, -43.949082950000005 -19.94770545, -43.9488786 -19.94805365, -43.9486399 -19.9484125, -43.9490493 -19.9490143, -43.9492774 -19.949322950000003, -43.9491091 -19.949637250000002, -43.94933965 -19.949893, -43.94933755 -19.95043145, -43.9491304 -19.95082245, -43.9490105 -19.951194450000003, -43.94945225 -19.9518588, -43.9491771 -19.9522937, -43.94897625 -19.9526379, -43.94911385 -19.9527755, -43.9491419 -19.95280355, -43.94933265 -19.9529459, -43.94894265 -19.95314595, -43.94890655 -19.9531764, -43.9488425 -19.953222150000002, -43.948709699999995 -19.953293000000002, -43.948685049999995 -19.95322065, -43.9484217 -19.953190900000003, -43.948363400000005 -19.95307105, -43.9482972 -19.95292135, -43.948255450000005 -19.9528635, -43.9480538 -19.9525668, -43.94752 -19.95277285, -43.9466847 -19.9522477, -43.94632905 -19.9518918, -43.945943150000005 -19.9518414, -43.945677849999996 -19.9518755, -43.945598399999994 -19.95167915, -43.94566365 -19.9513085, -43.9456223 -19.95131655, -43.94577495 -19.9510953, -43.945816300000004 -19.95108725, -43.94555630000001 -19.9507194, -43.94548195 -19.95070785, -43.94540845 -19.950728599999998, -43.9449527 -19.9508106, -43.9448027 -19.9506266, -43.944881800000005 -19.950203549999998, -43.94537495 -19.950211449999998, -43.9457438 -19.9499237, -43.94566065 -19.949542549999997, -43.9451043 -19.9496498))",
- "prismadata__routing_isochrone__limite_tempo_s": 300,
- "prismadata__routing_isochrone__perfil": "foot",
- "prismadata__routing_isochrone__sentido": "SAINDO",
- "prismadata__routing_isochrone__area_m2": 248412
}Calcula multiplas isocronas em batch.
required | Array of objects (Items) [ 1 .. 16 ] items Lista de isocronas a calcular |
| profile | string (Profile) Default: "car" Enum: "car" "foot" "bike" Perfil de roteamento |
| sentido | string (Sentido) Default: "SAINDO" Enum: "INDO" "SAINDO" SAINDO (do ponto) ou INDO (para o ponto) |
{- "items": [
- {
- "lat": 0,
- "lng": 0,
- "time_limit": 600
}
], - "profile": "car",
- "sentido": "INDO"
}{- "TOTAL": 2,
- "SUCESSOS": 2,
- "FALHAS": 0,
- "RESULTADOS": [
- {
- "prismadata__routing_isochrone__sucesso": true,
- "prismadata__routing_isochrone__dados": {
- "prismadata__routing_isochrone__geometria": "POLYGON ((-43.9378 -19.9191, -43.95 -19.9191, -43.95 -19.94, -43.9378 -19.94, -43.9378 -19.9191))",
- "prismadata__routing_isochrone__limite_tempo_s": 600,
- "prismadata__routing_isochrone__perfil": "car",
- "prismadata__routing_isochrone__sentido": "SAINDO",
- "prismadata__routing_isochrone__area_m2": 125000
}
}, - {
- "prismadata__routing_isochrone__sucesso": true,
- "prismadata__routing_isochrone__dados": {
- "prismadata__routing_isochrone__geometria": "POLYGON ((-43.96 -19.95, -43.98 -19.95, -43.98 -19.97, -43.96 -19.97, -43.96 -19.95))",
- "prismadata__routing_isochrone__limite_tempo_s": 300,
- "prismadata__routing_isochrone__perfil": "car",
- "prismadata__routing_isochrone__sentido": "SAINDO",
- "prismadata__routing_isochrone__area_m2": 80000
}
}
]
}A API de Oficios Requisitorios permite consultar informacoes sobre precatorios e RPVs (Requisicoes de Pequeno Valor) vinculados a credores identificados por CPF ou CNPJ.
A consulta pode ser feita por identificador do credor (CPF/CNPJ) ou por nome do credor (busca por similaridade utilizando trigramas).
Dois endpoints estao disponiveis:
Retorna um resumo consolidado dos creditos (precatorios e RPVs) de determinado credor, incluindo quantidades e valores estimados atualizados.
Id Credor (string) or Id Credor (null) (Id Credor) CPF ou CNPJ do credor que se deseja consultar | |
Nome Credor (string) or Nome Credor (null) (Nome Credor) Nome do credor que se deseja consultar os creditos |
curl "https://api.prismadata.io/v1/credit/precatorio_rpv/consulta_credito" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "prismadata__precatorio_rpv__id_credor": 24880102865,
- "prismadata__precatorio_rpv__nome_credor": "Geraldo Soares de Oliveira Junior",
- "prismadata__precatorio_rpv__tipo_id_credor": "CPF",
- "prismadata__precatorio_rpv__quantidade_creditos_precatorio": 4,
- "prismadata__precatorio_rpv__valor_estimado_creditos_precatorio": 177865.15,
- "prismadata__precatorio_rpv__quantidade_creditos_rpv": 0,
- "prismadata__precatorio_rpv__valor_estimado_creditos_rpv": 0
}Retorna a lista completa de oficios requisitorios com informacoes detalhadas de cada credito, incluindo numeros de processo, tribunal, valores e datas de expedicao.
Id Credor (string) or Id Credor (null) (Id Credor) CPF ou CNPJ do credor que se deseja consultar | |
Nome Credor (string) or Nome Credor (null) (Nome Credor) Nome do credor que se deseja consultar os creditos |
curl "https://api.prismadata.io/v1/credit/precatorio_rpv/detalha_credito" \ -H "X-Apikey: ak_xxxxxxxxxxxxxxxx"
{- "items": [
- {
- "prismadata__detalha_precatorio_rpv__id_credor": "248.801.028-65",
- "prismadata__detalha_precatorio_rpv__tipo_id_credor": "CPF",
- "prismadata__detalha_precatorio_rpv__especie_do_credito": "precatorio",
- "prismadata__detalha_precatorio_rpv__numero_precatorio_rpv": "0232618-03.2022.8.26.0500",
- "prismadata__detalha_precatorio_rpv__numero_processo_execucao": "0003793-05.2021.8.26.0068",
- "prismadata__detalha_precatorio_rpv__numero_processo_conhecimento": "1502692-58.2018.8.26.0068",
- "prismadata__detalha_precatorio_rpv__nome_credor": "Geraldo Soares de Oliveira Junior",
- "prismadata__detalha_precatorio_rpv__tribunal": "TJSP",
- "prismadata__detalha_precatorio_rpv__valor_de_face": 41558.18,
- "prismadata__detalha_precatorio_rpv__valor_estimado_atualizado": 56340.69,
- "prismadata__detalha_precatorio_rpv__percentual_credito_cedido": 0,
- "prismadata__detalha_precatorio_rpv__link_oficio": "",
- "prismadata__detalha_precatorio_rpv__data_expedicao_oficio_credito": "02/08/2022"
}, - {
- "prismadata__detalha_precatorio_rpv__id_credor": "248.801.028-65",
- "prismadata__detalha_precatorio_rpv__tipo_id_credor": "CPF",
- "prismadata__detalha_precatorio_rpv__especie_do_credito": "precatorio",
- "prismadata__detalha_precatorio_rpv__numero_precatorio_rpv": "0252135-91.2022.8.26.0500",
- "prismadata__detalha_precatorio_rpv__numero_processo_execucao": "0004773-46.2019.8.26.0318",
- "prismadata__detalha_precatorio_rpv__numero_processo_conhecimento": "1500024-77.2017.8.26.0318",
- "prismadata__detalha_precatorio_rpv__nome_credor": "Geraldo Soares de Oliveira Junior",
- "prismadata__detalha_precatorio_rpv__tribunal": "TJSP",
- "prismadata__detalha_precatorio_rpv__valor_de_face": 40047.73,
- "prismadata__detalha_precatorio_rpv__valor_estimado_atualizado": 60412.64,
- "prismadata__detalha_precatorio_rpv__percentual_credito_cedido": 0,
- "prismadata__detalha_precatorio_rpv__link_oficio": "",
- "prismadata__detalha_precatorio_rpv__data_expedicao_oficio_credito": "19/08/2022"
}
]
}