This API allows structured consultation of cadastral data related to properties and subjects.
The API returns detailed information on properties and on the related registered holders.
It is also possible to:
The generation of the cadastral report (visura) is also included, both for a property and for a subject.
Methods that allows you to consult provinces, municipalities and sections of the Italian territory
Returns all Italian provinces. If tipo_catasto is omitted, the buildings (F) dataset is used by default.
| tipo_catasto | string Default: "F" Enum: "T" "F" Example: tipo_catasto=F F = buildings (default), T = land. |
Array of objects[ items ] | |
| success | boolean |
| message | string |
| error | integer |
CURL *hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET"); curl_easy_setopt(hnd, CURLOPT_URL, "https://catasto.openapi.it/territorio?tipo_catasto=F"); struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN"); curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers); CURLcode ret = curl_easy_perform(hnd);
{- "data": [
- {
- "provincia": "GE",
- "nome_provincia": "GENOVA",
- "id": "60c9cc8f24a66c54f04c6df2"
}, - {
- "provincia": "AV",
- "nome_provincia": "AVELLINO",
- "id": "60c9d49517d4af446c1af7b2"
}
], - "success": true,
- "message": "",
- "error": null
}Returns the selected province with its municipalities. If tipo_catasto is omitted, the buildings (F) dataset is used by default.
| provincia_or_nome_provincia_or_id required | string Default: "<string>" Example: TR Province code (e.g., TR), full province name (e.g., TERNI), or internal id. |
| tipo_catasto | string Default: "F" Enum: "T" "F" Example: tipo_catasto=F F = buildings (default), T = land. |
object | |
| success | boolean |
| message | string |
| error | integer |
CURL *hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET"); curl_easy_setopt(hnd, CURLOPT_URL, "https://catasto.openapi.it/territorio/TR?tipo_catasto=F"); struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN"); curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers); CURLcode ret = curl_easy_perform(hnd);
{- "data": {
- "provincia": "TR",
- "nome_provincia": "TERNI",
- "comuni": [
- {
- "comune": "ACQUASPARTA",
- "sezioni": null,
- "codice_catastale": "A045"
}, - {
- "comune": "TERNI",
- "sezioni": null,
- "codice_catastale": "L117"
}
], - "id": "60ca2d837e1f2f6f3a2bfd42"
}, - "success": true,
- "message": "",
- "error": null
}Returns the selected municipality within the given province. If tipo_catasto is omitted, the buildings (F) dataset is used by default.
| provincia_or_nome_provincia_or_id required | string Default: "<string>" Example: TR Province code (e.g., TR), full province name (e.g., TERNI), or internal id. |
| comune required | string Default: "<string>" Example: TERNI Municipality name returned by Territorio. |
| tipo_catasto | string Default: "F" Enum: "T" "F" Example: tipo_catasto=F F = buildings (default), T = land. |
object | |
| success | boolean |
| message | string |
| error | integer |
CURL *hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET"); curl_easy_setopt(hnd, CURLOPT_URL, "https://catasto.openapi.it/territorio/TR/TERNI?tipo_catasto=F"); struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN"); curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers); CURLcode ret = curl_easy_perform(hnd);
{- "data": {
- "provincia": "TR",
- "nome_provincia": "TERNI",
- "comuni": [
- {
- "comune": "TERNI",
- "sezioni": null,
- "codice_catastale": "L117"
}
], - "id": "60ca2d837e1f2f6f3a2bfd42"
}, - "success": true,
- "message": "",
- "error": null
}Methods that allow you to create and view a request for information regarding buildings or land to the land registry
This method allows you to create a request to receive information on subjects and properties in the Italian land registry.
• elenco_immobili – returns detailed information for each property (immobile) within the specified foglio and particella. Note: the sezione field is required only in municipalities that have sections; sezione_urbana is never required.
• prospetto_catastale – returns detailed information for each property (immobile) within the specified foglio, particella, and subalterno, including ownership (intestatari) details. Note: the sezione field is required only in municipalities that have sections; sezione_urbana is never required.
• ricerca_persona – returns basic information about the owner, along with the list of properties owned by that person or entity within the specified province.
• ricerca_nazionale – Researches the properties owned by a subject across the entire national territory. The result returns an aggregated overview by province and municipality, showing the number of buildings and land owned, without returning full property details.
• indirizzo – returns the list of properties (with full details) associated with a given address identifier (id_indirizzo) obtained via POST/indirizzo (asynchronous) or GET /indirizzo (synchronous). In some cases, for the address to return valid results, it is necessary to also specify the street number (civic number) together with the address. If the civic number is missing, sometimes the system may not be able to correctly associate any property to the given address.
| endpoint required | string Default: "<string>" Enum: "elenco_immobili" "prospetto_catastale" "ricerca_persona" "ricerca_nazionale" "indirizzo" Type of service requested |
object or object (Callback) This is our standardized OpenAPI callback system. It enables the configuration of parameters for receiving notifications about status updates of asynchronous requests to this endpoint. | |
| tipo_catasto required | string (TipoCatasto) Default: "<string>" Enum: "T" "F" "TF"
|
| provincia required | string Default: "<string>" Province code (2 letters). |
| comune required | string Default: "<string>" Municipality name in uppercase. |
| sezione | string Default: "<string>" Required only if the municipality exposes sections. |
| sezione_urbana | string Default: "<string>" Never required; include only if available. |
required | string or integer Cadastral sheet number. |
required | string or integer Cadastral parcel number. |
object (Richiesta) | |
| success | boolean |
| message | string |
| error | integer |
{- "tipo_catasto": "F",
- "provincia": "RM",
- "comune": "ROMA",
- "sezione": "",
- "foglio": "872",
- "particella": "405"
}{- "data": {
- "endpoint": "elenco_immobili",
- "stato": "evasa",
- "callback": false,
- "parametri": {
- "tipo_catasto": "F",
- "provincia": "ROMA Territorio-RM",
- "comune": "H501#ROMA#4#0",
- "sezione": null,
- "sezione_urbana": null,
- "foglio": 872,
- "particella": 405
}, - "risultato": {
- "immobili": [
- {
- "sezione_urbana": null,
- "foglio": 872,
- "particella": 405,
- "subalterno": 3,
- "indirizzo": "ROMA VIALE FILIPPO TOMMASO MARINETTI, SNC Piano S2 int. 1",
- "sezione": null,
- "zona_censuaria": "6",
- "categoria": "C/6",
- "classe": "13",
- "consistenza": "23 mq",
- "rendita": "Euro:108,09",
- "partita": "",
- "id_immobile": "MTY1NjcyOCMxNjU2NzI4I0YjODcyIzQwNSNINTAxIzIyNTkyNjkjNDgjICNST01B"
}, - {
- "sezione_urbana": null,
- "foglio": 872,
- "particella": 405,
- "subalterno": 48,
- "indirizzo": "ROMA VIALE FILIPPO TOMMASO MARINETTI, SNC Piano 3 int. 6",
- "sezione": null,
- "zona_censuaria": "6",
- "categoria": "A/10",
- "classe": "1",
- "consistenza": "3,5 vani",
- "rendita": "Euro:2.566,79",
- "partita": "2259269",
- "id_immobile": "IRD1NjcyOCMxNjU2NzI4I0YjODcyIzQwHTYYNTAxIzIyNTkyNjkjNDgjICNST01B"
}
]
}
}, - "esito": "OK",
- "timestamp": 1625232029,
- "id": "60e581c58138e80d804dad20"
}This method allows you to see all the requests you have made
Array of objects (Richieste) [ items ] | |
| success | boolean |
| message | string |
| error | integer |
CURL *hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET"); curl_easy_setopt(hnd, CURLOPT_URL, "https://catasto.openapi.it/richiesta"); struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN"); curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers); CURLcode ret = curl_easy_perform(hnd);
{- "data": [
- {
- "id": "60e584d6a280fd2c0a05fbe5",
- "endpoint": "elenco_immobili",
- "stato": "evasa",
- "timestamp": 1625654486,
- "owner": "[email protected]"
}, - {
- "id": "60e581c58138e80d804dad20",
- "endpoint": "indirizzo",
- "stato": "evasa",
- "timestamp": 1625653701,
- "owner": "[email protected]"
}, - {
- "id": "60e580f1617b512c3450d3c7",
- "endpoint": "ricerca_nazionale_pg",
- "stato": "evasa",
- "timestamp": 1625653489,
- "owner": "[email protected]"
}
], - "success": true,
- "message": "",
- "error": null
}Allows you to see the detail of the request identified by the id
| id required | string Default: "<string>" Example: 60e580f1617b512c3450d3c7 Request id |
object (Richiesta) | |
| success | boolean |
| message | string |
| error | integer |
CURL *hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET"); curl_easy_setopt(hnd, CURLOPT_URL, "https://catasto.openapi.it/richiesta/%7Bid%7D"); struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN"); curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers); CURLcode ret = curl_easy_perform(hnd);
{- "data": {
- "endpoint": "ricerca_nazionale_pg",
- "stato": "evasa",
- "callback": false,
- "parametri": {
- "cf_piva": "12485671007",
- "tipo_catasto": "TF",
- "provincia": "NAZIONALE-IT"
}, - "risultato": {
- "soggetti": [
- {
- "denominazione": "OPENAPI SRL",
- "sede": "ROMA (RM)",
- "cf": "12485671007",
- "id_soggetto": "OTgwMzI3NTA1MiMwI0FMVFJBVklBIFNFUlZJWkkgU09DSUVUQScgQSBSRVNQT05TQUJJTElUQScgTElNSVRBVEEjUk9NQSAoUk0pIzEyNDg1NjcxMDA3",
- "catasti": [
- {
- "citta": "ROMA",
- "fabbricati": 1,
- "terreni": 0,
- "provincia": "RM",
- "comuni": [
- {
- "comune": "ROMA",
- "fabbricati": 1,
- "terreni": 0
}
]
}
]
}
]
}, - "esito": "OK",
- "timestamp": 1625232029,
- "id": "60e580f1617b512c3450d3c7"
}, - "success": true,
- "message": "",
- "error": null
}This method allows you to create a request to obtain an id_indirizzo, which will subsequently be used in the POST /richiesta/indirizzo endpoint.
| provincia required | string Default: "<string>" |
| comune required | string Default: "<string>" |
| sezione | string Default: "<string>" |
| indirizzo required | string Default: "<string>" |
object or object (Callback) This is our standardized OpenAPI callback system. It enables the configuration of parameters for receiving notifications about status updates of asynchronous requests to this endpoint. |
object | |
| success | boolean |
| message | string |
| error | integer or null |
{- "provincia": "TR",
- "comune": "Terni",
- "sezione": "",
- "indirizzo": "del rivo"
}{- "data": {
- "endpoint": "ricerca_indirizzo",
- "stato": "in_erogazione",
- "callback": false,
- "parametri": {
- "provincia": "TERNI Territorio-TR",
- "comune": "L117#TERNI#0#0",
- "sezione": "",
- "indirizzo": "VIA DEL RIVO"
}, - "risultato": null,
- "esito": null,
- "timestamp": 1751016345,
- "id": "685e6399966a385c6f0416c4"
}, - "success": true,
- "message": "",
- "error": null
}This endpoint allows two functions:
Synchronous search: Provide the query parameters (province, municipality, section, address) to obtain the corresponding id_indirizzo, which can be used in POST/richiesta/indirizzo.
Request list: If you do not provide any query parameters, you will get a list of id_indirizzo from your previous POST/indirizzo requests.
| provincia | string Default: "<string>" Example: provincia=TR Province (Required for synchronous search) |
| comune | string Default: "<string>" Example: comune=TERNI City (Required for synchronous search) |
| sezione | string Default: "<string>" Example: sezione=Q Section of the city if it is present |
| indirizzo | string Default: "<string>" Example: indirizzo=del rivo Address searched; enter only the address and not the toponym (Required for synchronous search) |
object | |
| success | boolean |
| message | string |
| error | integer |
CURL *hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET"); curl_easy_setopt(hnd, CURLOPT_URL, "https://catasto.openapi.it/indirizzo?provincia=TR&comune=TERNI&sezione=Q&indirizzo=del%20rivo"); struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN"); curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers); CURLcode ret = curl_easy_perform(hnd);
{- "data": {
- "indirizzi": [
- {
- "id_indirizzo": "NDUyODgwIzI0MCNUZXJyaXRvcmlvIzI0IyNERUwgUklWTw==",
- "indirizzo": "VIA DEL RIVO"
}
]
}, - "success": true,
- "message": "",
- "error": null
}Allows you to see the detail of the id_indirizzo identified by the id
| id required | string Default: "<string>" Example: 485e6399966a385c6f0416c2 Request id |
object (RisultatoRichiestaIndirizzo) | |
| success | boolean |
| message | string |
| error | integer |
CURL *hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET"); curl_easy_setopt(hnd, CURLOPT_URL, "https://catasto.openapi.it/indirizzo/%7Bid%7D"); struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN"); curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers); CURLcode ret = curl_easy_perform(hnd);
{- "data": {
- "endpoint": "ricerca_indirizzo",
- "stato": "evasa",
- "callback": false,
- "parametri": {
- "provincia": "TERNI Territorio-TR",
- "comune": "L117#TERNI#0#0",
- "sezione": "",
- "indirizzo": "DEL RIVO"
}, - "risultato": {
- "indirizzi": [
- {
- "id_indirizzo": "NDUyODgwIzI0MCNUZXJyaXRvcmlvIzI0IyNWSUFMRSBGSUxJUFBPIFRPTU1BU08gTUFSSU5FVFRJ",
- "indirizzo": "VIA DEL RIVO"
}
]
}, - "esito": "OK",
- "timestamp": 1751016345,
- "id": "485e6399966a385c6f0416c2"
}, - "success": true,
- "message": "",
- "error": null
}Create a request to obtain a Visura Catastale (property or subject).
• By property (entita: immobile)
-With id_immobile: the request is performed directly using the property identifier.
-Without id_immobile: the request is performed using the available cadastral data.
• By subject (entita: soggetto)
-With id_soggetto: provincia is optional. If provided, the visura is performed for that province; if omitted, the visura is performed for the first available province returned for that subject.
-Without id_soggetto: the request is performed using the available subject data.
• tipo_visura can be ordinaria or storica.
• Use tipo_catasto: T | F | TF.
The response returns a request id. Check status with GET /visura_catastale/{id} and download the PDF with GET /visura_catastale/{id}/documento when available.
| entita required | string Default: "<string>" Value: "immobile" |
| id_immobile required | string Default: "<string>" |
| tipo_visura required | string Default: "<string>" Enum: "ordinaria" "storica" |
| richiedente | string Default: "<string>" |
object or object (Callback) This is our standardized OpenAPI callback system. It enables the configuration of parameters for receiving notifications about status updates of asynchronous requests to this endpoint. |
object (Visura) | |
| success | boolean |
| message | string |
| error | integer |
{- "entita": "immobile",
- "id_immobile": "MTY1NjcyOCMxNjU2NzI4I0YjODcyIzQwNSNINTAxIzIyNTkyNjkjNDgjICNST01B",
- "tipo_visura": "ordinaria",
- "richiedente": "jane doe"
}{- "data": {
- "entita": "immobile",
- "stato": "in_erogazione",
- "callback": false,
- "parametri": {
- "id_immobile": "MTY1NjcyOCMxNjU2NzI4I0YjODcyIzQwNSNINTAxIzIyNTkyNjkjNDgjICNST01B",
- "tipo_catasto": "F",
- "foglio": 872,
- "particella": 405,
- "subalterno": 48,
- "comune": "H501#ROMA#4#0",
- "sezione": null,
- "sezione_urbana": null,
- "provincia": "ROMA Territorio-RM"
}, - "tipo_visura": "ordinaria",
- "richiedente": "jane doe",
- "documento": null,
- "esito": null,
- "timestamp": 1653489879,
- "id": "628e40d77ee3b06fb03350ca"
}, - "success": true,
- "message": "",
- "error": null
}This method allows you to see all the visure you have made
Array of objects (Visure) [ items ] | |
| success | boolean |
| message | string |
| error | integer |
CURL *hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET"); curl_easy_setopt(hnd, CURLOPT_URL, "https://catasto.openapi.it/visura_catastale"); struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN"); curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers); CURLcode ret = curl_easy_perform(hnd);
{- "data": [
- {
- "id": "628e41900e304d63044f857d",
- "entita": "soggetto",
- "stato": "in_erogazione",
- "timestamp": 1653490064,
- "owner": "[email protected]"
}, - {
- "id": "628e40d77ee3b06fb03350ca",
- "entita": "immobile",
- "stato": "in_erogazione",
- "timestamp": 1653489879,
- "owner": "[email protected]"
}
], - "success": true,
- "message": "",
- "error": null
}Allows you to see the detail of the visura identified by the id
| id required | string Default: "<string>" Example: 628e41900e304d63044f857d Visura id |
object (Visura) | |
| success | boolean |
| message | string |
| error | integer |
CURL *hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET"); curl_easy_setopt(hnd, CURLOPT_URL, "https://catasto.openapi.it/visura_catastale/%7Bid%7D"); struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN"); curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers); CURLcode ret = curl_easy_perform(hnd);
{- "data": {
- "entita": "soggetto",
- "stato": "evasa",
- "callback": false,
- "parametri": {
- "id_soggetto": "OTgwMzI3NTA1MiMwI0FMVFJBVklBIFNFUlZJWkkgU09DSUVUQScgQSBSRVNQT05TQUJJTElUQScgTElNSVRBVEEjUk9NQSAoUk0pIzEyNDg1NjcxMDA3",
- "tipo_catasto": "F",
- "cf_piva": "12485671007",
- "provincia": "ROMA Territorio-RM"
}, - "tipo_visura": "ordinaria",
- "richiedente": "jane doe",
- "documento": "628e41900e304d63044f857d.pdf",
- "esito": "OK",
- "timestamp": 1653490064,
- "id": "628e41900e304d63044f857d"
}, - "success": true,
- "message": "",
- "error": null
}This method allows you to directly download the document
| id required | string Default: "<string>" Example: 628e41900e304d63044f857d Visura id |
CURL *hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET"); curl_easy_setopt(hnd, CURLOPT_URL, "https://catasto.openapi.it/visura_catastale/%7Bid%7D/documento"); struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN"); curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers); CURLcode ret = curl_easy_perform(hnd);
{- "success": false,
- "message": "Wrong id",
- "error": 286,
- "data": null
}