# Colombia NIT Lookup - RUES Company Registry Search (`1rrock/colombia-nit-lookup`) Actor

Consulta NIT Colombia: look up Colombian companies by NIT or search the official RUES registry (Confecámaras, 9M+ records) by name, chamber of commerce, CIIU, legal form and registration date. Status, legal representative, establishments. No API key. $1.50 per 1,000 results.

- **URL**: https://apify.com/1rrock/colombia-nit-lookup.md
- **Developed by:** [1rrock](https://apify.com/1rrock) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

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

### What is Colombia NIT Lookup - RUES Company Registry Search?

This Actor looks up **Colombian companies by NIT** and searches the **RUES (Registro Único Empresarial y Social)**, Colombia's official business registry run by the chambers of commerce (**Confecámaras**), using the government's **open data API on datos.gov.co**. Use it for **consulta NIT**, **consulta RUES** and **búsqueda de empresas**: get the official name (razón social), registration status, legal form, chamber of commerce, CIIU activity, registration and renewal dates and **legal representative**, plus optional **establishments, branches and agencies**. Export as JSON, CSV or Excel or pull the data through the Apify API.

- ✅ **Official source**: 9M+ registrations from the RUES open data published by Confecámaras (companies, sole traders and non-profits/ESAL).
- ✅ **No API key, no captcha, no proxy**: uses the public datos.gov.co (Socrata) API instead of scraping rues.org.co.
- ✅ **Bulk NIT lookup**: paste hundreds of NITs in any format (`860.002.964-4`, `8600029644`); check digit (dígito de verificación) computed and validated.
- ✅ **Lead lists**: new companies by chamber of commerce, CIIU code, legal form (SAS, Ltda., S.A.), status and registration date.
- ✅ **Cheap and predictable**: **$1.50 per 1,000 results**, platform usage included.

### What Colombian company data can you get?

| Field | Meaning |
|---|---|
| `nit`, `verificationDigit`, `nitFormatted` | NIT, DIAN check digit (DV) and `NIT-DV` |
| `idType`, `idNumber` | Identification type (NIT, cédula…) and number |
| `name`, `acronym` | Registered name (razón social) and acronym (sigla) |
| `status`, `statusCode`, `isActive` | Registration status (ACTIVA, CANCELADA…) |
| `legalForm`, `companyType`, `isLegalEntity` | Legal form (SAS, Ltda., S.A., persona natural, ESAL…) |
| `chamber`, `chamberCode`, `registrationNumber` | Chamber of commerce and matrícula mercantil number |
| `registrationDate`, `renewalDate`, `lastRenewedYear` | Registration date, last renewal date and year |
| `expiryDate`, `cancellationDate` | Term (vigencia) and cancellation date |
| `ciiuPrimary`, `ciiuSecondary`, `ciiuOther` | CIIU Rev. 4 A.C. activity codes |
| `ciiuSection`, `ciiuDivision`, `ciiuDivisionName` | ISIC section/division with English description |
| `legalRepresentative` | Legal representative name (representante legal) |
| `bidderRegistration` | RUP bidder registration number, if any |
| `establishments`, `establishmentCount` | Optional: establishments, branches and agencies owned by the company |
| `source`, `sourceUrl`, `license`, `attribution`, `retrievedAt` | Source link and licence notice |

Each record is one registration (matrícula). A company that moved its domicile can have an old cancelled registration in one chamber and an active one in another, so a NIT can return more than one record (active first).

### Use cases for Colombian company lookup

- 🔎 **KYB and supplier onboarding in Colombia**: verify that a NIT exists, is ACTIVA and renewed, and who the legal representative is.
- 📈 **B2B lead generation**: lists of newly registered companies (empresas nuevas) by city, sector (CIIU) and legal form, e.g. new software SAS in Bogotá this month.
- 🗂️ **CRM and ERP data cleaning**: normalize NITs, compute check digits and enrich accounts with official names and activity codes.
- 🏦 **Credit and risk teams**: spot cancelled, unrenewed or newly created counterparties.
- 🗺️ **Market research**: count companies per chamber of commerce, sector or legal form.

### How to look up Colombian companies

1. Click **Try for free** (or **Start**) on this page.
2. Paste **NITs** one per line (dots, spaces and `-DV` are fine), and/or type words for the **Company name search**.
3. For lead lists, pick **Chamber of commerce** (e.g. 04 Bogotá, 21 Medellín, 08 Cali), **Registration status**, **Legal form**, **CIIU activity codes** and **Registered in the last N days**.
4. Optionally enable **Include establishments & branches**.
5. Set **Max results** (your cost cap), click **Start**, then open the **Output** tab or export as **JSON, CSV, Excel, XML or HTML**.

With empty input the Actor looks up three demo companies (Banco de Bogotá, Bancolombia and Ecopetrol).

#### Input example: bulk NIT lookup

```json
{
  "nits": ["860002964", "890903938-8", "899.999.068-1"]
}
```

#### Input example: new software companies in Bogotá (last 30 days)

```json
{
  "chambers": ["04"],
  "legalForms": ["sas"],
  "ciiuCodes": ["62"],
  "status": "active",
  "registeredWithinDays": 30,
  "maxItems": 500
}
```

| Field | Description |
|-------|-------------|
| `nits` | NITs or ID numbers to look up, one per line. |
| `name` | Words that must all appear in the razón social (case-insensitive). |
| `chambers` | Chamber of commerce codes (`04` Bogotá, `21` Medellín, `08` Cali, `03` Barranquilla …). |
| `status` | `any`, `active` or `cancelled` (search only). |
| `entityType` | `any`, `legal` (companies & non-profits) or `natural` (sole traders). |
| `legalForms` | `sas`, `ltda`, `sa`, `unipersonal`, `scs`, `sca`, `colectiva`, `extranjera`, `cooperativa`, `eat`, `otras`, `persona_natural`. |
| `ciiuCodes` | CIIU codes: 4 digits = exact, 1–3 digits = prefix (e.g. `62`, `47`). |
| `matchSecondaryCiiu` | Also match secondary activities. |
| `registeredWithinDays`, `registeredFrom`, `registeredTo` | Registration date filters. |
| `renewedSince` | Last renewal year ≥ this year (e.g. `2025`). |
| `sortBy` | `newest` (default), `oldest`, `name`. |
| `maxItems` | Max records per run (default 100, up to 50,000). |
| `includeEstablishments`, `maxEstablishments` | Nested establishments, branches and agencies per company. |
| `appToken` | *Optional* Socrata app token for very large jobs. |

#### Output example

```json
{
  "ok": true,
  "nit": "860002964",
  "verificationDigit": "4",
  "nitFormatted": "860002964-4",
  "idType": "NIT",
  "idNumber": "860002964",
  "name": "BANCO DE BOGOTA",
  "isLegalEntity": true,
  "legalForm": "SOCIEDAD ANONIMA",
  "companyType": "SOCIEDAD COMERCIAL",
  "status": "ACTIVA",
  "isActive": true,
  "chamberCode": "04",
  "chamber": "BOGOTA",
  "registrationNumber": "221830",
  "registrationDate": "1984-10-12",
  "renewalDate": "2026-03-19",
  "lastRenewedYear": 2026,
  "expiryDate": "2070-06-30",
  "ciiuPrimary": "6412",
  "ciiuSection": "K",
  "ciiuDivision": "64",
  "ciiuDivisionName": "Financial service activities, except insurance and pension funding",
  "legalRepresentative": "CESAR PRADO VILLEGAS",
  "recordUpdatedAt": "2026-08-31T17:20:39",
  "method": "nit",
  "queried": "860002964",
  "source": "rues_confecamaras_datos_gov_co",
  "sourceUrl": "https://www.datos.gov.co/d/c82u-588k",
  "license": "CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/)",
  "attribution": "Fuente: Registro Único Empresarial y Social (RUES) - Confecámaras, datos abiertos publicados en datos.gov.co (dataset c82u-588k). Datos normalizados por este actor.",
  "retrievedAt": "2026-10-07T07:40:00+00:00"
}
```

NITs that are invalid or not in the registry produce an item with `"ok": false` and an `error` (`not_found`, `invalid_nit`) so you can reconcile every input. `inputCheckDigitValid` tells you whether the check digit you typed was correct.

### How much does Colombian company data cost?

This Actor uses **pay-per-result** pricing: **$1.50 per 1,000 results** ($0.0015 per record), with Apify platform usage already included. Apify also charges a tiny Actor start fee of $0.00005 per run per GB of memory.

- **What counts as a result?** Every item written to the dataset: one per registration found, plus one per invalid / not-found NIT (`ok: false` rows).
- **Establishments are free of extra result charges**: they are nested inside the company record (they only make the run slower).
- **Temporary failures are not charged.** If datos.gov.co is unreachable or returns an error (after retries), the run fails with a clear message instead of writing error rows, so you are never charged for a source outage (records already found are kept).
- **Control your spend** with `maxItems` (default 100).
- **How much fits in one run?** At the defaults a run outputs at most **100** records. Raise `maxItems` (up to 50,000) for bigger jobs. NITs are queried in batches of 40 per API call, so even 50,000 NITs fit in the default 30-minute timeout. With establishments turned on, each company needs one or two extra calls, so plan for roughly 1,500 companies per run; for more, raise the run timeout or split the list into several runs.
- **Examples:** 1,000 NITs (with `maxItems: 1000`) ≈ $1.50. The default input (3 companies) ≈ $0.008.
- **Free plan:** Apify's free plan includes $5 of monthly usage, which covers about 3,000 records.

### Use the Colombia NIT API from Python, JavaScript or no-code tools

**Python** ([apify-client](https://docs.apify.com/api/client/python)):

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("1rrock/colombia-nit-lookup").call(
    run_input={"nits": ["860002964", "890903938-8", "899999068"]}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item.get("nitFormatted"), item.get("name"), item.get("status"), item.get("legalRepresentative"))
```

**JavaScript / Node.js** ([apify-client](https://docs.apify.com/api/client/js)):

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

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('1rrock/colombia-nit-lookup').call({
    chambers: ['21'], ciiuCodes: ['4711'], status: 'active', registeredWithinDays: 60, maxItems: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((i) => [i.nitFormatted, i.name, i.registrationDate]));
```

**HTTP (one call, returns the results):**

```bash
curl -X POST "https://api.apify.com/v2/acts/1rrock~colombia-nit-lookup/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"nits": ["860002964"]}'
```

**No-code:** connect the Actor to [Zapier](https://docs.apify.com/platform/integrations/zapier), [Make](https://docs.apify.com/platform/integrations/make), Google Sheets (with [Google Sheets Import & Export](https://apify.com/lukaskrivka/google-sheets)), webhooks and [other integrations](https://docs.apify.com/platform/integrations). Run it on a [schedule](https://docs.apify.com/platform/schedules) for a weekly new-companies feed, or let AI agents call it through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp).

### FAQ

#### Is it legal to use RUES data commercially?

Yes. Confecámaras publishes this RUES extract on datos.gov.co under **Creative Commons Attribution-ShareAlike 4.0 (CC BY-SA 4.0)**, which allows commercial use with attribution; if you redistribute the data (or a modified version) you must credit the source and share it under the same licence. Every record carries the `attribution` and `license` fields. Merchant registry data is public information under Colombian law; use personal data of sole traders and legal representatives responsibly and in line with Ley 1581 de 2012.

#### Is this the same as the RUES website or a certificado de existencia?

No. The data comes from the official RUES open data extract, not from the rues.org.co search page, and it is not a legal certificate (certificado de existencia y representación legal). For legal proceedings, obtain a certificate from the chamber of commerce.

#### How fresh is the data?

Confecámaras refreshes the open dataset regularly (roughly weekly; last refresh shown in `recordUpdatedAt` per record and on the dataset page). Very recent registrations may lack a NIT until DIAN assigns it, so `nit` can be `null` for brand-new companies.

#### Why does a NIT return more than one record?

Each record is one matrícula. Companies that changed domicile, or that were registered in more than one chamber, appear once per chamber. Active registrations are returned first; use `isActive` or `status` to pick the current one.

#### What does the data not include?

Addresses, phone numbers, emails, financial statements and shareholders are not part of the RUES open data extract.

#### Fair use

The Actor queries the public datos.gov.co API politely (sequential requests with a short delay and exponential backoff on HTTP 429 / 5xx). For very large or frequent jobs you can add your own free Socrata app token.

### Data source and license

- Source: **Registro Único Empresarial y Social (RUES)**, Confecámaras, published on datos.gov.co: [Personas Naturales, Personas Jurídicas y ESAL (c82u-588k)](https://www.datos.gov.co/d/c82u-588k) and [Establecimientos - Agencias - Sucursales (nb3d-v3n7)](https://www.datos.gov.co/d/nb3d-v3n7).
- Licence: [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/). Attribution: "Fuente: RUES - Confecámaras, datos.gov.co". Field names were translated/normalized and ISIC division descriptions added by this Actor; the output is shared under the same licence.
- This Actor is not affiliated with or endorsed by Confecámaras, the chambers of commerce, DIAN or MinTIC.

### Other actors by 1rrock

Official open-data company lookups, all at $1.50 per 1,000 results:

- 🇧🇷 [Brazil CNPJ Lookup - Receita Federal Company Data](https://apify.com/1rrock/brazil-cnpj-lookup): bulk consulta CNPJ with razão social, situação cadastral, CNAE and QSA.
- 🇲🇽 [Mexico Business Directory - INEGI DENUE Lookup](https://apify.com/1rrock/mexico-denue-lookup): search 6M+ Mexican establishments by name, keyword, state or GPS radius.
- 🇯🇵 [Japan Company Data API - gBizINFO Corporate Lookup](https://apify.com/1rrock/japan-gbizinfo-lookup): Japanese companies by 法人番号 or name with capital, employees and subsidies.
- 🇯🇵 [Japan Invoice Number Checker - T-Number Lookup](https://apify.com/1rrock/japan-invoice-lookup): bulk-verify Japanese qualified invoice registration numbers.
- 🇹🇼 [Taiwan Company Lookup - 統一編號 GCIS Registry Search](https://apify.com/1rrock/taiwan-company-lookup): Taiwanese companies by 統一編號 or name with capital, directors and new-company lists.

# Actor input Schema

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

Colombian NITs (or cédula numbers of registered merchants), one per line. Dots, spaces and the check digit (e.g. 860.002.964-4) are accepted. Each registration found produces one result; numbers not found produce an <code>ok: false</code> row. If this and all search filters are empty, three demo companies are looked up.

## `name` (type: `string`):

Words that must all appear in the registered name (razón social), e.g. <code>rappi</code> or <code>constructora medellin</code>. Case-insensitive. Can be combined with the filters below.

## `chambers` (type: `array`):

Only registrations in these chambers of commerce (e.g. 04 Bogotá, 21 Medellín, 08 Cali, 03 Barranquilla). Leave empty for all of Colombia.

## `status` (type: `string`):

Status filter for searches. NIT lookups always return every registration of the number (active first).

## `entityType` (type: `string`):

Restrict searches to legal entities or to registered individual merchants.

## `legalForms` (type: `array`):

Only these legal forms (organización jurídica), e.g. SAS. Leave empty for all.

## `ciiuCodes` (type: `array`):

CIIU Rev. 4 A.C. codes. A 4-digit code matches exactly (e.g. <code>6201</code> software development); 1-3 digits match as a prefix (e.g. <code>62</code> = all IT services, <code>47</code> = retail).

## `matchSecondaryCiiu` (type: `boolean`):

Match the CIIU codes against secondary activities too (not only the main activity).

## `registeredWithinDays` (type: `integer`):

New companies only: registration date (fecha de matrícula) within the last N days. Great for scheduled new-business lead feeds. RUES open data is refreshed by Confecámaras roughly weekly.

## `registeredFrom` (type: `string`):

Registration date from (inclusive), YYYY-MM-DD.

## `registeredTo` (type: `string`):

Registration date to (inclusive), YYYY-MM-DD.

## `renewedSince` (type: `integer`):

Only registrations whose last renewal year (último año renovado) is this year or later, e.g. 2025, a good proxy for companies that are still operating.

## `sortBy` (type: `string`):

Order of search results.

## `maxItems` (type: `integer`):

Maximum number of records per run (lookups + search). This is your cost cap: each record is one result.

## `includeEstablishments` (type: `boolean`):

Add the commercial establishments, branches and agencies (establecimientos, sucursales, agencias) owned by each company as a nested list. Still one result per company; it only makes the run slower.

## `maxEstablishments` (type: `integer`):

Cap on nested establishments per company (active ones first). The total count is still reported in establishmentCount.

## `appToken` (type: `string`):

Optional free datos.gov.co / Socrata app token for higher API rate limits on very large jobs. Not needed for normal use.

## Actor input object example

```json
{
  "nits": [
    "860002964",
    "890903938-8",
    "899999068"
  ],
  "status": "any",
  "entityType": "any",
  "matchSecondaryCiiu": false,
  "sortBy": "newest",
  "maxItems": 100,
  "includeEstablishments": false,
  "maxEstablishments": 50
}
```

# Actor output Schema

## `registrations` (type: `string`):

No description

# 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": [
        "860002964",
        "890903938-8",
        "899999068"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("1rrock/colombia-nit-lookup").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": [
        "860002964",
        "890903938-8",
        "899999068",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("1rrock/colombia-nit-lookup").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": [
    "860002964",
    "890903938-8",
    "899999068"
  ]
}' |
apify call 1rrock/colombia-nit-lookup --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,1rrock/colombia-nit-lookup"
        }
    }
}
```

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/9ifN1UvClXeFTnXTg/builds/Zk2BPY7jMiFDjhHQo/openapi.json
