SECOP II Colombia Procurement Scraper - 9M+ Public Contracts avatar

SECOP II Colombia Procurement Scraper - 9M+ Public Contracts

Pricing

from $15.62 / 1,000 procurement records

Go to Apify Store
SECOP II Colombia Procurement Scraper - 9M+ Public Contracts

SECOP II Colombia Procurement Scraper - 9M+ Public Contracts

Scrape Colombia's SECOP II public procurement data from datos.gov.co: entity, NIT, process, base price, modality, status and awarded supplier with value. Filter by entity, department, status or date. Export CSV, Excel, JSON. No login or API key. 9.2M+ records.

Pricing

from $15.62 / 1,000 procurement records

Rating

0.0

(0)

Developer

RecordsData

RecordsData

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Share

PunkRecordsData

SECOP II Colombia Procurement Scraper - 9M+ Public Contracts

SECOP II Colombia Procurement Scraper extracts public procurement processes from Colombia's official open data (datos.gov.co): entity, NIT, department, process name, base price, modality, status and awarded supplier. Filter by entity, department, status or date, then export CSV, Excel, JSON or API. No login, no API key. Priced per record delivered, never for empty results.

This actor searches 9,274,086 Colombian public procurement processes (count checked on 2026-10-03, newest publication date 2026-10-02) published by Colombia Compra Eficiente through the SECOP II platform. It queries the government's own open-data API, so there is no scraping of protected pages and no proxy cost. It is built for procurement analysts, compliance teams, journalists and sales teams that need to know who buys what in Colombia and who wins.

🔎 What does SECOP II Colombia Procurement Scraper do?

  • Find every tender published by a contracting entity, for example "universidad", "alcaldia" or "hospital".
  • List processes by Colombian department, such as Antioquia, Valle del Cauca or Distrito Capital de Bogotá.
  • Filter by process status: Publicado, Seleccionado, Evaluación, Cancelado, Abierto and more.
  • Limit to a publication date window to monitor newly published tenders.
  • Get the awarded supplier name, supplier NIT and awarded value when the process was decided.
  • Return a direct link to the official SECOP II process page.

📋 What data can you extract from SECOP II?

FieldDescription
processIdUnique SECOP II process identifier (for example CO1.REQ.5984810)
entityName, entityNitContracting entity and its tax ID
department, cityLocation of the entity
processName, descriptionWhat is being procured
publicationDatePublication date of the process
basePriceBase (estimated) price in Colombian pesos
contractingModality, contractTypeLegal procurement mechanism and contract type
processStatus, awardedCurrent status and whether it was awarded
supplierName, supplierNit, awardedValueWinning supplier and awarded value, when available
processUrlLink to the official SECOP II page

Fields the source leaves blank or marks "No Definido" are omitted from the row instead of being filled with placeholders. In a 10-record test (entity "universidad", Bogotá, status Seleccionado) 15 fields were present on all 10 rows; city appeared on 2, supplierName on 4 and supplierNit on 3, because many processes had no registered supplier yet.

🧾 SECOP II sample output

Real record from a run with entityNameContains: "universidad", department: "Distrito Capital de Bogotá", processStatus: "Seleccionado":

{
"recordType": "procurement-record",
"processId": "CO1.REQ.5984810",
"entityName": "UNIVERSIDAD PEDAGÓGICA NACIONAL",
"entityNit": "899999124",
"department": "Distrito Capital de Bogotá",
"processName": "ADECUACION DE LA INSTALACIONES DEL EDIFICO LOCALIZADO EN LA CALLE 72 No. 12 - 77 DE LA UPN",
"description": "REALIZAR LAS OBRAS DE ADECUACION DE LAS INSTALACIONES DEL EDIFICO LOCALIZADO EN LA CALLE 72 N. 12 - 77 DE LA UNIVERSIDAD PEDAGOGICA NACIONAL",
"publicationDate": "2024-03-20T00:00:00.000",
"basePrice": 2045929218,
"contractingModality": "Contratación régimen especial (con ofertas)",
"processStatus": "Seleccionado",
"awarded": "Si",
"supplierName": "SAFRID INGENIERIA SAS",
"awardedValue": 1992947881,
"contractType": "Obra",
"processUrl": "https://community.secop.gov.co/Public/Tendering/OpportunityDetail/Index?noticeUID=CO1.NTC.5874350"
}

💰 How much does it cost to scrape SECOP II?

Pay per event: you are charged only for each procurement record saved to your dataset.

EventPrice (Free plan)Price (Gold plan)
Procurement record$0.02$0.01562

That is $20 per 1,000 records on the Free tier, less on higher Apify plans (Bronze $18.10, Silver $16.76, Gold $15.62 per 1,000). A 10-record test costs $0.20. Rows are not charged when a search returns nothing, when a record has no process ID, when a record is a duplicate, or when the run fails. The run also stops cleanly when it reaches your maximum charge limit.

🚀 How to scrape SECOP II (3 steps)

  1. Open the Input tab and set at least one filter: entity name, department, status or date range.
  2. Set Max results to the number of processes you want (free plan: up to 10).
  3. Click Run, then download the dataset as CSV, Excel, JSON or XML, or read it through the API.

⚙️ SECOP II scraper input

FieldTypeDescription
entityNameContainsstringCase-insensitive substring of the entity name
departmentstringExact department name, for example "Antioquia"
processStatusstringExact status: Publicado, Seleccionado, Evaluación, Cancelado, Abierto, Borrador, Aprobado, En aprobación, Suspendido
dateFrom, dateTostringPublication date range, format YYYY-MM-DD
maxItemsintegerMaximum records to return, default 200
{
"entityNameContains": "universidad",
"department": "Distrito Capital de Bogotá",
"processStatus": "Seleccionado",
"dateFrom": "2024-01-01",
"maxItems": 100
}

An invalid date format stops the run before any work or charge. Filters are combined with AND.

📦 SECOP II scraper output

Each row is one procurement process. The dataset has an Overview table view (entity, process, department, date, base price, status, supplier) and downloads as JSON, CSV, Excel, HTML or XML. If no process matches your filters the run finishes as succeeded with a message and zero charge. If the government API is unreachable the run fails with a clear message instead of ending silently empty.

⚖️ SECOP II scraper vs alternatives

Prices measured from the public Apify Store listings on 2026-10-03, Free tier, per 1,000 results:

ActorPrice per 1,000 results
knowten/secop-ii-contracting-processesabout $0.50
fortuitous_pirate/colombia-secop-scraper$2.50 plus $0.0093 per run start
teslagp/secop-ii-licitaciones-scraper$10
scrapers_lat/colombia-secop-scraper$12
This actor$20
nexgensignal/co-secop-contract-records$50

Several alternatives are cheaper per row, and we say so. Choose this actor when you want the full official dataset with consistent field names, awarded supplier and value, placeholder-free rows, duplicate protection and a guarantee that failed or empty runs are not billed.

🎯 SECOP II use cases

  • Government sales: find entities opening tenders in your category this month.
  • Competitor tracking: see which suppliers win contracts and at what value.
  • Compliance and due diligence: check a company's public-contracting history by supplier name and NIT.
  • Journalism and watchdogs: follow public spending by entity, department or modality over time.

🔌 Run SECOP II scraper via API and integrations

curl -X POST "https://api.apify.com/v2/acts/RecordsData~secop-colombia-procurement-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"entityNameContains":"alcaldia","processStatus":"Publicado","maxItems":50}'

Schedule runs with a recent dateFrom to catch new tenders, send results to Google Sheets, Zapier, Make or n8n, or call the actor from AI agents through the Apify MCP server.

SECOP II records are public information that the Colombian government publishes as open data on datos.gov.co for reuse. This actor reads that official API and does not log in or bypass any protection. Supplier names and NITs are public procurement records; you remain responsible for using them in line with local data-protection rules.

🙋 Frequently asked questions

How many records does SECOP II have? 9,274,086 processes on 2026-10-03, with publications up to 2026-10-02.

Why did I get 0 results? The filters matched nothing. Department and status must match the official value exactly (for example "Distrito Capital de Bogotá", not "Bogota"), and "Adjudicado" is not a status value in this dataset; use "Seleccionado". The run is free in that case.

Why are some rows missing supplierName? Only processes with a selected supplier carry one. In our 10-row test 4 of 10 had it.

Which status means awarded? Use processStatus "Seleccionado" and check the awarded field ("Si" or "No").

Can I get all 9 million records? Technically yes with a high maxItems, but at $20 per 1,000 on the Free tier use filters or date windows.

Do I need an API key? No. The source is open data and needs no key.

Is the data live? The source dataset is updated by the Colombian government; the actor reads it at run time.

Does it cover SECOP I? No, only SECOP II.

Am I charged for failed runs? No. Charges happen only when a record is saved.

🧰 Want more public procurement data? Other PunkRecordsData scrapers

💬 Support

Found a bug or need another field? Open a ticket in the Issues tab or write to contact.punkrecordsdata@gmail.com.

Last updated: 2026-10-03