# LATAM Company Finder: 7 Countries, ISIC, English Labels (`latsouth/latam-company-finder`) Actor

Search 19.7M companies from the official registries of Brazil, Mexico, Chile, Colombia, Peru, Argentina and Ecuador in one English schema: ISIC Rev.4 industry, region, city, size, status, websites and corporate e-mail domains. Company data only.

- **URL**: https://apify.com/latsouth/latam-company-finder.md
- **Developed by:** [LatSouth Data](https://apify.com/latsouth) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$4.00 / 1,000 company 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

## LATAM Company Finder: 7 official company registries, one English schema

**By [LatSouth](https://latsouth.com).** Search **19.7 million companies** (19,743,423 rows) from the official registries of **Brazil, Mexico, Chile, Colombia,
Peru, Argentina and Ecuador** with one query. Every country's industry code is mapped to the UN **ISIC Rev.4**
standard, labels are in English, regions and cities are normalized, and each row says how active, how big and how
old the company is. No Portuguese or Spanish codebooks, no seven different government downloads, no ETL.

Company data only: the output never contains e-mail addresses, phone or mobile numbers. You get the company's
**corporate e-mail domain** (and the website derived from it), which is what you need to enrich contacts lawfully.

| | |
|---|---|
| Rows | 19,743,423 companies in 7 countries (16.45M active, private, not sole-owner: the default filters) |
| Data as of | per country, 2026-05-20 to 2026-10-10 (table below); every row carries `data_as_of` |
| Price | US$0.004 per company returned: **1,000 companies = US$4**; 14 = US$0.056 |
| Typical run | 10-25 s (about 11 s for the prefilled example); selecting countries makes it faster |

### Who it's for

- **Sales and SDR teams expanding into Latin America**: "IT services companies in Colombia, Chile and Peru",
  "medium and large manufacturers in Mexico and Chile", "software companies in São Paulo with a verified website".
- **Market sizing / TAM**: every run reports how many companies match, **per country**, even if you only pull a sample
  (`OUTPUT.matching_by_country`).
- **Data enrichment**: start from an ISIC segment and feed tax IDs, names, domains and addresses to your waterfall or CRM.

### Countries and sources

| Country | Registry (official open data) | Companies (rows) | Active, private, not sole-owner (default) | Data as of |
|---|---|---:|---:|---|
| [Brazil](https://latsouth.com/data/brazil/) | Receita Federal, CNPJ open data (establishments; head offices flagged) | 10,933,117 | 10,672,934 | 2026-10-10 |
| [Mexico](https://latsouth.com/data/mexico/) | INEGI DENUE (legal entities only) | 846,778 | 846,778 | 2026-05-20 |
| [Chile](https://latsouth.com/data/chile/) | Registro de Empresas y Sociedades + SII nómina | 3,392,321 | 2,066,489 | 2026-08-03 |
| [Colombia](https://latsouth.com/data/colombia/) | Confecámaras RUES + Supersociedades | 1,816,257 | 824,782 | 2026-10-02 |
| [Peru](https://latsouth.com/data/peru/) | SUNAT Padrón RUC (legal entities, RUC 20) | 916,523 | 575,502 | 2026-09-30 |
| [Argentina](https://latsouth.com/data/argentina/) | Registro Nacional de Sociedades (Ministerio de Justicia / ARCA) | 1,269,627 | 1,171,126 ¹ | 2026-09-18 |
| [Ecuador](https://latsouth.com/data/ecuador/) | SRI Catastro RUC (sociedades) | 568,800 | 292,929 | 2026-10-01 |

¹ Argentina's registry has no company status; "active" there means the company reports at least one active tax
activity (95% of rows). It is a weaker signal than in the other countries.

Software and IT services (ISIC division 62), active, private, not sole-owner: **Brazil 250,990 · Chile 28,148 ·
Colombia 21,402 · Argentina 16,159 · Peru 9,209 · Ecuador 4,586 · Mexico 2,228**.

### What you get per company

| Field group | Fields |
|---|---|
| Identity | `country`, `tax_id` + `tax_id_type` (CNPJ, RUT, NIT, RUC, CUIT; Mexico: DENUE establishment id, RFC is not published), `legal_name`, `trade_name`, `legal_form` (native) + `legal_form_normalized` (corp_like, llc_like, coop, nonprofit, …) |
| Status | `is_active`, `status`, `sector` (private/public), `is_headquarters` (Brazil), `registration_date` + `registration_date_basis` |
| Industry | `activity_code_local` + `activity_label_local` (CNAE, SCIAN, CIIU, CLAE), `activity_label_en`, `isic_section` / `isic_division` / `isic_class` with English labels, `isic_basis` (how it was mapped) |
| Size | `size_class` (micro/small/medium/large/unknown), `size_bracket` (native text), `employees_bracket`, `employees_min`/`employees_max` (Mexico, Chile, Peru) |
| Location | `region` (slug), `region_name`, `region_iso` (ISO 3166-2), `city`, `address`, `zip` |
| Web | `website` (Brazil: HTTP-verified; Mexico: declared to INEGI), `website_verified`, `website_guess` (from the corporate e-mail domain), `email_domain`, `has_corporate_email` |
| Provenance | `data_as_of`, `source` (the official credit), `source_license` |

#### Coverage that differs by country

| | BR | MX | CL | CO | PE | AR | EC |
|---|---:|---:|---:|---:|---:|---:|---:|
| ISIC division | 99.9% | 100% | 51% ² | 91% | 99% | 66% ³ | 99% |
| ISIC class | 90.5% | 46% | 51% | — ⁴ | 99% | 64% | 99% |
| Website or corporate domain | 13.6% | 42.5% | — | 1.2% | — | — | — |
| Size class known | 70% | 100% | 22.5% | 2.2% | 39% | — | — |
| Street address | ✓ | ✓ | ✓ | Supersoc only | ✓ | ✓ | province/canton only |

² 1.65M Chilean companies have no activity in the SII files (58% of them are terminated). ³ 28% of Argentine companies still carry a pre-2013
tax activity code with no ISIC mapping (a strong "dormant" signal). ⁴ Colombia's CIIU classes differ from ISIC at class
level; the division is exact.

### Website filters: which one to use

| Filter | Keeps a company when | Countries with data |
|---|---|---|
| none (default) | always; web fields may be empty | all |
| `only_with_website` | it has a `website` (Brazil: HTTP-verified; Mexico: declared to INEGI) **or** a `website_guess` (domain of its registered corporate e-mail, **not checked**) | BR, MX, CO |
| `only_with_verified_website` | its `website` answered an HTTP check (2xx/3xx, not parked, for sale or a hosting default page) | BR only today |
| `only_with_corporate_email_domain` | its registered e-mail is on its own domain (`email_domain`); the address itself is never returned | BR, MX, CO |

Chile, Peru, Argentina and Ecuador publish no e-mail or website, so these filters return no rows there. Free-mail, ISP,
hosting, social-network and placeholder domains (gmail.com, prodigy.net.mx, contacto.com, instagram.com, …) never count:
they are blanked in `website`, `website_guess` and `email_domain` at output time.

### Input examples

The Console form is prefilled with `{"isic_divisions": ["62"], "max_results_per_country": 2, "max_results": 14}`:
two IT-services companies per country, 14 rows, US$0.056.

**IT services across the Andean countries, one balanced sample**

```json
{
  "countries": ["CO", "PE", "EC", "CL"],
  "isic_divisions": ["62", "63"],
  "max_results_per_country": 250
}
```

**Medium and large manufacturers in Mexico and Chile**

```json
{
  "countries": ["MX", "CL"],
  "isic_sections": ["C"],
  "size_class": ["medium", "large"],
  "sort_by": "size_desc"
}
```

**Brazilian software head offices in São Paulo with a verified website, opened since 2023**

```json
{
  "countries": ["BR"],
  "isic_divisions": ["62"],
  "regions": ["BR-SP"],
  "only_headquarters": true,
  "only_with_verified_website": true,
  "registered_after": "2023-01-01"
}
```

| Field | What it does |
|---|---|
| `countries` | `BR`, `MX`, `CL`, `CO`, `PE`, `AR`, `EC` (or the English/Spanish name). Empty = all 7 |
| `isic_sections`, `isic_divisions` | ISIC Rev.4 letters (`J`) and 2-digit divisions (`62`); combined with OR |
| `keyword` | Substring in the English or local activity label, the ISIC labels, or the legal/trade name (accents optional) |
| `regions` | Region name (`São Paulo`, `Antioquia`, `Metropolitana de Santiago`), slug (`SAO_PAULO`) or ISO 3166-2 (`BR-SP`, `CO-ANT`, `CL-RM`) |
| `cities` | City as the registry publishes it (BR/MX/CO municipality, CL comuna, PE province, AR locality, EC canton) |
| `size_class` | `micro`, `small`, `medium`, `large`, `unknown` |
| `only_active` | Default **true** (see the Argentina note) |
| `exclude_public_sector` | Default **true** |
| `exclude_sole_owner` | Default **true**: leaves out sole-owner companies and person-named entities (their names are masked anyway) |
| `only_headquarters` | Brazil head offices only (other countries are one row per company already) |
| `only_with_website`, `only_with_verified_website`, `only_with_corporate_email_domain` | See "Website filters" above |
| `registered_after`, `registered_before` | On `registration_date` |
| `sort_by` | `size_desc` (default), `registration_date_desc`, `registration_date_asc`, `country_tax_id` |
| `max_results_per_country` | Optional cap per country |
| `max_results` | Default 1,000 via API (the Console form is prefilled with 14) |

### How fields are harmonized

- **Industry.** Native codes are kept and mapped to ISIC Rev.4 with the official correspondence tables: IBGE's CNAE 2.0 ×
  ISIC 4 table (Brazil), INEGI's SCIAN 2023 × CIIU Rev.4 table (Mexico); Chile, Colombia, Ecuador and Argentina's codes
  embed the ISIC division/class; Peru's labels are matched to the UN Spanish titles. When a native code splits across
  several ISIC classes, only the division is filled. `isic_basis` tells you which rule applied.
- **Size.** Brazil: ME → micro, EPP → small (revenue thresholds of LC 123/2006); "DEMAIS" (neither) is `unknown` because
  it mixes large firms with nonprofits and firms that never declared a size. Mexico: INEGI employee brackets (0-10 micro,
  11-50 small, 51-250 medium, 251+ large; per establishment). Chile: SII annual sales bands in UF. Colombia: Decreto
  957/2019 revenue rules on Supersociedades filings. Peru: employee count (< 10, 10-49, 50-249, 250+).
- **Registration date.** Brazil: opening date. Mexico: month the establishment entered DENUE (not incorporation).
  Chile: incorporation or first tax registration. Colombia: commercial registration date. Argentina: articles of
  incorporation. Ecuador: start of activities. Peru: not published.
- **Rows.** One row per company everywhere except Brazil (one row per CNPJ establishment; use `only_headquarters`) and
  Mexico (one row per establishment of a legal entity).

### What is excluded

- Natural persons and individual entrepreneurs (Brazil EI/MEI, Mexico personas físicas, Peru RUC 10, Ecuador personas
  naturales, Colombia personas naturales) are not in the data.
- No e-mail addresses, phone or mobile numbers, owners, partners or ID numbers of people. E-mail-looking strings found
  inside names or addresses are removed.
- Sole-owner entities (EIRL, EIRELI, empresa unipersonal, E.U.R.L., S.A.U.) and person-named entities (sociedades de
  hecho, estates, single-member law firms) have `legal_name = "***"` and no website or domain; they are excluded by
  default.
- Mexico: public-sector establishments and rows that are not a confirmed legal entity. Colombia: registrations without
  a NIT.

### Data freshness

| Country | Source cut | Source refresh |
|---|---|---|
| Brazil | 2026-10-10 | monthly |
| Mexico | 2026-05-20 (DENUE 05/2026) | roughly yearly |
| Chile | 2026-08-03 (SII nómina; RES to 2026-08-31) | RES monthly, SII yearly |
| Colombia | 2026-10-02 | continuous (RUES) |
| Peru | 2026-09-30 | monthly |
| Argentina | 2026-09-18 | yearly snapshot, updated in the year |
| Ecuador | 2026-10-01 | monthly |

Every row carries `data_as_of`; the run's `OUTPUT` record holds `data_as_of_by_country`.

### Sources, licenses and attribution

You must keep these credits when you use or publish the data (each row's `source` field already holds its country's text):

- **Brazil**: Fonte: Receita Federal do Brasil — Dados Abertos CNPJ. Brazilian federal open data.
- **Mexico**: *Fuente: INEGI, Directorio Estadístico Nacional de Unidades Económicas (DENUE) 05/2026.* Términos de
  Libre Uso de la Información del INEGI (<https://www.inegi.org.mx/inegi/terminos.html>).
- **Chile**: Fuente: Ministerio de Economía, Fomento y Turismo — Registro de Empresas y Sociedades (datos.gob.cl), CC BY;
  Servicio de Impuestos Internos — Nómina de Personas Jurídicas (www.sii.cl).
- **Colombia**: Fuente: Confecámaras – RUES; Superintendencia de Sociedades (datos.gov.co). **CC BY-SA 4.0**
  (<https://creativecommons.org/licenses/by-sa/4.0/>): Colombian rows, and works you derive from them, must be shared
  under the same license.
- **Peru**: Fuente: SUNAT, Padrón RUC (datosabiertos.gob.pe), ODC-BY 1.0 (<https://opendatacommons.org/licenses/by/1-0/>);
  names and addresses from SUNAT's Padrón Reducido RUC.
- **Argentina**: Fuente: Ministerio de Justicia de la Nación, Registro Nacional de Sociedades (datos.jus.gob.ar; data
  supplied by ARCA), CC BY 4.0; CLAE classifier: CEP XXI, CC BY 4.0.
- **Ecuador**: Fuente: Servicio de Rentas Internas (SRI) del Ecuador, Catastro RUC, CC BY 4.0
  (<https://creativecommons.org/licenses/by/4.0/>).

The data was transformed (cleaned, harmonized to English, ISIC Rev.4 added, contacts removed, sole-owner names
masked). This is not an official product of any of these agencies and none of them endorses it.

### Pricing

Pay per event:

| Event | When it's charged | Price |
|---|---|---|
| `company-result` | Once per company row returned in the dataset | **US$0.004** (1,000 companies = US$4) |

The platform compute is included. Set a **maximum cost per run** and the actor stops pushing rows when it's reached;
`OUTPUT.stopped_by_budget` tells you. `OUTPUT.matching_by_country` sizes a segment before you pull it all. Full files,
custom segments and refreshes: <https://latsouth.com/products/> and <https://latsouth.com/pricing/>.

### Limitations

- **Coverage differs by country** (table above): Chile has ISIC for about half of its companies, Argentina has no
  status and no size, Colombia has addresses only for Supersociedades filers, Peru has no registration date.
- **Rows are not always companies**: Brazil lists each branch as a CNPJ (use `only_headquarters`), Mexico lists
  establishments of legal entities.
- Websites are HTTP-verified for Brazil only; elsewhere `website_guess` is unchecked.
- Source cuts differ (2026-05-20 to 2026-10-10); each country is refreshed on its registry's own schedule.
- Colombian rows are CC BY-SA 4.0 (share-alike), see attribution below.

### Privacy

Company data only, built from official open registries. You are responsible for using the data lawfully in each
country (LGPD in Brazil, LFPDPPP in Mexico, Ley 19.628 in Chile, Ley 1581 in Colombia, Ley 29733 in Peru, Ley 25.326 in
Argentina, LOPDP in Ecuador) and for honoring opt-out requests.

### FAQ

**Why is Mexico smaller than its 6 million DENUE establishments?** About 80% of DENUE rows are natural persons. Only
establishments of confirmed legal entities are returned.

**Can I get e-mails and phones?** Not from this actor. Brazil and Mexico have dedicated LatSouth actors with registered
company contacts: [Brazil Company Finder](https://apify.com/latsouth/brazil-company-finder) and
[Mexico Company Finder](https://apify.com/latsouth/mexico-company-finder).

**Why do some Brazilian companies appear more than once?** Brazil registers each branch under its own CNPJ. Use
`only_headquarters`.

**Questions, bugs, custom extracts?** hello@latsouth.com, or open an issue on this actor's Issues tab. Methodology:
<https://latsouth.com/methodology/> · Compliance: <https://latsouth.com/compliance/>

# Actor input Schema

## `countries` (type: `array`):

Leave empty for all 7 countries. Selecting countries makes runs faster.

## `isic_sections` (type: `array`):

ISIC Rev.4 sections (the UN industry standard every country's code was mapped to). Combined with divisions using OR.

## `isic_divisions` (type: `array`):

ISIC Rev.4 divisions, e.g. 62 = computer programming and IT consultancy, 70 = management consultancy, 46 = wholesale trade.

## `keyword` (type: `string`):

Case- and accent-insensitive substring searched in the English and local activity labels and in the legal and trade names (e.g. software, logistica, clinic).

## `regions` (type: `array`):

Region names, accents optional (Sao Paulo, Jalisco, Antioquia, Lima, Cordoba, Pichincha, Metropolitana de Santiago), or ISO 3166-2 codes (BR-SP, MX-JAL, CO-ANT, PE-LMA, AR-X, EC-P, CL-RM).

## `cities` (type: `array`):

City as each registry publishes it, accents optional: BR municipio, MX municipio, CL comuna, CO municipio, PE province, AR localidad, EC canton (e.g. Sao Paulo, Monterrey, Providencia, Medellin, Lima, Rosario, Guayaquil).

## `size_class` (type: `array`):

Harmonized size (rule per country in the README: revenue bands in BR/CL/CO, employees in MX/PE). Argentina and Ecuador publish no size.

## `only_active` (type: `boolean`):

Keep companies the registry reports as active. Argentina publishes no status: there it keeps companies with at least one active tax activity.

## `exclude_public_sector` (type: `boolean`):

Leave out government bodies, state-owned companies and international organizations.

## `exclude_sole_owner` (type: `boolean`):

Leave out sole-owner companies (EIRL, unipersonal, EIRELI) and entities whose name is a person's name. Their names are masked (\*\*\*) anyway.

## `only_headquarters` (type: `boolean`):

Brazil lists branches as separate CNPJs; keep only the head office. Other countries are already one row per company.

## `only_with_website` (type: `boolean`):

Keep companies with a `website` (declared to the registry, or HTTP-verified in Brazil) OR a `website_guess` (a domain derived from the company's registered corporate e-mail, NOT checked over HTTP). Brazil, Mexico and Colombia only; free-mail, ISP and placeholder domains (gmail, prodigy.net.mx, contacto.com, ...) never count.

## `only_with_verified_website` (type: `boolean`):

Stricter: keep only companies whose `website` answered an HTTP check (2xx/3xx, not parked, for sale or a hosting default page). Brazil only today; other countries return no rows with this on.

## `only_with_corporate_email_domain` (type: `boolean`):

Keep companies whose registered e-mail uses their own domain (not Gmail/Hotmail/ISP/placeholder). Only the domain is returned, never the e-mail address. Brazil, Mexico and Colombia publish e-mails.

## `registered_after` (type: `string`):

YYYY-MM-DD, on registration_date (opening/incorporation date; see registration_date_basis per country). Peru has no date.

## `registered_before` (type: `string`):

YYYY-MM-DD, on registration_date.

## `sort_by` (type: `string`):

Order of results.

## `max_results_per_country` (type: `integer`):

Optional cap per country, for a balanced multi-country sample (e.g. 2 per country x 7 countries = 14 rows).

## `max_results` (type: `integer`):

You pay per company returned (US$0.004 each: 1,000 companies = US$4). The run also stops at your spending limit. Default 1,000 when called via API without this field.

## Actor input object example

```json
{
  "isic_divisions": [
    "62"
  ],
  "only_active": true,
  "exclude_public_sector": true,
  "exclude_sole_owner": true,
  "only_headquarters": false,
  "only_with_website": false,
  "only_with_verified_website": false,
  "only_with_corporate_email_domain": false,
  "sort_by": "size_desc",
  "max_results_per_country": 2,
  "max_results": 14
}
```

# Actor output Schema

## `companies` (type: `string`):

Matching companies, one item per row. Download as JSON, CSV, Excel or XML via the dataset API.

## `summary` (type: `string`):

Total and per-country matching counts, rows pushed per country, data_as_of per country, applied filters and whether the run stopped at the buyer's budget cap.

# 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 = {
    "isic_divisions": [
        "62"
    ],
    "max_results_per_country": 2,
    "max_results": 14
};

// Run the Actor and wait for it to finish
const run = await client.actor("latsouth/latam-company-finder").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 = {
    "isic_divisions": ["62"],
    "max_results_per_country": 2,
    "max_results": 14,
}

# Run the Actor and wait for it to finish
run = client.actor("latsouth/latam-company-finder").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 '{
  "isic_divisions": [
    "62"
  ],
  "max_results_per_country": 2,
  "max_results": 14
}' |
apify call latsouth/latam-company-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,latsouth/latam-company-finder"
        }
    }
}
```

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/GZQs0vqYVODdyLGgq/builds/7Yhvnnc3jIZvA1PA9/openapi.json
