API Reference
Elicita API
Accede programáticamente al dataset de contratación pública española más completo: más de 66 millones de registros agregados de PLACE, 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.
/mcpPúblicoMCP server
Servidor MCP (Streamable HTTP, OAuth 2.0). 4 tools públicas + 3 con auth.
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:
MCP
Elicita expone un servidor Model Context Protocol (MCP) en /mcp con transporte Streamable HTTP (spec 2026-07-28 stateless). Permite que agentes de IA como Claude, Cursor o Bedrock busquen licitaciones, consulten estadísticas y exploren el grafo de contratos directamente.
Autenticación OAuth 2.0 (Clerk)
El servidor MCP usa OAuth 2.0 con Dynamic Client Registration (RFC 7591), delegando la autenticación a Clerk como proveedor de identidad. El usuario inicia sesión con su cuenta de Elicita vía Clerk —sin need de copiar API keys manualmente.
Documentación completa del MCP →
Tools expuestas (7, todas read-only):
| Tool | Descripción |
|---|---|
| search_licitaciones | Buscar licitaciones y contratos por texto, CPV, importe, estado, fuente, NIF y fechas. |
| get_stats | Estadísticas del dataset: total de registros, fuentes cubiertas y última actualización. |
| get_cobertura | Cobertura de fuentes dinámicas: fuentes activas y periodicidad de actualización. |
| search_cpv | Buscar códigos CPV por texto en español (9.454 códigos). |
| get_organismo | Información de organismo por NIF: nombre, importe contratado, número de contratos. (OAuth) |
| graph_search | Grafo de relaciones contractuales de un organismo por NIF. (OAuth) |
| graph_contracts | Contratos relacionados por organismo, CPV, importe o adjudicatario. (OAuth) |
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. |