API Praticidade Score
Receba a pontuação de praticidade urbana a pé — 14 categorias (segurança, transporte, serviços, saúde, lazer e mais) e um score geral — para qualquer coordenada em 10 cidades premium de Brasil e Portugal. É uma API server-to-server: a chave é uma credencial de backend e nunca deve ir para o navegador.
Coordenadas, não endereços
A API recebe lat/lon e devolve o score — não faz geocodificação (converter endereço em coordenadas é o centro de custo pago, então fica do seu lado, ou use o widget, que já emite lat/lon). O score usa uma isócrona de caminhada de 10 minutos.
Autenticação
Envie a sua chave em um dos cabeçalhos:
Authorization: Bearer pk_live_SUA_CHAVE
# ou
x-api-key: pk_live_SUA_CHAVEA chave é mostrada uma única vez na emissão e não é recuperável (guardamos apenas o hash).
Endpoint
GET /api/v1/score?lat=<num>&lon=<num>[&city=<slug>]Exemplo (São Paulo, av. Paulista):
curl "https://praticidade.com/api/v1/score?lat=-23.561&lon=-46.656" \
-H "Authorization: Bearer pk_live_SUA_CHAVE"Resposta
{
"success": true,
"data": {
"overall": 8.4,
"city": { "slug": "sao-paulo", "name": "São Paulo" },
"coordinates": { "lat": -23.561, "lon": -46.656 },
"walkingMinutes": 10,
"totalPOIs": 1284,
"diversity": 0.82,
"density": 7.1,
"categories": [
{ "category": "seguranca", "label": "Segurança", "score": 7.9, "weight": 0.16, "count": 0 },
{ "category": "transporte", "label": "Transporte", "score": 9.1, "weight": 0.13, "count": 22 }
/* ... 14 categorias no total ... */
],
"computedAt": "2026-05-31T12:00:00.000Z"
}
}Campo evidence (segurança): em Belo Horizonte, Curitiba, Porto Alegre, Brasília e Fortaleza não existe fonte oficial de criminalidade por bairro. Nessas cidades a categoria seguranca traz "evidence": "urban-activity-proxy" (e a resposta traz o campo de conveniência segurancaEvidence): o valor é uma estimativa por atividade urbana, ancorada no nível de segurança da cidade, e não deve ser usado para ordenar bairros dentro da cidade. Detalhes em /metodologia.
Endpoint de preços — /api/v1/prices
GET /api/v1/prices?city=<slug>[&district=<slug>][&include_series=1]Preço mediano do m² por bairro, com proveniência explícita. Mesma chave, mesmos limites e mesma cota do /api/v1/score (cada resposta 2xx consome 1 unidade). Sem district, devolve todos os bairros da cidade com preço publicado; include_series=1 acrescenta a série temporal agregada quando existe.
curl "https://praticidade.com/api/v1/prices?city=lisboa&district=ajuda" \
-H "Authorization: Bearer pk_live_SUA_CHAVE"Resposta (abreviada)
{
"success": true,
"data": {
"city": { "slug": "lisboa", "name": "Lisboa" },
"currency": "EUR",
"unit": "m2",
"count": 1,
"districts": [
{
"district": { "slug": "ajuda", "name": "Ajuda" },
"canonical_url": "https://praticidade.com/cidade/lisboa/bairro/ajuda",
"price_m2_mediano": 4874,
"source": "ine",
"reference_period": "4.º trimestre de 2025",
"rent_mediano_m2": 17.06,
"rent_source": "ine",
"rent_reference_period": "2.º semestre de 2024"
}
],
"attribution": [
{
"source": "ine",
"label": "INE — Instituto Nacional de Estatística (Portugal)",
"url": "https://www.ine.pt",
"license": "CC BY 4.0"
}
],
"computedAt": "2026-06-12T12:00:00.000Z"
}
}Proveniência (campo source): itbi são agregados de transações registadas (São Paulo e Belo Horizonte; o campo num_transacoes só existe aqui); ine são medianas oficiais do INE por freguesia (Lisboa e Porto, venda e renda, licença CC BY 4.0); estimate são estimativas de mercado e trazem sempre um disclaimer — nunca são apresentadas como dados oficiais. Bairros abaixo dos gates de publicação (ex.: menos de 30 transações ITBI, supressão de confidencialidade do INE) simplesmente não aparecem na resposta. Os dados são apenas agregados (medianas e séries por período) e cada resposta inclui a attribution obrigatória das fontes.
Limites e cota
| Tier | Por minuto | Por mês | Preço |
|---|---|---|---|
| free | 10 | 1.000 | Grátis |
| pilot | 60 | 10.000 | desde R$ 1.500/mês |
Apenas respostas 2xx contam para a cota. Cada resposta traz os cabeçalhos X-RateLimit-* e X-Quota-*.
O preço do tier pilot segue o plano API do rate card. Tabela de preços completa.
Códigos de erro
| HTTP | code | Significado |
|---|---|---|
| 401 | UNAUTHORIZED | Chave ausente ou inválida. |
| 429 | RATE_LIMITED | Excedeu o limite por minuto da sua chave. |
| 429 | QUOTA_EXCEEDED | Cota mensal esgotada. |
| 400 | BAD_REQUEST | lat/lon ausentes ou fora de faixa. |
| 422 | OUT_OF_COVERAGE | Coordenadas fora das cidades cobertas. |
| 422 | NO_COVERAGE | Sem score disponível nesse ponto. |
| 422 | INVALID_CITY | Parâmetro city ausente ou não suportado (/prices). |
| 404 | DISTRICT_NOT_FOUND | Slug de bairro desconhecido nessa cidade (/prices). |
| 404/422 | NO_PRICE_DATA | Bairro ou cidade sem preço publicado (/prices). |
| 500 | INTERNAL_ERROR | Erro interno. |
Cidades cobertas
Obter uma chave
O piloto é por convite. Conte-nos o seu caso de uso e volume estimado e enviamos uma chave. A faturação do piloto é por fatura (sem cartão).
Falar connoscoUso justo durante o piloto: sem SLA contratual ainda; a chave pode ser revogada em caso de abuso. Os dados não incluem identificadores do Google nem avaliações brutas — veja a metodologia.