API Catasto per il territorio italiano, 100% gratuite
Catasto, geocoding, confini e dati arricchiti: 9 endpoint, 10.000 richieste l'ora, zero costi. Li diamo gratis, e li manteniamo aggiornati noi.
API v2 - Endpoint Disponibili
API catastali e di geocoding gratuite con risposta JSON. Genera i tuoi token su app.zornade.com: 10.000 richieste l'ora, fino a 5 token per account, e le diamo a tutti senza chiedere una carta di credito.
/api/v2/healthVerifica lo stato dell'API e la versione corrente. Non richiede autenticazione.
Note utili
- Risposta: { status, version, timestamp, auth, rate_limit, endpoints[] }
- Endpoint pubblico - non serve x-api-key
/api/v2/geocode/searchGeocoding diretto - trova coordinate a partire da un indirizzo o nome di luogo. Scope: geocoding:read
Note utili
- Risposta: { data: [{ address_id, street_name, street_number, locality, municipality_code, municipality_name, province, region, latitude, longitude, formatted_address }], meta: { query, city, count } }
- Ricerca su tutto il territorio italiano. Il filtro city restringe i risultati alla città indicata.
- Cerca nomi di strada e civici, non località: la query "Roma" restituisce lista vuota, "via dei fori imperiali" risponde
- Senza city il primo risultato può essere in un'altra città: "piazza del duomo" da sola risponde Ancona, con city=firenze risponde Firenze
Possibili errori
- INVALID_PARAMS se q è assente o ha meno di 2 caratteri (HTTP 400)
/api/v2/geocode/reverseGeocoding inverso - trova indirizzi vicini a coordinate. Scope: geocoding:read
Note utili
- Risposta: { data: [{ address_id, street_name, street_number, locality, municipality_code, municipality_name, province, latitude, longitude, distance_meters, formatted_address }], meta: { lat, lng, radius_m, count } }
- Coordinate in formato WGS84. Le coordinate devono ricadere entro i confini italiani.
- Con il raggio predefinito di 100 metri un punto isolato non trova indirizzi e la risposta è 200 con lista vuota: alzare radius fino a 500 metri è il modo per allargare la ricerca
Possibili errori
- INVALID_PARAMS se lat/lng mancanti o fuori range (HTTP 400)
/api/v2/admin/regionsElenco completo delle 20 regioni italiane. Scope: admin_data:read
Note utili
- Risposta: { data: [{ id, code, name, area_km2 }], meta: { count: 20 } }
- Restituisce sempre tutte le 20 regioni italiane
/api/v2/admin/provincesElenco delle province italiane, filtrabile per regione. Scope: admin_data:read
Note utili
- Risposta: { data: [{ id, code, name, abbreviation, region_code }], meta: { count } }
- Senza filtro restituisce tutte le 100+ province. Con filtro (es. Lazio) restituisce le 5 province della regione.
/api/v2/admin/municipalitiesElenco dei comuni, filtrabile per provincia. Scope: admin_data:read
Note utili
- Risposta: { data: [{ id, name, province, region, postal_code, fiscal_code }], meta: { count } }
- Filtrando per provincia si ottengono i comuni di quel territorio.
/api/v2/parcels/locateLocalizza particelle catastali per punto, multi-punto o bounding box. Scope: parcels:read
Note utili
- Risposta: { data: [{ fid, gml_id, label, municipality: { code, name, province, region }, area_m2, centroid: { lat, lng } }], meta: { mode, count, ... } }
- Il campo meta.mode indica la modalità usata: "point", "points" o "bbox"
- Bbox: max 0.05° per lato (~5.5 km), altrimenti errore BBOX_TOO_LARGE
- Coordinate in formato WGS84 - devono ricadere entro i confini italiani
Possibili errori
- INVALID_PARAMS se nessun parametro di localizzazione è presente (HTTP 400)
- BBOX_TOO_LARGE se il bounding box supera 0.05° per lato (HTTP 400)
/api/v2/parcels/searchCerca particelle catastali per riferimenti catastali (comune, foglio). Scope: parcels:read
Note utili
- Risposta: { data: [{ fid, label, municipality, foglio, sezione, area_m2, centroid }], meta: { comune, foglio, label, count } }
- Se specifichi solo il comune, restituisce le particelle di quel comune, con paginazione
- Un comune inesistente o un foglio che non esiste non sono errori: la risposta è 200 con lista vuota e count 0, e si distinguono leggendo meta
- 2.129.205 particelle su 85.187.061 non hanno il numero di foglio (2,50%), distribuite su 956 comuni su 7.886: su quei comuni la ricerca per foglio resta vuota anche se il comune ha particelle, e conviene cercare per solo comune
Possibili errori
- INVALID_PARAMS se il parametro comune è assente (HTTP 400)
/api/v2/parcels/{id}Profilo arricchito completo di una particella - tutte le 20 sezioni dati, gratis. Scope: parcels:read
Note utili
- Sezioni disponibili (tutte gratuite, nessun tier gate):
- basic, cadastral, address, risk, subsidence, terrain, population, buildings, economics, demographics, land_cover, land_use, valuation, valuation_history, coastal_erosion, cultural_heritage, solar, poi, nightlights, geometry
- Risposta: { data: { fid, ... }, meta: { sections_included: [...] } }
- Senza il parametro include, restituisce tutte le 20 sezioni
- land_use proviene da Urban Atlas 2018 (Copernicus/EEA) - disponibile solo per alcune città; altrove restituisce null
- L'endpoint restituisce 404 se il fid non esiste
Possibili errori
- NOT_FOUND se la particella non esiste (HTTP 404)
Autenticazione
Come autenticare le richieste API
- Tutte le richieste (tranne
/health) richiedono l'headerx-api-key - Solo il metodo GET è supportato - POST/PUT/DELETE restituiscono
405 Method Not Allowed - Token invalido o assente →
401 API_KEY_REQUIRED - Rate limit: 10.000 req/ora per token. Superamento →
429 Too Many Requests - Genera fino a 5 token con scope granulari:
geocoding:read,parcels:read,admin_data:read
# Header richiesto x-api-key: zrn_your_token_here # Esempio completo curl -X GET "https://api.zornade.com/api/v2/health" -H "x-api-key: zrn_..."
health
Nessuna autenticazione richiesta
{
"status": "ok",
"version": "2.4.0",
"rate_limit": "10000 requests/hour",
"endpoints": [
"GET /api/v2/geocode/search",
"GET /api/v2/geocode/reverse",
"GET /api/v2/admin/{regions,provinces,municipalities}",
"GET /api/v2/parcels/{id}",
"GET /api/v2/parcels/search",
"GET /api/v2/parcels/locate"
]
}geocode/search
?q=piazza+del+duomo&city=firenze&limit=2
{
"data": [
{
"address_id": 10753169,
"street_name": "Piazza Del Duomo",
"street_number": "1",
"municipality_code": "D612",
"municipality_name": "Firenze",
"province": "Firenze",
"region": "Toscana",
"latitude": 43.7735371,
"longitude": 11.255523,
"formatted_address": "Piazza Del Duomo 1, , Firenze"
}
],
"meta": {
"query": "piazza del duomo",
"city": "firenze",
"count": 2
}
}geocode/reverse
?lat=41.9028&lng=12.4964&radius=100
{
"data": [
{
"address_id": 960481,
"street_name": "Piazza Della Repubblica",
"street_number": "11",
"municipality_code": "H501",
"municipality_name": "Roma",
"province": "Roma",
"latitude": 41.90318,
"longitude": 12.4965448,
"distance_meters": 43.88,
"formatted_address": "Piazza Della Repubblica 11, , Roma"
}
],
"meta": {
"lat": 41.9028,
"lng": 12.4964,
"radius_m": 100,
"count": 1
}
}parcels/locate
?lat=41.9028&lng=12.4964
{
"data": [
{
"fid": 28009975,
"gml_id": "CadastralParcel.IT.AGE.PLA.H501A048100.A",
"label": "A",
"municipality": {
"code": "H501",
"name": "Roma",
"province": "Roma",
"region": "Lazio"
},
"area_m2": 1919.81,
"centroid": {
"lat": 41.9026975,
"lng": 12.4962434
}
}
],
"meta": {
"mode": "point",
"lat": 41.9028,
"lng": 12.4964,
"count": 1
}
}parcels/{id} (sezioni selettive)
?include=basic,risk,subsidence,valuation - Piazza della Repubblica, Roma
{
"data": {
"fid": 28009975,
"gml_id": "CadastralParcel.IT.AGE.PLA.H501A048100.A",
"label": "A",
"area_m2": 1919.81,
"centroid": { "lat": 41.9026975, "lng": 12.4962434 },
"municipality": {
"code": "H501", "name": "Roma",
"province": "Roma", "region": "Lazio"
},
"risk": {
"seismic_zone": 3,
"pga": 0.1154,
"flood_level": null,
"landslide_level": null
},
"subsidence": {
"velocity_mm_year": -0.6,
"acceleration": -0.15,
"risk_class": 1,
"risk_label": "trascurabile",
"risk_index": 0.03,
"direction": "stabile",
"trend": "stabile"
},
"valuation": [
{
"zone": "B29",
"zone_description": "VIMINALE (VIA TORINO)",
"fascia": "B",
"microzona": 8,
"property_type": "Abitazioni civili",
"condition": "NORMALE",
"purchase": { "min_eur_m2": 4600, "max_eur_m2": 6300 },
"rental": { "min_eur_m2": 15.3, "max_eur_m2": 21.3 }
}
]
},
"meta": {
"sections_included": ["basic","risk","subsidence","valuation"]
}
}Headers di risposta
x-ratelimit-limitLimite orario (10000)x-ratelimit-remainingRichieste rimastex-ratelimit-resetQuando la finestra libera il primo postoCodici di errore
400INVALID_PARAMS - parametri mancanti o non validi401API_KEY_REQUIRED / INVALID_API_KEY404NOT_FOUND - risorsa non trovata405METHOD_NOT_ALLOWED - solo GET410GONE - endpoint legacy v1 deprecato429Rate limit superatoGeocoding inverso
Trova indirizzi vicini a coordinate geografiche.
curl -X GET \ "https://api.zornade.com/api/v2/geocode/reverse?lat=41.8902&lng=12.4922&radius=500" \ -H "x-api-key: <YOUR_API_TOKEN>"
Ricerca indirizzo
Cerca coordinate a partire da un indirizzo stradale (via e civico, non punti di interesse), con filtro opzionale per città.
curl -X GET \ "https://api.zornade.com/api/v2/geocode/search?q=via+dei+fori+imperiali&city=roma&limit=5" \ -H "x-api-key: <YOUR_API_TOKEN>"
Localizza (punto)
Trova le particelle catastali in prossimità di un punto.
curl -X GET \ "https://api.zornade.com/api/v2/parcels/locate?lat=41.9028&lng=12.4964&limit=5" \ -H "x-api-key: <YOUR_API_TOKEN>"
Localizza (bbox)
Tutte le particelle dentro un rettangolo (max 0.05° per lato).
curl -X GET \ "https://api.zornade.com/api/v2/parcels/locate?bbox=12.490,41.890,12.500,41.895&limit=50" \ -H "x-api-key: <YOUR_API_TOKEN>"
Ricerca catastale
Cerca particelle per comune e foglio catastale. Con un comune senza numero di foglio la lista torna vuota: è normale, non è un errore.
curl -X GET \ "https://api.zornade.com/api/v2/parcels/search?comune=Roma&foglio=512&limit=5" \ -H "x-api-key: <YOUR_API_TOKEN>"
Dettaglio particella
Profilo arricchito con sezioni selettive (20 sezioni disponibili).
curl -X GET \ "https://api.zornade.com/api/v2/parcels/28009975?include=basic,risk,subsidence,valuation" \ -H "x-api-key: <YOUR_API_TOKEN>"
Come iniziare, in tre passi
Dal click alla prima risposta in pochi minuti: nessuna carta di credito, nessuna approvazione manuale.
1Crea l'account
Registrati su app.zornade.com/api: servono email e trenta secondi.
2Genera il token
Fino a 5 token con scope granulari (parcels:read, geocoding:read). Copia il valore zrn_...
3Prima chiamata
Gli esempi qui sotto girano cosi come li leggi: copia, incolla, esegui.
Prima chiamata: la stessa richiesta in quattro linguaggi
Ricerca catastale per comune e foglio, con il token letto da una variabile d'ambiente. I file stanno in scripts/esempi-api/ e sono gli stessi che abbiamo eseguito: questa pagina li importa come testo, quindi quello che leggi è quello che gira.
cURL
Il token viaggia nell'header x-api-key. Niente da installare, e stampa il JSON completo.
#!/bin/sh # Prima chiamata: ricerca catastale per comune e foglio. # Il token si crea su https://app.zornade.com/api e si esporta come ZORNADE_API_KEY. set -e curl -sS -X GET \ "https://api.zornade.com/api/v2/parcels/search?comune=Roma&foglio=512&limit=3" \ -H "x-api-key: $ZORNADE_API_KEY"
sh scripts/esempi-api/parcels-search.sh
Cosa stampa
Le prime tre particelle del foglio 512 di Roma, in ordine di mappale. cURL stampa il JSON completo.
3 particelle nel foglio 512 di Roma fid 27984268 · mappale 1 · 3177.83 mq · 41.884259725, 12.4780295351724 fid 27984275 · mappale 10 · 62.56 mq · 41.883313645, 12.4781576668058 fid 27984283 · mappale 100 · 10957.31 mq · 41.882100785, 12.4773575639407
Casi d'Uso
Come le aziende usano le nostre API
Immobiliare e PropTech
Valutazioni automatiche, due diligence territoriale, analisi di mercato immobiliare.
"Arricchisci il tuo CRM con dati catastali in tempo reale"
Servizi finanziari
Valutazione del rischio, mutui e stima delle garanzie per banche e assicurazioni.
"Calcola automaticamente il valore degli immobili in garanzia"
Legal Tech e notai
Verifiche preliminari, conformità urbanistica, ricerche catastali automatizzate.
"Genera report preliminari per rogiti in 5 secondi"
SaaS e piattaforme
Arricchisci i tuoi database con dati territoriali ufficiali e aggiornati.
"Integra dati catastali arricchiti nel tuo prodotto con 3 righe di codice"
visura-api, dentro i tuoi sistemi
Le API di questa pagina espongono dati pubblici. L'Agenzia delle Entrate non offre un'API REST pubblica per i dati catastali: i canali ufficiali sono SISTER per le visure e il WFS del Geoportale per le geometrie. Le visure ufficiali sono un'altra cosa, e per quelle c'è visura-api: il pacchetto open source che pilota il portale SISTER con le tue credenziali SPID, senza passare da un intermediario e senza un margine su ogni documento.
Lo integriamo nei sistemi dei tuoi clienti, gestionali, back office e portali compresi: setup, automazione delle richieste, gestione delle sessioni e delle code, monitoraggio. Se il prodotto che lo contiene è proprietario, la licenza commerciale toglie gli obblighi AGPL e la scritta di attribuzione, mentre l'uso interno e i progetti open source restano coperti dalla AGPL-3.0 senza costi.
Un backend personalizzato sopra le nostre API.
Progettiamo e sviluppiamo integrazioni backend su misura: da semplici wrapper fino a piattaforme enterprise complete con dati catastali, GIS e visure.
Richiedi un preventivo gratuitoInizia subito
Registrati gratuitamente su app.zornade.com per accedere alle API, o scrivici se ti serve qualcosa che non trovi