SECOP II Colombia Procurement Scraper - 9M+ Public Contracts
Pricing
from $15.62 / 1,000 procurement records
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 hours ago
Last modified
Categories
Share
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?
| Field | Description |
|---|---|
processId | Unique SECOP II process identifier (for example CO1.REQ.5984810) |
entityName, entityNit | Contracting entity and its tax ID |
department, city | Location of the entity |
processName, description | What is being procured |
publicationDate | Publication date of the process |
basePrice | Base (estimated) price in Colombian pesos |
contractingModality, contractType | Legal procurement mechanism and contract type |
processStatus, awarded | Current status and whether it was awarded |
supplierName, supplierNit, awardedValue | Winning supplier and awarded value, when available |
processUrl | Link 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.
| Event | Price (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)
- Open the Input tab and set at least one filter: entity name, department, status or date range.
- Set Max results to the number of processes you want (free plan: up to 10).
- Click Run, then download the dataset as CSV, Excel, JSON or XML, or read it through the API.
⚙️ SECOP II scraper input
| Field | Type | Description |
|---|---|---|
entityNameContains | string | Case-insensitive substring of the entity name |
department | string | Exact department name, for example "Antioquia" |
processStatus | string | Exact status: Publicado, Seleccionado, Evaluación, Cancelado, Abierto, Borrador, Aprobado, En aprobación, Suspendido |
dateFrom, dateTo | string | Publication date range, format YYYY-MM-DD |
maxItems | integer | Maximum 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:
| Actor | Price per 1,000 results |
|---|---|
| knowten/secop-ii-contracting-processes | about $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.
❓ Is it legal to scrape SECOP II?
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
- Federal Contracts Spending Scraper for US federal awards
- Grants.gov Opportunities Scraper for US grant listings
- Contractor License Aggregator for contractor license checks
💬 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