---
title: "Subvenciones y licitaciones abiertas"
method: POST
path: "/oportunidades"
tags: ["Dinero público"]
---

# Subvenciones y licitaciones abiertas

`POST /oportunidades`

## Request

- Base URL: `https://boletinclaro.es/v1`
- URL: `https://boletinclaro.es/v1/oportunidades`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Búsqueda de solo lectura con cuerpo JSON, para consultas Unicode largas sin el límite de longitud de URL del proxy. Máximo 32 KiB de cuerpo; no admite parámetros en la URL. Dinero público al que todavía se puede optar, ordenado por lo bien que encaja con una descripción en lenguaje natural.

Queda fuera automáticamente lo que ya no se puede solicitar: plazo vencido, concesión directa sin proceso, o una licitación que la fuente ya ha adjudicado.

## Request body

- object
  - `consulta` string, required
  - `incluir_cerradas` boolean
  - `limite` integer
  - `tipo` 'subvenciones' | 'licitaciones' | 'ambos'
  - `zona` string

## Response `200`

Resultados ordenados por relevancia.

- RespuestaEntradas: Envoltorio común de las respuestas de lista. No hay paginación: una búsqueda semántica ordena por parecido, y la fila 400 de un ranking así no significa nada.
  - `busqueda` SearchMetadata
    - `candidatos_leidos` integer, required
    - `grupos_consulta` integer, required
    - `limite_candidatos` integer, required
    - `truncada` boolean, required: La selección de candidatos o el resultado se recortó; no es una exportación exhaustiva.
  - `consulta` string: La consulta tal y como se aplicó, ya recortada si venía por encima del máximo.
  - `resultados` Entrada[], required: Entradas encontradas, ordenadas por relevancia.
    - `ambito` 'nacional' | 'local': `nacional` cuando aplica a todo el país; `local` cuando va atada a lugares concretos.
    - `codigos_ubicacion` string[]: Jerarquía del INE de lo más concreto a lo más general (municipio, provincia, comunidad), para cruzarla con tus datos. Vacía en las entradas de ámbito nacional.
    - `enlace` string, uri: URL oficial de la fuente.
    - `fecha_fin` string, date: Cierre del plazo. Es lo que usamos para decidir si algo sigue abierto. Solo una parte de las convocatorias lo publica.
    - `fecha_inicio` string, date: Apertura del plazo, cuando la fuente la publica.
    - `fecha_publicacion` string, date: Cuándo salió en el boletín. AAAA-MM-DD.
    - `ficha` string, uri: Nuestra página del mismo elemento. **No guardes el identificador que aparece dentro de esta URL**: es la clave de nuestra página, no de la entrada.
    - `fuente` string, required: Código corto de la fuente: BDNS, PLACSP, TED, EUFUNDING, BOE, BOJA, DOG…
    - `identificador` string: Referencia propia de la fuente oficial. Estable en el único sitio que no controlamos nosotros.
    - `importe` number, double: Importe en la moneda de `moneda`. Cuando la fuente no publica importe el campo **no aparece**, en vez de venir a cero: así una suma tuya no se queda corta en silencio. Un cero que sí viene es un cero de verdad.
    - `moneda` string: Código ISO 4217.
    - `seccion` string: Sección del boletín, cuando la fuente la marca.
    - `tipo` 'subvencion' | 'licitacion' | 'boletin', required: Qué es la entrada. Se deriva de la fuente, así que no puede contradecir al filtro que la trajo.
    - `titulo` string, required: Título tal y como lo publica la fuente.
    - `ubicacion` string[]: Nombres completos de los lugares, para leerlos. Una entrada por lugar real, no una por nivel de la jerarquía. Se omiten si la geografía no está disponible; los códigos viajan igual.
  - `total` integer, required: Cuántas filas trae ESTA respuesta. No es cuántas hay en total.

## Other responses

- `400`: Un parámetro no vale.
- `401`: La clave de API no existe o está revocada.
- `403`: El plan del espacio de trabajo no incluye acceso a la API.
- `405`: La ruta existe pero no admite ese método HTTP.
- `429`: Has superado la ráfaga, el saldo mensual o diario del workspace, el tope por usuario o el máximo de perfiles y fichas.
- `500`: Fallo nuestro.
- `503`: Algo nuestro no está disponible. Incluye el caso en que no se pudo resolver «zona»: preferimos fallar a devolverte resultados sin filtrar.

---

[API](https://skmtc.dev/boletinclaro/apis/api-de-boletin-claro.md) · [All operations](https://skmtc.dev/boletinclaro/apis/api-de-boletin-claro/llms.txt) · [OpenAPI document](https://skmtc.dev/boletinclaro/apis/api-de-boletin-claro/revisions/0a0d93c76a75?raw)
