# DENUE México: directorio de negocios del INEGI (sin token) (`abigc/denue-mexico-directorio-negocios`) Actor

Establecimientos de México del directorio público DENUE del INEGI, filtrados por estado, municipio, actividad SCIAN y tamaño. Sin token ni API key. Modo privacidad para personas físicas. Mexico business directory (INEGI DENUE) by state, municipality, activity and size.

- **URL**: https://apify.com/abigc/denue-mexico-directorio-negocios.md
- **Developed by:** [Abi](https://apify.com/abigc) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.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

## DENUE México: directorio de negocios del INEGI (sin token)

*English version below.*

Obtén establecimientos de México desde el **Directorio Estadístico Nacional de Unidades Económicas (DENUE)** del INEGI, filtrados por estado, municipio, actividad económica (SCIAN) y tamaño. No necesitas token del INEGI, ni API key, ni proxies: el actor descarga el archivo público del estado en cada corrida y te entrega solo las filas que pediste.

### Qué devuelve

Una fila por establecimiento, con:

- nombre comercial y razón social (como los publica el INEGI);
- actividad: código SCIAN de 6 dígitos y su nombre;
- tamaño: estrato de personal ocupado (`0 a 5`, `6 a 10`, `11 a 30`, `31 a 50`, `51 a 100`, `101 a 250`, `251 y más`);
- domicilio armado en una línea y también por partes (vialidad, número, colonia, código postal, municipio, estado);
- latitud y longitud;
- teléfono, correo y sitio web, cuando el INEGI los publica (muchos establecimientos no los tienen);
- `tipo_persona`: estimación automática de si es persona moral o persona física (ver "Modo privacidad");
- `fuente` y `fecha_referencia`: la atribución al INEGI y la fecha de la edición del DENUE usada.

El DENUE no tiene un campo de RFC, ni de ventas, ni de dueño o directivos. Aun así, en los negocios de una persona la razón social suele ser el nombre del dueño, y en unos pocos registros el INEGI publica un RFC en el lugar de la razón social (ver "Modo privacidad").

### Para quién es

- Equipos de ventas y prospección B2B que necesitan listas de negocios por zona y giro.
- Estudios de mercado y de competencia: cuántos negocios de un giro hay en un municipio y dónde están.
- Logística, expansión de sucursales y análisis geográfico (cada fila trae coordenadas).
- Periodistas, investigadores y estudiantes que quieren un corte del DENUE sin procesar archivos de cientos de megabytes.

### Cómo se usa

Elige al menos un estado. Todo lo demás es opcional.

| Campo | Qué hace |
|---|---|
| `estados` | Uno o más estados por nombre (`"Nuevo León"`, `"CDMX"`, `"Estado de México"`) o clave INEGI (`"19"`). `"todos"` recorre el país completo. |
| `codigosScian` | Código SCIAN completo (6 dígitos) o su inicio (2 a 5 dígitos). `722511` es exacto; `7225` trae todo lo que empieza así. |
| `palabrasClaveActividad` | Palabras buscadas en el **nombre de la actividad** SCIAN (no en el nombre del negocio), sin distinguir acentos ni mayúsculas. |
| `municipios` | Nombre oficial completo del municipio o alcaldía, sin distinguir acentos ni mayúsculas. |
| `tamanos` | Estratos de personal ocupado. |
| `soloConTelefono`, `soloConCorreo`, `soloConSitioWeb` | Entrega solo filas que muestran ese dato. |
| `maxResultados` | Tope de filas (1000 por defecto; 0 = sin tope). Se toman en el orden del archivo del INEGI: no es una muestra aleatoria. |
| `modoPrivacidad` | Activado por defecto. Ver abajo. |

Si pones códigos **y** palabras clave, la fila debe cumplir ambas condiciones. Varios valores dentro de un mismo campo se suman (uno u otro).

¿No conoces el código SCIAN? Usa una palabra clave (`"dental"`, `"farmacias"`, `"hoteles"`) o consulta el clasificador del INEGI: https://www.inegi.org.mx/scian/

#### Ejemplos de entrada

Dentistas en Monterrey:

```json
{
  "estados": ["Nuevo León"],
  "codigosScian": ["621211"],
  "municipios": ["Monterrey"]
}
```

Restaurantes en la alcaldía Cuauhtémoc que muestran teléfono:

```json
{
  "estados": ["CDMX"],
  "codigosScian": ["722511"],
  "municipios": ["Cuauhtémoc"],
  "soloConTelefono": true
}
```

Empresas medianas y grandes de manufactura en Jalisco y Guanajuato:

```json
{
  "estados": ["Jalisco", "Guanajuato"],
  "codigosScian": ["31", "32", "33"],
  "tamanos": ["101 a 250", "251 y más"],
  "maxResultados": 5000
}
```

Todo lo que tenga "dental" en la actividad, en Toluca y Ecatepec:

```json
{
  "estados": ["Estado de México"],
  "palabrasClaveActividad": ["dental"],
  "municipios": ["Toluca", "Ecatepec de Morelos"]
}
```

#### Ejemplo de salida

```json
{
  "id_denue": "10947117",
  "clee": "09015722511019783000000000U2",
  "nombre_establecimiento": "ANGUS ZONA ROSA",
  "razon_social": "OPERADORA RESTAURANTERA AHUEHUTE",
  "tipo_persona": "persona_moral",
  "motivo_clasificacion": "palabra_clave",
  "codigo_scian": "722511",
  "actividad": "Restaurantes con servicio de preparación de alimentos a la carta o de comida corrida",
  "personal_ocupado": "11 a 30",
  "tipo_establecimiento": "Fijo",
  "direccion": "CALLE COPENHAGUE 31, COLONIA JUÁREZ, C.P. 06600, Cuauhtémoc, Ciudad de México",
  "tipo_vialidad": "CALLE",
  "vialidad": "COPENHAGUE",
  "numero_exterior": "31",
  "numero_interior": "",
  "edificio": "",
  "centro_comercial": "",
  "local": "",
  "colonia": "COLONIA JUÁREZ",
  "codigo_postal": "06600",
  "municipio": "Cuauhtémoc",
  "clave_municipio": "015",
  "entidad": "Ciudad de México",
  "clave_entidad": "09",
  "localidad": "Cuauhtémoc",
  "ageb": "0803",
  "manzana": "015",
  "telefono": "55XXXXXXXX",
  "correo": "contacto@ejemplo.com",
  "sitio_web": "",
  "contacto_oculto": false,
  "latitud": 19.42690886,
  "longitud": -99.16356857,
  "fecha_alta": "2024-11",
  "fuente": "INEGI, DENUE, edición 05/2026 (fecha de referencia 2026-05-20)",
  "fecha_referencia": "2026-05-20"
}
```

En este ejemplo el teléfono y el correo están enmascarados; el actor entrega los que publica el INEGI.

Además del dataset, cada corrida guarda un registro `RESUMEN` con el número de resultados, las filas leídas, la fecha de referencia y los avisos (por ejemplo, un municipio mal escrito, con sugerencias de nombres parecidos).

### Modo privacidad y sus límites

Gran parte del DENUE son negocios pequeños de una sola persona: el teléfono o el correo que aparecen pueden ser los personales del dueño. Por eso el **modo privacidad está activado por defecto**: en los establecimientos clasificados como **persona física**, el actor deja vacíos `telefono` y `correo` y marca `contacto_oculto: true`. El resto de la fila (nombre, actividad, domicilio, coordenadas) se entrega igual.

Cómo se clasifica: el DENUE no dice si un establecimiento es persona física o moral, así que el actor lo **estima** a partir de la razón social.

- Razón social vacía (el caso más común en negocios pequeños) o con forma de nombre de persona: `persona_fisica`.
- Razón social con señales de empresa u organización (por ejemplo "COMERCIALIZADORA", "GRUPO", "ASOCIACION"): `persona_moral`.
- Nombre de persona seguido de un sufijo societario corto ("JUANA PEREZ PEREZ SA DE CV", "JUAN JUAREZ LOPEZ AC"): `persona_fisica`. El DENUE trae así muchos negocios de una sola persona, y el sufijo por sí solo no basta para mostrar su contacto.
- Razón social que empieza con un nombre de persona (nombre de pila seguido de un apellido o de un segundo nombre) y sigue con un giro, sin ningún sufijo ni palabra societaria ("JUAN PEREZ TAQUERIA", "MARIA LOPEZ SERVICIOS CONTABLES"): `persona_fisica`.
- Razón social que es, o contiene, un RFC de 13 caracteres (el de una persona física): `persona_fisica`.
- Ante la duda, `persona_fisica`.

Límites que debes conocer:

- Es una regla automática, no un dato oficial ni una consulta al SAT. **Se equivoca.** Está hecha para equivocarse del lado prudente: lo habitual es que una empresa quede marcada como persona física (y su contacto se oculte), no al revés. No se garantiza que nunca ocurra lo contrario. El caso que queda abierto: una razón social con una palabra de negocio en la que el nombre de la persona no va al principio ("TAQUERIA JUAN PEREZ", "INMOBILIARIA SOCORRO AVILA"), o empieza con un nombre o apellido que el actor no reconoce, queda como persona moral y su contacto se muestra. Los nombres se reconocen con listas de nombres de pila y apellidos frecuentes en México, que no son completas.
- No hay un porcentaje de acierto medido que podamos prometer. La columna `motivo_clasificacion` indica qué regla decidió cada fila, para que puedas revisarla.
- El modo privacidad oculta teléfono y correo, y además quita de la razón social el RFC de persona física cuando el INEGI lo publicó ahí (si la razón social era solo el RFC, queda vacía). Los RFC de 12 caracteres, que son de empresas, no se tocan.
- Todo lo demás se entrega como lo publica el INEGI. En los negocios de una persona, la razón social suele ser el nombre del dueño, y el nombre del establecimiento y el domicilio también pueden identificarlo.
- Con el modo privacidad desactivado no se oculta ni se quita nada.
- Con el modo privacidad activo, `soloConTelefono` y `soloConCorreo` devuelven únicamente establecimientos clasificados como persona moral, porque son los únicos cuyo contacto se muestra.
- Si desactivas el modo privacidad, el uso que des a los datos de contacto de personas físicas es tu responsabilidad. En México aplica la Ley Federal de Protección de Datos Personales en Posesión de los Particulares, incluidas sus reglas sobre comunicaciones comerciales.

### Actualidad de los datos

El actor no guarda copias: en cada corrida descarga del sitio del INEGI el archivo vigente del estado, así que siempre usa la **edición publicada en ese momento**. La fecha de referencia se lee de los metadatos que el INEGI incluye en el archivo y va en cada fila (`fecha_referencia`). El INEGI actualiza el DENUE de forma periódica, no en tiempo real: un negocio abierto o cerrado después de la fecha de referencia no se refleja. El DENUE es un directorio estadístico; puede contener establecimientos que ya cerraron y omitir otros.

El actor depende del sitio del INEGI. Antes de entregar una sola fila de un estado comprueba la integridad del archivo descargado; si llegó dañado lo descarga una vez más. Qué pasa si el INEGI falla:

- Si no se pudo entregar ninguna fila, la corrida termina con un mensaje de error claro y no se cobra ningún resultado.
- Si pediste varios estados y uno falla después de que otros ya se entregaron, esas filas ya están en el dataset (y cobradas). La corrida termina normalmente, pero el mensaje final dice **RESULTADO INCOMPLETO** y nombra los estados que faltan; el registro `RESUMEN` los lista en `estados_con_error` y marca `completo: false`. Vuelve a correr solo esos estados.
- Tras dos estados fallidos seguidos, el actor deja de intentar los restantes y los reporta igual.

### Fuente, atribución y términos de uso

Fuente: **INEGI, Directorio Estadístico Nacional de Unidades Económicas (DENUE)**.

Los datos se usan bajo los Términos de Libre Uso de la Información del INEGI: https://www.inegi.org.mx/inegi/terminos.html

Esos términos permiten usar, copiar y redistribuir la información, también con fines comerciales, siempre que se **cite al INEGI como fuente**. Si publicas o redistribuyes resultados de este actor, conserva la atribución (el campo `fuente` de cada fila ya la trae). Este actor es un producto independiente: no está afiliado al INEGI ni cuenta con su aval.

### Para agentes de IA

Usa este actor cuando necesites una lista de negocios o establecimientos de México por ubicación (estado, municipio) y giro (código SCIAN o palabra clave de la actividad), con domicilio y coordenadas. No lo uses para buscar una empresa por su nombre, obtener RFC, datos fiscales o financieros, ni negocios de otros países. Entrada mínima: `{"estados": ["Jalisco"], "palabrasClaveActividad": ["farmacias"], "maxResultados": 100}`.

***

## Mexico business directory from INEGI's DENUE (no token needed)

Get business establishments in Mexico from INEGI's **DENUE** (National Statistical Directory of Economic Units), filtered by state, municipality, economic activity (SCIAN, the Mexican version of NAICS) and size. No INEGI token, API key or proxy is required: on every run the actor downloads the state's public bulk file from INEGI and returns only the rows you asked for.

### What it returns

One row per establishment: trade name and legal name (as published by INEGI), 6-digit SCIAN activity code and name, employee-count stratum, a one-line assembled address plus its parts, latitude and longitude, phone, email and website when INEGI publishes them (many establishments have none), an estimated `tipo_persona` (legal entity or natural person), and `fuente` / `fecha_referencia` with the INEGI attribution and the reference date of the DENUE edition used.

DENUE has no tax ID (RFC) field, no revenue field and no owner or executive field. Even so, for one-person businesses the legal name is usually the owner's name, and in a few records INEGI publishes an RFC in place of the legal name (see "Privacy mode"). Field names and values are in Spanish, as in the source.

### Who it is for

B2B sales and lead-generation teams, market and competitor research, logistics and site selection (every row is geocoded), and researchers who want a slice of DENUE without processing files of hundreds of megabytes.

### Input

| Field | Meaning |
|---|---|
| `estados` | One or more states by name (`"Nuevo León"`, `"CDMX"`) or two-digit INEGI code (`"19"`). `"todos"` scans the whole country. |
| `codigosScian` | Full 6-digit SCIAN code, or a 2 to 5 digit prefix. |
| `palabrasClaveActividad` | Keywords matched against the SCIAN **activity name** (not the business name), accent- and case-insensitive. Activity names are in Spanish. |
| `municipios` | Full official municipality name, accent- and case-insensitive. |
| `tamanos` | Employee-count strata: `0 a 5`, `6 a 10`, `11 a 30`, `31 a 50`, `51 a 100`, `101 a 250`, `251 y más`. |
| `soloConTelefono`, `soloConCorreo`, `soloConSitioWeb` | Only rows that show a phone, an email, a website. |
| `maxResultados` | Row cap (default 1000; 0 = no cap). Rows come in INEGI file order, not as a random sample. |
| `modoPrivacidad` | Privacy mode, on by default. |

Codes and keywords together must both match. Several values in one field are alternatives.

Dentists in Monterrey:

```json
{ "estados": ["Nuevo León"], "codigosScian": ["621211"], "municipios": ["Monterrey"] }
```

Restaurants in Cuauhtémoc, Mexico City, that show a phone number:

```json
{ "estados": ["CDMX"], "codigosScian": ["722511"], "municipios": ["Cuauhtémoc"], "soloConTelefono": true }
```

See the Spanish section above for a full output sample.

### Privacy mode and its limits

Much of DENUE is one-person businesses, where the listed phone or email may be the owner's personal contact. **Privacy mode is on by default**: for establishments classified as natural persons, `telefono` and `correo` are returned empty and `contacto_oculto` is `true`.

DENUE does not state whether an establishment is a legal entity or a natural person, so the actor **estimates** it from the legal name: an empty legal name or one shaped like a personal name means natural person, also when a short company suffix follows it ("JUANA PEREZ PEREZ SA DE CV"), when it starts with a personal name followed by a trade word and carries no company marker at all ("JUAN PEREZ TAQUERIA"), or when it is or contains a 13-character RFC (an individual's tax ID); a legal name with company or organisation words means legal entity; when in doubt, natural person.

- This is a heuristic, not official data, and it makes mistakes. It is built to fail on the cautious side: the usual error is a company marked as a natural person (its contact gets hidden). The opposite error is not ruled out. The case that remains open: a legal name with a trade word where the person's name does not come first ("TAQUERIA JUAN PEREZ"), or starts with a given name or surname the actor does not recognise, is classed as a legal entity and its contact is shown. Names are recognised with lists of common Mexican given names and surnames, which are not complete.
- We do not publish an accuracy figure. `motivo_clasificacion` shows which rule decided each row.
- Privacy mode blanks phone and email, and removes an individual's 13-character RFC from the legal name when INEGI published it there (if the legal name was only the RFC, it is returned empty). 12-character RFCs, which belong to companies, are left as they are.
- Everything else is returned as INEGI publishes it. For one-person businesses the legal name is usually the owner's name, and the trade name and address can also identify them.
- With privacy mode on, `soloConTelefono` and `soloConCorreo` return only establishments classified as legal entities.
- If you turn privacy mode off, how you use natural persons' contact data is your responsibility, including compliance with Mexican data protection law.

### Data freshness

Nothing is cached: each run downloads the current file from INEGI, so you always get the **edition published at that moment**, and its reference date is on every row. INEGI updates DENUE periodically, not in real time. It is a statistical directory and may list businesses that have closed and miss others. The actor depends on INEGI's site and checks each downloaded file's integrity before returning any row from it. If nothing could be delivered, the run fails with a clear error message and no result is charged. If you asked for several states and one fails after others were delivered, those rows are already in the dataset (and charged): the run finishes normally, the final status message says **RESULTADO INCOMPLETO** and names the missing states, and the `RESUMEN` record lists them under `estados_con_error` with `completo: false`. Re-run only those states.

### Source, attribution and terms of use

Source: **INEGI, Directorio Estadístico Nacional de Unidades Económicas (DENUE)**, used under INEGI's free-use terms: https://www.inegi.org.mx/inegi/terminos.html

Those terms allow use and redistribution, including commercial use, provided INEGI is credited as the source. Keep the attribution when you publish or redistribute results (each row carries it in `fuente`). This actor is an independent product, not affiliated with or endorsed by INEGI.

### For AI agents

Use this actor when you need a list of businesses or establishments in Mexico by location (state, municipality) and line of business (SCIAN code or Spanish activity keyword), with address and coordinates. Do not use it to look up a company by name, to get tax IDs or financial data, or for other countries. Minimal input: `{"estados": ["Jalisco"], "palabrasClaveActividad": ["farmacias"], "maxResultados": 100}`.

# Actor input Schema

## `estados` (type: `array`):

Uno o más estados, por nombre ("Nuevo León", "CDMX", "Estado de México") o por clave INEGI de dos dígitos ("19"). Escriba "todos" para todo el país (32 descargas, tarda varios minutos). / One or more Mexican states, by name or two-digit INEGI code; "todos" for the whole country.

## `codigosScian` (type: `array`):

Código SCIAN completo (6 dígitos, p. ej. 621211 = consultorios dentales del sector privado) o solo el inicio (2 a 5 dígitos, p. ej. 7225 = todos los restaurantes y similares). Varios códigos se suman. Vacío = cualquier actividad. / SCIAN (Mexican NAICS) code, full or prefix of 2 to 6 digits.

## `palabrasClaveActividad` (type: `array`):

Busca en el nombre SCIAN de la actividad (no en el nombre del negocio), sin distinguir acentos ni mayúsculas. Ejemplos: "dental", "farmacia", "hotel". Varias palabras se suman. Si además pone códigos, deben cumplirse las dos condiciones. / Keyword matched against the SCIAN activity name, accent- and case-insensitive.

## `municipios` (type: `array`):

Nombre oficial del municipio o alcaldía, sin distinguir acentos ni mayúsculas (p. ej. "Monterrey", "Cuauhtemoc", "San Pedro Garza García"). Debe ser el nombre completo. Vacío = todo el estado. / Official municipality name, accent- and case-insensitive, full name.

## `tamanos` (type: `array`):

Estratos de personal ocupado tal como los publica el INEGI. Vacío = cualquier tamaño. / Employee-count strata as published by INEGI.

## `soloConTelefono` (type: `boolean`):

Entrega solo establecimientos cuyo teléfono aparece en el resultado. Con el modo privacidad activo, los negocios clasificados como persona física quedan fuera porque su teléfono se oculta. / Only rows that show a phone number.

## `soloConCorreo` (type: `boolean`):

Entrega solo establecimientos cuyo correo aparece en el resultado (misma regla que el teléfono con el modo privacidad). / Only rows that show an email.

## `soloConSitioWeb` (type: `boolean`):

Entrega solo establecimientos con sitio web registrado. / Only rows with a website.

## `maxResultados` (type: `integer`):

La corrida se detiene al llegar a este número (se toman en el orden del archivo del INEGI, no es una muestra aleatoria). 0 = sin límite. / Maximum number of rows; 0 = no limit.

## `modoPrivacidad` (type: `boolean`):

Activado: se ocultan el teléfono y el correo de los establecimientos clasificados como persona física (razón social vacía o con forma de nombre de persona). La clasificación es una estimación automática; vea sus límites en la descripción del actor. / When on, phone and email are blanked for establishments classified as natural persons (heuristic).

## Actor input object example

```json
{
  "estados": [
    "Nuevo León"
  ],
  "codigosScian": [
    "621211"
  ],
  "municipios": [
    "Monterrey"
  ],
  "soloConTelefono": false,
  "soloConCorreo": false,
  "soloConSitioWeb": false,
  "maxResultados": 1000,
  "modoPrivacidad": true
}
```

# Actor output Schema

## `resultados` (type: `string`):

No description

## `resumen` (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 = {
    "estados": [
        "Nuevo León"
    ],
    "codigosScian": [
        "621211"
    ],
    "municipios": [
        "Monterrey"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("abigc/denue-mexico-directorio-negocios").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 = {
    "estados": ["Nuevo León"],
    "codigosScian": ["621211"],
    "municipios": ["Monterrey"],
}

# Run the Actor and wait for it to finish
run = client.actor("abigc/denue-mexico-directorio-negocios").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 '{
  "estados": [
    "Nuevo León"
  ],
  "codigosScian": [
    "621211"
  ],
  "municipios": [
    "Monterrey"
  ]
}' |
apify call abigc/denue-mexico-directorio-negocios --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,abigc/denue-mexico-directorio-negocios"
        }
    }
}
```

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/dUZy0XClJBbkbiKEW/builds/GTAGVVOWlZPFtTN5R/openapi.json
