Mexico Company Leads (DENUE INEGI) — Empresas de México
Pricing
from $3.00 / 1,000 company results
Mexico Company Leads (DENUE INEGI) — Empresas de México
847k Mexican legal entities from INEGI DENUE by industry (SCIAN), state, municipality and size, with +52 phone, website and corporate e-mail. English labels, no scraping. ES: empresas de México por actividad, estado y tamaño.
Pricing
from $3.00 / 1,000 company results
Rating
0.0
(0)
Developer
LatSouth Data
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Features
Share
Mexico Company Finder: DENUE B2B database of Mexican companies, in English
By LatSouth. Search 846,651 Mexican legal entities (private sector, DENUE edition 05/2026) from INEGI's DENUE, the national business directory, by industry, state, municipality and employee size. Get clean records with English industry labels, normalized +52 phones, HTTP-verified websites, company role e-mails (contacto@, ventas@ on the company's own domain) and the public contacts each company publishes on its own website (role e-mails, phones, LinkedIn/Instagram/Facebook, with source page and date). Legal entities only, public sector filtered out, personal contacts never returned. No DENUE token, no bulk download, no Spanish codebook. Country overview and coverage: https://latsouth.com/data/mexico/.
Fuente: INEGI, Directorio Estadístico Nacional de Unidades Económicas (DENUE) 05/2026. Data transformed (cleaned, normalized, English labels added); this is not an official INEGI product. Terms: https://www.inegi.org.mx/inegi/terminos.html.
Quick facts
| Rows | 846,651 establishments of private legal entities (449,001 distinct legal names) out of 6,138,075 in DENUE |
| Data as of | 2026-05-20 (DENUE 05/2026; INEGI refreshes roughly yearly) |
| Price | US$0.003 per company returned: 1,000 companies = US$3; 10 = US$0.03 |
| Typical run | 5-15 s for a filtered query of up to a few thousand rows |
| Website contacts | 46,394 establishments with a role e-mail or phone read from their own verified homepage (only_with_public_contact); 59,650 with any channel incl. social |
| Company data only | No natural persons (personas físicas), no personal mailboxes (juan.perez@, caramosg@), no free-mail, no names |
Who it's for
- Sales and SDR teams entering Mexico: "IT consultancies in Mexico City with 11+ employees and a website", "food manufacturers in Jalisco and Nuevo León".
- Market sizing / TAM: every run reports
total_matching(all establishments that match), even if you only pull a sample. - Enrichment: start from a SCIAN segment and feed the list to your enrichment waterfall or CRM.
What makes it B2B
DENUE lists ~6.1 million establishments, and most of them are corner shops run by natural persons. This actor turns it into a company list:
| DENUE as published | This actor | |
|---|---|---|
| Who | Every establishment, ~79% of them natural persons (no legal name) | Legal entities only, always (no switch: company data only) |
| Public sector | Mixed in (schools, offices, hospitals) | Excluded by default (exclude_public_sector) |
| Industry | SCIAN code + Spanish label | Spanish class label + English subsector and sector labels |
| Size | Text bracket ("11 a 30 personas") | Bracket filter + min_employees + numeric bounds |
| Phone | Free text | +52 + 10 digits, junk dropped |
| Free text: personal mailboxes, Gmail/Hotmail/Prodigy, typos | Role mailboxes on the company's own domain only (contacto@, ventas@, facturacion@…); personal and free-mail addresses blanked | |
| Website | Free text (WWW.X.COM, Facebook pages), never checked | https:// URL; social pages split into social_url; website_guess from corporate e-mail domain; website_verified after an HTTP check (272,768 DENUE establishments verified) |
| Branches | One row per establishment | Optional one_per_company (largest establishment per legal name) |
Website filters: which one to use
| Filter | Keeps an establishment when | Use it for |
|---|---|---|
| none (default) | always; web fields may be empty | full universe, TAM counts |
only_with_website | it has a website declared to INEGI or a website_guess (the domain of its corporate e-mail). Not checked: may be dead or parked | widest list with a domain to enrich |
only_with_verified_website | its site answered our HTTP check (2xx/3xx, not parked, for sale, suspended or a hosting default page); the final URL is website_verified_url | outbound lists where the site must be live |
only_with_verified_website is a strict subset of only_with_website. Free-mail, ISP, hosting, social-network and
placeholder domains (gmail.com, prodigy.net.mx, contacto.com, wix.com, …) never count as a website: they are blanked
in website, website_domain, website_guess, website_verified_url and email_domain at output time. Social pages
are in social_url.
Public company contacts from the verified homepage
What. For establishments with a verified website we read the homepage itself and return the contacts the company
publishes there: role e-mails (public_role_emails: contacto@, ventas@, info@, atencion@, facturacion@, ...), phones
(public_phones, +52 + 10 digits), and the company's LinkedIn, Instagram and Facebook pages. Every value comes with the
page it was read from (contact_source_url) and when (contact_fetched_at, UTC). This is the contact a buyer would find
by visiting the site; the contact filed with INEGI stays in phone / email.
How. The homepage of every HTTP-verified domain (see website_verified) is fetched once (one page, no crawling, no
login, no forms), and e-mails, tel: links, phone numbers and social links are extracted from the HTML. The contact is
matched back to the establishment through its declared website domain, then its corporate e-mail domain.
Two flags, one filter.
has_public_contact: the homepage gives this establishment any company channel: role e-mail, phone or a social page (LinkedIn/Instagram/Facebook).has_public_email_or_phone: it gives a role e-mail or a phone, i.e. something you can e-mail or call.only_with_public_contact: truekeeps the rows withhas_public_email_or_phone = true; social-only pages don't count.
Rules (company data only).
- Only role / generic company mailboxes are output, under the same strict rule as
email(see "E-mail rule" below):contacto@,ventas2@pass;juan.perez@,ventas.juan@don't. Free-mail addresses are never output, and an e-mail must be on the company's own domain. - Phones must be valid Mexican numbers:
+52+ 10 digits, first digit 2-9. The obsolete mobile prefix1(+52 1 ...) is removed; nothing is added. Placeholder numbers (one digit repeated, 1234567 sequences, 666 666 6667) are dropped. - A value found on more than 3 different company homepages (a web agency's footer, a template placeholder) is dropped.
- Branches of one company share its contact. DENUE lists establishments, so a chain's stores all point to the same site. When every establishment on a domain has the same razón social (accents, punctuation and the legal form such as S.A. de C.V. ignored), the site's contact is that company's and every branch gets it.
- When a domain is used by different companies (a group's shared site, a reseller, a franchise portal) or by an
establishment without a razón social, the
contacts on that site are not attributable to this one establishment: nothing is output, only the flag
contact_is_shared_domainis set. - Social links are company pages only (LinkedIn
/company/, brand Instagram/Facebook); personal profiles are discarded.
Coverage (homepages fetched 2026-11-09 by LatSouthBot, DENUE 05/2026):
| Count | |
|---|---|
| Verified homepages read (HTTP 2xx/3xx) | 101,298 |
| ... publishing any contact (before the rules above) | 66,256 (65.4%): role e-mail 30.1%, phone 46.0%, social 46.0% |
| Homepages with a contact that passes the rules | 63,682 (54,520 owned by one company; 9,162 shared by different companies) |
Establishments (default universe) with has_public_contact (any channel) | 59,650 (37,855 distinct legal names) |
... with has_public_email_or_phone = only_with_public_contact | 46,394 (30,877 distinct legal names) |
| ... with a website role e-mail / phone / both | 24,122 / 40,506 / 18,234 |
| ... social page only (not counted by the filter) | 15,370 |
only_with_public_contact in Mexico City (state 09) | 7,381 |
only_with_public_contact, professional services (54) in Mexico City | 1,012 |
only_with_public_contact, software/IT (5415, 5182), 11+ employees | 315 |
Establishments flagged contact_is_shared_domain (no values) | 78,055 |
Source and date per field.
| Field | Source | Date |
|---|---|---|
public_role_emails, public_phones, linkedin_url, instagram_url, facebook_url | the company's homepage, contact_source_url | contact_fetched_at |
contact_is_shared_domain | DENUE (companies sharing the domain, by razón social) | data_as_of |
phone, email | DENUE (as declared to INEGI) | data_as_of |
Homepages are re-read when the dataset is rebuilt; a contact can change after contact_fetched_at.
Input examples
1. Professional services firms in Mexico City with an e-mail (the prefilled example) (sector 54 = legal, accounting, engineering, IT consulting, marketing…)
{"scian_sectors": ["54"],"states": ["09"],"only_with_email": true,"max_results": 500}
2. Software and IT services (SCIAN 5415 + 5182) with 11+ employees and a website, one row per company
{"scian_codes": ["5415", "5182"],"min_employees": 11,"only_with_website": true,"one_per_company": true}
3. Plastics manufacturers in Nuevo León and Jalisco added to DENUE since 2024
{"scian_sectors": ["31-33"],"states": ["NLE", "Jalisco"],"keyword": "plastic","registered_after": "2024-01-01","sort_by": "registration_date_desc"}
| Input | What it does |
|---|---|
scian_sectors | SCIAN 2-digit sectors (54, 31-33, 48-49…; 31/32/33 also accepted) |
scian_codes | 6-digit SCIAN classes or 3-5 digit prefixes |
keyword | Substring in the English/Spanish activity label or the legal/trade name |
states | 01-32, ISO codes (CMX, JAL, NLE, MX-CMX) or names (Ciudad de México, CDMX). Selecting states makes runs faster |
municipalities | Municipality / alcaldía names, accents optional |
size_brackets | 0-5, 6-10, 11-30, 31-50, 51-100, 101-250, 251+ |
min_employees | Whole bracket at or above N |
exclude_public_sector | Default true |
only_with_website / only_with_verified_website | See "Website filters" above |
only_with_email | Only establishments with a returned e-mail, i.e. a company role mailbox (rule below) |
only_with_phone | Only establishments with a phone |
only_with_public_contact | Only establishments whose own verified homepage publishes a role e-mail or a phone (has_public_email_or_phone; see above) |
registered_after | Month the establishment entered DENUE |
registered_in_last_days | Entered DENUE in the N days up to data_as_of (not today), rounded to the month: schedule it for new-business lists |
one_per_company | Keep the largest establishment per legal name |
sort_by | size_desc (default), registration_date_desc, registration_date_asc, denue_id |
max_results | Default 25 via API (the Console form is prefilled with 10) |
Output fields
| Field | Description |
|---|---|
denue_id, clee | INEGI establishment id and CLEE key (RFC is not published by DENUE) |
legal_name, trade_name | Razón social (INEGI usually strips "S.A. de C.V.") and establishment name |
is_legal_entity, legal_entity_basis | Always true; which rule confirmed it is a company |
is_public_sector | false unless you turn exclude_public_sector off |
scian_code, scian_label_es, scian_label_en | SCIAN 2023 class, official Spanish label, English subsector label |
scian_sector, scian_subsector (+ _label_en) | Sector and subsector codes with English labels |
size_bracket, size_bracket_en, employees_min, employees_max | INEGI personnel bracket, as text and numbers |
establishment_type | Fixed, semi-fixed, … |
state, state_iso, state_name, municipality_code, municipality, locality, address, zip, latitude, longitude | Location |
phone | Establishment phone, +52 + 10 digits |
email | Company role mailbox only (contacto@, ventas@, …) on the company's own domain, lower-cased; null otherwise (see "E-mail rule") |
email_is_role | true = the registered e-mail is a role mailbox and is returned; false = DENUE has an e-mail but it is personal, free-mail or not on the company's domain, so it is blanked; null = no e-mail in DENUE |
email_domain | Domain of the registered e-mail, only when it is the company's own (null for free-mail/ISP/placeholder/shared domains); kept even when the mailbox itself is blanked |
website, website_domain | Site declared to INEGI and its domain |
social_url | Social / site-builder page, only when its account name carries a word of the company's name (owner-named accounts, WhatsApp numbers and bare platform roots are dropped) |
website_guess | https:// + corporate e-mail domain, unchecked |
website_verified_url, website_verified, website_checked_at | HTTP-verified site (final URL after redirects), flag and check time (UTC) |
public_role_emails, public_phones | Role e-mails and +52 phones published on the company's own homepage |
linkedin_url, instagram_url, facebook_url | Company pages linked from the homepage |
has_public_contact | true when at least one of the five fields above is set (any channel, social included) |
has_public_email_or_phone | true when public_role_emails or public_phones is set (what only_with_public_contact filters on) |
contact_source_url, contact_fetched_at | Page the contacts were read from, and when (UTC) |
contact_is_shared_domain | The domain is used by different companies: no website contacts output |
registration_date | Month the establishment entered DENUE |
data_as_of, source | Edition date and the INEGI credit line |
Illustrative row. The company, names and contacts below are made up.
{"denue_id": 1234567,"clee": "09016541510000011000000000U0","legal_name": "EJEMPLO SOLUCIONES DIGITALES","trade_name": "EJEMPLO TECH","is_legal_entity": true,"legal_entity_basis": "registered_legal_name","is_public_sector": false,"scian_code": "541510","scian_label_es": "Servicios de diseño de sistemas de cómputo y servicios relacionados","scian_label_en": "Professional, Scientific, and Technical Services","scian_sector": "54","scian_sector_label_en": "Professional, Scientific, and Technical Services","scian_subsector": "541","scian_subsector_label_en": "Professional, Scientific, and Technical Services","size_bracket": "11 a 30 personas","size_bracket_en": "11-30","employees_min": 11,"employees_max": 30,"establishment_type": "fixed","state": "09","state_iso": "MX-CMX","state_name": "Ciudad de México","municipality_code": "09016","municipality": "Miguel Hidalgo","locality": "Miguel Hidalgo","address": "CALLE EJEMPLO 100 INT 5, COLONIA GRANADA","zip": "11520","latitude": 19.4401,"longitude": -99.2001,"phone": "+525500000000","email": "contacto@ejemplotech.mx","email_is_role": true,"email_domain": "ejemplotech.mx","website": "https://www.ejemplotech.mx","website_domain": "ejemplotech.mx","social_url": null,"website_guess": "https://ejemplotech.mx","website_verified_url": "https://www.ejemplotech.mx/","website_verified": true,"website_checked_at": "2026-11-09T17:42:13Z","registration_date": "2019-11-01","public_role_emails": ["contacto@ejemplotech.mx", "ventas@ejemplotech.mx"],"public_phones": ["+525500000001"],"linkedin_url": "https://www.linkedin.com/company/ejemplotech","instagram_url": null,"facebook_url": "https://www.facebook.com/ejemplotech","has_public_contact": true,"has_public_email_or_phone": true,"contact_source_url": "https://www.ejemplotech.mx/","contact_fetched_at": "2026-11-09T21:48:05Z","contact_is_shared_domain": false,"data_as_of": "2026-05-20","source": "Fuente: INEGI, Directorio Estadistico Nacional de Unidades Economicas (DENUE) 05/2026, actualizado 2026-05-20. Datos transformados (limpieza, normalizacion, etiquetas en ingles); no es un producto oficial del INEGI."}
The run's key-value store OUTPUT record holds total_matching, pushed, and whether the run stopped
at your spending limit.
Coverage (DENUE 05/2026)
Website checks: 272,768 of the 6,138,075 DENUE establishments have a verified site (490,661 checked, from the declared
website and the website_guess domains); 220,921 of them are in the default universe below. Checks ran 2026-11-09
(LatSouthBot, honouring robots.txt; https://latsouth.com/bot/).
| Universe | Establishments |
|---|---|
| All DENUE establishments | 6,138,075 |
| Legal entities, private sector (default) | 846,651 |
… distinct companies (one_per_company) | 449,001 |
| … with 6+ employees | 369,664 |
| … with an e-mail in DENUE (any kind) | 411,642 |
… with a company role e-mail returned (only_with_email) | 104,991 |
| … with a website or website guess | 358,662 |
… with an HTTP-verified website (only_with_verified_website) | 220,921 |
… verified, distinct companies (one_per_company) | 84,053 |
| … verified, in Mexico City (state 09) | 28,996 |
| Professional services (54) in Mexico City with a verified website | 2,427 |
| Professional services (54) in Mexico City with a role e-mail | 926 |
| Software/IT (5415, 5182), 11+ employees, with website, one per company | 880 |
… with a role e-mail or phone on their own homepage (only_with_public_contact) | 46,394 |
Field notes
- Legal entities. INEGI publishes the legal name (razón social) only for legal entities and usually
strips the corporate suffix (S.A. de C.V., S. de R.L., …).
is_legal_entityis true when the name carries a legal form, or when a legal name is present and doesn't look like a person's name or a placeholder.legal_entity_basissays which rule fired (every output row carries it). Rows with a person-like name are treated as uncertain and never returned. websiteis what the establishment declared to INEGI.website_guessishttps://plus the corporate e-mail domain; free-mail, Mexican ISP (Prodigy/Telmex, Axtel, izzi, Megacable…), placeholder (contacto.com, correo.com.mx, …) and typo domains are never used. Neither is checked by itself; see the next note.website_verified_url/website_verified/website_checked_at: each distinct domain fromwebsiteandwebsite_guessis checked by an automated script (DNS, then an HTTP GET tohttps://,http://andwww., up to 5 redirects, 8-second timeout, one retry with a regular-browser TLS fingerprint on 4xx/5xx).website_verifiedistrueonly when the final answer is HTTP 2xx/3xx and the page doesn't look parked, for sale, suspended, expired, "under construction" or a hosting default page.website_verified_urlis then the final URL (it can be on another domain when the company forwards its domain to a brand site). Verified means the site answered at check time.- E-mail rule (company data only). DENUE's e-mail is free text and often the owner's or an employee's own
mailbox.
emailis returned only when both hold: (1) the local part is a role/generic mailbox: every letter run splits into words of a Spanish/English department vocabulary (contacto, ventas, info, administracion, atencion, clientes, recepcion, facturacion, compras, rh, recursos humanos, gerencia, direccion, soporte, servicio, contabilidad, finanzas, cobranza, legal, marketing, hola, contact, sales, admin, office, …) plus qualifiers (digits,./_/-, city or branch words such as cdmx, mty, sucursal), with at least one department word:contacto@,ventas2@,atencionaclientes@,facturacion.cdmx@pass;caramosg@,juan.perez@,ventas.juan@,c.ventas@don't; (2) the domain is the company's own: not free-mail/ISP/placeholder and not a domain shared by many unrelated companies (an accounting firm's). Otherwiseemailis null andemail_is_roleisfalse;email_domainstays only if the domain is corporate. Of the 411,642 default-universe establishments with an e-mail in DENUE, 104,991 (25.5%) carry a role mailbox; the rest are personal or free-mail and are never returned. scian_label_enis the English label of the 3-digit subsector;scian_label_esis INEGI's official 6-digit class label. SCIAN is Mexico's NAICS; codes are SCIAN 2023.registration_dateis the month the establishment entered DENUE, not its incorporation date.- Rows are establishments. A chain appears once per branch; use
one_per_companyto collapse.
Limitations
- Rows are establishments, not companies: a retail chain has one row per store.
one_per_companycollapses by legal name (exact match). - About 3% of the legal names that pass the legal-entity rules may still be a person's business; INEGI removes the corporate suffix, so this can't be fully separated.
- No RFC (tax id) in DENUE. No revenue; size is the INEGI personnel bracket of the establishment.
- DENUE is refreshed roughly once a year; some contacts are older than the edition date.
- Website checks are newer than the DENUE edition (
website_checked_atvsdata_as_of): a verified site can belong to an establishment that has since closed.
Data freshness
DENUE edition 05/2026 (published 2026-05-20; Sinaloa corrected 2026-07-01). INEGI refreshes DENUE
roughly yearly, mostly for large establishments. Every row carries data_as_of and source; the run log and
the OUTPUT record also show the data_as_of of the release that was queried.
En español
Buscador de empresas de México (DENUE, INEGI). Personas morales del Directorio Estadístico Nacional de Unidades Económicas por estado, municipio, actividad SCIAN, tamaño (personal ocupado) y fecha de alta en el DENUE, con sitio web verificado y contactos públicos de la empresa publicados en su propio sitio (correo genérico tipo ventas@, teléfono, redes).
Búsquedas: directorio de empresas de México, base de datos de empresas, DENUE, INEGI, SCIAN, personas morales, prospección B2B, lista de empresas por estado y sector.
Solo datos de empresas: sin datos personales; los nombres de empresas unipersonales salen enmascarados (***). Precio: US$0,003 por empresa devuelta (1.000 = US$3); una llamada por API sin max_results devuelve 25. Se paga solo lo que se entrega y la ejecución se detiene en tu límite de gasto.
Ejemplo de entrada (el mismo del formulario):
{"scian_sectors": ["54"], "states": ["09"], "max_results": 10}
Privacy
Company data only. Establishments of natural persons (personas físicas) and rows that are not a confirmed
legal entity are never returned, and there is no input to change that (legal_entities_only: false is rejected
with an error). You are responsible for using the data lawfully (LFPDPPP, anti-spam rules,
opt-out requests).
Pricing
Pay per event:
| Event | When it's charged | Price |
|---|---|---|
company-result | Once per company row returned in the dataset | US$0.003 (1,000 companies = US$3) |
The platform compute is included. Set a maximum cost per run and the actor stops pushing rows when it's reached; you only pay for rows you receive. Need the full file, a custom segment or a refresh? See https://latsouth.com/products/ and https://latsouth.com/pricing/.
More from LatSouth
- LATAM Company Finder: 20M companies of 7 countries in one English schema (ISIC Rev.4), public contacts for BR/MX/CO.
- LATAM Company Enrichment: paste tax IDs or domains, get each company's registry record back (US$0.003 per match).
- OCC Mexico Jobs Scraper: OCC Mundial postings with the employer's DENUE record.
- Computrabajo Jobs Scraper: Computrabajo postings in Mexico, Colombia, Argentina, Peru and Chile with the employer's registry record.
- LATAM Jobs & Hiring Signals: who is hiring in Brazil and Spanish-speaking LATAM, joined to the company registry.
- Brazil Company Finder: 10.9M active CNPJ establishments by CNAE, state and size, with public contacts.
- Full datasets, custom lists and refresh subscriptions: latsouth.com.
FAQ
Is this the official DENUE? It is built from INEGI's open bulk download, cleaned and enriched. It is not an INEGI product and INEGI does not endorse it.
Why do some big companies have no legal name? Some establishments are registered by INEGI without razón social. Without it we can't tell a company from a natural person, so those rows are not returned.
Can I look up an RFC? DENUE does not publish RFCs.
Questions, bugs, custom extracts? hello@latsouth.com, or open an issue on this actor's Issues tab.