Documentation API

Référence complète de l'API cadastrale

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

Codes pays

Les endpoints acceptent ?country=XX. Facultatif : sans lui, l'API détecte le pays à partir de la forme de la référence, dans 21 pays. Une référence ambiguë renvoie 300 CNV_AMBIGUOUS avec les candidats ; un pays non couvert, 422 CNV_COVERAGE ; ce qui ressemble à un nom de lieu, 422 CNV_PLACE_NAME avec le point géocodé. L'Espagne péninsulaire utilise ES, mais le Pays basque et la Navarre ont leur propre cadastre (foral) et exigent leur propre code : avec ES, leurs parcelles ne sont pas trouvées.

ES · EspagnePV · Pays basqueNA · NavarrePT · PortugalFR · FranceIT · ItalieDE · AllemagneAT · AutrichePL · PologneNL · Pays-BasCZ · TchéquieFI · FinlandeBE · BelgiqueEE · EstonieSI · SlovénieLT · LituanieLU · LuxembourgSK · SlovaquieBG · BulgarieCY · ChypreIS · IslandeLI · LiechtensteinCH · Suisse

Référence des endpoints

MéthodeEndpointAuthDescription
GET/api/resolve?q=TEXTAPI KeyClasse n'importe quelle saisie : référence (et pays), coordonnées ou toponyme. Hors quota.
GET/api/search/address/candidates?q=TEXT&country=XXAPI KeyAdresse → parcelle avec candidats classés : Espagne et 25 autres pays européens
GET/api/catastro/:refcatAPI KeyConsultation de parcelle
GET/api/catastro/:refcat14/unitsAPI KeyTous les lots d'un immeuble (logements, locaux, garages) — Espagne
GET/api/catastro/:refcat/polygon?country=XXAPI KeyGéométrie de la parcelle (GeoJSON)
GET/api/catastro/:refcat/terrain?country=XXAPI KeyRelief (altitude, pente, orientation) et Natura 2000 / espaces protégés de la parcelle
GET/api/catastro/:refcat/ground-motion?country=XXAPI KeyMouvement du terrain (affaissement ou soulèvement en mm/an, 2020-2024) mesuré par satellite
GET/api/catastro/:refcat/solar?country=XXAPI KeyPotentiel solaire
GET/api/catastro/:refcat/agro?country=XXAPI KeyDonnées agricoles du terrain
GET/api/export/kml?refcat=X&country=XAPI KeyExporter KML/GPX/PDF/DXF
GET/api/catastro/:refcat/market?country=XXWeb et appDonnées de marché (pas via l'API)
GET/api/catastro/:refcat/score?country=XXWeb et appScore d'investissement (pas via l'API)

Fiabilité

Ce que nous servons depuis notre propre infrastructure et ce qui dépend d'un organisme public. À lire avant de passer en production.

EndpointD'où viennent les données
/catastro/:refcat (ES)Notre propre copie du cadastre (50,9 M de parcelles). Ne dépend pas du Catastro pour répondre.
/polygon · /search/address · /search/coordinatesCatastro (organisme public). Peut tomber sans préavis.
/agroSIGPAC
/solarPVGIS

Erreurs et nouvelles tentatives

Un 503 signifie qu'une source officielle ne répond pas pour le moment : réessayez avec un délai croissant et cela se rétablira. Un 429 correspond à votre quota, et réessayer ne le restaure pas — attendez la réinitialisation ou changez de forfait. Un 404 est une référence inexistante et ne doit pas être réessayé.

Page de statut

Nous publions l'état de notre API et des neuf sources cadastrales dont nous dépendons, vérifié toutes les cinq minutes et hébergé en dehors de cette API pour rester fiable pendant une panne : catastrogps.es/status.

Authentification

Toutes les requêtes API nécessitent une API key envoyée dans l'en-tête X-API-Key.

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

Obtenez votre API key gratuite sur votre tableau de bord développeur.

Codes d'erreur

StatutCodeDescription
200—OK — La requête s'est terminée correctement.
400VALIDATION_ERRORBad Request — Paramètres invalides ou référence cadastrale au format incorrect.
401UNAUTHORIZEDUnauthorized — API key invalide, expirée ou absente.
404NOT_FOUNDNot Found — Aucune parcelle trouvée pour la référence ou les coordonnées indiquées. Ne consomme pas de quota.
429KEY_AUTH_004Quota Exceeded — Vous avez épuisé le quota mensuel de votre offre. Les en-têtes X-Quota-Remaining et X-Quota-Reset indiquent ce qu'il reste et quand il se réinitialise.
429RATE_LIMIT_EXCEEDED / DAILY_LIMIT_REACHEDToo Many Requests — KEY_RATE_002 : vous avez dépassé la limite de rafale par minute de votre clé (Free 10, Developer 60, Startup 120, Growth 300). RATE_LIMIT_EXCEEDED : trop de requêtes depuis la même IP. Les deux renvoient X-RateLimit-* et Retry-After. DAILY_LIMIT_REACHED : limite quotidienne de recherches gratuites sans clé API.
500INTERNAL_ERRORInternal Server Error — Erreur sur notre serveur. Si elle persiste, contactez le support.
503SERVICE_UNAVAILABLEService Unavailable — Le service cadastral externe du pays demandé est temporairement indisponible. Ces services sont gérés par des organismes publics (Catastro, DGT, Géoportail, Agenzia Entrate, ALKIS...) et échappent à notre contrôle. Réessayez dans quelques minutes.

En-têtes de quota et de rate limit

Il existe deux familles d'en-têtes qui mesurent des choses différentes. X-Quota-* est le quota mensuel de votre offre : celui qui s'épuise avec KEY_AUTH_004.

En-têteDescription
X-Quota-LimitAppels inclus par mois dans votre offre (p. ex. 5000).
X-Quota-RemainingAppels restants ce mois-ci.
X-Quota-ResetDate de réinitialisation du quota mensuel (ISO 8601, UTC).
X-Quota-TierNom de l’offre actuelle (free, basic, pro, business).

X-RateLimit-* est la limite de rafale par minute de votre clé, selon le forfait : Free 10, Developer 60, Startup 120 et Growth 300 requêtes toutes les 60 secondes. Elle n'a rien à voir avec le quota mensuel.

En-têteDescription
X-RateLimit-LimitRequêtes autorisées par minute avec votre clé (selon votre forfait).
X-RateLimit-RemainingRequêtes restantes dans la minute en cours.
X-RateLimit-ResetSecondes avant la réinitialisation de la fenêtre d'une minute.

Guides par cas d'usage

Quatre cas concrets traités avec des appels à l'API. Chaque étape présente l'appel en cURL, avec le SDK JavaScript et avec le SDK Python, ainsi que la réponse réelle renvoyée par la production.

Vérifier un bien avant de l'acheter

De l'adresse de l'annonce à ce que dit le cadastre et à ce que voit le satellite : de quelle finca il s'agit, ce qu'elle contient, si elle se trouve dans un espace protégé et si le sol bouge. Chaque étape utilise une parcelle différente pour montrer un cas avec des données ; dans votre flux, c'est la même référence du début à la fin.

Pays: ES

1. De l'adresse à la finca

Une adresse en texte libre renvoie des candidats classés par indice de confiance (de 0 à 1) avec la référence à 14 caractères, l'usage, les logements et l'année. À partir de 0,75, le numéro et la commune correspondent. Cela coûte 1 unité uniquement s'il y a des candidats.

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"

Réponse réelle

{
  "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. Ce qu'elle contient : logements, locaux et annexes

Avec la référence à 14 caractères, vous obtenez toutes les unités de la finca avec usage, surface, étage, porte et quote-part. Cela permet de vérifier que la surface et l'usage indiqués dans l'annonce correspondent au cadastre. Cela coûte 1 unité par unité servie.

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

Réponse réelle

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. Espaces protégés : Natura 2000 et parcs

Avant d'acheter un terrain rural, il vaut mieux savoir s'il se trouve dans un espace protégé : cela limite ce que l'on peut construire ou planter. /terrain croise le contour de la parcelle avec le réseau Natura 2000 et les espaces protégés nationaux (CDDA) et indique quelle part de la parcelle se trouve à l'intérieur. Exemple réel : une parcelle entièrement située dans le parc national de Monfragüe.

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

Extrait de la réponse réelle

{
  "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. Le sol s'affaisse-t-il ?

/ground-motion fournit la vitesse verticale du sol mesurée par le radar Sentinel-1 (Copernicus EGMS, 2020-2024) sur la parcelle. Exemple réel : une parcelle à Murcie qui s'affaisse de 40,9 mm par an, classe severe_subsidence. Lorsque le satellite ne dispose d'aucun réflecteur (champs ouverts, forêt, eau), la réponse est status no_data plutôt qu'une estimation inventée.

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

Réponse réelle

{
  "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"
  }
}

Le portefeuille d'un syndic de copropriété

Importez toutes les fincas que vous gérez avec leurs unités et vérifiez-les de nouveau chaque mois sans payer deux fois ce qui n'a pas changé.

Pays: ES

1. Première importation

Parcourez votre liste de références à 14 caractères. Chaque page contient jusqu'à 200 unités et un nextCursor ; les SDK suivent le curseur à votre place. Enregistrez l'ETag de chaque page avec la finca. Le quota restant figure dans l'en-tête X-Quota-Remaining et dans lastQuota du 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"

Réponse réelle

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. Vérification mensuelle avec ETag

Répétez l'appel avec If-None-Match et l'ETag enregistré. Si la finca n'a pas changé, la réponse est 304 Not Modified et ne coûte rien. Avec le SDK, transmettez le résultat précédent : changed indique si quelque chose a bougé. Respectez la limite par minute de votre offre (Free 10, Developer 60, Startup 120, Growth 300) : les SDK relancent automatiquement une requête après un 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
Guide complet pour importer une copropriété

Faisabilité solaire d'une parcelle

Production estimée avec PVGIS, économies, retour sur investissement et, pour les panneaux au sol, la pente et l'orientation réelles du terrain. /solar couvre l'Espagne (avec le Pays basque et la Navarre), le Portugal, la France, l'Italie et l'Allemagne ; ailleurs, la réponse est 422 CNV_COVERAGE.

Pays: ESPVNAPTFRITDE

1. Production et rentabilité de l'installation

La réponse contient les kWp installables, les kWh par an, les économies, le délai d'amortissement, le CO2 évité et un bloc economics avec autoconsommation, excédents, revenu net, payback et TRI. En l'absence de données solaires, la réponse est disponible false et ne coûte rien.

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

Réponse réelle

{
  "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. Pente et orientation du terrain

Pour une installation au sol, /terrain fournit la pente moyenne et maximale avec sa classe et l'orientation dominante sur le contour réel (Copernicus DEM GLO-30, 30 m). Exemple réel : un versant très raide orienté au nord, peu adapté aux panneaux au sol.

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

Extrait de la réponse réelle

{
  "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"
      }
    }
  }
}

Risque d'une parcelle pour un assureur

Trois indicateurs par parcelle issus de sources européennes ouvertes : affaissement du sol (EGMS), relief et espaces protégés (Copernicus DEM, EEA) et climat (ERA5-Land). Cela fonctionne sur toute la couverture EGMS (EEA-39), partout où nous disposons du contour ; en dehors de l'Espagne, du Portugal, de la France, de l'Italie et de l'Allemagne, transmettez aussi lat et lng.

Pays: EEA-39

1. Affaissement et accélération

class et worst_class résument le mouvement (stable, slow_subsidence, notable_subsidence, severe_subsidence et leurs équivalents en soulèvement). vertical contient la moyenne, l'affaissement le plus rapide, l'accélération et le déplacement cumulé de chaque année. Chaque réponse inclut l'attribution Copernicus que vous devez afficher.

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

Réponse réelle

{
  "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. Relief, espaces protégés et climat

Le même appel à /terrain renvoie le relief, les espaces protégés et le bloc climate avec les normales ERA5-Land : température moyenne, précipitations annuelles, jours de gel et jours au-dessus de 35 degrés sur une période de référence, comparés aux années récentes. La grille ERA5-Land est en cours de chargement : tant que le chargement n'est pas terminé, climate renvoie status unavailable et le reste de la réponse arrive normalement. L'exemple utilise une référence belge, qui contient une barre oblique et est encodée en %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"

Le bloc climate pendant le chargement de la grille 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 et MCP

Clients officiels pour JavaScript/TypeScript et Python, et un serveur MCP pour qu'un assistant IA consulte des parcelles avec votre clé. Les trois lisent la clé dans la variable d'environnement CATASTROGPS_API_KEY.

JavaScript et 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)

Pour un endpoint sans méthode dédiée dans le SDK, comme /terrain ou /ground-motion, utilisez client.request : elle signe l'appel, relance les réponses 429 et 5xx et met à jour le quota comme toutes les autres méthodes.

Connecter le serveur MCP à un assistant

Le serveur catastro-gps-mcp (npm) expose l'API sous forme d'outils pour Claude, Cursor, VS Code et tout client MCP. Chaque appel d'outil correspond à un appel à l'API décompté de votre quota.

Claude Desktop : ajoutez ceci à claude_desktop_config.json et redémarrez l'application.

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

Claude Code : une seule commande dans le terminal.

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

Cursor, Windsurf, VS Code et autres clients MCP : la même commande avec CATASTROGPS_API_KEY dans l'environnement.

npx -y catastro-gps-mcp

Outils

get_parcelsearch_addressget_boundariesget_solar_potentialget_terrainget_agricultureget_market_dataget_investment_scoreget_value_historycompare_parcels

Essayez de demander

  • 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.

Espagne (ES)

Cadastre espagnol — 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.

Paramètres

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"

Exemple de réponse

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"
  }
}

Erreurs possibles

CodeHTTPDescription
VALIDATION_ERROR400La référence n'a pas un format valide pour le pays.
NOT_FOUND404No building entrance with a cadastral reference matches the address.
KEY_AUTH_004429Quota mensuel de la clé API épuisé (voir les en-têtes X-Quota-*).
SERVICE_UNAVAILABLE503CartoCiudad is not answering. Retry after Retry-After.
GET/api/catastro/:refcat

Obtenir les données d'une parcelle par référence cadastrale (14 ou 20 caractères).

Paramètres

:refcatstringRéférence cadastrale (p. ex. 9872023VH5797S0001WX)
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/9872023VH5797S0001WX"

Exemple de réponse

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
}

Erreurs possibles

CodeHTTPDescription
VALIDATION_ERROR400La référence n'a pas un format valide pour le pays.
NOT_FOUND404Référence introuvable. Un ?country non pris en charge est traité comme l’Espagne (ES) et renvoie normalement NOT_FOUND ; utilisez ES/PT/FR/IT/DE/PV/NA. Pour les cadastres foraux (NA, PV), le champ message ajoute une indication de format.
RATE_LIMIT_EXCEEDED / DAILY_LIMIT_REACHED429KEY_RATE_002 : limite de rafale par minute de votre clé. RATE_LIMIT_EXCEEDED : trop de requêtes depuis la même IP. DAILY_LIMIT_REACHED : limite quotidienne de recherches gratuites sans clé API.
KEY_AUTH_004429Quota mensuel de la clé API épuisé (voir les en-têtes X-Quota-*).
SERVICE_UNAVAILABLE503Le service cadastral officiel du pays est en panne ou en maintenance. Réessayez.
GET/api/catastro/:refcat14/units

Tous les lots d'un immeuble espagnol à partir de sa référence de 14 caractères, en un seul appel (jusqu'à 200 par page, avec curseur). Chaque lot comporte usage, surface, quote-part, année et escalier/étage/porte. Coûte 1 unité de quota par lot renvoyé (minimum 1). Nécessite une clé API ou une session ouverte. Source : Dirección General del Catastro.

Paramètres

:refcat14stringRéférence cadastrale de 14 caractères de l'immeuble (ex. 0745901TG4304N)
cursorstringOptionnel. Le nextCursor de la page précédente lorsque truncated vaut true.
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/0745901TG4304N/units"

Exemple de réponse

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"
      }
    ]
  }
}

Erreurs possibles

CodeHTTPDescription
VALIDATION_ERROR400Le curseur n'est pas une référence de 20 caractères de cet immeuble.
UNAUTHORIZED / UNT_001401Ni clé API d'organisation ni session ouverte.
NOT_FOUND404L'immeuble n'existe ni dans notre copie du Catastro ni dans le Catastro.
KEY_AUTH_004429Quota mensuel de la clé API épuisé (voir les en-têtes X-Quota-*).
SERVICE_UNAVAILABLE503Le service cadastral officiel du pays est en panne ou en maintenance. Réessayez.
GET/api/catastro/:refcat/terrain

Relief calculé sur le polygone de la parcelle avec Copernicus DEM GLO-30 (30 m) : altitude moyenne, minimale et maximale, pente moyenne et maximale avec classe et répartition, part de surface en pente > 10 % et orientation dominante. Et croisement avec Natura 2000 (AEE, end 2024) et les espaces protégés nationaux (CDDA 2025) : nom, code, type (SPA = ZPS, SCI = ZSC/SIC) et part de la parcelle dans chaque site. Chaque bloc indique sa source et sa licence. status = ok, no_data (pas de couverture) ou unavailable (panne temporaire, réessayer). Même parcelle, même unité de quota que la fiche.

Paramètres

:refcatstringRéférence cadastrale
countrystringOptionnel. ES, PV, NA, PT, FR, IT, DE ; déduit de la référence s'il manque.
lat, lngnumberUniquement pour les autres pays avec notre propre géométrie : position approximative de la parcelle pour trouver son contour.
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/10194A00110004/terrain?country=ES"

Exemple de réponse

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"
  }
}

Erreurs possibles

CodeHTTPDescription
UNAUTHORIZED401Ni clé API d'organisation ni session ouverte.
NOT_FOUND404La parcelle n'existe pas ou, hors des sept pays principaux, aucun contour à cette position.
KEY_AUTH_004429Quota mensuel de la clé API épuisé (voir les en-têtes X-Quota-*).
TRN_040503Le service cadastral officiel du pays est en panne ou en maintenance. Réessayez.
GET/api/catastro/:refcat/ground-motion

Vitesse verticale et est-ouest du terrain sur le polygone de la parcelle, issue de l'European Ground Motion Service de Copernicus (EGMS L3 Ortho, radar Sentinel-1, grille de 100 m, 2020-2024) : moyenne, affaissement maximal, soulèvement maximal, classe, cellules avec donnée et déplacement moyen de chaque année. Sans réflecteurs (champ, forêt, eau), la réponse est status = no_data avec reason = no_reflectors au lieu d'une estimation. Toute la couverture EGMS (EEA-39). Source, licence et attribution à afficher incluses. Même parcelle, même unité de quota que la fiche.

Paramètres

:refcatstringRéférence cadastrale
countrystringOptionnel. ES, PV, NA, PT, FR, IT, DE ; déduit de la référence s'il manque.
lat, lngnumberUniquement pour les autres pays avec notre propre géométrie : position approximative de la parcelle pour trouver son contour.
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/30024A16000286/ground-motion?country=ES"

Exemple de réponse

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"
  }
}

Erreurs possibles

CodeHTTPDescription
UNAUTHORIZED401Ni clé API d'organisation ni session ouverte.
NOT_FOUND404La parcelle n'existe pas ou, hors des sept pays principaux, aucun contour à cette position.
KEY_AUTH_004429Quota mensuel de la clé API épuisé (voir les en-têtes X-Quota-*).
GMV_040503Le service cadastral officiel du pays est en panne ou en maintenance. Réessayez.
POST/api/search/coordinates

Géocodage inverse : trouver la parcelle cadastrale à des coordonnées GPS.

Paramètres

latitudenumberLatitude (WGS84)
longitudenumberLongitude (WGS84)
countrystringCode pays (facultatif : détecté à partir de la référence)
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"

Exemple de réponse

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
}

Erreurs possibles

CodeHTTPDescription
VALIDATION_ERROR400Coordonnées hors des limites du pays indiqué ou détecté, ou lat/lng absentes ou mal formées.
NOT_FOUND404Il n'y a aucune parcelle à ces coordonnées.
RATE_LIMIT_EXCEEDED / DAILY_LIMIT_REACHED429KEY_RATE_002 : limite de rafale par minute de votre clé. RATE_LIMIT_EXCEEDED : trop de requêtes depuis la même IP. DAILY_LIMIT_REACHED : limite quotidienne de recherches gratuites sans clé API.
SERVICE_UNAVAILABLE503Service cadastral temporairement indisponible.
POST/api/search/address/parse

Rechercher une parcelle cadastrale par adresse postale.

Paramètres

direccionstringAdresse en texte libre (Espagne uniquement). Format recommandé : «Calle, Número, Municipio» — p. ex. «Calle Mallorca, 213, Barcelona». Le numéro peut aussi être accolé à la rue («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"

Exemple de réponse

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
}

Erreurs possibles

CodeHTTPDescription
VALIDATION_ERROR400Corps de requête invalide (champs manquants ou JSON mal formé).
NOT_FOUND404Adresse introuvable (rue, commune ou numéro inexistant ou sans correspondance cadastrale). La recherche par adresse n’est disponible qu’en Espagne.
RATE_LIMIT_EXCEEDED / DAILY_LIMIT_REACHED429KEY_RATE_002 : limite de rafale par minute de votre clé. RATE_LIMIT_EXCEEDED : trop de requêtes depuis la même IP. DAILY_LIMIT_REACHED : limite quotidienne de recherches gratuites sans clé API.

Pays basque (PV)

Cadastres foraux — Araba/Álava, Bizkaia et Gipuzkoa (WFS INSPIRE)

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

Consultation de parcelle dans les trois territoires foraux. Nécessite country=PV : leurs parcelles ont leur propre cadastre et ne figurent pas dans le Catastro central.

Paramètres

:refcatstringRéférence forale. Bizkaia avec des points (48.020.1611.02001) ; Álava et Gipuzkoa en chiffres (64010007, 8594149).
countrystringObligatoire : PV.
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/48.020.1611.02001?country=PV"

Exemple de réponse

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 */ ]
  }
}

Avec country=ES (incorrect)

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

Portugal (PT)

Cadastre portugais — Direção-Geral do Território

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

Obtenir les données d'une parcelle portugaise par référence cadastrale.

Paramètres

:refcatstringRéférence cadastrale portugaise (p. ex. AAA000587359). La couverture est partielle (~30 %) ; des zones comme Lisbonne et Porto ne sont pas encore numérisées par la DGT.
countrystringObligatoire : PT.
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/AAA000587359?country=PT"

Exemple de réponse

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 */ ]
  }
}

France (FR)

Cadastre français — Cadastre / Géoplateforme

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

Transforme une adresse française en la parcelle cadastrale (IDU de 14 caractères) située dessous : géocodage par la Base Adresse Nationale puis interrogation du cadastre officiel à ce point. Candidats classés par confiance (0 à 1). Coûte 1 unité de quota uniquement si des candidats sont renvoyés.

Paramètres

qstringFree-text address: street and number, municipality (and postcode if you have it).
countrystringObligatoire : 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

Exemple de réponse

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)"
  }
}

Erreurs possibles

CodeHTTPDescription
VALIDATION_ERROR400La référence n'a pas un format valide pour le pays.
NOT_FOUND404No building entrance with a cadastral reference matches the address.
CNV_COVERAGE422Le pays n'a pas de recherche par adresse (SE, HR ou pays non couvert)
KEY_AUTH_004429Quota mensuel de la clé API épuisé (voir les en-têtes X-Quota-*).
SERVICE_UNAVAILABLE503CartoCiudad is not answering. Retry after Retry-After.
GET/api/catastro/:refcat?country=FR

Obtenir les données d'une parcelle française par référence cadastrale.

Paramètres

:refcatstringRéférence cadastrale française (p. ex. 75104000AE0003)
countrystringObligatoire : FR.
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/75104000AE0003?country=FR"

Exemple de réponse

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 */ ]
  }
}

Italie (IT)

Cadastre italien — Agenzia delle Entrate

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

Transforme une adresse italienne en la particella cadastrale située dessous : géocodage par OpenStreetMap (Photon, avec Nominatim en secours) puis interrogation de l'Agenzia delle Entrate à ce point. Ne renvoie jamais de rues ni d'eaux (STRADA, ACQUA) : si le point tombe sur la rue, la parcelle la plus proche est retenue. Coûte 1 unité de quota uniquement si des candidats sont renvoyés.

Paramètres

qstringFree-text address: street and number, municipality (and postcode if you have it).
countrystringObligatoire : 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

Exemple de réponse

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)"
  }
}

Erreurs possibles

CodeHTTPDescription
VALIDATION_ERROR400La référence n'a pas un format valide pour le pays.
NOT_FOUND404No building entrance with a cadastral reference matches the address.
CNV_COVERAGE422Le pays n'a pas de recherche par adresse (SE, HR ou pays non couvert)
KEY_AUTH_004429Quota mensuel de la clé API épuisé (voir les en-têtes X-Quota-*).
SERVICE_UNAVAILABLE503CartoCiudad is not answering. Retry after Retry-After.
GET/api/catastro/:refcat?country=IT

Obtenir les données d'une parcelle italienne par référence cadastrale.

Paramètres

:refcatstringRéférence catastale italienne (foglio/particella, p. ex. H501A048100.A)
countrystringObligatoire : IT.
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/H501A048100.A?country=IT"

Exemple de réponse

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 */ ]
  }
}

Allemagne (DE)

Cadastre allemand — ALKIS (8 Bundesländer)

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

Obtenir les données d'une parcelle allemande par référence cadastrale.

Paramètres

:refcatstringRéférence cadastrale allemande (Flurstückskennzeichen)
countrystringObligatoire : DE.
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/05495803101122?country=DE"

Exemple de réponse

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 */ ]
  }
}

Autriche (AT)

Cadastre autrichien — BEV (Katastralgemeinde / Grundstück)

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

Consultation de parcelle en Autriche. Nécessite country=AT. La référence est KATASTRALGEMEINDE-GRUNDSTÜCK. Couverture partielle, en cours d’extension.

Paramètres

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

Exemple de réponse

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 */ ]
  }
}

Avec country=ES (incorrect)

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"
}

Reste de l'Europe (adresse)

La recherche par adresse fonctionne de la même façon dans 26 pays : aux Pays-Bas, en Suisse, en Pologne, en Tchéquie, en Estonie, au Danemark et en Flandre avec le registre officiel des adresses ; ailleurs avec OpenStreetMap. La parcelle vient toujours du cadastre officiel de chaque pays. La Suède et la Croatie ne l'ont pas.

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

Transforme une adresse européenne en la parcelle cadastrale située dessous : géocode avec le registre national des adresses (PDOK aux Pays-Bas) ou OpenStreetMap et interroge le cadastre officiel du pays en ce point. Candidats classés par confiance (0 à 1). Coûte 1 unité de quota uniquement s'il renvoie des candidats.

Paramètres

qstringFree-text address: street and number, municipality (and postcode if you have it).
countrystringObligatoire : 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

Exemple de réponse

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)"
  }
}

Erreurs possibles

CodeHTTPDescription
VALIDATION_ERROR400La référence n'a pas un format valide pour le pays.
NOT_FOUND404No building entrance with a cadastral reference matches the address.
CNV_COVERAGE422Le pays n'a pas de recherche par adresse (SE, HR ou pays non couvert)
KEY_AUTH_004429Quota mensuel de la clé API épuisé (voir les en-têtes X-Quota-*).
SERVICE_UNAVAILABLE503CartoCiudad is not answering. Retry after Retry-After.

Intelligence de parcelle et exports

Géométrie, potentiel solaire, données agricoles et exports de fichiers (KML/GPX/PDF/DXF), disponibles avec votre API key. Les données de marché et le score d'investissement restent sur le web et dans l'app (Pro) et ne sont pas exposés via l'API.

GET/api/catastro/:refcat/polygon

Obtenir le polygone GeoJSON d'une parcelle.

Paramètres

:refcatstringRéférence cadastrale
countrystringCode pays (paramètre de requête, par défaut : ES)
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/9872023VH5797S/polygon"

Exemple de réponse

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

Quota mensuel épuisé

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

Obtenir les données de potentiel solaire (PVGIS) d'une parcelle européenne.

Paramètres

:refcatstringRéférence cadastrale
countrystringCode pays (paramètre de requête, par défaut : ES)
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/9872023VH5797S/solar"

Exemple de réponse

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
    }
  }
}

Parcelle sans données solaires

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

Données agricoles du terrain d’une parcelle (SIGPAC) : culture principale, usage du sol, pente, altitude et surface. Parcelles rurales uniquement — les parcelles urbaines renvoient "cultivo_principal": "urbano".

Paramètres

:refcatstringRéférence cadastrale
countrystringCode pays (paramètre de requête, par défaut : ES)
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/catastro/23058A00700036/agro"

Exemple de réponse

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 mensuel épuisé

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

Exporter les données de parcelle au format KML (Google Earth).

Paramètres

refcatstringRéférence cadastrale
countrystringCode pays (facultatif : détecté à partir de la référence)
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/export/kml?refcat=9872023VH5797S" -o parcel.kml

Exemple de réponse

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

Exporter les données de parcelle au format GPX (navigateurs GPS).

Paramètres

refcatstringRéférence cadastrale
countrystringCode pays (facultatif : détecté à partir de la référence)
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.parcelgps.com/api/export/gpx?refcat=9872023VH5797S" -o parcel.gpx

Exemple de réponse

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>

Journal des modifications

Ce qui a été publié dans l'API cette semaine, avec le numéro de modification dans le dépôt. Les réponses restent compatibles : aucun champ existant n'est renommé.

  • /api/catastro/:refcat/units sert désormais les immeubles du Pays basque et de la Navarre depuis notre copie des cadastres foraux, avec le même contrat que le territoire commun (200 par page, curseur, ETag, 1 unité de quota par lot), l'attribution de chaque administration forale et sans quote-part, que les données ouvertes forales ne publient pas. Álava est en cours de chargement. Modifications: #101, #102, #103

  • De l'adresse à la parcelle dans 26 pays européens avec /api/search/address/candidates?country=XX : le registre officiel des adresses là où il existe (Pays-Bas, Suisse, Pologne, Tchéquie, Estonie, Danemark, Flandre) et OpenStreetMap ailleurs, avec 10 secondes au maximum par point. Modifications: #93, #94
  • Nouveau /api/catastro/:refcat/ground-motion : vitesse verticale et est-ouest du sol issue de Copernicus EGMS 2020-2024 sur toute sa couverture, y compris les tuiles republiées des Pays-Bas, de la Belgique et des Pyrénées. Modifications: #80, #91
  • Bloc climate dans /terrain avec les normales ERA5-Land. La grille est en cours de chargement : tant que le chargement n'est pas terminé, la réponse est status unavailable. Modifications: #78
  • Hors d'Espagne : availableFields indique ce que contient chaque réponse, les réponses vides ne coûtent rien, /solar /agro /score renvoient 422 CNV_COVERAGE là où il n'y a pas de données, les chiffres ambigus renvoient 300 CNV_AMBIGUOUS, la référence est renvoyée en entier et la Belgique renvoie la latitude et la longitude dans le bon ordre. Modifications: #76
  • Avec une clé API, les messages d'erreur sont en anglais ; le champ code ne change pas. Modifications: #77
  • De l'adresse à la parcelle en France (Base Adresse Nationale) et en Italie ; Allemagne et Autriche par coordonnées avec surface et contour ; Chypre en moins d'une seconde ; /terrain et /ground-motion trouvent le contour dans le reste de l'Europe. Modifications: #83, #84, #85, #86
  • POST /api/search/coordinates traite tous les pays comme le GET. Modifications: #79
  • /terrain et /ground-motion décodent les références contenant une barre oblique (Belgique, Tchéquie, Pologne) : le champ refcat n'est plus renvoyé sous la forme %2F. Modifications: #95

  • Nouveau /api/catastro/:refcat/terrain : relief sur le contour (Copernicus DEM GLO-30) et croisement avec Natura 2000 et les espaces protégés nationaux (CDDA), sans répéter les sites présents dans les deux listes. Modifications: #67, #69, #70
  • Nouveau /api/catastro/:refcat14/units : toutes les unités d'une finca espagnole, 200 par page avec curseur, à 1 unité de quota par unité servie et jamais plus que ce qu'il vous reste ; le Pays basque et la Navarre renvoient 422 CNV_COVERAGE. Modifications: #53, #55, #73, #74, #75
  • De l'adresse à la finca en Espagne avec les candidats CartoCiudad, ETag et réimportations gratuites en 304, et la spécification OpenAPI 3.1 sur /api/openapi.json. Modifications: #72
  • En-têtes X-Quota-Limit, X-Quota-Remaining, X-Quota-Reset et X-Quota-Tier avec le quota mensuel, et une limite par minute et par clé selon l'offre. Modifications: #52, #58