Colombia SECOP Scraper - Public Contracts & Tenders API
Pricing
from $9.23 / 1,000 results
Colombia SECOP Scraper - Public Contracts & Tenders API
Scrape Colombia SECOP II public procurement from datos.gov.co: buyer entity, supplier NIT, contract value, payments, funding, UNSPSC, dates and 85+ fields. Filter contratos estatales and licitaciones by entity, contratista, department, modalidad, value and date. No API key. JSON, CSV, Excel.
Pricing
from $9.23 / 1,000 results
Rating
5.0
(1)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
12 days ago
Last modified
Categories
Share
Colombia SECOP Scraper: Public Contracts, Tenders & Suppliers API
Scrape Colombia public procurement from SECOP II on datos.gov.co. Search contratos estatales, licitaciones and awarded proveedores del estado by entity, contractor, department, modality, value band and date, and export more than 85 fields per contract to JSON, CSV or Excel. HTTP only, no API key required.
Here is one real result, with the most important fields the actor returns:
{"entity": "RED DE SALUD DEL ORIENTE ESE","entityNit": "805027337","supplier": "Sinergia","supplierNit": "900349841","supplierDocType": "NIT","isPyme": false,"contractRef": "100.23.19.20250016","contractId": "CO1.PCCNTR.7571674","object": "Realizar el mantenimiento y actualización de los Módulos operativos y administrativos del sistema Integrado de información software SIHOS WEB ...","contractType": "Prestación de servicios","modality": "Contratación régimen especial","modalityJustification": "Servicios profesionales y apoyo a la gestión","status": "Borrador","value": 352858800,"currency": "COP","department": "Valle del Cauca","city": "Cali","sector": "Salud y Protección Social","categoryCode": "25191503","legalRepresentative": "Julio Cesar Gomez","legalRepDocNumber": "16xxxxxxx","supervisor": "JHION JAIRO PEREZ ANGEL","supervisorDocNumber": "79415769","spendingAuthority": "SANDRA LILIANA VELASQUEZ NARANJO","amountPaid": null,"amountInvoiced": null,"amountPending": 352858800,"isLiquidated": false,"endDate": "2025-12-31","url": "https://community.secop.gov.co/Public/Tendering/OpportunityDetail/Index?noticeUID=CO1.NTC.7732512"}
The base run returns every field the SECOP II open dataset exposes for each contract (more than 85 fields), including 13 fields competitor scrapers omit: payment and amortization amounts, the full funding-source breakdown, legal representative identity, supervisor and spending authority, bank details, procurement-modality justification and peace-agreement flags. Twelve filters plus three optional AI add-ons let you target exactly the contracts you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Who it is for
- Quickstart
- How it compares
- Input reference
- Output reference
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
This is a Colombia SECOP scraper and API for public procurement (contratación pública). It queries the SECOP II electronic contracts dataset published on datos.gov.co, applies the filters you pass as input, paginates through the matching contracts, and writes one normalized record per contract to the run's dataset.
Contract amounts are returned as numbers, dates are normalized to YYYY-MM-DD, placeholder cells (No definido, No aplica) are returned as null, and each record includes the buyer entity, awarded supplier, both parties' document numbers (NIT or cédula), UNSPSC category, legal representative, supervisor, spending authority, payment and funding breakdown and, when disclosed, bank details.
Data covers Colombian public procurement contracts across all 33 departments (departamentos), from Bogotá to Amazonas. Three optional AI add-ons (aiSummary, aiExtract, aiTranslate) enrich each record; they are opt-in, billed per enriched record, and disabled on free Apify plans.
Common search terms this actor serves: Colombia SECOP scraper, SECOP II data, SECOP II API, contratación pública Colombia, contratos estatales, licitaciones Colombia, datos.gov.co contratos, gov tenders Colombia, proveedores del estado, Colombia Compra Eficiente data.
Who it is for
- Supplier and competitor intelligence. Track every contract awarded to a company or person (
supplierNit), map who wins in a sector, and size a market. - Government tender and bid teams. Monitor a buyer entity (
entityNit) or a department, find upcoming and awarded work by modality and value band. - KYB, compliance and due diligence. Pull a counterparty's public-contract history, legal representative, and payment status.
- Lead generation. Build lists of buyers and suppliers with document numbers for outreach.
- Journalists and researchers. Follow public spending, funding sources (royalties, credit, national budget) and peace-agreement contracting.
Quickstart
Open the actor, paste this into the input, and press Run. It returns 2 contracts matching the keyword software, with the AI add-ons enabled.
{"maxTenders": 2,"freeText": "software","withAiSummary": true,"withAiExtract": true,"withAiTranslate": true}
Every input field is optional. Leave the AI add-ons off (default) to get the raw contract fields at the base per-result price. Set an entity, supplier, department, modality or value band to narrow the pull.
How it compares
| Capability | This actor (scrapers.lat) | fortuitous_pirate/colombia-secop-scraper | alijosecruz/secop-ii-licitaciones | Multi-country aggregators |
|---|---|---|---|---|
| Source | SECOP II, datos.gov.co | SECOP II, datos.gov.co | SECOP II, datos.gov.co | Colombia plus other countries |
| Fields per contract | More than 85 | About 12 | Score plus subset | Common subset |
| Buyer entity NIT filter | Yes | No (name only) | No | Partial |
| Supplier name and NIT filter | Yes | No | No | Partial |
| Modality filter | Yes | Yes | No | Partial |
| Contract-value band (min and max) | Yes | No | Yes | Partial |
| Signed-date range filter | Yes | No | Days-back only | Partial |
| Payments, invoiced, amortization | Yes | No | No | No |
| Funding-source breakdown | Yes | No | No | No |
| Legal rep, supervisor, spending authority | Yes | No | No | No |
| Bank details when disclosed | Yes | No | No | No |
| Optional AI summary, extract, translate | Yes, no LLM key needed | No | Requires your own LLM key | No |
| Output formats | JSON, CSV, Excel | JSON | JSON | Varies |
We accept every filter these actors accept and return a strict superset of their fields, plus payments, funding, party identity and bank details that they do not surface.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
maxTenders | integer | no | 10 | Maximum contracts to collect across all matching filters. Free Apify plans are capped at 10 per run. |
entityName | string | no | (empty) | Contracting government entity name, full-text match, for example ECOPETROL. |
entityNit | string | no | (empty) | Contracting entity tax-ID (NIT), digits only, for example 899999294. |
supplierName | string | no | (empty) | Awarded supplier or contractor name, full-text match. |
supplierNit | string | no | (empty) | Awarded supplier document number (NIT or cédula), digits only. |
department | enum | no | (any) | Colombian department where the contract is executed. One of the 33 departments. |
contractType | enum | no | (any) | Contract type, for example Prestación de servicios, Obra, Compraventa. |
modality | enum | no | (any) | Procurement modality, for example Licitación pública, Contratación directa, Mínima cuantía. |
status | enum | no | (any) | Current contract status, for example Borrador, En ejecución, Cerrado. |
dateFrom | string | no | (empty) | Include contracts signed on or after this date (YYYY-MM-DD). |
dateTo | string | no | (empty) | Include contracts signed on or before this date (YYYY-MM-DD). |
minValue | integer | no | (none) | Minimum contract value in Colombian pesos (COP). |
maxValue | integer | no | (none) | Maximum contract value in Colombian pesos (COP). Combine with minValue for a value band. |
freeText | string | no | (empty) | Full-text search across all contract fields (entity, supplier, object, references). |
withAiSummary | boolean | no | false | Add a plain-English AI summary of each contract. Paid add-on, disabled on free plans. |
withAiExtract | boolean | no | false | Extract structured fields (buyer, supplier, value, object, type) via AI. Paid add-on. |
withAiTranslate | boolean | no | false | Translate the contract object/description to English via AI. Paid add-on. |
appToken | string | no | (empty) | Optional Socrata application token for datos.gov.co. Raises the API rate limit on large runs. |
Filters combine with logical AND.
Output reference
One dataset item per contract. Types are string, integer, boolean, object, or null when the source value is absent. Below are the key fields; a live run returns more than 85 fields per contract.
| Field | Type | Description |
|---|---|---|
entity | string | Contracting government entity name. |
entityNit | string | Entity tax-ID (NIT). |
entityCode | string | SECOP entity code. |
entityOrder | string | Entity order (Nacional or Territorial). |
sector | string | Government sector. |
branch | string | Entity branch/type. |
entityCentralized | string | Whether the entity is centralized. |
supplier | string | Awarded supplier or contractor name. |
supplierNit | string | Supplier document number (NIT or cédula). |
supplierDocType | string | Supplier document type, for example NIT. |
supplierCode | string | SECOP supplier code. |
isPyme | boolean | Whether the supplier is a small/medium enterprise. |
isSupplierGroup | boolean | Whether the supplier is a group of entities (consortium/union). |
contractRef | string | Entity contract reference number. |
contractId | string | SECOP internal contract ID (CO1.PCCNTR.*). |
object | string | Full contract object/purpose text. |
processDescription | string | Purchase-process description. |
purchaseProcess | string | Parent purchase-process ID (CO1.BDOS.*). |
contractType | string | Contract type. |
modality | string | Procurement modality. |
modalityJustification | string | Justification for the chosen modality. |
status | string | Current contract status. |
value | integer | Contract value in currency. |
currency | string | Currency code, normally COP. |
department | string | Department of execution. |
city | string | City of execution. |
location | string | Location string (country, department, city). |
executionAddress | string | Contract execution address. |
categoryCode | string | UNSPSC category code. |
legalRepresentative | string | Supplier legal representative name. |
legalRepDocType | string | Legal representative document type. |
legalRepDocNumber | string | Legal representative document number. |
legalRepNationality | string | Legal representative nationality code. |
legalRepGender | string | Legal representative gender as disclosed. |
legalRepDomicile | string | Legal representative address. |
bankName | string | Supplier bank name, when disclosed, else null. |
accountType | string | Bank account type, when disclosed. |
accountNumber | string | Bank account number, when disclosed. |
value and payment fields | integer | See below. |
amountPaid | integer | Amount paid so far, or null. |
amountInvoiced | integer | Amount invoiced so far, or null. |
amountPending | integer | Amount still pending payment. |
amountPendingExecution | integer | Amount pending execution. |
amountPendingAmortization | integer | Amount pending amortization of any advance. |
amountAmortized | integer | Amount amortized against any advance. |
advancePaymentEnabled | boolean | Whether an advance payment applies. |
advancePaymentValue | integer | Advance payment value, or null. |
resourceOrigin | string | Origin of the funding resources. |
fundingOwnResources | integer | Funding from the entity's own resources. |
fundingLocalOwnResources | integer | Own resources of mayors, governors and indigenous reserves. |
fundingCredit | integer | Funding from credit. |
fundingRoyalties | integer | Funding from royalties (regalías). |
fundingParticipations | integer | Funding from participations (SGP). |
fundingNationalBudget | integer | Funding from the national budget (PGN). |
budgetCommitmentBalance | integer | Budget commitment balance (CDP). |
budgetYearBalance | integer | Budget balance for the year. |
supervisor | string | Contract supervisor name. |
supervisorDocType | string | Supervisor document type. |
supervisorDocNumber | string | Supervisor document number. |
spendingAuthority | string | Spending authority (ordenador del gasto) name. |
spendingAuthorityDocType | string | Spending authority document type. |
spendingAuthorityDocNumber | string | Spending authority document number. |
paymentAuthority | string | Payment authority (ordenador de pago) name, or null. |
paymentAuthorityDocType | string | Payment authority document type. |
paymentAuthorityDocNumber | string | Payment authority document number. |
spendingDestination | string | Spending destination (for example Funcionamiento). |
contractDuration | string | Contract duration text. |
daysAdded | integer | Days added by extensions. |
canBeExtended | boolean | Whether the contract can be extended. |
deliveryConditions | string | Delivery conditions, or null. |
isLiquidated | boolean | Whether the contract has been liquidated (settled). |
hasReversion | boolean | Whether the contract has been reversed. |
hasEnvironmentalObligation | boolean | Whether the contract carries environmental obligations. |
hasPostConsumerObligations | boolean | Whether the contract carries post-consumer obligations. |
usesStandardDocuments | boolean | Whether standard (documentos tipo) documents were used. |
standardDocumentsDescription | string | Description of the standard documents used, or null. |
isPostConflict | boolean | Whether the contract is tied to the peace agreement (post-conflict). |
peaceAgreementPillars | string | Peace-agreement pillars, or null. |
peaceAgreementPoints | string | Peace-agreement points, or null. |
signedDate | string | Date signed (YYYY-MM-DD), or null. |
startDate | string | Start date, or null. |
endDate | string | End date, or null. |
url | string | Public SECOP notice URL. |
aiSummary | string | AI plain-English summary. Present only when withAiSummary is enabled. |
aiExtract | object | AI structured extract. Present only when withAiExtract is enabled. |
aiObjectEn | string | AI English translation of the object, or null. |
aiTranslation | string | AI English translation. Present only when withAiTranslate is enabled. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. On a failed run, a single item with a populated error field is written instead. |
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~colombia-secop-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"entityName":"ECOPETROL","maxTenders":25,"dateFrom":"2024-01-01"}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~colombia-secop-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"department":"Valle del Cauca","modality":"Licitación pública","minValue":100000000,"maxTenders":100}'
Apify CLI:
apify call scrapers_lat/colombia-secop-scraper \--input '{"freeText":"software","maxTenders":10}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per contract returned (
resultevent). See the pricing tab for the current per-result price. - AI add-ons billed separately.
withAiSummary,withAiExtractandwithAiTranslateeach charge their own event only when they produce output, and are disabled on free plans. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run. Upgrade for higher
maxTenders.
FAQ and troubleshooting
Which system does this cover, SECOP I or SECOP II? It covers SECOP II electronic contracts (contratos electrónicos) published as open data on datos.gov.co, across all 33 departments.
A run returned 0 records. Why?
The filter combination matched nothing in the source. Loosen filters (for example remove department or widen the date range), or try freeText. Zero-result runs are not charged.
How do I track one supplier or one entity?
Pass supplierNit (or supplierName) to follow a contractor across all its government contracts, or entityNit (or entityName) for every contract signed by a public entity.
Can I filter by contract value?
Yes. Use minValue and maxValue together to target a value band in Colombian pesos (COP).
Why are bankName and payment fields null?
SECOP does not disclose these for every contract. Missing source values are returned as null, never invented.
Do I need a datos.gov.co or Socrata API key?
No. The actor works without any key. You can optionally pass appToken to raise the rate limit on very large pulls.
Do the AI add-ons work on a free plan? No. The AI add-ons require a paid Apify plan and are disabled automatically for free users. The base contract fields are always returned.
Is this an official government tool? No. This actor is independent and has no affiliation with Colombia Compra Eficiente, SECOP or datos.gov.co. It reads only data that is publicly available through the datos.gov.co open-data API.
Related scrapers
- Colombia Company Financials Scraper: Colombian company financial statements and filings.
- Colombia RUES Scraper: Colombian company registry records from RUES.
- Peru SEACE Scraper: Peru public procurement processes.
- Mexico CompraNet Scraper: Mexico federal procurement contracts.
- Chile Mercado Publico Scraper: Chile public procurement tenders.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Colombia SECOP Scraper: Contratos, Licitaciones y Proveedores API
Extrae la contratación pública de Colombia desde SECOP II en datos.gov.co. Busca contratos estatales, licitaciones y proveedores del estado adjudicados por entidad, contratista, departamento, modalidad, rango de valor y fecha, y exporta más de 85 campos por contrato a JSON, CSV o Excel. Solo HTTP, sin necesidad de API key.
Aquí tienes un resultado real, con los campos más importantes que devuelve el actor:
{"entity": "RED DE SALUD DEL ORIENTE ESE","entityNit": "805027337","supplier": "Sinergia","supplierNit": "900349841","supplierDocType": "NIT","isPyme": false,"contractRef": "100.23.19.20250016","contractId": "CO1.PCCNTR.7571674","object": "Realizar el mantenimiento y actualización de los Módulos operativos y administrativos del sistema Integrado de información software SIHOS WEB ...","contractType": "Prestación de servicios","modality": "Contratación régimen especial","modalityJustification": "Servicios profesionales y apoyo a la gestión","status": "Borrador","value": 352858800,"currency": "COP","department": "Valle del Cauca","city": "Cali","sector": "Salud y Protección Social","categoryCode": "25191503","legalRepresentative": "Julio Cesar Gomez","legalRepDocNumber": "16xxxxxxx","supervisor": "JHION JAIRO PEREZ ANGEL","supervisorDocNumber": "79415769","spendingAuthority": "SANDRA LILIANA VELASQUEZ NARANJO","amountPaid": null,"amountInvoiced": null,"amountPending": 352858800,"isLiquidated": false,"endDate": "2025-12-31","url": "https://community.secop.gov.co/Public/Tendering/OpportunityDetail/Index?noticeUID=CO1.NTC.7732512"}
La ejecución base devuelve todos los campos que expone el conjunto de datos abierto de SECOP II para cada contrato (más de 85 campos), incluidos 13 campos que otros scrapers omiten: montos de pago y amortización, el desglose completo de fuentes de financiación, la identidad del representante legal, el supervisor y el ordenador del gasto, datos bancarios, la justificación de la modalidad de contratación y las banderas del acuerdo de paz. Doce filtros más tres complementos de IA opcionales te permiten apuntar exactamente a los contratos que necesitas.
📥 Entrada · 📤 Salida · 💰 Precios · ▶️ Ejemplos
Tabla de contenido
- Qué hace
- Para quién es
- Inicio rápido
- Comparativa
- Referencia de entrada
- Referencia de salida
- Ejecutar por API y CLI
- Obtener resultados
- Facturación y límites
- Preguntas frecuentes
Qué hace
Este es un scraper y API de SECOP Colombia para contratación pública. Consulta el conjunto de datos de contratos electrónicos de SECOP II publicado en datos.gov.co, aplica los filtros que pasas como entrada, pagina por los contratos que coinciden y escribe un registro normalizado por contrato en el dataset de la ejecución.
Los montos se devuelven como números, las fechas se normalizan a AAAA-MM-DD, las celdas de relleno (No definido, No aplica) se devuelven como null, y cada registro incluye la entidad compradora, el proveedor adjudicado, los números de documento de ambas partes (NIT o cédula), la categoría UNSPSC, el representante legal, el supervisor, el ordenador del gasto, el desglose de pagos y financiación y, cuando se divulgan, los datos bancarios.
Los datos cubren contratos de contratación pública colombiana en los 33 departamentos, desde Bogotá hasta Amazonas. Tres complementos de IA opcionales (aiSummary, aiExtract, aiTranslate) enriquecen cada registro; son opcionales, se cobran por registro enriquecido y están deshabilitados en los planes gratuitos de Apify.
Términos de búsqueda que atiende este actor: scraper SECOP Colombia, datos SECOP II, API SECOP II, contratación pública Colombia, contratos estatales, licitaciones Colombia, datos.gov.co contratos, proveedores del estado, Colombia Compra Eficiente.
Para quién es
- Inteligencia de proveedores y competencia. Sigue cada contrato adjudicado a una empresa o persona (
supplierNit), identifica quién gana en un sector y dimensiona un mercado. - Equipos de licitación y ofertas. Monitorea una entidad compradora (
entityNit) o un departamento y encuentra trabajo adjudicado por modalidad y rango de valor. - KYB, cumplimiento y debida diligencia. Obtén el historial de contratos públicos de una contraparte, su representante legal y el estado de pagos.
- Generación de leads. Construye listas de compradores y proveedores con números de documento para prospección.
- Periodistas e investigadores. Sigue el gasto público, las fuentes de financiación (regalías, crédito, presupuesto nacional) y la contratación del posconflicto.
Inicio rápido
Abre el actor, pega esto en la entrada y presiona Run. Devuelve 2 contratos que coinciden con la palabra clave software, con los complementos de IA activados.
{"maxTenders": 2,"freeText": "software","withAiSummary": true,"withAiExtract": true,"withAiTranslate": true}
Todos los campos de entrada son opcionales. Deja los complementos de IA desactivados (por defecto) para obtener los campos base al precio por resultado. Define una entidad, proveedor, departamento, modalidad o rango de valor para acotar la extracción.
Comparativa
| Capacidad | Este actor (scrapers.lat) | fortuitous_pirate/colombia-secop-scraper | alijosecruz/secop-ii-licitaciones | Agregadores multipaís |
|---|---|---|---|---|
| Fuente | SECOP II, datos.gov.co | SECOP II, datos.gov.co | SECOP II, datos.gov.co | Colombia y otros países |
| Campos por contrato | Más de 85 | Cerca de 12 | Puntaje más subconjunto | Subconjunto común |
| Filtro por NIT de entidad | Sí | No (solo nombre) | No | Parcial |
| Filtro por nombre y NIT de proveedor | Sí | No | No | Parcial |
| Filtro por modalidad | Sí | Sí | No | Parcial |
| Rango de valor (mín y máx) | Sí | No | Sí | Parcial |
| Filtro por rango de fecha de firma | Sí | No | Solo días atrás | Parcial |
| Pagos, facturado, amortización | Sí | No | No | No |
| Desglose de fuentes de financiación | Sí | No | No | No |
| Rep legal, supervisor, ordenador del gasto | Sí | No | No | No |
| Datos bancarios cuando se divulgan | Sí | No | No | No |
| IA opcional: resumen, extracción, traducción | Sí, sin API key de LLM | No | Requiere tu propia API key de LLM | No |
| Formatos de salida | JSON, CSV, Excel | JSON | JSON | Varía |
Aceptamos todos los filtros que aceptan estos actores y devolvemos un superconjunto estricto de sus campos, además de pagos, financiación, identidad de las partes y datos bancarios que ellos no exponen.
Referencia de entrada
| Campo | Tipo | Requerido | Por defecto | Descripción |
|---|---|---|---|---|
maxTenders | integer | no | 10 | Máximo de contratos a recolectar en todos los filtros. Los planes gratuitos de Apify se limitan a 10 por ejecución. |
entityName | string | no | (vacío) | Nombre de la entidad pública contratante, coincidencia de texto, por ejemplo ECOPETROL. |
entityNit | string | no | (vacío) | NIT de la entidad contratante, solo dígitos, por ejemplo 899999294. |
supplierName | string | no | (vacío) | Nombre del proveedor o contratista adjudicado, coincidencia de texto. |
supplierNit | string | no | (vacío) | Número de documento del proveedor (NIT o cédula), solo dígitos. |
department | enum | no | (cualquiera) | Departamento colombiano donde se ejecuta el contrato. Uno de los 33 departamentos. |
contractType | enum | no | (cualquiera) | Tipo de contrato, por ejemplo Prestación de servicios, Obra, Compraventa. |
modality | enum | no | (cualquiera) | Modalidad de contratación, por ejemplo Licitación pública, Contratación directa, Mínima cuantía. |
status | enum | no | (cualquiera) | Estado actual del contrato, por ejemplo Borrador, En ejecución, Cerrado. |
dateFrom | string | no | (vacío) | Incluir contratos firmados en o después de esta fecha (AAAA-MM-DD). |
dateTo | string | no | (vacío) | Incluir contratos firmados en o antes de esta fecha (AAAA-MM-DD). |
minValue | integer | no | (ninguno) | Valor mínimo del contrato en pesos colombianos (COP). |
maxValue | integer | no | (ninguno) | Valor máximo del contrato en pesos colombianos (COP). Combínalo con minValue para un rango de valor. |
freeText | string | no | (vacío) | Búsqueda de texto completo en todos los campos del contrato (entidad, proveedor, objeto, referencias). |
withAiSummary | boolean | no | false | Añade un resumen de IA en inglés de cada contrato. Complemento de pago, deshabilitado en planes gratuitos. |
withAiExtract | boolean | no | false | Extrae campos estructurados (comprador, proveedor, valor, objeto, tipo) por IA. Complemento de pago. |
withAiTranslate | boolean | no | false | Traduce el objeto/descripción del contrato al inglés por IA. Complemento de pago. |
appToken | string | no | (vacío) | Token de aplicación Socrata opcional para datos.gov.co. Aumenta el límite de la API en ejecuciones grandes. |
Los filtros se combinan con AND lógico.
Referencia de salida
Un elemento del dataset por contrato. Los tipos son string, integer, boolean, object, o null cuando el valor de origen está ausente. A continuación se muestran los campos clave; una ejecución real devuelve más de 85 campos por contrato.
| Campo | Tipo | Descripción |
|---|---|---|
entity | string | Nombre de la entidad pública contratante. |
entityNit | string | NIT de la entidad. |
entityCode | string | Código SECOP de la entidad. |
entityOrder | string | Orden de la entidad (Nacional o Territorial). |
sector | string | Sector de gobierno. |
branch | string | Rama o tipo de entidad. |
entityCentralized | string | Si la entidad es centralizada. |
supplier | string | Nombre del proveedor o contratista adjudicado. |
supplierNit | string | Número de documento del proveedor (NIT o cédula). |
supplierDocType | string | Tipo de documento del proveedor, por ejemplo NIT. |
supplierCode | string | Código SECOP del proveedor. |
isPyme | boolean | Si el proveedor es una pyme. |
isSupplierGroup | boolean | Si el proveedor es un grupo de entidades (consorcio/unión). |
contractRef | string | Número de referencia del contrato de la entidad. |
contractId | string | ID interno del contrato en SECOP (CO1.PCCNTR.*). |
object | string | Texto completo del objeto del contrato. |
processDescription | string | Descripción del proceso de compra. |
purchaseProcess | string | ID del proceso de compra padre (CO1.BDOS.*). |
contractType | string | Tipo de contrato. |
modality | string | Modalidad de contratación. |
modalityJustification | string | Justificación de la modalidad elegida. |
status | string | Estado actual del contrato. |
value | integer | Valor del contrato en currency. |
currency | string | Código de moneda, normalmente COP. |
department | string | Departamento de ejecución. |
city | string | Ciudad de ejecución. |
location | string | Cadena de localización (país, departamento, ciudad). |
executionAddress | string | Dirección de ejecución del contrato. |
categoryCode | string | Código de categoría UNSPSC. |
legalRepresentative | string | Nombre del representante legal del proveedor. |
legalRepDocType | string | Tipo de documento del representante legal. |
legalRepDocNumber | string | Número de documento del representante legal. |
legalRepNationality | string | Nacionalidad del representante legal. |
legalRepGender | string | Género del representante legal según se divulga. |
legalRepDomicile | string | Dirección del representante legal. |
bankName | string | Banco del proveedor, cuando se divulga, si no null. |
accountType | string | Tipo de cuenta bancaria, cuando se divulga. |
accountNumber | string | Número de cuenta bancaria, cuando se divulga. |
amountPaid | integer | Monto pagado hasta ahora, o null. |
amountInvoiced | integer | Monto facturado hasta ahora, o null. |
amountPending | integer | Monto pendiente de pago. |
amountPendingExecution | integer | Monto pendiente de ejecución. |
amountPendingAmortization | integer | Monto pendiente de amortización de un anticipo. |
amountAmortized | integer | Monto amortizado contra un anticipo. |
advancePaymentEnabled | boolean | Si aplica pago adelantado. |
advancePaymentValue | integer | Valor del pago adelantado, o null. |
resourceOrigin | string | Origen de los recursos de financiación. |
fundingOwnResources | integer | Financiación de recursos propios de la entidad. |
fundingLocalOwnResources | integer | Recursos propios de alcaldías, gobernaciones y resguardos indígenas. |
fundingCredit | integer | Financiación de crédito. |
fundingRoyalties | integer | Financiación de regalías. |
fundingParticipations | integer | Financiación del sistema general de participaciones (SGP). |
fundingNationalBudget | integer | Financiación del presupuesto general de la nación (PGN). |
budgetCommitmentBalance | integer | Saldo del CDP. |
budgetYearBalance | integer | Saldo de la vigencia. |
supervisor | string | Nombre del supervisor del contrato. |
supervisorDocType | string | Tipo de documento del supervisor. |
supervisorDocNumber | string | Número de documento del supervisor. |
spendingAuthority | string | Nombre del ordenador del gasto. |
spendingAuthorityDocType | string | Tipo de documento del ordenador del gasto. |
spendingAuthorityDocNumber | string | Número de documento del ordenador del gasto. |
paymentAuthority | string | Nombre del ordenador de pago, o null. |
paymentAuthorityDocType | string | Tipo de documento del ordenador de pago. |
paymentAuthorityDocNumber | string | Número de documento del ordenador de pago. |
spendingDestination | string | Destino del gasto (por ejemplo Funcionamiento). |
contractDuration | string | Texto de duración del contrato. |
daysAdded | integer | Días adicionados por prórrogas. |
canBeExtended | boolean | Si el contrato puede prorrogarse. |
deliveryConditions | string | Condiciones de entrega, o null. |
isLiquidated | boolean | Si el contrato ha sido liquidado. |
hasReversion | boolean | Si el contrato ha sido reversado. |
hasEnvironmentalObligation | boolean | Si el contrato tiene obligaciones ambientales. |
hasPostConsumerObligations | boolean | Si el contrato tiene obligaciones posconsumo. |
usesStandardDocuments | boolean | Si se usaron documentos tipo. |
standardDocumentsDescription | string | Descripción de los documentos tipo usados, o null. |
isPostConflict | boolean | Si el contrato está asociado al acuerdo de paz (posconflicto). |
peaceAgreementPillars | string | Pilares del acuerdo de paz, o null. |
peaceAgreementPoints | string | Puntos del acuerdo de paz, o null. |
signedDate | string | Fecha de firma (AAAA-MM-DD), o null. |
startDate | string | Fecha de inicio, o null. |
endDate | string | Fecha de fin, o null. |
url | string | URL pública del aviso en SECOP. |
aiSummary | string | Resumen de IA en inglés. Presente solo cuando withAiSummary está activado. |
aiExtract | object | Extracto estructurado por IA. Presente solo cuando withAiExtract está activado. |
aiObjectEn | string | Traducción al inglés del objeto por IA, o null. |
aiTranslation | string | Traducción al inglés por IA. Presente solo cuando withAiTranslate está activado. |
observedAt | string | Marca de tiempo ISO 8601 de cuándo se recolectó el registro. |
error | string | null en éxito. En una ejecución fallida se escribe un único elemento con el campo error poblado. |
Ejecutar por API y CLI
Inicia una ejecución y espera a que termine, luego lee el dataset. Reemplaza <TOKEN> con tu token de API de Apify.
Ejecución síncrona que devuelve los elementos del dataset en una sola llamada:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~colombia-secop-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"entityName":"ECOPETROL","maxTenders":25,"dateFrom":"2024-01-01"}'
Iniciar una ejecución asíncrona:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~colombia-secop-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"department":"Valle del Cauca","modality":"Licitación pública","minValue":100000000,"maxTenders":100}'
Apify CLI:
apify call scrapers_lat/colombia-secop-scraper \--input '{"freeText":"software","maxTenders":10}'
Obtener resultados
Cada ejecución escribe en un dataset. Obtén los elementos como JSON, CSV o Excel cambiando format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginar datasets grandescurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> se devuelve como defaultDatasetId en el objeto de la ejecución. Usa offset y limit para paginar. clean=true descarta campos vacíos e internos.
Facturación y límites
- Pago por resultado. Se cobra por contrato devuelto (evento
result). Consulta la pestaña de precios para el precio actual por resultado. - Complementos de IA facturados aparte.
withAiSummary,withAiExtractywithAiTranslatecobran su propio evento solo cuando producen salida, y están deshabilitados en planes gratuitos. - Sin cargo en caso de fallo. Si una ejecución falla, el actor escribe un único elemento con el campo
errorpoblado y no lo cobra. Las ejecuciones vacías no cuestan nada. - Se respeta el tope de gasto. Define
maxTotalChargeUsden la ejecución; al alcanzarlo, el actor deja de emitir y cobrar resultados facturables. - Los planes gratuitos de Apify se limitan a 10 registros por ejecución. Actualiza para un
maxTendersmayor.
Preguntas frecuentes
¿Qué sistema cubre, SECOP I o SECOP II? Cubre los contratos electrónicos de SECOP II publicados como datos abiertos en datos.gov.co, en los 33 departamentos.
Una ejecución devolvió 0 registros. ¿Por qué?
La combinación de filtros no coincidió con nada en la fuente. Afloja los filtros (por ejemplo quita department o amplía el rango de fechas), o usa freeText. Las ejecuciones sin resultados no se cobran.
¿Cómo sigo a un proveedor o una entidad?
Pasa supplierNit (o supplierName) para seguir a un contratista en todos sus contratos, o entityNit (o entityName) para cada contrato firmado por una entidad pública.
¿Puedo filtrar por valor del contrato?
Sí. Usa minValue y maxValue juntos para acotar un rango de valor en pesos colombianos (COP).
¿Por qué bankName y los campos de pago son null?
SECOP no divulga estos datos para todos los contratos. Los valores ausentes se devuelven como null, nunca inventados.
¿Necesito una API key de datos.gov.co o Socrata?
No. El actor funciona sin ninguna key. Opcionalmente puedes pasar appToken para subir el límite en extracciones muy grandes.
¿Los complementos de IA funcionan en un plan gratuito? No. Los complementos de IA requieren un plan de pago de Apify y se deshabilitan automáticamente para usuarios gratuitos. Los campos base siempre se devuelven.
¿Es una herramienta oficial del gobierno? No. Este actor es independiente y no tiene afiliación con Colombia Compra Eficiente, SECOP ni datos.gov.co. Solo lee datos disponibles públicamente a través de la API de datos abiertos de datos.gov.co.
Scrapers relacionados
- Colombia Company Financials Scraper: estados financieros de empresas colombianas.
- Colombia RUES Scraper: registro mercantil colombiano desde RUES.
- Peru SEACE Scraper: procesos de contratación pública de Perú.
- Mexico CompraNet Scraper: contratos federales de México.
- Chile Mercado Publico Scraper: licitaciones públicas de Chile.
Más scrapers en scrapers.lat
Construido y mantenido por scrapers.lat, donde publicamos scrapers para plataformas públicas de EE. UU. y América Latina: registros mercantiles, datos de gobierno, finanzas, e-commerce y más. Explora el catálogo o solicita un scraper a medida en scrapers.lat.
Herramienta independiente, sin afiliación con Colombia Compra Eficiente, SECOP ni datos.gov.co. Accede solo a datos públicos abiertos.
