API Reference
Elicita API
Accede programáticamente al dataset de contratación pública española más completo: 63M+ registros agregados de PLACSP, TED, BOE, BORME y los boletines oficiales de las principales comunidades autónomas.
Autenticación
Los endpoints de la API v1 utilizan autenticación Bearer. Incluye tu API key en el headerAuthorization. Las API keys se generan y gestionan desde/cuenta.
También puedes usar /api/v1/search autenticado con tu sesión de Clerk (cookie __session) mientras navegas por la aplicación.
Rate Limits
Límites mensuales con token-bucket rate limiting por minuto.
| Plan | Consultas/mes | Rate limit | Notas |
|---|---|---|---|
| Free | 3/día (web) | — | Sin acceso API |
| Pro | 1.000 | 100 req/min | Incluye API + MCP |
Endpoints
/api/public/searchPúblicoBúsqueda pública
Búsqueda anónima en las fuentes públicas. Límite de 10 consultas/día por IP. No requiere autenticación.
/api/v1/searchAuthBúsqueda con API key
Búsqueda autenticada con API key. Plan Pro: 1.000 consultas/mes.
/api/v1/keysAuthCrear API key
Crea una nueva API key. El secreto completo solo se muestra una vez. Requiere plan Pro.
/api/v1/keysAuthListar API keys
Devuelve metadatos de las API keys activas (sin mostrar el secreto).
/api/v1/keys/:idAuthRevocar API key
Marca una API key como revocada. Las claves revocadas dejan de funcionar inmediatamente.
/api/v1/org/:nifAuthPerfil de organización
Ficha de proveedor: contratos, agregados y enriquecimiento BORME. Los agregados (volumen_total y los de la ficha pública) usan el importe corregido de errores de fuente verificados (issue #22 upstream); volumen_total_publicado conserva la suma publicada y cada contrato informa importe_corregido y correccion. Campos y motivos de corrección documentados en la sección «Perfil de organización». Requiere plan Pro.
/mcpPúblicoMCP server
Servidor MCP Streamable HTTP. Expone las cuatro tools estables, de solo lectura.
cURL — búsqueda pública
cURL — búsqueda autenticada
cURL — crear API key
JavaScript (fetch)
JavaScript (API key)
Python (requests)
Parámetros de búsqueda
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| q | string | Sí* | Término de búsqueda. Se busca en título, organismo y adjudicatario. *Obligatorio si no se usa otro filtro. |
| cpv | string | No | Código CPV o prefijo (p. ej. 45230000). Filtra por CPV cuando la fuente lo publica. |
| importeMin | number | No | Importe mínimo de adjudicación (€). |
| importeMax | number | No | Importe máximo de adjudicación (€). |
| estado | string | No | Estado del contrato: Anuncio, Adjudicada, Formalizado, etc. |
| fuente | string | No | Fuente: PLACE, TED, Galicia, Andalucía, Euskadi, Madrid, Catalunya. |
| nif | string | No | NIF/CIF del adjudicatario. |
| desde | string (YYYY) | No | Año de inicio del rango de publicación. |
| hasta | string (YYYY) | No | Año de fin del rango de publicación. |
| limit | number | No | Máximo de resultados. Público: ≤20, v1: ≤100. Default: 10/20. |
| offset | number | No | Desplazamiento para paginación. |
| sort | string | No | Columna de ordenación: titulo, organismo, adjudicatario, importe, fuente, fecha. |
| dir | string | No | Dirección: asc o desc. Default: desc. |
Ejemplo de respuesta
Respuesta típica de /api/public/search y /api/v1/search:
Perfil de organización
GET /api/v1/org/:nif devuelve la ficha del proveedor con dos contables: el importe publicado (tal cual figura en la fuente) y el corregido, que corrige errores de fuente verificados (issue #22 upstream de licitaciones-espana). Los publicados se enseñan tal cual — que se publicara mal también es dato para la auditoría — y los agregados usan el corregido: sin adjudicación fiable, el contrato no suma.
| Campo | Tipo | Descripción |
|---|---|---|
| volumen_total | number | Suma de adjudicaciones con los errores de fuente corregidos (issue #22 upstream). Es el agregado canónico de la ficha: sin adjudicación fiable, el contrato no suma. |
| volumen_total_publicado | number | Suma de los importes tal cual los publicó la fuente. Difiere de volumen_total cuando hay correcciones aplicadas. |
| total_all_time | number | Nº de contratos tras deduplicar por expediente|organismo entre la ventana viva y el histórico PLACSP 2012-2026. |
| contratos[].importe | number | Adjudicación publicada, sin corregir. Los filtros y la ordenación por importe de /api/v1/search operan sobre este valor. |
| contratos[].importe_corregido | number | null | Adjudicación corregida con el mismo criterio que la ficha pública. Igual a importe cuando no hay corrección; null cuando no hay adjudicación publicada o el valor no es fiable y no existe corrección aplicable (motivo inverosimil). |
| contratos[].correccion | string | null | Motivo de la corrección aplicada (tabla siguiente). null si no se aplicó ninguna. |
Motivos de corrección — contratos[].correccion
| Motivo | Significado |
|---|---|
| registro | Error verificado a mano con evidencia en el upstream (errores_fuente.csv, issue #22): el publicado se sustituye por el valor probable documentado. Manda sobre la escala. |
| escala_x100 | Coma decimal perdida en origen: adjudicación de ≥100× el presupuesto que dividida entre 100 recupera su orden (mismas cifras que el presupuesto, o entre el 50 % y el 105 % de él). |
| escala_x1000 | Ídem, dividida entre 1.000. |
| inverosimil | Salto ≥100× sin corrección fiable: el importe publicado no suma en los agregados (importe_corregido: null). |
| no_comparable | Presupuesto < 1.000 € con salto ≥100× (precio unitario o simbólico, a menudo 1 €): el publicado se mantiene y el contrato queda marcado. |
| null | Sin salto detectado ni registro aplicable: el importe se usa tal cual. |
Ejemplo con el caso real del issue #22: la rehabilitación de c/ Kanpandegi 2 (Donostia) se publicó con 2.357.531.666 € adjudicados a CONSTRUCCIONES URDINBERRI, S.L.; el valor probable documentado es 2.357.531,67 €. Valores del dataset a 2026-09-29:
MCP
Elicita expone un servidor Model Context Protocol (MCP) en /mcp con transporte Streamable HTTP y protocolo 2025-06-18. Permite que agentes de IA como Claude o Cursor busquen licitaciones, consulten estadísticas, cobertura y códigos CPV con un contrato público estable.
Esta versión no ofrece OAuth público. Consulta el onboarding y las limitaciones del contrato antes de conectar un cliente. Documentación completa del MCP →
Tools estables (4, todas read-only):
| Tool | Descripción |
|---|---|
| search_licitaciones | Busca licitaciones y contratos por texto, CPV, importe, estado, fuente, NIF y año. |
| get_stats | Consulta el tamaño histórico del dataset y su última actualización global. |
| get_cobertura | Comprueba fuentes activas, periodicidad y frescura antes de investigar. |
| search_cpv | Encuentra códigos CPV en español para convertir una necesidad en una búsqueda reproducible. |
Errores
| Código | Nombre | Descripción |
|---|---|---|
| 400 | Bad Request | Faltan parámetros obligatorios (p. ej. q) o son inválidos. |
| 401 | Unauthorized | Falta API key, es inválida o la sesión de Clerk no está activa. |
| 403 | Forbidden | El plan actual no tiene acceso a la API o al MCP. |
| 429 | Too Many Requests | Se ha alcanzado el límite diario de consultas o de rate limit. |
| 500 | Internal Server Error | Error inesperado. Reintentar o contactar soporte. |