Documentazione

Geocoder forward edge-native per indirizzi italiani. Basato su Overture Maps.

1. Quick start

curl --get "https://geocoding.qubitdata.it/v1/search" \
  --data-urlencode "q=Via Romagnosi 1, Milano"

2. Forma della risposta

Envelope compatibile con Google Geocoding API: { status, results[] }. Drop-in per la maggior parte dei client già scritti contro l'API Google.

{
  "status": "OK",
  "results": [
    {
      "address_components": [
        { "long_name": "1", "short_name": "1", "types": ["street_number"] },
        { "long_name": "Via Romagnosi", "short_name": "Via Romagnosi", "types": ["route"] },
        { "long_name": "20121", "short_name": "20121", "types": ["postal_code"] },
        { "long_name": "Milano", "short_name": "Milano", "types": ["locality", "political"] },
        { "long_name": "Milano", "short_name": "MI", "types": ["administrative_area_level_2", "political"] },
        { "long_name": "Lombardia", "short_name": "Lombardia", "types": ["administrative_area_level_1", "political"] },
        { "long_name": "Italy", "short_name": "IT", "types": ["country", "political"] }
      ],
      "formatted_address": "Via Romagnosi, 1, 20121 Milano MI, Italy",
      "geometry": {
        "location": { "lat": 45.4684, "lng": 9.19054 },
        "location_type": "ROOFTOP",
        "viewport": { "northeast": {...}, "southwest": {...} }
      },
      "place_id": "qd_xxxxxxxxxxxxx",
      "types": ["street_address"]
    }
  ],
  "query": {
    "raw": "Via Romagnosi 1, Milano",
    "parsed": { "road": "via romagnosi", "number": "1", "city": "milano" }
  }
}

Codici di stato come Google: OK, ZERO_RESULTS, INVALID_REQUEST, OVER_QUERY_LIMIT, REQUEST_DENIED, UNKNOWN_ERROR.

Il campo query è una nostra estensione (Google lo omette) — utile per debug del parsing.

geometry.location_type

ValoreSignificato
ROOFTOPMatch a livello civico. Massima precisione (~10 m).
RANGE_INTERPOLATEDCivico interpolato tra civici noti o agganciato a un vicino ±2 stessa parità. ~30 m.
GEOMETRIC_CENTERCentroide della strada: nessun civico in dataset. ~50 m. Usato anche nei fallback cross-comune.
APPROXIMATEStrada matchata senza un segnale di città utilizzabile.

Campi per risultato

Campi top-level opzionali (estensioni nostre)

3. Parser italiano

4. Errori

StatusCodiceSignificato
400query_too_shortq deve essere ≥ 3 caratteri
403turnstile_requiredEndpoint demo: token Turnstile mancante.
403turnstile_invalidEndpoint demo: Turnstile siteverify ha rifiutato il token.
422unparseableIl parser non è riuscito a estrarre una strada
429rate_limit_exceededThrottle per-key o per-IP. Header retry-after impostato.
503index_unavailableRiprova; indice temporaneamente irraggiungibile
503demo_unavailableEndpoint demo non configurato (Turnstile o DemoRL mancante).

5. Supporto

Domande, integrazione, condizioni enterprise: support@qubitdata.it