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
noticeUID es el identificador del aviso del proceso, con el formato
CO1.NTC.<number> (p. ej. CO1.NTC.9458505).
Contratos por proveedor
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.
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
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.
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.
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
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.
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.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.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.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.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.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.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.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.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.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.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.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.