Documentazione API

Riferimento completo dell'API catastale

Base URL

https://api.parcelgps.com

OpenAPI 3.1 specification

Every endpoint on this page in machine-readable form, for Postman, Insomnia or client generators:

https://api.parcelgps.com/api/openapi.json

Units pages and address searches carry an ETag: with If-None-Match the answer is 304 with no body and costs no quota.

apartmentGuide: import a homeowners' association in 3 calls

Codici paese

Gli endpoint accettano ?country=XX. È facoltativo: senza, l'API rileva il paese dalla forma del riferimento in 21 paesi. Un riferimento ambiguo restituisce 300 CNV_AMBIGUOUS con i candidati; un paese non ancora coperto, 422 CNV_COVERAGE; qualcosa che sembra un nome di luogo, 422 CNV_PLACE_NAME con il punto geocodificato. La Spagna peninsulare usa ES, ma i Paesi Baschi e la Navarra hanno un catasto proprio (forale) e richiedono il loro codice: con ES le loro particelle non vengono trovate.

ES · SpagnaPV · Paesi BaschiNA · NavarraPT · PortogalloFR · FranciaIT · ItaliaDE · GermaniaAT · AustriaPL · PoloniaNL · Paesi BassiCZ · CechiaFI · FinlandiaBE · BelgioEE · EstoniaSI · SloveniaLT · LituaniaLU · LussemburgoSK · SlovacchiaBG · BulgariaCY · CiproIS · IslandaLI · LiechtensteinCH · Svizzera

Riferimento endpoint

MetodoEndpointAuthDescrizione
GET/api/resolve?q=TEXTAPI KeyClassifica qualsiasi testo: riferimento (e paese), coordinate o toponimo. Senza quota.
GET/api/search/address/candidates?q=TEXT&country=XXAPI KeyIndirizzo → particella con candidati per affidabilità: Spagna e altri 25 paesi europei
GET/api/catastro/:refcatAPI KeyConsultazione particella
GET/api/catastro/:refcat14/unitsAPI KeyTutte le unità di un fabbricato (abitazioni, locali, garage) — Spagna
GET/api/catastro/:refcat/polygon?country=XXAPI KeyGeometria della particella (GeoJSON)
GET/api/catastro/:refcat/terrain?country=XXAPI KeyRilievo (altitudine, pendenza, esposizione) e Rete Natura 2000 / aree protette della particella
GET/api/catastro/:refcat/ground-motion?country=XXAPI KeyMovimento del terreno (subsidenza o sollevamento in mm/anno, 2020-2024) misurato da satellite
GET/api/catastro/:refcat/solar?country=XXAPI KeyPotenziale solare
GET/api/catastro/:refcat/agro?country=XXAPI KeyDati agricoli del terreno
GET/api/export/kml?refcat=X&country=XAPI KeyEsportare KML/GPX/PDF/DXF
GET/api/catastro/:refcat/market?country=XXWeb e appDati di mercato (non via API)
GET/api/catastro/:refcat/score?country=XXWeb e appScore di investimento (non via API)

Affidabilità

Cosa serviamo dalla nostra infrastruttura e cosa dipende da un ente pubblico. Vale la pena leggerlo prima di andare in produzione.

EndpointDa dove arrivano i dati
/catastro/:refcat (ES)Copia propria del catasto (50,9 M di particelle). Non dipende dal Catastro per rispondere.
/polygon · /search/address · /search/coordinatesCatastro (ente pubblico). Può non rispondere senza preavviso.
/agroSIGPAC
/solarPVGIS

Errori e nuovi tentativi

Un 503 significa che una fonte ufficiale non risponde in questo momento: riprova con attesa crescente e si risolverà da solo. Un 429 è la tua quota, e riprovare non la restituisce — aspetta il reset o cambia piano. Un 404 è un riferimento inesistente e non va ritentato.

Pagina di stato

Pubblichiamo lo stato della nostra API e delle nove fonti catastali da cui dipendiamo, verificato ogni cinque minuti e ospitato fuori da questa API per restare affidabile durante un disservizio: catastrogps.es/status.

Autenticazione

Tutte le richieste API richiedono una API key inviata nell'intestazione X-API-Key.

curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/9872023VH5797S"

Ottieni la tua API key gratuita su la tua dashboard sviluppatore.

Codici di errore

StatoCodiceDescrizione
200—OK — La richiesta è stata completata correttamente.
400VALIDATION_ERRORBad Request — Parametri non validi o riferimento catastale con formato errato.
401UNAUTHORIZEDUnauthorized — API key non valida, scaduta o assente.
404NOT_FOUNDNot Found — Nessuna particella trovata per il riferimento o le coordinate indicate. Non consuma quota.
429KEY_AUTH_004Quota Exceeded — Hai esaurito la quota mensile del tuo piano. Le intestazioni X-Quota-Remaining e X-Quota-Reset indicano quanto resta e quando si azzera.
429RATE_LIMIT_EXCEEDED / DAILY_LIMIT_REACHEDToo Many Requests — KEY_RATE_002: hai superato il limite di picco al minuto della tua chiave (Free 10, Developer 60, Startup 120, Growth 300). RATE_LIMIT_EXCEEDED: troppe richieste dallo stesso IP. Entrambi riportano X-RateLimit-* e Retry-After. DAILY_LIMIT_REACHED: limite giornaliero di ricerche gratuite senza API key.
500INTERNAL_ERRORInternal Server Error — Errore sul nostro server. Se persiste, contatta il supporto.
503SERVICE_UNAVAILABLEService Unavailable — Il servizio catastale esterno del paese richiesto è temporaneamente non disponibile. Questi servizi sono gestiti da enti pubblici (Catastro, DGT, Géoportail, Agenzia Entrate, ALKIS...) e sono fuori dal nostro controllo. Riprova tra qualche minuto.

Intestazioni di quota e di rate limit

Ci sono due famiglie di intestazioni e misurano cose diverse. X-Quota-* è la quota mensile del tuo piano: quella che si esaurisce con KEY_AUTH_004.

IntestazioneDescrizione
X-Quota-LimitChiamate incluse al mese nel tuo piano (es. 5000).
X-Quota-RemainingChiamate rimanenti questo mese.
X-Quota-ResetData di azzeramento della quota mensile (ISO 8601, UTC).
X-Quota-TierNome del tier attuale (free, basic, pro, business).

X-RateLimit-* è il limite di picco al minuto della tua chiave, in base al piano: Free 10, Developer 60, Startup 120 e Growth 300 richieste ogni 60 secondi. Non ha nulla a che vedere con la quota mensile.

IntestazioneDescrizione
X-RateLimit-LimitRichieste consentite al minuto con la tua chiave (in base al piano).
X-RateLimit-RemainingRichieste rimanenti nel minuto in corso.
X-RateLimit-ResetSecondi mancanti all'azzeramento della finestra di un minuto.

Guide per caso d'uso

Quattro lavori reali svolti con chiamate all'API. Ogni passaggio riporta la chiamata in cURL, con l'SDK JavaScript e con l'SDK Python, e la risposta reale restituita dalla produzione.

Verificare un immobile prima di acquistarlo

Dall'indirizzo dell'annuncio a ciò che dice il catasto e a ciò che si vede dal satellite: di quale finca si tratta, cosa contiene, se ricade in un'area protetta e se il terreno si muove. Ogni passaggio usa una particella diversa per mostrare un caso con dati; nel tuo flusso è lo stesso riferimento dall'inizio alla fine.

Paesi: ES

1. Dall'indirizzo alla finca

Un indirizzo in testo libero restituisce candidati ordinati per affidabilità (da 0 a 1) con il riferimento di 14 caratteri, la destinazione d'uso, le abitazioni e l'anno di costruzione. Da 0,75 in su coincidono numero civico e comune. Costa 1 unità solo se ci sono candidati.

curl -G "https://api.parcelgps.com/api/search/address/candidates" \
  --data-urlencode "q=Avenida José Rodríguez de la Borbolla Camoyán 10, Dos Hermanas" \
  --data-urlencode "limit=3" \
  -H "X-API-Key: $CATASTROGPS_API_KEY"

Risposta reale

{
  "success": true,
  "data": {
    "consulta": {
      "texto": "Avenida José Rodríguez de la Borbolla Camoyán 10, Dos Hermanas",
      "calle": "Avenida José Rodríguez de la Borbolla Camoyán",
      "numero": 10,
      "municipio": "Dos Hermanas"
    },
    "candidatos": [
      {
        "refCatastral": "0745901TG4304N",
        "pais": "ES",
        "direccion": "AVENIDA JOSE RGUEZ BORBOLLA CAMOY 10",
        "numero": 10,
        "codigoPostal": "41704",
        "municipio": "Dos Hermanas",
        "provincia": "Sevilla",
        "latitud": 37.31947088654626,
        "longitud": -5.926788955974699,
        "confianza": 0.93,
        "coincideNumero": true,
        "coincideMunicipio": true,
        "enCopia": true,
        "direccionCatastro": "AV JOSE RGUEZ BORBOLLA CAMOY 10",
        "uso": "Residencial",
        "viviendas": 346,
        "anioConstruccion": 2023
      },
      {
        "refCatastral": "0747201TG4304N",
        "pais": "ES",
        "direccion": "BULEVAR JOSE RODRIGUEZ DE LA BORBOLLA CAMOYAN 11",
        "numero": 11,
        "confianza": 0.55,
        "coincideNumero": false,
        "coincideMunicipio": true,
        "enCopia": true
      }
    ],
    "attribution": "CartoCiudad (Instituto Geográfico Nacional) y Dirección General del Catastro"
  }
}

2. Cosa contiene: abitazioni, locali e pertinenze

Con il riferimento di 14 caratteri ottieni tutte le unità della finca con destinazione d'uso, superficie, piano, interno e coefficiente di partecipazione. Serve a verificare che superficie e destinazione d'uso dell'annuncio corrispondano al catasto. Costa 1 unità per ogni unità restituita.

curl "https://api.parcelgps.com/api/catastro/0745901TG4304N/units" \
  -H "X-API-Key: $CATASTROGPS_API_KEY"

Risposta reale

HTTP/2 200
etag: "5ab6bd3d95f85dddba81818bcb0cb65e"
cache-control: private, max-age=21600
x-quota-remaining: 2893

{
  "success": true,
  "data": {
    "refCatastral": "0745901TG4304N",
    "direccion": "AV JOSE RGUEZ BORBOLLA CAMOY 10",
    "codigoPostal": "41704",
    "municipio": "DOS HERMANAS",
    "provincia": "Sevilla",
    "usoGeneral": "Residencial",
    "superficieTotal": 32789,
    "anioConstruccion": 2023,
    "totalUnidades": 200,
    "totalUnidadesFinca": 365,
    "unidades": [
      {
        "refCatastral": "0745901TG4304N0002KH",
        "escalera": "",
        "planta": "01",
        "puerta": "B",
        "uso": "Residencial",
        "superficie": 155,
        "descripcion": "Planta 01, Pta. B - Residencial",
        "participacion": 0.279543,
        "anio": 2023,
        "direccion": "AV JOSE RGUEZ BORBOLLA CAMOY 10 Pl:01 Pt:B"
      },
      {
        "refCatastral": "0745901TG4304N0003LJ",
        "escalera": "",
        "planta": "01",
        "puerta": "C",
        "uso": "Residencial",
        "superficie": 163,
        "descripcion": "Planta 01, Pta. C - Residencial",
        "participacion": 0.293879,
        "anio": 2023,
        "direccion": "AV JOSE RGUEZ BORBOLLA CAMOY 10 Pl:01 Pt:C"
      }
    ],
    "truncated": true,
    "nextCursor": "0745901TG4304N0201MZ",
    "dataSource": "clone",
    "dataDate": "2026-01-23",
    "attribution": "Dirección General del Catastro"
  },
  "searchesRemaining": -1
}

3. Aree protette: Natura 2000 e parchi

Prima di acquistare un terreno agricolo conviene sapere se ricade in un'area protetta: limita ciò che si può costruire o piantare. /terrain interseca il contorno della particella con Natura 2000 e le aree protette nazionali (CDDA) e indica quale quota della particella vi ricade. Esempio reale: una particella interamente all'interno del Parco Nazionale di Monfragüe.

curl "https://api.parcelgps.com/api/catastro/10194A00110004/terrain?country=ES" \
  -H "X-API-Key: $CATASTROGPS_API_KEY"

Risposta reale, abbreviata

{
  "success": true,
  "data": {
    "refcat": "10194A00110004",
    "country": "ES",
    "protected_areas": {
      "status": "ok",
      "intersects": true,
      "inside": true,
      "max_overlap_pct": 100,
      "natura2000": [
        {
          "code": "ES0000014",
          "name": "Monfragüe y las Dehesas del Entorno",
          "type": "SPA",
          "country": "ES",
          "overlap_pct": 100
        },
        {
          "code": "ES4320077",
          "name": "Monfragüe",
          "type": "SCI",
          "country": "ES",
          "overlap_pct": 100
        }
      ],
      "national": [
        {
          "code": "4820",
          "name": "Monfragüe",
          "designation": "National Park",
          "country": "ES",
          "overlap_pct": 100
        }
      ],
      "method": "parcel",
      "sources": [
        {
          "name": "Natura 2000",
          "license": "CC BY 4.0",
          "edition": "end 2024"
        },
        {
          "name": "Nationally designated areas (CDDA)",
          "license": "CC BY 4.0",
          "edition": "2025"
        }
      ]
    }
  }
}

4. Se il terreno si sta abbassando

/ground-motion fornisce la velocità verticale del terreno misurata dal radar Sentinel-1 (Copernicus EGMS, 2020-2024) sulla particella. Esempio reale: una particella a Murcia che si abbassa di 40,9 mm all'anno, classe severe_subsidence. Quando il satellite non ha riflettori (campi aperti, bosco, acqua) risponde status no_data invece di tirare a indovinare.

curl "https://api.parcelgps.com/api/catastro/30024A16000286/ground-motion?country=ES" \
  -H "X-API-Key: $CATASTROGPS_API_KEY"

Risposta reale

{
  "success": true,
  "data": {
    "refcat": "30024A16000286",
    "country": "ES",
    "status": "ok",
    "period": { "from": "2020-01", "to": "2024-12", "label": "2020-2024" },
    "ground_motion": {
      "class": "severe_subsidence",
      "worst_class": "severe_subsidence",
      "vertical": {
        "mean_mm_year": -40.9, "max_subsidence_mm_year": -40.9, "max_uplift_mm_year": 0,
        "std_mm_year": 0.1, "acceleration_mm_year2": -0.7, "rmse_mm": 2.3
      },
      "east_west": { "mean_mm_year": -5.1, "std_mm_year": 0.1 },
      "yearly_displacement": [
        { "year": 2020, "mm": -17.9 }, { "year": 2021, "mm": -57.2 }, { "year": 2022, "mm": -95.8 },
        { "year": 2023, "mm": -141.8 }, { "year": 2024, "mm": -179.8 }
      ],
      "cells_with_data": 1, "cells_considered": 1, "coverage_pct": 100,
      "basis": "parcel", "cell_size_m": 100
    },
    "source": {
      "name": "European Ground Motion Service (EGMS) L3 Ortho",
      "license": "Copernicus data policy (Regulation (EU) No 1159/2013): free, commercial use allowed with attribution",
      "attribution": "Contains modified Copernicus Land Monitoring Service information, European Ground Motion Service 2020-2024 (© European Union, Copernicus Land Monitoring Service, EEA)",
      "resolution": "100 m"
    },
    "calculated_at": "2026-10-01T06:14:34Z",
    "provenance": "1"
  }
}

Il portafoglio di un amministratore di condomini

Importa ogni finca che gestisci con le sue unità e ricontrollale ogni mese senza pagare due volte ciò che non è cambiato.

Paesi: ES

1. Prima importazione

Scorri il tuo elenco di riferimenti di 14 caratteri. Ogni pagina contiene fino a 200 unità e un nextCursor; gli SDK seguono il cursore per te. Salva l'ETag di ogni pagina insieme alla finca. La quota residua arriva nell'header X-Quota-Remaining e in lastQuota dell'SDK.

curl -i "https://api.parcelgps.com/api/catastro/0745901TG4304N/units" \
  -H "X-API-Key: $CATASTROGPS_API_KEY"

curl -i "https://api.parcelgps.com/api/catastro/0745901TG4304N/units?cursor=0745901TG4304N0201MZ" \
  -H "X-API-Key: $CATASTROGPS_API_KEY"

Risposta reale

HTTP/2 200
etag: "5ab6bd3d95f85dddba81818bcb0cb65e"
cache-control: private, max-age=21600
x-quota-remaining: 2893

{
  "success": true,
  "data": {
    "refCatastral": "0745901TG4304N",
    "direccion": "AV JOSE RGUEZ BORBOLLA CAMOY 10",
    "codigoPostal": "41704",
    "municipio": "DOS HERMANAS",
    "provincia": "Sevilla",
    "usoGeneral": "Residencial",
    "superficieTotal": 32789,
    "anioConstruccion": 2023,
    "totalUnidades": 200,
    "totalUnidadesFinca": 365,
    "unidades": [
      {
        "refCatastral": "0745901TG4304N0002KH",
        "escalera": "",
        "planta": "01",
        "puerta": "B",
        "uso": "Residencial",
        "superficie": 155,
        "descripcion": "Planta 01, Pta. B - Residencial",
        "participacion": 0.279543,
        "anio": 2023,
        "direccion": "AV JOSE RGUEZ BORBOLLA CAMOY 10 Pl:01 Pt:B"
      },
      {
        "refCatastral": "0745901TG4304N0003LJ",
        "escalera": "",
        "planta": "01",
        "puerta": "C",
        "uso": "Residencial",
        "superficie": 163,
        "descripcion": "Planta 01, Pta. C - Residencial",
        "participacion": 0.293879,
        "anio": 2023,
        "direccion": "AV JOSE RGUEZ BORBOLLA CAMOY 10 Pl:01 Pt:C"
      }
    ],
    "truncated": true,
    "nextCursor": "0745901TG4304N0201MZ",
    "dataSource": "clone",
    "dataDate": "2026-01-23",
    "attribution": "Dirección General del Catastro"
  },
  "searchesRemaining": -1
}

2. Controllo mensile con ETag

Ripeti la chiamata con If-None-Match e l'ETag salvato. Se la finca non è cambiata, la risposta è 304 Not Modified e non costa nulla. Con l'SDK, passa il risultato precedente: changed indica se qualcosa è cambiato. Rispetta il limite al minuto del tuo piano (Free 10, Developer 60, Startup 120, Growth 300): gli SDK ritentano da soli in caso di 429.

curl -i "https://api.parcelgps.com/api/catastro/0745901TG4304N/units" \
  -H "X-API-Key: $CATASTROGPS_API_KEY" \
  -H 'If-None-Match: "5ab6bd3d95f85dddba81818bcb0cb65e"'

HTTP/2 304
x-quota-remaining: 2929
Guida completa per importare un condominio

Fattibilità solare di una particella

Produzione stimata con PVGIS, risparmio, tempo di ritorno e, per i pannelli a terra, la pendenza e l'orientamento reali del terreno. /solar copre la Spagna (con Paesi Baschi e Navarra), il Portogallo, la Francia, l'Italia e la Germania; altrove risponde 422 CNV_COVERAGE.

Paesi: ESPVNAPTFRITDE

1. Produzione e aspetti economici dell'impianto

La risposta contiene i kWp installabili, i kWh all'anno, il risparmio, il tempo di ritorno, la CO2 evitata e un blocco economics con autoconsumo, eccedenze, ricavo netto, payback e TIR. Quando non ci sono dati solari risponde disponible false e non costa nulla.

curl "https://api.parcelgps.com/api/catastro/9872023VH5797S/solar" \
  -H "X-API-Key: $CATASTROGPS_API_KEY"

Risposta reale

{
  "success": true,
  "data": {
    "kwh_year": 23749.9,
    "kw_instalables": 17.86,
    "ahorro_anual_eur": 3562.49,
    "amortizacion_anos": 5,
    "co2_evitado_kg": 5533.73,
    "irradiacion_media": 1807.08,
    "nota_solar": 5,
    "orientacion_optima": "Sur",
    "angulo_inclinacion": 34,
    "costo_instalacion_eur": 17865,
    "disponible": true,
    "estado": "ok",
    "fuente": "PVGIS (JRC)",
    "economics": {
      "autoconsumo_kwh_ano": 5000,
      "excedentes_kwh_ano": 18749.9,
      "ingreso_neto_anual_eur": 1473.18,
      "payback_anos": 12.13,
      "tir_pct": 6.56,
      "retorno_total_25_anos_eur": 18964.5
    }
  }
}

2. Pendenza e orientamento del terreno

Per un impianto a terra, /terrain fornisce la pendenza media e massima con la relativa classe e l'orientamento prevalente sul contorno reale (Copernicus DEM GLO-30, 30 m). Esempio reale: un versante molto ripido esposto a nord, poco adatto ai pannelli a terra.

curl "https://api.parcelgps.com/api/catastro/10194A00110004/terrain?country=ES" \
  -H "X-API-Key: $CATASTROGPS_API_KEY"

Risposta reale, abbreviata

{
  "success": true,
  "data": {
    "refcat": "10194A00110004",
    "country": "ES",
    "relief": {
      "status": "ok",
      "elevation_m": {
        "mean": 365.8,
        "min": 212.3,
        "max": 506.6
      },
      "slope": {
        "mean_pct": 36.5,
        "mean_deg": 20,
        "max_pct": 71.6,
        "class": "very_steep",
        "max_class": "very_steep",
        "share_over_10_pct": 98.4,
        "classes_pct": {
          "flat": 0.2,
          "gentle": 1.4,
          "moderate": 6.8,
          "steep": 20,
          "very_steep": 71.7
        }
      },
      "aspect": {
        "dominant": "N",
        "dominant_share_pct": 75.3,
        "mean_deg": 0,
        "flat_share_pct": 0.2,
        "sectors_pct": {
          "N": 75.3,
          "NE": 10.6,
          "E": 0.6,
          "SE": 0.1,
          "S": 0,
          "SW": 1,
          "W": 1.4,
          "NW": 10.8
        }
      },
      "sample": {
        "method": "parcel",
        "cells": 1448,
        "resolution_m": 31
      },
      "source": {
        "name": "Copernicus DEM GLO-30",
        "license": "Copernicus DEM licence (free, commercial use allowed)",
        "attribution": "© DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018 provided under COPERNICUS by the European Union and ESA; all rights reserved"
      }
    }
  }
}

Rischio di una particella per una compagnia assicurativa

Tre segnali per particella da fonti europee aperte: subsidenza del terreno (EGMS), rilievo e aree protette (Copernicus DEM, EEA) e clima (ERA5-Land). Funziona in tutta la copertura EGMS (EEA-39) dove disponiamo del contorno; fuori da Spagna, Portogallo, Francia, Italia e Germania passa anche lat e lng.

Paesi: EEA-39

1. Subsidenza e accelerazione

class e worst_class riassumono il movimento (stable, slow_subsidence, notable_subsidence, severe_subsidence e i loro equivalenti di sollevamento). vertical contiene la media, la subsidenza più rapida, l'accelerazione e lo spostamento cumulato di ogni anno. Ogni risposta include l'attribuzione Copernicus che devi mostrare.

curl "https://api.parcelgps.com/api/catastro/30024A16000286/ground-motion?country=ES" \
  -H "X-API-Key: $CATASTROGPS_API_KEY"

Risposta reale

{
  "success": true,
  "data": {
    "refcat": "30024A16000286",
    "country": "ES",
    "status": "ok",
    "period": { "from": "2020-01", "to": "2024-12", "label": "2020-2024" },
    "ground_motion": {
      "class": "severe_subsidence",
      "worst_class": "severe_subsidence",
      "vertical": {
        "mean_mm_year": -40.9, "max_subsidence_mm_year": -40.9, "max_uplift_mm_year": 0,
        "std_mm_year": 0.1, "acceleration_mm_year2": -0.7, "rmse_mm": 2.3
      },
      "east_west": { "mean_mm_year": -5.1, "std_mm_year": 0.1 },
      "yearly_displacement": [
        { "year": 2020, "mm": -17.9 }, { "year": 2021, "mm": -57.2 }, { "year": 2022, "mm": -95.8 },
        { "year": 2023, "mm": -141.8 }, { "year": 2024, "mm": -179.8 }
      ],
      "cells_with_data": 1, "cells_considered": 1, "coverage_pct": 100,
      "basis": "parcel", "cell_size_m": 100
    },
    "source": {
      "name": "European Ground Motion Service (EGMS) L3 Ortho",
      "license": "Copernicus data policy (Regulation (EU) No 1159/2013): free, commercial use allowed with attribution",
      "attribution": "Contains modified Copernicus Land Monitoring Service information, European Ground Motion Service 2020-2024 (© European Union, Copernicus Land Monitoring Service, EEA)",
      "resolution": "100 m"
    },
    "calculated_at": "2026-10-01T06:14:34Z",
    "provenance": "1"
  }
}

2. Rilievo, aree protette e clima

La stessa chiamata a /terrain restituisce il rilievo, le aree protette e il blocco climate con le normali ERA5-Land: temperatura media, precipitazioni annue, giorni di gelo e giorni sopra i 35 gradi in un periodo di riferimento rispetto agli anni recenti. La griglia ERA5-Land è in fase di caricamento: finché non termina, climate risponde status unavailable e il resto della risposta arriva come di consueto. L'esempio usa un riferimento belga, che contiene una barra e va codificato come %2F.

curl "https://api.parcelgps.com/api/catastro/21802B1307%2F00B000/terrain?country=BE&lat=50.848139&lng=4.353613" \
  -H "X-API-Key: $CATASTROGPS_API_KEY"

Il blocco climate mentre si carica la griglia ERA5-Land

"climate": {
  "status": "unavailable",
  "source": {
    "name": "ERA5-Land",
    "provider": "Copernicus Climate Change Service (C3S) / ECMWF",
    "license": "CC BY 4.0",
    "attribution": "Contains modified Copernicus Climate Change Service information; …",
    "url": "https://cds.climate.copernicus.eu/datasets/reanalysis-era5-land-monthly-means",
    "resolution": "0.1° (~9 km)"
  }
}

SDK e MCP

Client ufficiali per JavaScript/TypeScript e Python, e un server MCP perché un assistente IA possa consultare particelle con la tua chiave. Tutti e tre leggono la chiave dalla variabile d'ambiente CATASTROGPS_API_KEY.

JavaScript e TypeScript (npm)

npm install catastrogps
import { CatastroGPS } from 'catastrogps'

const client = new CatastroGPS({ apiKey: process.env.CATASTROGPS_API_KEY })

const parcel = await client.parcels.get('9872023VH5797S0001WX')
const inWarsaw = await client.parcels.atPoint({ lat: 52.2297, lng: 21.0122 })
const terrain = await client.request('GET', '/api/catastro/10194A00110004/terrain', { query: { country: 'ES' } })
console.log(parcel.municipio, inWarsaw.referenciaCatastral, terrain.relief.slope.class, client.lastQuota)

Python (PyPI)

pip install catastrogps
from catastrogps import CatastroGPS

client = CatastroGPS()

parcel = client.parcels.get("9872023VH5797S0001WX")
in_warsaw = client.parcels.at_point(52.2297, 21.0122)
terrain = client.request("GET", "/api/catastro/10194A00110004/terrain", query={"country": "ES"})
print(parcel["municipio"], in_warsaw["referenciaCatastral"], terrain["relief"]["slope"]["class"], client.last_quota)

Per un endpoint senza un metodo SDK dedicato, come /terrain o /ground-motion, usa client.request: firma la chiamata, ritenta le risposte 429 e 5xx e aggiorna la quota come tutti gli altri metodi.

Collegare il server MCP a un assistente

Il server catastro-gps-mcp (npm) espone l'API come strumenti per Claude, Cursor, VS Code e qualsiasi client MCP. Ogni chiamata a uno strumento è una chiamata all'API che consuma la tua quota.

Claude Desktop: aggiungi questo a claude_desktop_config.json e riavvia l'app.

{
  "mcpServers": {
    "catastro-gps": {
      "command": "npx",
      "args": ["-y", "catastro-gps-mcp"],
      "env": { "CATASTROGPS_API_KEY": "pk_live_your_key_here" }
    }
  }
}

Claude Code: un solo comando nel terminale.

claude mcp add catastro-gps --env CATASTROGPS_API_KEY=pk_live_your_key_here -- npx -y catastro-gps-mcp

Cursor, Windsurf, VS Code e altri client MCP: lo stesso comando con CATASTROGPS_API_KEY nell'ambiente.

npx -y catastro-gps-mcp

Strumenti

get_parcelsearch_addressget_boundariesget_solar_potentialget_terrainget_agricultureget_market_dataget_investment_scoreget_value_historycompare_parcels

Prova a chiedere

  • Find the cadastral parcel at Calle Mallorca 213, Barcelona, and give me its area and outline.
  • What is the parcel at 52.2297, 21.0122? What is its area?
  • Look up the Polish parcel 146510_8.0502.1/3 and tell me its area.

Spagna (ES)

Catasto spagnolo — Dirección General del Catastro

GET/api/search/address/candidates

Geocodes a Spanish address with CartoCiudad (IGN) and returns the matching building entrances ranked by confidence, with their 14-character reference and, when they are in our copy, use, dwellings and year. Does not depend on the Catastro. Costs 1 quota unit.

Parametri

qstringFree-text address: street and number, municipality (and postcode if you have it).
street / number / municipality / postcode / limitstringOptional: street, number, municipality, postcode (override what is read from q) and limit (1-10, default 5).
curl -G "https://api.parcelgps.com/api/search/address/candidates" \
  --data-urlencode "q=Avenida José Rodríguez de la Borbolla Camoyán 10, Dos Hermanas" \
  --data-urlencode "limit=3" \
  -H "X-API-Key: $CATASTROGPS_API_KEY"

Esempio di risposta

200 OK
{
  "success": true,
  "data": {
    "consulta": {
      "texto": "Avenida José Rodríguez de la Borbolla Camoyán 10, Dos Hermanas",
      "calle": "Avenida José Rodríguez de la Borbolla Camoyán",
      "numero": 10,
      "municipio": "Dos Hermanas"
    },
    "candidatos": [
      {
        "refCatastral": "0745901TG4304N",
        "pais": "ES",
        "direccion": "AVENIDA JOSE RGUEZ BORBOLLA CAMOY 10",
        "numero": 10,
        "codigoPostal": "41704",
        "municipio": "Dos Hermanas",
        "provincia": "Sevilla",
        "latitud": 37.31947088654626,
        "longitud": -5.926788955974699,
        "confianza": 0.93,
        "coincideNumero": true,
        "coincideMunicipio": true,
        "enCopia": true,
        "direccionCatastro": "AV JOSE RGUEZ BORBOLLA CAMOY 10",
        "uso": "Residencial",
        "viviendas": 346,
        "anioConstruccion": 2023
      },
      {
        "refCatastral": "0747201TG4304N",
        "pais": "ES",
        "direccion": "BULEVAR JOSE RODRIGUEZ DE LA BORBOLLA CAMOYAN 11",
        "numero": 11,
        "confianza": 0.55,
        "coincideNumero": false,
        "coincideMunicipio": true,
        "enCopia": true
      }
    ],
    "attribution": "CartoCiudad (Instituto Geográfico Nacional) y Dirección General del Catastro"
  }
}

Errori possibili

CodiceHTTPDescrizione
VALIDATION_ERROR400Il riferimento non ha un formato valido per il paese.
NOT_FOUND404No building entrance with a cadastral reference matches the address.
KEY_AUTH_004429Quota mensile della chiave API esaurita (vedi le intestazioni X-Quota-*).
SERVICE_UNAVAILABLE503CartoCiudad is not answering. Retry after Retry-After.
GET/api/catastro/:refcat

Ottenere i dati della particella per riferimento catastale (14 o 20 caratteri).

Parametri

:refcatstringRiferimento catastale (p. es. 9872023VH5797S0001WX)
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/9872023VH5797S0001WX"

Esempio di risposta

200 OK
{
  "success": true,
  "data": {
    "refCatastral": "9872023VH5797S0001WX",
    "direccion": "CL GLORIA 51",
    "codigoPostal": "13730",
    "municipio": "SANTA CRUZ DE MUDELA",
    "provincia": "CIUDAD REAL",
    "latitud": 38.640143,
    "longitud": -3.463284,
    "googleMapsUrl": "https://www.google.com/maps?q=38.640143,-3.463284",
    "uso": "Residencial",
    "clase": "Urbano",
    "superficieConstruida": 308,
    "superficieParcela": 397,
    "anioConstruccion": 1980,
    "coefParticipacion": "100",
    "poligono": [ /* geometría de la parcela */ ],
    "availableFields": {
      "uso": true, "clase": true, "anioConstruccion": true,
      "superficieConstruida": true, "coefParticipacion": true,
      "direccion": true, "busquedaDireccion": true
    }
  },
  "searchesRemaining": 4
}

Errori possibili

CodiceHTTPDescrizione
VALIDATION_ERROR400Il riferimento non ha un formato valido per il paese.
NOT_FOUND404Riferimento non trovato. Un ?country non supportato viene trattato come Spagna (ES) e di norma restituisce NOT_FOUND; usa ES/PT/FR/IT/DE/PV/NA. Nei catasti forali (NA, PV) il campo message aggiunge un suggerimento sul formato.
RATE_LIMIT_EXCEEDED / DAILY_LIMIT_REACHED429KEY_RATE_002: limite di picco al minuto della tua chiave. RATE_LIMIT_EXCEEDED: troppe richieste dallo stesso IP. DAILY_LIMIT_REACHED: limite giornaliero di ricerche gratuite senza API key.
KEY_AUTH_004429Quota mensile della chiave API esaurita (vedi le intestazioni X-Quota-*).
SERVICE_UNAVAILABLE503Il servizio catastale ufficiale del paese è fuori servizio o in manutenzione. Riprova.
GET/api/catastro/:refcat14/units

Tutte le unità di un fabbricato spagnolo a partire dal riferimento di 14 caratteri, in una sola chiamata (fino a 200 per pagina, con cursore). Ogni unità include uso, superficie, quota di partecipazione, anno e scala/piano/interno. Costa 1 unità di quota per ogni unità restituita (minimo 1). Richiede una API key o una sessione attiva. Fonte: Dirección General del Catastro.

Parametri

:refcat14stringRiferimento catastale di 14 caratteri del fabbricato (es. 0745901TG4304N)
cursorstringFacoltativo. Il nextCursor della pagina precedente quando truncated è true.
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/0745901TG4304N/units"

Esempio di risposta

200 OK
{
  "success": true,
  "data": {
    "refCatastral": "0745901TG4304N",
    "direccion": "AV JOSE RGUEZ BORBOLLA CAMOY 10",
    "codigoPostal": "41704",
    "municipio": "DOS HERMANAS",
    "provincia": "Sevilla",
    "usoGeneral": "Residencial",
    "superficieTotal": 32789,
    "anioConstruccion": 2023,
    "totalUnidades": 200,
    "totalUnidadesFinca": 365,
    "truncated": true,
    "nextCursor": "0745901TG4304N0201MZ",
    "dataSource": "clone",
    "dataDate": "2026-08-19",
    "attribution": "Dirección General del Catastro",
    "unidades": [
      {
        "refCatastral": "0745901TG4304N0002KH",
        "planta": "01",
        "puerta": "B",
        "uso": "Residencial",
        "superficie": 155,
        "participacion": 0.279543,
        "anio": 2023,
        "descripcion": "Planta 01, Pta. B - Residencial"
      }
    ]
  }
}

Errori possibili

CodiceHTTPDescrizione
VALIDATION_ERROR400Il cursore non è un riferimento di 20 caratteri di quel fabbricato.
UNAUTHORIZED / UNT_001401Nessuna API key di organizzazione né sessione attiva.
NOT_FOUND404Il fabbricato non esiste né nella nostra copia del Catastro né nel Catastro.
KEY_AUTH_004429Quota mensile della chiave API esaurita (vedi le intestazioni X-Quota-*).
SERVICE_UNAVAILABLE503Il servizio catastale ufficiale del paese è fuori servizio o in manutenzione. Riprova.
GET/api/catastro/:refcat/terrain

Rilievo calcolato sul poligono della particella con Copernicus DEM GLO-30 (30 m): altitudine media, minima e massima, pendenza media e massima con classe e distribuzione, % di superficie con pendenza > 10 % ed esposizione prevalente. E incrocio con Rete Natura 2000 (AEA, end 2024) e aree protette nazionali (CDDA 2025): nome, codice, tipo (SPA = ZPS, SCI = ZSC/SIC) e % della particella dentro ciascun sito. Ogni blocco riporta fonte e licenza. status = ok, no_data (nessuna copertura) o unavailable (errore temporaneo, riprovare). Stessa particella, stessa unità di quota della scheda.

Parametri

:refcatstringRiferimento catastale
countrystringFacoltativo. ES, PV, NA, PT, FR, IT, DE; si ricava dal riferimento se manca.
lat, lngnumberSolo per gli altri paesi con geometria propria: posizione approssimativa della particella per trovarne il contorno.
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/10194A00110004/terrain?country=ES"

Esempio di risposta

200 OK
{
  "success": true,
  "data": {
    "refcat": "10194A00110004",
    "country": "ES",
    "relief": {
      "status": "ok",
      "elevation_m": { "mean": 365.8, "min": 212.3, "max": 506.6 },
      "slope": {
        "mean_pct": 36.5, "mean_deg": 20, "max_pct": 71.6,
        "class": "very_steep", "max_class": "very_steep", "share_over_10_pct": 98.4,
        "classes_pct": { "flat": 0.2, "gentle": 1.4, "moderate": 6.8, "steep": 20, "very_steep": 71.7 }
      },
      "aspect": {
        "dominant": "N", "dominant_share_pct": 75.3, "mean_deg": 0, "flat_share_pct": 0.2,
        "sectors_pct": { "N": 75.3, "NE": 10.6, "E": 0.6, "SE": 0.1, "S": 0, "SW": 1, "W": 1.4, "NW": 10.8 }
      },
      "sample": { "method": "parcel", "cells": 1448, "resolution_m": 31 },
      "source": { "name": "Copernicus DEM GLO-30", "license": "Copernicus DEM licence (free, commercial use allowed)", "attribution": "© DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018 provided under COPERNICUS by the European Union and ESA; all rights reserved" }
    },
    "protected_areas": {
      "status": "ok",
      "intersects": true,
      "inside": true,
      "max_overlap_pct": 100,
      "natura2000": [
        { "code": "ES0000014", "name": "Monfragüe y las Dehesas del Entorno", "type": "SPA", "country": "ES", "overlap_pct": 100 },
        { "code": "ES4320077", "name": "Monfragüe", "type": "SCI", "country": "ES", "overlap_pct": 100 }
      ],
      "national": [
        { "code": "4820", "name": "Monfragüe", "designation": "National Park", "country": "ES", "overlap_pct": 100 }
      ],
      "method": "parcel",
      "sources": [
        { "name": "Natura 2000", "license": "CC BY 4.0", "edition": "end 2024" },
        { "name": "Nationally designated areas (CDDA)", "license": "CC BY 4.0", "edition": "2025" }
      ]
    },
    "calculated_at": "2026-09-30T19:45:02Z",
    "provenance": "3"
  }
}

Errori possibili

CodiceHTTPDescrizione
UNAUTHORIZED401Nessuna API key di organizzazione né sessione attiva.
NOT_FOUND404La particella non esiste o, fuori dai sette paesi principali, non c'è contorno in quella posizione.
KEY_AUTH_004429Quota mensile della chiave API esaurita (vedi le intestazioni X-Quota-*).
TRN_040503Il servizio catastale ufficiale del paese è fuori servizio o in manutenzione. Riprova.
GET/api/catastro/:refcat/ground-motion

Velocità verticale ed est-ovest del terreno sul poligono della particella, dall'European Ground Motion Service di Copernicus (EGMS L3 Ortho, radar Sentinel-1, griglia di 100 m, 2020-2024): media, subsidenza massima, sollevamento massimo, classe, celle con dato e spostamento medio di ogni anno. Senza riflettori (campi, bosco, acqua) risponde status = no_data con reason = no_reflectors invece di stimare. Tutta la copertura EGMS (EEA-39). Include fonte, licenza e l'attribuzione da mostrare. Stessa particella, stessa unità di quota della scheda.

Parametri

:refcatstringRiferimento catastale
countrystringFacoltativo. ES, PV, NA, PT, FR, IT, DE; si ricava dal riferimento se manca.
lat, lngnumberSolo per gli altri paesi con geometria propria: posizione approssimativa della particella per trovarne il contorno.
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/30024A16000286/ground-motion?country=ES"

Esempio di risposta

200 OK
{
  "success": true,
  "data": {
    "refcat": "30024A16000286",
    "country": "ES",
    "status": "ok",
    "period": { "from": "2020-01", "to": "2024-12", "label": "2020-2024" },
    "ground_motion": {
      "class": "severe_subsidence",
      "worst_class": "severe_subsidence",
      "vertical": {
        "mean_mm_year": -40.9, "max_subsidence_mm_year": -40.9, "max_uplift_mm_year": 0,
        "std_mm_year": 0.1, "acceleration_mm_year2": -0.7, "rmse_mm": 2.3
      },
      "east_west": { "mean_mm_year": -5.1, "std_mm_year": 0.1 },
      "yearly_displacement": [
        { "year": 2020, "mm": -17.9 }, { "year": 2021, "mm": -57.2 }, { "year": 2022, "mm": -95.8 },
        { "year": 2023, "mm": -141.8 }, { "year": 2024, "mm": -179.8 }
      ],
      "cells_with_data": 1, "cells_considered": 1, "coverage_pct": 100,
      "basis": "parcel", "cell_size_m": 100
    },
    "source": {
      "name": "European Ground Motion Service (EGMS) L3 Ortho",
      "license": "Copernicus data policy (Regulation (EU) No 1159/2013): free, commercial use allowed with attribution",
      "attribution": "Contains modified Copernicus Land Monitoring Service information, European Ground Motion Service 2020-2024 (© European Union, Copernicus Land Monitoring Service, EEA)",
      "resolution": "100 m"
    },
    "calculated_at": "2026-10-01T06:14:34Z",
    "provenance": "1"
  }
}

Errori possibili

CodiceHTTPDescrizione
UNAUTHORIZED401Nessuna API key di organizzazione né sessione attiva.
NOT_FOUND404La particella non esiste o, fuori dai sette paesi principali, non c'è contorno in quella posizione.
KEY_AUTH_004429Quota mensile della chiave API esaurita (vedi le intestazioni X-Quota-*).
GMV_040503Il servizio catastale ufficiale del paese è fuori servizio o in manutenzione. Riprova.
POST/api/search/coordinates

Geocodifica inversa: trovare la particella catastale a coordinate GPS.

Parametri

latitudenumberLatitudine (WGS84)
longitudenumberLongitudine (WGS84)
countrystringCodice paese (facoltativo: rilevato dal riferimento)
curl -X POST -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"latitude": 40.4196, "longitude": -3.7029, "country": "ES"}' \
  "https://api.parcelgps.com/api/search/coordinates"

Esempio di risposta

200 OK
{
  "success": true,
  "data": {
    "referenciaCatastral": "0447502VK4704G",
    "refCat14": "0447502VK4704G",
    "direccion": "CL TRES CRUCES 7",
    "municipio": "MADRID",
    "tipoInmueble": "Urbano",
    "coordenadas": { "latitud": 40.4196984, "longitud": -3.7028067 },
    "googleMapsUrl": "https://www.google.com/maps?q=40.419698,-3.702807",
    "pais": "ES"
  },
  "searchesRemaining": -1
}

Errori possibili

CodiceHTTPDescrizione
VALIDATION_ERROR400Coordinate fuori dai limiti del paese indicato o rilevato, o lat/lng assenti o mal formate.
NOT_FOUND404Non esiste alcuna particella a quelle coordinate.
RATE_LIMIT_EXCEEDED / DAILY_LIMIT_REACHED429KEY_RATE_002: limite di picco al minuto della tua chiave. RATE_LIMIT_EXCEEDED: troppe richieste dallo stesso IP. DAILY_LIMIT_REACHED: limite giornaliero di ricerche gratuite senza API key.
SERVICE_UNAVAILABLE503Servizio catastale temporaneamente non disponibile.
POST/api/search/address/parse

Cercare particella catastale per indirizzo postale.

Parametri

direccionstringIndirizzo in testo libero (solo Spagna). Formato consigliato: «Calle, Número, Municipio» — p. es. «Calle Mallorca, 213, Barcelona». Il numero civico può anche essere unito alla via («Gran Vía 1, Madrid»).
curl -X POST -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"direccion": "Gran Via 1, Madrid"}' \
  "https://api.parcelgps.com/api/search/address/parse"

Esempio di risposta

200 OK
{
  "success": true,
  "data": {
    "referenciaCatastral": "0847106VK4704F",
    "refCat14": "0847106VK4704F",
    "direccion": "CL GRAN VIA, 1, Madrid",
    "tipoVia": "CL",
    "nombreVia": "GRAN VIA",
    "numero": 1,
    "municipio": "Madrid",
    "provincia": "MADRID"
  },
  "searchesRemaining": -1
}

Errori possibili

CodiceHTTPDescrizione
VALIDATION_ERROR400Corpo della richiesta non valido (campi mancanti o JSON mal formato).
NOT_FOUND404Indirizzo non trovato (via, comune o numero inesistente o senza corrispondenza catastale). La ricerca per indirizzo è disponibile solo in Spagna.
RATE_LIMIT_EXCEEDED / DAILY_LIMIT_REACHED429KEY_RATE_002: limite di picco al minuto della tua chiave. RATE_LIMIT_EXCEEDED: troppe richieste dallo stesso IP. DAILY_LIMIT_REACHED: limite giornaliero di ricerche gratuite senza API key.

Paesi Baschi (PV)

Catasti forali — Araba/Álava, Bizkaia e Gipuzkoa (WFS INSPIRE)

GET/api/catastro/:refcat?country=PV

Consultazione di particella nei tre territori forali. Richiede country=PV: le loro particelle hanno un catasto proprio e non sono nel Catastro centrale.

Parametri

:refcatstringRiferimento forale. Bizkaia con punti (48.020.1611.02001); Álava e Gipuzkoa in cifre (64010007, 8594149).
countrystringObbligatorio: PV.
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/48.020.1611.02001?country=PV"

Esempio di risposta

200 OK
{
  "success": true,
  "data": {
    "refCatastral": "48.020.1611.02001",
    "pais": "PV",
    "municipio": "Bizkaia",
    "provincia": "Bizkaia",
    "latitud": 43.263633,
    "longitud": -2.935856,
    "superficieParcela": 3061,
    "googleMapsUrl": "https://www.google.com/maps?q=43.263633,-2.935856",
    "poligono": [ /* geometría de la parcela */ ]
  }
}

Con country=ES (errato)

404
{
  "success": false,
  "error": "No parcel was found for this reference or location.",
  "code": "NOT_FOUND"
}

Portogallo (PT)

Catasto portoghese — Direção-Geral do Território

GET/api/catastro/:refcat?country=PT

Ottenere i dati di una particella portoghese per riferimento catastale.

Parametri

:refcatstringRiferimento catastale portoghese (p. es. AAA000587359). La copertura è parziale (~30 %); zone come Lisbona e Porto non sono ancora digitalizzate dalla DGT.
countrystringObbligatorio: PT.
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/AAA000587359?country=PT"

Esempio di risposta

200 OK
{
  "success": true,
  "data": {
    "refCatastral": "AAA000587359",
    "pais": "PT",
    "municipio": "TAVIRA, Tavira (Santa Maria e Santiago)",
    "latitud": 37.127156,
    "longitud": -7.648066,
    "superficieParcela": 49,
    "googleMapsUrl": "https://www.google.com/maps?q=37.127156,-7.648066",
    "poligono": [ /* geometría de la parcela */ ]
  }
}

Francia (FR)

Catasto francese — Cadastre / Géoplateforme

GET/api/search/address/candidates?country=FR

Trasforma un indirizzo francese nella particella catastale (IDU di 14 caratteri) che si trova sotto: geocodifica con la Base Adresse Nationale e interroga il catasto ufficiale in quel punto. Candidati ordinati per affidabilità (da 0 a 1). Costa 1 unità di quota solo se restituisce candidati.

Parametri

qstringFree-text address: street and number, municipality (and postcode if you have it).
countrystringObbligatorio: FR.
street / number / municipality / postcode / limitstringOptional: street, number, municipality, postcode (override what is read from q) and limit (1-10, default 5).
curl -G -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/search/address/candidates" \
  --data-urlencode "q=8 boulevard du Port, Amiens" -d country=FR

Esempio di risposta

200 OK
{
  "success": true,
  "data": {
    "consulta": { "texto": "8 boulevard du Port, Amiens", "calle": "boulevard du Port", "numero": 8, "municipio": "Amiens" },
    "candidatos": [
      {
        "refCatastral": "80021000VA0065",
        "pais": "FR",
        "direccion": "8 Boulevard du Port 80000 Amiens",
        "numero": 8,
        "codigoPostal": "80000",
        "municipio": "Amiens",
        "provincia": "Somme",
        "latitud": 49.897442,
        "longitud": 2.290084,
        "confianza": 0.99,
        "coincideNumero": true,
        "coincideMunicipio": true,
        "enCopia": false
      }
    ],
    "attribution": "Base Adresse Nationale (data.gouv.fr); Plan cadastral (DGFiP, Géoplateforme IGN)"
  }
}

Errori possibili

CodiceHTTPDescrizione
VALIDATION_ERROR400Il riferimento non ha un formato valido per il paese.
NOT_FOUND404No building entrance with a cadastral reference matches the address.
CNV_COVERAGE422Il paese non ha la ricerca per indirizzo (SE, HR o un paese non coperto)
KEY_AUTH_004429Quota mensile della chiave API esaurita (vedi le intestazioni X-Quota-*).
SERVICE_UNAVAILABLE503CartoCiudad is not answering. Retry after Retry-After.
GET/api/catastro/:refcat?country=FR

Ottenere i dati di una particella francese per riferimento catastale.

Parametri

:refcatstringRiferimento catastale francese (p. es. 75104000AE0003)
countrystringObbligatorio: FR.
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/75104000AE0003?country=FR"

Esempio di risposta

200 OK
{
  "success": true,
  "data": {
    "refCatastral": "75104000AE0003",
    "pais": "FR",
    "municipio": "Paris",
    "provincia": "75",
    "latitud": 48.856347,
    "longitud": 2.352415,
    "superficieParcela": 15168,
    "googleMapsUrl": "https://www.google.com/maps?q=48.856347,2.352415",
    "poligono": [ /* geometría de la parcela */ ]
  }
}

Italia (IT)

Catasto italiano — Agenzia delle Entrate

GET/api/search/address/candidates?country=IT

Trasforma un indirizzo italiano nella particella catastale che si trova sotto: geocodifica con OpenStreetMap (Photon, con Nominatim di riserva) e interroga l'Agenzia delle Entrate in quel punto. Non restituisce mai strade né acque (STRADA, ACQUA): se il punto cade sulla strada, prende la particella più vicina. Costa 1 unità di quota solo se restituisce candidati.

Parametri

qstringFree-text address: street and number, municipality (and postcode if you have it).
countrystringObbligatorio: IT.
street / number / municipality / postcode / limitstringOptional: street, number, municipality, postcode (override what is read from q) and limit (1-10, default 5).
curl -G -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/search/address/candidates" \
  --data-urlencode "q=Via Toledo 256, Napoli" -d country=IT

Esempio di risposta

200 OK
{
  "success": true,
  "data": {
    "consulta": { "texto": "Via Toledo 256, Napoli", "calle": "Via Toledo", "numero": 256, "municipio": "Napoli" },
    "candidatos": [
      {
        "refCatastral": "F839_019800.166",
        "pais": "IT",
        "direccion": "Via Toledo 256, 80132 Napoli",
        "numero": 256,
        "codigoPostal": "80132",
        "municipio": "Napoli",
        "provincia": "Napoli",
        "latitud": 40.8386034,
        "longitud": 14.248223,
        "confianza": 1,
        "coincideNumero": true,
        "coincideMunicipio": true,
        "enCopia": false
      }
    ],
    "attribution": "OpenStreetMap contributors (ODbL); Agenzia delle Entrate, cartografia catastale (CC BY 4.0)"
  }
}

Errori possibili

CodiceHTTPDescrizione
VALIDATION_ERROR400Il riferimento non ha un formato valido per il paese.
NOT_FOUND404No building entrance with a cadastral reference matches the address.
CNV_COVERAGE422Il paese non ha la ricerca per indirizzo (SE, HR o un paese non coperto)
KEY_AUTH_004429Quota mensile della chiave API esaurita (vedi le intestazioni X-Quota-*).
SERVICE_UNAVAILABLE503CartoCiudad is not answering. Retry after Retry-After.
GET/api/catastro/:refcat?country=IT

Ottenere i dati di una particella italiana per riferimento catastale.

Parametri

:refcatstringRiferimento catastale italiano (foglio/particella, p. es. H501A048100.A)
countrystringObbligatorio: IT.
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/H501A048100.A?country=IT"

Esempio di risposta

200 OK
{
  "success": true,
  "data": {
    "refCatastral": "H501A048100.A",
    "pais": "IT",
    "municipio": "H501",
    "provincia": "H501",
    "latitud": 41.902698,
    "longitud": 12.496247,
    "superficieParcela": 1059,
    "googleMapsUrl": "https://www.google.com/maps?q=41.902698,12.496247",
    "poligono": [ /* geometría de la parcela */ ]
  }
}

Germania (DE)

Catasto tedesco — ALKIS (8 Bundesländer)

GET/api/catastro/:refcat?country=DE

Ottenere i dati di una particella tedesca per riferimento catastale.

Parametri

:refcatstringRiferimento catastale tedesco (Flurstückskennzeichen)
countrystringObbligatorio: DE.
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/05495803101122?country=DE"

Esempio di risposta

200 OK
{
  "success": true,
  "data": {
    "refCatastral": "05495803101122",
    "pais": "DE",
    "latitud": 50.937566,
    "longitud": 6.960140,
    "superficieParcela": 54,
    "googleMapsUrl": "https://www.google.com/maps?q=50.937566,6.960140",
    "poligono": [ /* geometría de la parcela */ ]
  }
}

Austria (AT)

Catasto austriaco — BEV (Katastralgemeinde / Grundstück)

GET/api/catastro/:refcat?country=AT

Consultazione di particella in Austria. Richiede country=AT. Il riferimento è KATASTRALGEMEINDE-GRUNDSTÜCK. Copertura parziale, in espansione.

Parametri

:refcatstringFormato Katastralgemeinde-Grundstück (p. es. 01004-1711).
countrystringObbligatorio: AT.
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/01004-1711?country=AT"

Esempio di risposta

200 OK
{
  "success": true,
  "data": {
    "refCatastral": "01004-1711",
    "pais": "AT",
    "municipio": "Innere Stadt",
    "provincia": "Wien",
    "latitud": 48.208478,
    "longitud": 16.372810,
    "uso": "Gebäude, Straßenverkehrsanlagen",
    "superficieParcela": 10641,
    "googleMapsUrl": "https://www.google.com/maps?q=48.208478,16.372810",
    "poligono": [ /* geometría de la parcela */ ]
  }
}

Con country=ES (errato)

400
{
  "success": false,
  "error": "A Spanish cadastral reference has at least 14 characters. For any other country add ?country=XX (coverage: https://parcelgps.com/developers).",
  "code": "VALIDATION_ERROR"
}

Resto d'Europa (indirizzo)

La ricerca per indirizzo funziona allo stesso modo in 26 paesi: nei Paesi Bassi, in Svizzera, Polonia, Cechia, Estonia, Danimarca e Fiandre con il registro ufficiale degli indirizzi; altrove con OpenStreetMap. La particella viene sempre dal catasto ufficiale di ciascun paese. Svezia e Croazia non ce l'hanno.

GET/api/search/address/candidates?country=NL

Trasforma un indirizzo europeo nella particella catastale che gli sta sotto: geocodifica con il registro nazionale degli indirizzi (PDOK nei Paesi Bassi) o OpenStreetMap e interroga il catasto ufficiale del paese in quel punto. Candidati ordinati per affidabilità (da 0 a 1). Costa 1 unità di quota solo se restituisce candidati.

Parametri

qstringFree-text address: street and number, municipality (and postcode if you have it).
countrystringObbligatorio: NL.
street / number / municipality / postcode / limitstringOptional: street, number, municipality, postcode (override what is read from q) and limit (1-10, default 5).
curl -G -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/search/address/candidates" \
  --data-urlencode "q=Damrak 1, 1012 LG Amsterdam" -d country=NL

Esempio di risposta

200 OK
{
  "success": true,
  "data": {
    "consulta": { "texto": "Damrak 1, 1012 LG Amsterdam", "calle": "Damrak", "numero": 1, "municipio": "Amsterdam", "codigoPostal": "1012 LG" },
    "candidatos": [
      {
        "refCatastral": "ASD04-F-3937",
        "pais": "NL",
        "direccion": "Damrak 1, 1012LG Amsterdam",
        "numero": 1,
        "codigoPostal": "1012LG",
        "municipio": "Amsterdam",
        "provincia": "Noord-Holland",
        "latitud": 52.37714446,
        "longitud": 4.89803846,
        "confianza": 1,
        "coincideNumero": true,
        "coincideMunicipio": true,
        "enCopia": false
      }
    ],
    "attribution": "PDOK Locatieserver (Kadaster, BAG); Kadaster, Basisregistratie Kadaster (PDOK, CC BY 4.0)"
  }
}

Errori possibili

CodiceHTTPDescrizione
VALIDATION_ERROR400Il riferimento non ha un formato valido per il paese.
NOT_FOUND404No building entrance with a cadastral reference matches the address.
CNV_COVERAGE422Il paese non ha la ricerca per indirizzo (SE, HR o un paese non coperto)
KEY_AUTH_004429Quota mensile della chiave API esaurita (vedi le intestazioni X-Quota-*).
SERVICE_UNAVAILABLE503CartoCiudad is not answering. Retry after Retry-After.

Intelligence della particella ed esportazioni

Geometria, potenziale solare, dati agricoli ed esportazione di file (KML/GPX/PDF/DXF), disponibili con la tua API key. I dati di mercato e lo score di investimento restano sul web e nell'app (Pro) e non sono esposti via API.

GET/api/catastro/:refcat/polygon

Ottenere il poligono GeoJSON di una particella.

Parametri

:refcatstringRiferimento catastale
countrystringCodice paese (parametro query, predefinito: ES)
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/9872023VH5797S/polygon"

Esempio di risposta

200 OK
{
  "data": {
    "refcat": "9872023VH5797S",
    "geojson": {
      "type": "Feature",
      "geometry": {
        "type": "Polygon",
        "coordinates": [ [ [-3.463391, 38.640317], [-3.463174, 38.640217], /* ... */ ] ]
      }
    }
  }
}

Quota mensile esaurita

429
{
  "success": false,
  "error": "Monthly quota used up (5000/5000). Upgrade at https://parcelgps.com/developers",
  "code": "KEY_AUTH_004"
}
GET/api/catastro/:refcat/solar

Ottenere i dati del potenziale solare (PVGIS) di una particella europea.

Parametri

:refcatstringRiferimento catastale
countrystringCodice paese (parametro query, predefinito: ES)
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/9872023VH5797S/solar"

Esempio di risposta

200 OK
{
  "success": true,
  "data": {
    "kwh_year": 23749.9,
    "kw_instalables": 17.86,
    "ahorro_anual_eur": 3562.49,
    "amortizacion_anos": 5,
    "co2_evitado_kg": 5533.73,
    "irradiacion_media": 1807.08,
    "nota_solar": 5,
    "orientacion_optima": "Sur",
    "angulo_inclinacion": 34,
    "costo_instalacion_eur": 17865,
    "disponible": true,
    "estado": "ok",
    "fuente": "PVGIS (JRC)",
    "economics": {
      "autoconsumo_kwh_ano": 5000,
      "excedentes_kwh_ano": 18749.9,
      "ingreso_neto_anual_eur": 1473.18,
      "payback_anos": 12.13,
      "tir_pct": 6.56,
      "retorno_total_25_anos_eur": 18964.5
    }
  }
}

Particella senza dati solari

200
{
  "success": true,
  "data": { "disponible": false, "estado": "sin_datos" }
}
GET/api/catastro/:refcat/agro

Dati agricoli del terreno di una particella (SIGPAC): coltura principale, uso del suolo, pendenza, altitudine e superficie. Solo particelle rustiche — quelle urbane restituiscono "cultivo_principal": "urbano".

Parametri

:refcatstringRiferimento catastale
countrystringCodice paese (parametro query, predefinito: ES)
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/23058A00700036/agro"

Esempio di risposta

200 OK
{
  "success": true,
  "data": {
    "agro": {
      "cultivo_principal": "olivar",
      "uso_suelo": "Asociación olivar - viñedo",
      "superficie_ha": 10.6045,
      "coef_regadio": 1,
      "ndvi": {
        "valor_medio": 0.18,
        "salud_cultivo": "bajo",
        "ultima_actualizacion": "2026-06-18T00:00:00Z"
      },
      "precios_mercado": {
        "precio_kg": 8.5,
        "tendencia": "+12.5% vs periodo anterior"
      },
      "recinto": {
        "provincia": 23,
        "municipio": 58,
        "poligono": 7,
        "parcela": 36,
        "recinto": 1,
        "altitud": 559,
        "pendiente_media": 12.3
      }
    }
  }
}

Quota mensile esaurita

429
{
  "success": false,
  "error": "Monthly quota used up (5000/5000). Upgrade at https://parcelgps.com/developers",
  "code": "KEY_AUTH_004"
}
GET/api/export/kml?refcat=:refcat

Esportare i dati della particella in formato KML (Google Earth).

Parametri

refcatstringRiferimento catastale
countrystringCodice paese (facoltativo: rilevato dal riferimento)
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/export/kml?refcat=9872023VH5797S" -o parcel.kml

Esempio di risposta

200 OK
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <Document>
    <Placemark>
      <name>9872023VH5797S</name>
      ...
    </Placemark>
  </Document>
</kml>
GET/api/export/gpx?refcat=:refcat

Esportare i dati della particella in formato GPX (navigatori GPS).

Parametri

refcatstringRiferimento catastale
countrystringCodice paese (facoltativo: rilevato dal riferimento)
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/export/gpx?refcat=9872023VH5797S" -o parcel.gpx

Esempio di risposta

200 OK
<?xml version="1.0" encoding="UTF-8"?>
<gpx version="1.1">
  <wpt lat="40.4168" lon="-3.7038">
    <name>9872023VH5797S</name>
  </wpt>
</gpx>

Registro delle modifiche

Cosa è stato rilasciato nell'API questa settimana, con il numero della modifica nel repository. Le risposte restano compatibili: nessun campo esistente viene rinominato.

  • /api/catastro/:refcat/units ora serve gli immobili dei Paesi Baschi e della Navarra dalla nostra copia dei catasti forali, con lo stesso contratto del territorio comune (200 per pagina, cursore, ETag, 1 unità di quota per unità), l'attribuzione di ogni ente forale e senza quota millesimale, che i dati aperti forali non pubblicano. Álava è in caricamento. Modifiche: #101, #102, #103

  • Da indirizzo a particella in 26 paesi europei con /api/search/address/candidates?country=XX: il registro ufficiale degli indirizzi dove esiste (Paesi Bassi, Svizzera, Polonia, Cechia, Estonia, Danimarca, Fiandre) e OpenStreetMap altrove, con al massimo 10 secondi per punto. Modifiche: #93, #94
  • Nuovo endpoint /api/catastro/:refcat/ground-motion: velocità verticale ed est-ovest del terreno da Copernicus EGMS 2020-2024 su tutta la sua copertura, comprese le tile ripubblicate di Paesi Bassi, Belgio e Pirenei. Modifiche: #80, #91
  • Nuovo blocco climate in /terrain con le normali ERA5-Land. La griglia è in fase di caricamento: finché non termina risponde status unavailable. Modifiche: #78
  • Fuori dalla Spagna: availableFields indica cosa contiene ogni risposta, le risposte vuote non costano nulla, /solar /agro /score rispondono 422 CNV_COVERAGE dove non ci sono dati, le cifre ambigue rispondono 300 CNV_AMBIGUOUS, il riferimento torna completo e il Belgio restituisce latitudine e longitudine nell'ordine corretto. Modifiche: #76
  • Con una API key, i testi di errore arrivano in inglese; il campo code non cambia. Modifiche: #77
  • Da indirizzo a particella in Francia (Base Adresse Nationale) e in Italia; Germania e Austria per coordinate con superficie e contorno; Cipro in meno di un secondo; /terrain e /ground-motion trovano il contorno nel resto d'Europa. Modifiche: #83, #84, #85, #86
  • POST /api/search/coordinates instrada ogni paese come il GET. Modifiche: #79
  • /terrain e /ground-motion decodificano i riferimenti con barra (Belgio, Cechia, Polonia): il campo refcat non torna più come %2F. Modifiche: #95

  • Nuovo endpoint /api/catastro/:refcat/terrain: rilievo sul contorno (Copernicus DEM GLO-30) e intersezione con Natura 2000 e aree protette nazionali (CDDA), senza ripetere i siti presenti in entrambi gli elenchi. Modifiche: #67, #69, #70
  • Nuovo endpoint /api/catastro/:refcat14/units: tutte le unità di una finca spagnola, 200 per pagina con cursore, a 1 unità di quota per unità restituita e mai più di quelle che ti restano; Paesi Baschi e Navarra rispondono 422 CNV_COVERAGE. Modifiche: #53, #55, #73, #74, #75
  • Da indirizzo a finca in Spagna con candidati CartoCiudad, ETag e reimportazioni gratuite con 304, e la specifica OpenAPI 3.1 in /api/openapi.json. Modifiche: #72
  • Header X-Quota-Limit, X-Quota-Remaining, X-Quota-Reset e X-Quota-Tier con la quota mensile, e un limite al minuto per chiave in base al piano. Modifiche: #52, #58