Skip to content

Parcelas

GET /v1/parcels/{ref} devuelve una parcela por su referencia catastral, y GET /v1/parcels?lat=&lon=, las de un punto. Todo sale de la base territorial de Normatia, que reúne el Catastro, las capas de afección y el planeamiento de cada municipio con su fuente. No se consulta nada en vivo.

No consume cuota: pertenece al grupo de datos (60 peticiones por minuto). Los errores van en el formato de /v1, descrito en Errores.

Terminal window
curl "https://api.normatia.com/v1/parcels/6963301TG3466N?include=constraints,buildings" \
-H "Authorization: Bearer $NORMATIA_API_KEY"

Todos los ejemplos de esta página funcionan con una clave de prueba: sus parcelas están en el entorno de pruebas.

ParámetroDóndeDescripción
refrutaReferencia catastral de 14 caracteres. Con los 20 de un inmueble, devuelve su parcela
includeconsultaBloques que añadir, separados por comas: constraints, zoning, buildings, units, geometry

Una parcela real de Sevilla, la del parque empresarial Torneo, con un edificio de 2.633 inmuebles (abreviada):

{
"object": "parcel",
"ref": "6963301TG3466N",
"place": { "geo_id": "ES-41091", "ine": "41091", "name": "SEVILLA" },
"cadastral_class": { "code": "urban", "label": "Urbana" },
"main_use": "residencial",
"area_m2": 31648.0,
"centroid": { "lat": 37.425128, "lon": -5.974094 },
"bbox": [-5.975714, 37.424103, -5.97282, 37.426162],
"addresses": [
{ "street": "CL ASTRONOMIA", "number": "S-N", "postal_code": "41015" },
{ "street": "CU TORNEO PARQUE EMPRESARIAL", "number": "5", "postal_code": "41015" }
],
"constraints": { "summary": { "affected": 3, "context": 10, "not_affected": 19, "no_data": 4 }, "layers": ["..."] },
"zoning": null,
"buildings": {
"built": true, "condition": "funcional", "year_built": 2006, "built_area_m2": 110927.0,
"dwellings": 0, "units": 2633, "floors_above": 13, "floors_below": 2,
"source": "Dirección General del Catastro (INSPIRE, edificios)"
},
"units": null,
"geometry": null,
"disclaimer": "Información orientativa a partir de fuentes oficiales. No sustituye a certificados ni a informes oficiales."
}

Los bloques que no se piden en include salen null.

Cada capa sale una vez, con uno de estos estados:

statusaffectedQué quiere decir
affectedtrueLa afecta
partially_affectedtrueAfecta a una parte de la parcela
contextfalseNo la afecta, pero hay un dato cercano que conviene saber (por ejemplo, un helipuerto a 2 km)
not_affectedfalseComprobada y sin afección
no_datanullNo hay datos de esa capa en su municipio (reason: "no_coverage")

Una capa de esa misma parcela:

{
"layer": "vias_pecuarias",
"affected": true,
"status": "affected",
"label": "A verificar",
"summary": "Cañada Real del Bodegon de las Cañas O de Cordoba a Sevilla, clasificada, a 0 m",
"distance_m": 0.0,
"warnings": ["Cobertura best_effort: la ausencia de resultado no garantiza ausencia de afección"],
"reason": "la distancia es a la traza cartográfica; la anchura legal la fija el acto de clasificación",
"source": "MITECO / IEPNB"
}

label es la etiqueta del informe de afecciones de Normatia: Afecta, Exige trámite, Riesgo técnico, A verificar (el dato de la fuente es dudoso y reason dice por qué) o Informativa (contexto: status: "context").

La clase de suelo, la zona de ordenanza principal con el porcentaje de la parcela que cae en ella y sus parámetros validados, las otras zonas que la tocan y los ámbitos de planeamiento. Cada uno lleva su fuente, su fecha y el instrumento. Si el planeamiento de su municipio no está cargado, zone y land_class salen null.

De la parcela 8058503DF2885G, en Barcelona:

{
"land_class": { "source": "Ajuntament de Barcelona", "date": "2026-10-03", "instrument": "PGM", "label": "Suelo urbano consolidado" },
"zone": {
"source": "Ajuntament de Barcelona",
"date": "2026-10-03",
"instrument": "PGM",
"code": "20a/9",
"name": "Edificació aïllada, subzona plurifamiliar IVa",
"percent": 94.1,
"global_use": "Residencial multifamiliar",
"typology": "Edificació aïllada",
"parameters": {
"edificabilidad": { "value": 1.0, "unit": "m2t/m2s", "text": null },
"frente_min_m": { "value": 14.0, "unit": "m", "text": null }
}
},
"other_zones": [],
"areas": [],
"zone_from_other_municipality": false,
"contrast_land_class": { "source": "Ministerio de Vivienda y Agenda Urbana", "date": "2023-01-01", "instrument": "Plan General (1976)", "label": "Suelo urbano consolidado" }
}

Solo salen los parámetros que se han podido validar. contrast_land_class es la clase de suelo de una fuente de contraste (el Sistema de Información Urbana), aparte de la del planeamiento.

Lo edificado según el Catastro: estado, año, superficie construida, viviendas, inmuebles y plantas. null si el Catastro de edificios no está cargado en su municipio; built: false si está cargado y no hay nada edificado.

Los inmuebles catastrales de la parcela: el total y cuántos hay de cada uso, y la lista con la referencia de 20 caracteres, el uso, la superficie, el año y la dirección. Nunca la escalera, la planta ni la puerta. La lista trae como mucho 200 de cada uso: si hay más, has_more es true y total y by_use los cuentan todos. null si los datos del Catastro no están cargados en su municipio.

{
"total": 2633,
"by_use": { "almacen_estacionamiento": 1755, "oficinas": 764, "comercial": 114 },
"data": [
{ "ref": "6963301TG3466N2130LH", "use": "almacen_estacionamiento", "area_m2": 15, "year_built": 2006,
"address": "CU TORNEO PARQUE EMPRESARIAL 5 CROS SAN JERONIMO MZ-5", "postal_code": "41015" }
],
"has_more": true,
"source": "Dirección General del Catastro",
"date": "2026-08-14",
"note": "Elaborado a partir de datos del Catastro. No es información catastral."
}

El polígono de la parcela en GeoJSON (RFC 7946: longitud y latitud WGS84).

GET /v1/parcels?lat=37.425128&lon=-5.974094 devuelve la parcela que contiene el punto o, si no cae en ninguna, las que están a menos de 50 m, de la más cercana a la más lejana, con su distancia.

{
"object": "list",
"data": [{ "ref": "6963301TG3466N", "contains_point": true, "distance_m": null }],
"has_more": false
}

Con una clave de prueba, solo encuentra las parcelas de prueba que contienen el punto: el centro de cada una está en GET /v1/sandbox.

Una lista vacía quiere decir que no hay ninguna parcela cerca (el mar, una plaza grande) o que el territorio no está en la base. Un punto fuera de España responde 422 point_outside_spain.

La búsqueda por dirección llegará con el buscador de direcciones de la base territorial.

EstadocodeCuándo
404parcel_not_foundLa referencia no existe o su municipio no está en la base territorial
404not_in_sandboxCon una clave de prueba, la parcela no está en el entorno de pruebas
422invalid_refLa referencia no tiene 14 (o 20) caracteres válidos
422invalid_includeSe pidió un bloque que no existe. El cuerpo trae allowed
422point_outside_spainEl punto está fuera de España
503parcel_data_unavailableLa base territorial no respondió a tiempo (más de 8 s). Reintenta tras Retry-After