# Colombia Company Registry Scraper - RUES (`regdata/colombia-rues-company-scraper`) Actor

Search the official Colombian business registry (RUES) by name, NIT or matrícula. Returns registered name, matrícula, chamber of commerce, legal form, status and category for companies and non-profits. No API key.

- **URL**: https://apify.com/regdata/colombia-rues-company-scraper.md
- **Developed by:** [getregdata](https://apify.com/regdata) (community)
- **Categories:** Agents, Automation, Lead generation
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $12.00 / 1,000 company searches

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Colombia Company Registry Scraper - RUES

Look up Colombian companies and non-profits in **RUES** (Registro Único Empresarial y Social), the
official national business registry run by Confecámaras for Colombia's chambers of commerce.

Search by company name, NIT or matrícula and get the registered name, matrícula, chamber of
commerce, legal form, registration status, category and last renewal year as structured JSON -
across both the **Registro Mercantil** (companies) and **ESAL** (non-profits, foundations, NGOs).

No API key. No account. No CAPTCHA to solve.

### What you get per entity

| Field | Example |
|---|---|
| `razonSocial` | `BANCOLOMBIA S.A.` |
| `matricula` | `8396404` |
| `chamber` / `chamberCode` | `MEDELLIN PARA ANTIOQUIA` / `21` |
| `legalForm` | `SOCIEDAD ANONIMA` |
| `status` / `statusLabel` / `isActive` | `ACTIVA` / `Active` / `true` |
| `category` | `SUCURSAL`, `AGENCIA`, `PRINCIPAL`, ... |
| `lastRenewedYear` | `2026` |
| `register` | `RM` or `ESAL` |
| `idRm` | `210021010802` |
| `jurisdiction`, `source`, `sourceUrl`, `retrievedAt` | provenance for every row |

### What this is good for

- **KYB / onboarding** - confirm a Colombian counterparty exists and is `ACTIVA` before contracting.
- **SARLAFT / UIAF screening** - verify the NIT on a contract or invoice belongs to the entity that
  issued it, and is not `CANCELADA`.
- **Supplier & distributor checks** - one NIT returns the head office and every registered branch
  across chambers of commerce, so you see the whole footprint.
- **Non-profit due diligence** - search the ESAL register for foundations, associations and NGOs.

### What the public search does NOT contain

Stated plainly, because this gap decides whether this actor fits your use case:

- **No legal representatives.**
- **No shareholders or beneficial owners.**
- **No registered address.**
- **No financial statements or filings.**

RUES releases those only through **paid certificates**. This actor returns what the public search
publishes and invents nothing. If you need legal reps or ownership for Colombia, this is a
**verification** tool, not a full KYB profile.

### Search by name, NIT or matrícula

- **Name** - the register's own name search (minimum 2 characters). A search for an entity that does
  not exist returns **zero** rows, so a "no match" here is a real, trustworthy negative.
- **NIT** - accepts any format (`890.903.938-8`, `890903938-8`, `890903938`); the verification
  (check) digit is optional. Returns the entity and each of its registered branches.
- **Matrícula** - the mercantile registration number.

One run searches one register - `RM` (companies) or `ESAL` (non-profits). Run twice to cover both.

### Result ceiling

The register returns **at most 500 matches per search and offers no pagination**. When a query hits
that ceiling the run says so in its status message rather than presenting a capped list as complete.
To reach matches beyond it, narrow the name or search by NIT or matrícula.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `companyNames` | array | - | Names to search, each looked up separately (min 2 chars) |
| `nits` | array | - | NITs, any format: `890.903.938-8` or `890903938` |
| `matriculas` | array | - | Matrícula (registration) numbers |
| `register` | enum | `RM` | `RM` (companies) or `ESAL` (non-profits / NGOs) |
| `maxResultsPerQuery` | integer | 500 | Max records per query (500 is the register's own ceiling) |
| `statusFilter` | array | - | Keep only these statuses; empty exports all |

Set at least one of `companyNames`, `nits` or `matriculas`. A run with none fails immediately and is
not charged.

#### Example input

```json
{
  "companyNames": ["BANCOLOMBIA"],
  "nits": ["890.903.938-8"],
  "register": "RM",
  "statusFilter": ["ACTIVA"]
}
```

### Billing

Charged **per search**, not per row - one query costs the same whether it returns one entity or the
register's full 500.

A search that finds nothing is still an answer, and is charged: on a KYB screen "this counterparty
is not in the Colombian register" is usually the finding you needed. It is written to the dataset as
`lookupStatus: not_found_in_register` so it is never confused with a failure.

Queries that could **not** be retrieved are **not charged**, are never written as result rows, and
are listed in `FAILED_INPUTS` in the run's key-value store. A run that retrieves nothing at all fails
loudly rather than exiting green with an empty dataset.

### Limitations

- **No legal representatives, shareholders, owners or addresses** - not published (see above).
- **500 results per search, no pagination** - a register limit, not an actor limit.
- **One register per run** - RM or ESAL.
- **No document downloads** - RUES certificates are a paid service.
- **`razonSocial` can be long** - the register stores alternate trading names inline in the name
  field (`"... ADEMÁS PODRÁ GIRAR BAJO LA DENOMINACIÓN ..."`); this is the register's own text.
- **Status vocabulary is the register's** - `ACTIVA`, `CANCELADA`, `NO ASIGNADO` and occasional
  longer states; `isActive` is true only for `ACTIVA`.

### Related registry actors

Part of a fleet of official-registry actors across 12+ countries - Poland (KRS, CRBR, KRZ, MSiG,
EKW, KNF, UOKiK, BDO), Germany (Handelsregister), Spain (Registro Mercantil, BORME), Italy, France,
Austria, Belgium, Cyprus (DRCOR), Nigeria (CAC), Slovakia (RPVS beneficial owners), Czechia, UAE and
California.

For Colombia specifically, pair this with a sanctions and PEP screen on the entity names it returns,
since the public register itself carries no ownership data to screen.

***

**Data source:** [RUES - Registro Único Empresarial y Social](https://www.rues.org.co/), operated by
Confecámaras for Colombia's chambers of commerce. This actor is not affiliated with or endorsed by
RUES or Confecámaras.

### Related actors

Part of a suite of official government registry actors - **no public API to build or maintain**, pay per result, nothing to configure.

| Country | Actors |
|---|---|
| Poland | [BDO](https://apify.com/regdata/bdo-waste-registry-scraper) · [CRBR](https://apify.com/regdata/crbr-beneficial-owners-scraper) · [KRS (financials)](https://apify.com/regdata/poland-krs-financial-scraper) · [EKW](https://apify.com/regdata/ekw-ksiegi-wieczyste-scraper) · [KNF](https://apify.com/regdata/knf-registry-scraper) · [KRS (board)](https://apify.com/regdata/krs-fullnames-scraper) · [KRZ](https://apify.com/regdata/krz-debtor-scraper) · [MSiG](https://apify.com/regdata/msig-scraper) · [KYB check](https://apify.com/regdata/poland-kyb-check) · [PEP (Sejm)](https://apify.com/regdata/poland-parliamentary-pep-scraper) · [REGON (sites)](https://apify.com/regdata/polish-premises-prospector) · [REGON](https://apify.com/regdata/polish-regon-scraper) · [UOKiK](https://apify.com/regdata/uokik-clauses-scraper) |
| Germany | [Insolvenzbekanntmachungen](https://apify.com/regdata/germany-insolvency-scraper) · [Handelsregister](https://apify.com/regdata/germany-handelsregister-scraper) |
| Spain | [BORME](https://apify.com/regdata/borme-corporate-acts-scraper) · [Registro Mercantil](https://apify.com/regdata/spain-company-directory-scraper) · [Registro Público Concursal](https://apify.com/regdata/spain-concursal-scraper) |
| Italy | [INI-PEC](https://apify.com/regdata/italy-pec-lookup) · [Registro Imprese](https://apify.com/regdata/italy-registro-imprese-scraper) |
| Austria | [Ediktsdatei](https://apify.com/regdata/austria-ediktsdatei-scraper) · [WKO](https://apify.com/regdata/wko-business-directory-scraper) |
| France | [Societe.com](https://apify.com/regdata/societe-com-scraper) |
| Belgium | [KBO / BCE](https://apify.com/regdata/belgium-kbo-company-scraper) |
| Czechia | [ISIR](https://apify.com/regdata/czech-isir-insolvency-scraper) |
| Slovakia | [RPVS](https://apify.com/regdata/slovakia-rpvs-ubo-scraper) |
| Cyprus | [DRCOR](https://apify.com/regdata/cyprus-drcor-company-scraper) |
| Ireland | [CRO](https://apify.com/regdata/ireland-cro-company-scraper) |
| Portugal | [Publicações MJ](https://apify.com/regdata/portugal-corporate-acts-scraper) |
| Nigeria | [CAC](https://apify.com/regdata/nigeria-cac-company-scraper) |
| Colombia | **RUES (this actor)** |
| USA | [California SoS](https://apify.com/regdata/california-sos-business-scraper) · [California UCC](https://apify.com/regdata/california-ucc-lien-scraper) |
| UAE | [ADGM](https://apify.com/regdata/uae-adgm-public-register-scraper) |
| Global | [Adverse media](https://apify.com/regdata/adverse-media-screener) |

**Common combinations:** company register -> [UBO](https://apify.com/regdata/crbr-beneficial-owners-scraper) -> [insolvency/debtors](https://apify.com/regdata/krz-debtor-scraper) -> [adverse media](https://apify.com/regdata/adverse-media-screener) is the standard KYB/onboarding chain.

For Poland that whole chain is one call: [Poland KYB Risk Check](https://apify.com/regdata/poland-kyb-check) takes a NIP or KRS and returns identity, beneficial owners and insolvency - screened against the company **and every beneficial owner** - as a single verdict, billed once per completed check.

> Full suite: [apify.com/regdata](https://apify.com/regdata) · Callable from any MCP client via [mcp.apify.com](https://mcp.apify.com)

# Actor input Schema

## `companyNames` (type: `array`):

One or more names to search, each looked up separately. Matching is the register's own name search (minimum 2 characters). Broad terms hit the register's 500-result ceiling - see Max results per query.

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

One or more Colombian NITs, each looked up separately. Accepts any format: '890.903.938-8', '890903938-8' or '890903938'. The verification (check) digit is optional and is not used for matching. A NIT lookup returns the entity and its registered branches across chambers of commerce.

## `matriculas` (type: `array`):

One or more matrícula (mercantile registration) numbers, each looked up separately.

## `register` (type: `string`):

Which register to search. 'Registro Mercantil' covers companies and business establishments. 'ESAL' covers non-profit entities - foundations, associations and NGOs. A single run searches one register; run twice to cover both.

## `maxResultsPerQuery` (type: `integer`):

Maximum records to export per query. The register itself returns at most 500 matches and provides no pagination, so 500 is the ceiling here too. To reach matches beyond it, narrow the name or search by NIT or matrícula.

## `statusFilter` (type: `array`):

Keep only entities in these registry statuses. Leave empty to export every match, which is the safer default for screening - a CANCELADA (cancelled) counterparty is usually the finding you most want to see, not one to filter away.

## `proxyConfiguration` (type: `object`):

Leave this off. The register accepts ordinary requests and a normal run does not need a proxy, so you should not pay for one. It is here only for users running many searches in parallel from shared addresses.

## Actor input object example

```json
{
  "companyNames": [
    "BANCOLOMBIA"
  ],
  "nits": [
    "890903938"
  ],
  "register": "RM",
  "maxResultsPerQuery": 100,
  "statusFilter": [],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `entities` (type: `string`):

Entity records from the RUES public register in the default 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 = {
    "companyNames": [
        "BANCOLOMBIA"
    ],
    "nits": [
        "890903938"
    ],
    "maxResultsPerQuery": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("regdata/colombia-rues-company-scraper").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 = {
    "companyNames": ["BANCOLOMBIA"],
    "nits": ["890903938"],
    "maxResultsPerQuery": 100,
}

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

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

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

```

## CLI example

```bash
echo '{
  "companyNames": [
    "BANCOLOMBIA"
  ],
  "nits": [
    "890903938"
  ],
  "maxResultsPerQuery": 100
}' |
apify call regdata/colombia-rues-company-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=regdata/colombia-rues-company-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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