La API «gratis» del Catastro: lo que cuesta de verdad consumir la OVC en 2026
Sí: el Catastro español tiene API pública, sin registro y gratis (la OVC, Oficina Virtual del Catastro). Para una consulta puntual es perfectamente usable, y lo decimos sin ironía. Esta guía es para cuando quieres meterla en producción: documenta los comportamientos reales del servicio — verificados contra el servicio vivo — que la documentación oficial no pone en la portada.
Publicada el · verificado contra las fuentes citadas en esa fecha
La superficie: tres servicios ASMX, no una API
No hay "una API del Catastro": hay servicios SOAP/XML de la era .asmx, y cada forma de entrada es un servicio distinto con su propia firma y sus propios errores:
- Por referencia catastral:
Consulta_DNPRC(OVCCallejero.asmx). - Por coordenadas:
Consulta_RCCOOR(OVCCoordenadas.asmx) — con su propia gestión de SRS y orden de ejes. - Por dirección:
Consulta_DNPLOC(OVCCallejero.asmx) — provincia y municipio por nombre en mayúsculas, no por código, y la sigla de vía (CL,AV…) importa.
Todos responden XML. Admiten GET, lo que simplifica el transporte — el resto no se simplifica.
Los dientes, uno a uno
1. Parámetros obligatorios… aunque vayan vacíos
Consulta_DNPRC(Provincia, Municipio, RC) exige los tres parámetros. Si omitesProvincia (en vez de mandarla vacía), la respuesta es un HTTP 500 entext/plain: Missing parameter: Provincia. — ni XML, ni JSON. Y el parámetro de la referencia se llama RC, no RefCat.
2. Cuatro formas de respuesta distintas para el mismo endpoint
La respuesta de Consulta_DNPRC cambia de estructura según lo que encuentre, y el discriminador es el bloque <control> con sus contadores:
- Urbano único (
cn=UR): bloque<bico>con<lcons>(desglose de construcciones). - Rústico único (
cn=RU): sin<lcons>; la localización va en<lorus>(polígono/parcela) y los cultivos en<lspr>. Sin año de construcción. - Multi-inmueble: una RC de 14 con varias unidades devuelve
<lrcdnp>— una lista, con otra estructura — y te toca desambiguar y reconsultar con la RC de 20. - Error de negocio:
<lerr>… con HTTP 200 (siguiente punto).
Tu parser necesita las cuatro ramas. Con una RC de prueba solo verás una.
3. No te fíes del status HTTP
"La referencia no existe" o "está mal formada" llegan como HTTP 200 con el error dentro del XML (<lerr><err><cod>4</cod>…). Los errores de infraestructura llegan como 500 text/plain. Si tu cliente mapea "200 = éxito", tendrás éxitos que son errores; si reintentas todos los fallos, reintentarás referencias mal formadas para siempre. Hay que clasificar por canal: infra (reintentable) vs negocio (no reintentable) vs multi (es un dato, no un error).
4. Locale es-ES hasta el fondo
Coeficientes con coma decimal (100,000000), literales en mayúsculas con acentos (LABRADÍO), namespace XML por defecto que complica el acceso por nombre. Detalles pequeños, hasta que uno convierte 100,000000 a 100000000.
5. La referencia catastral tiene su propia gramática
14 caracteres = parcela; 20 = inmueble concreto (los 2 últimos son dígitos de control verificables). Urbana y rústica codifican cosas distintas en esas posiciones. Validar antes de llamar ahorra viajes — y los dígitos de control detectan el error de transcripción más común en formularios.
6. Lo operativo: sin SLA, sin rate limits documentados
Es un servicio gubernamental: latencia variable, mantenimientos sin aviso, límites de uso sin documentar. En producción eso se traduce en timeouts + retry con backoff + caché propia si quieres que tu feature no herede la disponibilidad del upstream. Y la cobertura es el territorio común: País Vasco y Navarra tienen catastro foral propio y no están.
Si quieres hacerlo tú (en serio, es una opción)
Para volumen bajo, un side-project o un análisis puntual, la OVC directa es razonable y gratis. Atajos que ayudan: pycatastro (Python) yCatastRo (R) envuelven las llamadas — el parsing fino y la clasificación de errores siguen siendo cosa tuya. Presupuesta las cuatro ramas del parser, los dos canales de error y un juego de referencias de prueba urbanas, rústicas y multi.
El atajo: el mismo dato, con contrato
Predio existe porque nosotros ya pagamos ese peaje. Es el Catastro en JSON limpio y versionado: las tres entradas (referencia, coordenadas, dirección) con una salida única, errores tipados y estables (404 NOT_FOUND, 422 INVALID_REFERENCE… siempre JSON, nunca XML con 200), caché con serve-stale para que la latencia del upstream no sea la tuya, y consumo vía REST oMCP si quien llama es un agente. Se paga por llamada (prepago, desde 0,002 €/llamada) y hay250 llamadas gratis al mes para probar sin tarjeta.
¿Comparas opciones? Tenemos una comparativa honesta de todas las alternativas — incluida "no nos uses".
Comportamientos de la OVC verificados contra el servicio real (última verificación de los ejemplos: 2026-06). Predio redistribuye datos no protegidos de la Dirección General del Catastro conforme a su licencia; servicio no oficial.