---
title: "Buscar contratos (SECOP)"
method: GET
path: "/v1/contratos"
tags: ["Contratación"]
---

# Buscar contratos (SECOP)

`GET /v1/contratos`

## Request

- Base URL: `https://api.alfil.co`
- URL: `https://api.alfil.co/v1/contratos`
- Auth: OAuth 2 (authorization code, authorization URL `https://api.alfil.co/oauth/authorize`, token URL `https://api.alfil.co/oauth/token`, scopes: `buscar:read`)

## Query parameters

- `cursor` string
- `limit` integer
- `q` string
- `nit` string
- `cedula` string

## Response `200`

Contratos en listado (sin cédula)

- ContratosBuscarResponse
  - `data` ContratoListItem[], required
    - `id` string, required
    - `objeto` string, required
    - `entidad` object, required
      - `nombre` string, required
      - `nit` string, required
    - `contratista` object, required
      - `nombre` string, required
      - `tipo` 'persona_juridica' | 'persona_natural', required
    - `valor_cop` string, required: Valor en COP (bigint como string)
    - `valor_dudoso` boolean, required: true cuando el valor publicado no pasa la regla de plausibilidad de Alfil y ninguna fuente lo confirmó como está
    - `veredicto_valor` 'plausible' | 'recovered' | 'document_verified' | 'unverifiable', required: Veredicto de Alfil sobre el valor publicado: plausible, recuperado de las fuentes de financiación, verificado en el contrato firmado o sin verificar
    - `valor_corregido` number, nullable, required: Valor en COP que confirman las fuentes de financiación o el contrato firmado; null cuando no hay corrección
    - `referencias` Referencia[], required
      - `tipo` 'pagina_alfil' | 'registro_oficial' | 'documento_oficial' | 'coleccion_oficial', required
      - `titulo` string, required
      - `url` string, uri, required
      - `proveedor` string, required
      - `id_externo` string
    - `origen` 'SECOP I' | 'SECOP II': Dataset SECOP de origen del contrato (búsqueda dual, fix 2026-07-13)
  - `page` Page, required: Paginación por cursor opaco (no offset)
    - `cursor` string, nullable, required: Cursor opaco de la siguiente página; null si no hay más
    - `has_more` boolean, required: Indica si existen más resultados
  - `fuente` Fuente, required: Proveniencia: fuente oficial y fecha de corte (atribución Ley 1712)
    - `nombre` string, required: Fuente oficial del dato
    - `url` string: URL de la fuente oficial
    - `corte` string, required: Fecha de corte del dato (ISO 8601)
    - `licencia` string: Licencia de la fuente

## Other responses

- `401`: Token faltante, expirado o de emisor inesperado
- `403`: Scope insuficiente
- `429`: Cuota agotada o rate limit

---

[API](https://skmtc.dev/alfil/apis/alfil-api.md) · [All operations](https://skmtc.dev/alfil/apis/alfil-api/llms.txt) · [OpenAPI document](https://skmtc.dev/alfil/apis/alfil-api/revisions/e2545a4c45a5?raw)
