# Colombia Company Due Diligence by NIT (`omnigsc/colombia-company-due-diligence`) Actor

One clean JSON report per Colombian NIT: business registry status (RUES), public contracts and fines (SECOP I/II), SIC sanctions and UN/OFAC watchlist screening, with a LOW/MEDIUM/HIGH risk level and reasons. Legal entities only.

- **URL**: https://apify.com/omnigsc/colombia-company-due-diligence.md
- **Developed by:** [Carlos Manrique](https://apify.com/omnigsc) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 company reports

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Colombia Company Due Diligence by NIT

**One clean JSON report per Colombian company, from 8 official public sources, in seconds.** Paste one or thousands of NITs
(Colombian tax IDs) and get, for each company:

- ✅ **Business registry (RUES)**: legal name, legal form, registration status (active / cancelled), chamber of commerce, registration and last renewal dates, CIIU activity codes.
- 🏛️ **Public procurement (SECOP II)**: number and total value of public contracts, first/last contract dates, top 5 public buyers and the most recent contracts with links.
- ⚠️ **Fines and sanctions**: SECOP I and SECOP II procurement fines, plus sanctions by the Superintendence of Industry and Commerce (SIC).
- 🌐 **Watchlist screening**: UN Security Council Consolidated List and US Treasury **OFAC SDN** list (legal name, aliases, and the NIT inside OFAC remarks).
- 🚦 **Risk level** `LOW` / `MEDIUM` / `HIGH` / `UNKNOWN` with **human-readable reasons** in English or Spanish.

Other Colombian actors return one raw dataset. This one **joins the registry, procurement history, fines and international
watchlists by NIT** and explains the result. Use it for supplier onboarding, KYB, credit pre-screening, sales qualification or procurement audits.

### Why use it

| You need to… | This actor gives you |
|---|---|
| Onboard a new supplier or customer in Colombia | Registry status + sanctions + watchlists in one call |
| Check hundreds of suppliers at once | Batch input; one result per NIT; CSV/Excel/JSON export |
| Feed an AI agent or a no-code flow (n8n, Make, Zapier) | Stable English field names, flat flags, works via API and MCP |
| Prove where each fact came from | Every report lists its sources, URLs and licenses |

### Input

```json
{
  "nits": ["900062917", "860.002.400-2"],
  "language": "en",
  "maxContracts": 10,
  "checkWatchlists": true
}
```

- NITs with or without check digit (`900062917`, `900.062.917-9`, `9000629179`). Invalid check digits are reported, not guessed.
- `language`: `en` or `es` for flags and disclaimer (field names are always English).
- `maxContracts`: how many recent contracts to list (totals always cover all contracts).

### Output (shortened)

```json
{
  "nit": "900062917", "nitFormatted": "900062917-9", "entityType": "legal_entity", "found": true,
  "legalName": "SERVICIOS POSTALES NACIONALES S.A.S.", "riskLevel": "MEDIUM",
  "flags": [{ "code": "PROCUREMENT_FINES", "severity": "medium", "message": "2 fine(s)/sanction(s) recorded in public procurement (SECOP)." }],
  "company": { "registrationStatus": "ACTIVA", "isActive": true, "chamberOfCommerce": "BOGOTA", "registrationDate": "2005-12-27", "lastRenewedYear": 2026, "primaryCiiu": "5310" },
  "publicContracts": { "total": 2392, "totalValueCOP": 2033173948300, "lastSignedAt": "2026-10-23", "topBuyers": [ … ], "recent": [ … ] },
  "sanctions": { "secopII": [ … ], "secopI": [], "sic": [] },
  "watchlists": { "un": { "checked": true, "matches": [] }, "ofacSdn": { "checked": true, "matches": [] } },
  "sources": [ … ], "disclaimer": "…"
}
```

Risk flags: `REGISTRATION_NOT_ACTIVE`, `NOT_RENEWED`, `RECENTLY_REGISTERED`, `NOT_IN_RUES`, `PROCUREMENT_FINES`, `SIC_SANCTIONS`, `UN_LIST`, `OFAC_LIST`, `NO_PUBLIC_CONTRACTS`, `SOURCE_ERRORS`.

### Pricing

**Pay per result: USD 0.02 per company report (USD 20 per 1,000 results).** No subscription. Published per-report prices of local
company-report providers in Colombia start around COP 15,000–40,000 (about USD 5–13) per company; this actor covers the public-data part for a fraction of that.

### Privacy and compliance

- **Legal entities only.** IDs that belong to natural persons are returned as `NOT_PROCESSED` with no personal data (Colombian personal-data law, Ley 1581 de 2012).
- No personal contact data (names of representatives, personal e-mails or phones) is ever returned.
- Data is queried **live** from the official open-data APIs at run time; nothing is resold from a stored copy.
- Name-based watchlist hits are *possible* matches; confirm before acting. A NIT found in OFAC remarks is marked `strong`.
- This is **not an official certificate** (Certificado de Existencia y Representación Legal) and **not a credit score**.

### Sources and licenses

| Source | Publisher | License |
|---|---|---|
| RUES – Registro Único Empresarial y Social (`c82u-588k`) | Confecámaras via datos.gov.co | CC BY-SA 4.0 |
| SECOP II suppliers (`qmzu-gj57`), contracts (`jbjy-vk9h`), fines (`it5q-hg94`) | Colombia Compra Eficiente via datos.gov.co | CC BY-SA 4.0 |
| SECOP I fines (`4n4q-k399`) | Colombia Compra Eficiente via datos.gov.co | CC BY-SA 4.0 |
| SIC sanctions (`73dx-n59j`) | Superintendencia de Industria y Comercio via datos.gov.co | CC BY-SA 4.0 |
| UN Security Council Consolidated List | United Nations | Public |
| OFAC SDN list | U.S. Department of the Treasury | Public domain |

Attribution is included in every result (`sources`).

### FAQ

**How fast is it?** About 2–6 seconds per company (the UN and OFAC lists are downloaded once per run).
**Can I run it from n8n, Make or Python?** Yes: use the Apify API or the official integrations; results come as JSON, CSV or Excel.
**What if a source is down?** The report is still produced and lists the missing source in `sourceErrors`.
**Spanish?** Set `"language": "es"`.

# Actor input Schema

## `nits` (type: `array`):

Colombian tax IDs (NIT) of companies, with or without check digit: 900062917, 900.062.917-9 or 9000629179. One report per NIT.

## `nitsText` (type: `string`):

Optional: paste NITs separated by commas, spaces or new lines.

## `language` (type: `string`):

Language of the risk flags and disclaimer. Field names are always English.

## `maxContracts` (type: `integer`):

How many of the most recent SECOP II contracts to include (totals always cover all contracts).

## `checkWatchlists` (type: `boolean`):

Screen the legal name (and the NIT in OFAC remarks) against the UN Security Council Consolidated List and the OFAC SDN list.

## `socrataAppToken` (type: `string`):

Optional Socrata app token for higher rate limits on large batches.

## Actor input object example

```json
{
  "nits": [
    "900062917",
    "860002400"
  ],
  "language": "en",
  "maxContracts": 10,
  "checkWatchlists": true
}
```

# Actor output Schema

## `reports` (type: `string`):

All due-diligence reports produced by this run (JSON, CSV or Excel from the dataset).

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "nits": [
        "900062917",
        "860002400"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("omnigsc/colombia-company-due-diligence").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "nits": [
        "900062917",
        "860002400",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("omnigsc/colombia-company-due-diligence").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "nits": [
    "900062917",
    "860002400"
  ]
}' |
apify call omnigsc/colombia-company-due-diligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,omnigsc/colombia-company-due-diligence"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ky2XPLzhQcEA6Jogp/builds/wbZoNAon2WloVpaLH/openapi.json
