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.

66M+
registros indexados
12
fuentes oficiales
<200ms
latencia media p95

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.

Authorization: Bearer elicita_live_<id>_<secreto>

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.

PlanConsultas/mesRate limitNotas
Free3/día (web)Sin acceso API
Pro1.000100 req/minIncluye API + MCP

Endpoints

POST/api/v1/keysAuth

Crear API key

Crea una nueva API key. El secreto completo solo se muestra una vez. Requiere plan Pro.

GET/api/v1/keysAuth

Listar API keys

Devuelve metadatos de las API keys activas (sin mostrar el secreto).

DELETE/api/v1/keys/:idAuth

Revocar API key

Marca una API key como revocada. Las claves revocadas dejan de funcionar inmediatamente.

POST/mcpPúblico

MCP 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ámetroTipoRequeridoDescripción
qstringSí*Término de búsqueda. Se busca en título, organismo y adjudicatario. *Obligatorio si no se usa otro filtro.
cpvstringNoCódigo CPV o prefijo (p. ej. 45230000). Filtra por CPV cuando la fuente lo publica.
importeMinnumberNoImporte mínimo de adjudicación (€).
importeMaxnumberNoImporte máximo de adjudicación (€).
estadostringNoEstado del contrato: Anuncio, Adjudicada, Formalizado, etc.
fuentestringNoFuente: PLACE, TED, Galicia, Andalucía, Euskadi, Madrid, Catalunya.
nifstringNoNIF/CIF del adjudicatario.
desdestring (YYYY)NoAño de inicio del rango de publicación.
hastastring (YYYY)NoAño de fin del rango de publicación.
limitnumberNoMáximo de resultados. Público: ≤20, v1: ≤100. Default: 10/20.
offsetnumberNoDesplazamiento para paginación.
sortstringNoColumna de ordenación: titulo, organismo, adjudicatario, importe, fuente, fecha.
dirstringNoDirecció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.

POST https://elicita.es/mcp

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.

Discovery: GET https://elicita.es/.well-known/oauth-authorization-server
Authorize: GET https://elicita.es/authorize → Clerk
Callback: GET https://elicita.es/mcp/callback
Token: POST https://elicita.es/token
Register: POST https://elicita.es/register

Documentación completa del MCP →

Tools expuestas (7, todas read-only):

ToolDescripción
search_licitacionesBuscar licitaciones y contratos por texto, CPV, importe, estado, fuente, NIF y fechas.
get_statsEstadísticas del dataset: total de registros, fuentes cubiertas y última actualización.
get_coberturaCobertura de fuentes dinámicas: fuentes activas y periodicidad de actualización.
search_cpvBuscar códigos CPV por texto en español (9.454 códigos).
get_organismoInformación de organismo por NIF: nombre, importe contratado, número de contratos. (OAuth)
graph_searchGrafo de relaciones contractuales de un organismo por NIF. (OAuth)
graph_contractsContratos relacionados por organismo, CPV, importe o adjudicatario. (OAuth)

Errores

CódigoNombreDescripción
400Bad RequestFaltan parámetros obligatorios (p. ej. q) o son inválidos.
401UnauthorizedFalta API key, es inválida o la sesión de Clerk no está activa.
403ForbiddenEl plan actual no tiene acceso a la API o al MCP.
429Too Many RequestsSe ha alcanzado el límite diario de consultas o de rate limit.
500Internal Server ErrorError inesperado. Reintentar o contactar soporte.