Skip to main content
Colombia ha manejado la contratación pública en dos sistemas. SECOP I (desde 2004) es un registro de publicación: la entidad sube lo que hizo. SECOP II (desde 2015) es una plataforma transaccional: el proceso ocurre dentro de ella. Ambos los administra Colombia Compra Eficiente, ambos siguen recibiendo registros, y publican columnas distintas, con palabras distintas y a granularidades distintas. Croma sirve ambos como un solo corpus. Siete conjuntos de datos (procesos, contratos, modificaciones de contratos, proponentes, proveedores, sanciones y planes anuales de adquisiciones) están completos, se mantienen al día y se responden con un vocabulario único, de modo que una pregunta como “todo lo que esta empresa ha contratado con el Estado” es una sola llamada y no dos búsquedas en dos formas distintas. Cada respuesta incluye as_of, hasta cuándo están al día los datos. Dos endpoints siguen leyendo la fuente en vivo, porque responden sobre un registro y no sobre el corpus: secop-process devuelve un proceso de SECOP II con sus adjudicaciones por proveedor y sus contratos, y secop-contract devuelve un contrato con sus adiciones, garantías y plan de entregas.

Proceso por noticeUID

POST /co/secop/process/v1
El noticeUID es el identificador del aviso del proceso, con el formato CO1.NTC.<number> (p. ej. CO1.NTC.9458505).

Contratos por proveedor

Este endpoint está deprecado desde 2026-08-30 y dejará de responder el 2026-12-01. Usa su sucesor, POST /co/secop/contracts-search/v1, en su lugar.
POST /co/secop/contracts-by-provider/v1 Lista los contratos adjudicados a un proveedor (cédula o NIT) a través de cada entidad contratante: el perfil del contratista.
Devuelve document_number, los filtros aplicados (entity_nit, from_date, to_date), count, capped, contracts[] (la misma estructura de contrato que abajo) y un objeto pagination (total, page_size, total_pages, page). Páginas de 500, los más recientes primero; cuando capped es true la página está llena, así que solicita la siguiente page o acota la búsqueda.

Procesos por entidad

Este endpoint está deprecado desde 2026-08-30 y dejará de responder el 2026-12-01. Usa su sucesor, POST /co/secop/processes-search/v1, en su lugar.
POST /co/secop/processes-by-entity/v1 Lista los procesos de contratación publicados por una entidad contratante (por NIT), opcionalmente dentro de una ventana de fecha de publicación: la población a auditar de una entidad. Devuelve resúmenes ligeros; profundiza en uno con la consulta por noticeUID de arriba.
Devuelve document_number, from_date, to_date, count, capped, processes[] (cada uno con notice_uid, process_id, name, entity, entity_nit, modality, contract_type, base_price, phase, procedure_status, published_date y url) y un objeto pagination (total, page_size, total_pages, page). Páginas de 500, los más recientes primero; cuando capped es true la página está llena, así que solicita la siguiente page.

Contrato por id

POST /co/secop/contract/v1 Resuelve un contrato electrónico por su id y adjunta su historial satélite: adiciones/modificaciones registradas, pólizas de garantía y el plan de entregas con avance planeado vs real.
Devuelve found, contract_id, contract (la misma estructura que contracts[] abajo) y tres listas, cada una limitada a 200 con su indicador *_capped:

Sanciones por proveedor

Este endpoint está deprecado desde 2026-08-30 y dejará de responder el 2026-12-01. Usa su sucesor, POST /co/secop/sanctions-search/v1, en su lugar.
POST /co/secop/sanctions-by-provider/v1 Lista las multas y sanciones registradas contra un contratista del Estado. Los registros cubren desde 2010 hasta el presente.
Devuelve document_number, count, capped y sanctions[], cada una con entity, entity_nit, entity_level, entity_order, municipality, resolution_number, provider, contract_number, sanction_value, published_date, final_date (fecha de firmeza) y url.

Buscar procesos

POST /co/secop/processes-search/v1 Busca todos los procesos de contratación publicados en SECOP II y SECOP I como un solo corpus. Los filtros se combinan libremente; query busca en el nombre, la descripción, la entidad y la referencia del proceso.
La fuente entera, organizada y lista para consultar: este endpoint responde en milisegundos, a cualquier hora y siempre igual. Cada respuesta incluye as_of: qué tan actualizados están los datos.
Devuelve as_of (hasta cuándo están al día los datos), total, page, per_page, total_pages, count, los filtros tal como se aplicaron y results[]. Cada resultado es un registro de proceso: su id con prefijo de plataforma, la entidad compradora, el objeto, la modalidad y el tipo de contrato, los valores estimado y adjudicado, las fechas, los conteos de competencia que publica SECOP II (invited_providers, unique_responding_providers, …) y la URL del proceso. Usa el id de un resultado con secop-process-record para leerlo por separado, o su notice_uid con secop-process para la vista en vivo con adjudicaciones y contratos.

Buscar contratos

POST /co/secop/contracts-search/v1 Busca todos los contratos firmados a través de SECOP II y SECOP I como un solo corpus. provider_document acepta un NIT o cédula con o sin puntos y dígito de verificación: 900195855, 900.195.855-1 y 900195855-1 corresponden al mismo contratista.
La fuente entera, organizada y lista para consultar: este endpoint responde en milisegundos, a cualquier hora y siempre igual. Cada respuesta incluye as_of: qué tan actualizados están los datos.
Devuelve as_of, los metadatos de página, los filtros aplicados y results[]. Cada resultado es un registro de contrato con la entidad, el contratista y su representante legal, el objeto, los valores (firmado, con adiciones, facturado, pagado, pendiente), el desglose de fuentes de financiación, las fechas, los marcadores de posconflicto y Acuerdo de Paz, y quién lo supervisa. value es el valor a la firma; value_with_additions es el valor por el que conviene ordenar el gasto. Usa el id de un resultado con secop-contract-record, o su contract_id con secop-contract para la vista en vivo con adiciones, garantías y plan de entregas.

Buscar modificaciones de contratos

POST /co/secop/modifications-search/v1 Lista lo que ocurrió con los contratos después de firmados. Ordenar por value_desc con un piso en min_value es la forma más directa de encontrar los contratos que más crecieron tras la adjudicación.
La fuente entera, organizada y lista para consultar: este endpoint responde en milisegundos, a cualquier hora y siempre igual. Cada respuesta incluye as_of: qué tan actualizados están los datos.
Devuelve as_of, los metadatos de página, los filtros aplicados y results[] con contract_id, kind, description, added_value, added_days y registered_date. SECOP I registra sus adiciones contra la adjudicación y no contra la fila del contrato, así que esas traen contract_reference (el id de adjudicación, que un contrato reporta como award_id) en lugar de contract_id.

Buscar proveedores

POST /co/secop/suppliers-search/v1 El registro de proveedores de SECOP II. query busca en el nombre, el documento y la descripción de la categoría registrada.
La fuente entera, organizada y lista para consultar: este endpoint responde en milisegundos, a cualquier hora y siempre igual. Cada respuesta incluye as_of: qué tan actualizados están los datos.
Devuelve as_of, los metadatos de página, los filtros aplicados y results[] con el document del proveedor, name, categoría, ubicación, datos de contacto, representante legal e is_active. SECOP I no tiene registro de proveedores propio; un contratista de SECOP I aparece en secop-contracts-search pero no aquí.

Buscar proponentes

POST /co/secop/bidders-search/v1 Quién presentó oferta en cuál proceso. SECOP I además publica la calificación y si el proponente resultó adjudicado; SECOP II solo publica la participación, así que allí score y awarded son nulos en vez de inferidos.
La fuente entera, organizada y lista para consultar: este endpoint responde en milisegundos, a cualquier hora y siempre igual. Cada respuesta incluye as_of: qué tan actualizados están los datos.
Devuelve as_of, los metadatos de página, los filtros aplicados y results[] con process_id, bidder, bidder_document, score, awarded y published_date.

Buscar sanciones

POST /co/secop/sanctions-search/v1 Todo el registro de multas y sanciones, consultable a través de contratistas y entidades en vez de un contratista a la vez.
La fuente entera, organizada y lista para consultar: este endpoint responde en milisegundos, a cualquier hora y siempre igual. Cada respuesta incluye as_of: qué tan actualizados están los datos.
Devuelve as_of, los metadatos de página, los filtros aplicados y results[] con la entidad sancionadora, el contratista, el número de resolución, el contrato, el valor en COP, la fecha de publicación y la fecha de firmeza.

Buscar planes anuales de adquisiciones

POST /co/secop/plans-search/v1 La mitad prospectiva de la contratación colombiana: lo que las entidades dicen que van a comprar, antes de que existan los procesos.
La fuente entera, organizada y lista para consultar: este endpoint responde en milisegundos, a cualquier hora y siempre igual. Cada respuesta incluye as_of: qué tan actualizados están los datos.
Devuelve as_of, los metadatos de página, los filtros aplicados y results[] con la entidad, el año, el presupuesto total anunciado, los límites de menor y mínima cuantía, la misión y perspectiva estratégica declaradas y el contacto registrado.

Perfil por documento

POST /co/secop/profile/v1 Un documento, los dos lados del mercado. Un NIT puede ser contratista, entidad compradora o ambos, y esto responde por todo a la vez.
La fuente entera, organizada y lista para consultar: este endpoint responde en milisegundos, a cualquier hora y siempre igual. Cada respuesta incluye as_of: qué tan actualizados están los datos.
Los conteos son exactos; las listas son las mayores. as_contractor.contracts es el número real de contratos aunque largest_contracts traiga cinco. Para recorrer el resto, toma el document y llama a secop-contracts-search. contracts_value es la suma de los contratos efectivamente devueltos y nada más. No es un total histórico: un total sobre todos los contratos no es algo que este endpoint pueda calcular, y un número inferido de una página estaría equivocado en la dirección que nadie verificaría. found: false significa que no hay nada para ese documento. Es una respuesta, no un error: la mayoría de las cédulas nunca han contratado con el Estado.

Buscar adjudicaciones

POST /co/secop/awards-search/v1 Cada proveedor adjudicado en cada proceso de SECOP II, en la granularidad en que la fuente los publica. Una fila de SECOP I ya es una adjudicación, con contratista y valor, así que las adjudicaciones de SECOP I están en secop-contracts-search.
La fuente entera, organizada y lista para consultar: este endpoint responde en milisegundos, a cualquier hora y siempre igual. Cada respuesta incluye as_of: qué tan actualizados están los datos.
Devuelve as_of, los metadatos de página, los filtros aplicados y results[] con process_id, notice_uid, la entidad, el proveedor y su documento, value y awarded_at. Usa el process_id de un resultado con secop-process-record, o su notice_uid con secop-process para el proceso con todas sus adjudicaciones y contratos.

Leer un proceso

POST /co/secop/process-record/v1 Devuelve un único registro de proceso por el id que entregó una búsqueda.
La fuente entera, organizada y lista para consultar: este endpoint responde en milisegundos, a cualquier hora y siempre igual. Cada respuesta incluye as_of: qué tan actualizados están los datos.
Devuelve as_of, found, el record_id consultado y process. Un record_id que no corresponde a nada responde found: false con process nulo; eso es una respuesta, no un error.

Leer un contrato

POST /co/secop/contract-record/v1 Devuelve un único registro de contrato por el id que entregó una búsqueda.
La fuente entera, organizada y lista para consultar: este endpoint responde en milisegundos, a cualquier hora y siempre igual. Cada respuesta incluye as_of: qué tan actualizados están los datos.
Devuelve as_of, found, el record_id consultado y contract. Un record_id que no corresponde a nada responde found: false con contract nulo.

Respuesta

process

awards[]

Una fila por proveedor adjudicado (los acuerdos marco adjudican a muchos):

contracts[]

Los valores vacíos o de relleno se normalizan a null. Los campos monetarios y de conteo son números; las fechas son yyyy-mm-dd.
Un proceso también tiene secciones disponibles únicamente en el propio sitio de SECOP (Documentos Tipo, Cuestionario, Observaciones, descargas de documentos) o en otros registros de SECOP (plan anual de adquisiciones, detalle del presupuesto). Esas no forman parte de estas respuestas.

Referencia completa

Esquemas, todos los campos de respuesta y un playground interactivo.