SAT 69-B EFOS Blacklist Scraper Mexico + RFC Verifier
Pricing
from $6.15 / 1,000 results
SAT 69-B EFOS Blacklist Scraper Mexico + RFC Verifier
Screen any RFC or export Mexico's full SAT Lista 69-B (EFOS) blacklist of taxpayers with presumed or confirmed fake invoices. Returns name, status (Presunto, Definitivo, Desvirtuado, Sentencia Favorable), oficio numbers, SAT and DOF dates, plus RFC validation. Filter by status, name or date.
Pricing
from $6.15 / 1,000 results
Rating
5.0
(1)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
SAT 69-B EFOS Taxpayer Blacklist Scraper and RFC Verifier (Mexico)
Screen any RFC or export Mexico's full SAT Lista 69-B (EFOS), the official blacklist of taxpayers presumed or confirmed to issue fake invoices (empresas que facturan operaciones simuladas), and get every field the list exposes plus offline RFC validation. Built for KYB, supplier screening, CFDI and tax compliance in Mexico.
Here is one real result, with every field the actor returns:
{"rfc": "AAA120730823","name": "ASESORES Y ADMINISTRADORES AGRICOLAS, S. DE R.L. DE C.V.","situacion": "Definitivo","situacionCode": "definitivo","listed": true,"listNumber": 4,"rfcFormatValid": true,"rfcType": "moral","rfcCheckDigitValid": true,"rfcValid": true,"presuncionOficio": "500-05-2016-38728 de fecha 16 de diciembre de 2016","presuncionOficioNumber": "500-05-2016-38728","satPublicationPresunto": "01/01/2017","presuncionOficioDof": "500-05-2016-38728 de fecha 16 de diciembre de 2016","dofPublicationPresunto": "19/01/2017","dofPublicationPresuntoISO": "2017-01-19","desvirtuadoOficio": null,"definitivoOficio": "500-05-2018-14172 de fecha 25 de mayo de 2018","definitivoOficioNumber": "500-05-2018-14172","satPublicationDefinitivo": "25/05/2018","definitivoOficioDof": "500-05-2018-14172 de fecha 25 de mayo de 2018","dofPublicationDefinitivo": "28/06/2018","dofPublicationDefinitivoISO": "2018-06-28","sentenciaOficio": null,"situacionDateISO": "2018-06-28","sourceUrl": "http://omawww.sat.gob.mx/cifras_sat/Documents/Listado_Completo_69-B.csv","observedAt": "2026-09-04T14:17:20.066Z","error": null}
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Keywords: SAT 69-B scraper, SAT 69-B API, EFOS list, EFOS EDOS, lista negra SAT, lista 69-B, contribuyentes 69-B, empresas con facturas falsas, SAT blacklist Mexico, Mexico taxpayer blacklist, RFC verification, verificacion RFC, KYB Mexico, CFDI compliance, supplier screening Mexico.
Table of contents
- What it does
- Why this actor
- Quickstart
- Input reference
- Output reference
- Example output record
- Common use cases
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor reads Mexico's official SAT Lista 69-B (EFOS), the blacklist of taxpayers presumed or confirmed to issue fake invoices, and writes one normalized record per taxpayer to the run dataset. It works two ways:
- Screen RFCs. Pass one or more RFCs in
rfcs. Each RFC returns its full 69-B record withlistedset totrue, or a cleanlisted: falseresult if it is not on the list. Every returned RFC also carries offline validation (structure, type and check digit), so you learn in one call whether the RFC is well formed and whether it is blacklisted. - Export the whole list. Leave
rfcsempty to dump the entire 69-B list. Narrow it withsituacion(a single stage),nameQuery(legal name contains), andpublishedFrom/publishedTo(a DOF publication date range) to pull, for example, only taxpayers newly confirmed as EFOS since a given date.
Every record carries the taxpayer RFC and legal name, the current stage, the list number, and the oficio number with both the SAT and DOF publication dates for each of the four stages (Presunto, Desvirtuado, Definitivo, Sentencia Favorable). Publication dates are provided both as printed (DD/MM/YYYY) and as clean ISO dates (YYYY-MM-DD) for easy sorting and filtering. Use it for KYB, vendor and supplier screening, and CFDI or tax compliance checks.
Why this actor
This is the most complete SAT 69-B tool available. It is a strict superset of the alternatives.
| Capability | This actor | Verificador RFC (leongael) | Mexico RFC Validator (parseforge) |
|---|---|---|---|
| Screen an RFC against the 69-B blacklist | Yes | Yes | No |
| Export the full 69-B list (all taxpayers) | Yes | No | No |
| Filter by status, name and DOF date range | Yes | No | No |
| Current stage (Presunto, Desvirtuado, Definitivo, Sentencia Favorable) | Yes | Partial (flag only) | No |
| Oficio numbers for all four stages | Yes | No | No |
| SAT and DOF publication dates for all four stages | Yes | No | No |
| ISO date fields for sorting and date filters | Yes | No | No |
| List number (position in the official list) | Yes | No | No |
| Offline RFC structure, type and check-digit validation | Yes | Yes | Partial |
| Batch of many RFCs per run | Yes | Yes (up to 100) | Yes |
| Export JSON, CSV, Excel | Yes | Yes | Yes |
Compared with a manual lookup on the SAT portal, this actor returns the same authoritative 69-B data for thousands of taxpayers at once, adds parsed oficio numbers, ISO dates and RFC validation, and lets you filter and export in one run instead of checking RFCs one by one.
Quickstart
Open the actor, paste this into the input, and press Run. It screens two RFCs against the 69-B list.
{"rfcs": ["AAA120730823", "XAXX010101000"],"maxRecords": 10}
Each RFC returns a record with listed true or false and RFC validation fields. To pull the full blacklist instead, leave rfcs empty and optionally add filters:
{"situacion": "Definitivo","publishedFrom": "2024-01-01","maxRecords": 5000}
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
rfcs | string[] | no | ["AAA120730823","XAXX010101000"] | One or more taxpayer RFCs to look up. Each RFC returns its full 69-B record with listed true or false. Leave empty to dump the whole list. |
situacion | enum | no | (all) | Full-dump mode only. Return only taxpayers in this 69-B stage: Presunto, Desvirtuado, Definitivo, or Sentencia Favorable. Ignored when rfcs is set. |
nameQuery | string | no | (none) | Full-dump mode only. Return only taxpayers whose legal name contains this text. Accent and case insensitive. Ignored when rfcs is set. |
publishedFrom | string | no | (none) | Full-dump mode only. Keep taxpayers whose current stage was published in the DOF on or after this date (YYYY-MM-DD). |
publishedTo | string | no | (none) | Full-dump mode only. Keep taxpayers whose current stage was published in the DOF on or before this date (YYYY-MM-DD). |
omitVerificationDigit | boolean | no | false | When on, an RFC counts as valid on structure alone and the check digit is not required. |
maxRecords | integer | no | 10 | Maximum records to collect this run. |
Output reference
One dataset item per taxpayer. Types: string, integer, boolean, or null when the value is absent.
| Field | Type | Description |
|---|---|---|
rfc | string | Taxpayer RFC (unique tax ID). |
name | string | Taxpayer legal name, or null when the RFC is not on the list. |
situacion | string | Current 69-B stage: Presunto, Desvirtuado, Definitivo, or Sentencia Favorable. null when not listed. |
situacionCode | string | Machine friendly stage code: presunto, desvirtuado, definitivo, sentencia_favorable, or null. |
listed | boolean | true when the RFC appears on the 69-B list, false when it does not. |
listNumber | integer | Position number in the official list, or null. |
rfcFormatValid | boolean | true when the RFC matches the official RFC structure. |
rfcType | string | moral (company), fisica (individual), generico (generic public RFC), or null. |
rfcCheckDigitValid | boolean | true when the RFC check digit matches, false when it does not, null when validation was skipped. |
rfcValid | boolean | true when the RFC is structurally valid and, unless skipped, its check digit matches. |
presuncionOficio | string | Full presumption oficio text with date, or null. |
presuncionOficioNumber | string | Presumption oficio number, or null. |
satPublicationPresunto | string | SAT publication date of the presumption (DD/MM/YYYY), or null. |
presuncionOficioDof | string | Presumption oficio as published in the DOF, or null. |
dofPublicationPresunto | string | DOF publication date of the presumption (DD/MM/YYYY), or null. |
dofPublicationPresuntoISO | string | Same DOF publication date as ISO (YYYY-MM-DD), or null. |
desvirtuadoOficio | string | Full rebuttal (desvirtuado) oficio text, or null. |
desvirtuadoOficioNumber | string | Rebuttal oficio number, or null. |
satPublicationDesvirtuado | string | SAT publication date of the rebuttal, or null. |
desvirtuadoOficioDof | string | Rebuttal oficio as published in the DOF, or null. |
dofPublicationDesvirtuado | string | DOF publication date of the rebuttal (DD/MM/YYYY), or null. |
dofPublicationDesvirtuadoISO | string | Same DOF publication date as ISO, or null. |
definitivoOficio | string | Full definitive oficio text with date, or null. |
definitivoOficioNumber | string | Definitive oficio number, or null. |
satPublicationDefinitivo | string | SAT publication date of the definitive stage, or null. |
definitivoOficioDof | string | Definitive oficio as published in the DOF, or null. |
dofPublicationDefinitivo | string | DOF publication date of the definitive stage (DD/MM/YYYY), or null. |
dofPublicationDefinitivoISO | string | Same DOF publication date as ISO, or null. |
sentenciaOficio | string | Full favorable-ruling oficio text, or null. |
sentenciaOficioNumber | string | Favorable-ruling oficio number, or null. |
satPublicationSentencia | string | SAT publication date of the favorable ruling, or null. |
sentenciaOficioDof | string | Favorable-ruling oficio as published in the DOF, or null. |
dofPublicationSentencia | string | DOF publication date of the favorable ruling (DD/MM/YYYY), or null. |
dofPublicationSentenciaISO | string | Same DOF publication date as ISO, or null. |
situacionDateISO | string | DOF publication date of the taxpayer current stage, as ISO (YYYY-MM-DD). Used by the date range filter. |
sourceUrl | string | URL of the official SAT 69-B listing used. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. |
Example output record
Real record from a live run (input {"rfcs":["AAA120730823","XAXX010101000"]}). This RFC is not on the list, so listed is false, the stage fields are null, and the RFC validation fields still tell you it is a valid generic RFC:
{"rfc": "XAXX010101000","name": null,"situacion": null,"situacionCode": null,"listed": false,"listNumber": null,"rfcFormatValid": true,"rfcType": "generico","rfcCheckDigitValid": true,"rfcValid": true,"presuncionOficio": null,"definitivoOficio": null,"sentenciaOficio": null,"situacionDateISO": null,"sourceUrl": "http://omawww.sat.gob.mx/cifras_sat/Documents/Listado_Completo_69-B.csv","observedAt": "2026-09-04T14:17:20.066Z","error": null}
Common use cases
- Supplier and vendor screening. Paste your suppliers RFCs into
rfcsand flag any that are Presunto or Definitivo before you deduct their invoices. - KYB and onboarding. Check a counterparty RFC at onboarding and store the full 69-B record and RFC validation as evidence.
- Compliance monitoring. Export
situacion: "Definitivo"withpublishedFromset to your last run date to pull only taxpayers newly confirmed as EFOS. - Portfolio review. Dump the whole list and match it against your customer or vendor master by RFC.
- RFC hygiene. Validate a batch of RFCs for structure, type and check digit even when they are not on the blacklist.
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~sat-69b-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"rfcs":["AAA120730823","XAXX010101000"],"maxRecords":10}'
Start a run asynchronously (full-dump mode, confirmed EFOS published since a date):
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~sat-69b-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"situacion":"Definitivo","publishedFrom":"2024-01-01","maxRecords":5000}'
Apify CLI:
apify call scrapers_lat/sat-69b-scraper \--input '{"rfcs":["AAA120730823"]}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per taxpayer record returned (
resultevent), including screening records wherelistedisfalse. See the pricing tab for the current per-result price. - No charge on failure. If the source cannot be read, the actor does not push billable records, so failed runs cost nothing.
- Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run. Upgrade for higher
maxRecords.
FAQ and troubleshooting
How do I screen a specific RFC?
Put one or more RFCs in rfcs. Each returns a record; listed is true if the RFC is on the 69-B list and false if it is clean. The RFC validation fields tell you if the RFC itself is well formed.
How do I download the whole blacklist?
Leave rfcs empty. Optionally add situacion, nameQuery, publishedFrom and publishedTo to narrow the export.
How do I pull only newly blacklisted taxpayers?
Leave rfcs empty, set situacion to the stage you care about (for example Definitivo) and set publishedFrom to your last run date. The publishedFrom and publishedTo filters match the DOF publication date of the taxpayer current stage.
What do the four stages mean?
Presunto (presumed), Desvirtuado (rebutted or cleared), Definitivo (confirmed EFOS), and Sentencia Favorable (favorable court ruling). Each stage has its own oficio number and SAT and DOF publication dates in the record.
Why are most fields null for my RFC?
When an RFC is not on the 69-B list, listed is false and the stage fields are null. That is a clean screen, not a missing record. The RFC validation fields are still filled in.
What is the difference between SAT and DOF publication dates?
satPublication* is the date SAT published the stage on its portal; dofPublication* is the date it appeared in the Diario Oficial de la Federacion. Both are provided for each stage, and the DOF dates also come as ISO dates.
What is EDOS and how does it relate to 69-B? EFOS are the taxpayers on this list (issuers of simulated operations). EDOS are the taxpayers who used those invoices. This actor covers the official 69-B EFOS list; screening your own RFCs against it is the first step in an EDOS risk review.
Is this an official SAT tool? No. This actor is independent and has no affiliation with SAT or the Mexican government. It reads only the publicly published 69-B listing. Use it in accordance with the source terms.
Related scrapers
- Brazil CNPJ Scraper: Brazilian company registry data.
- DOF Mexico Scraper: Diario Oficial de la Federacion publications.
- CompraNet Mexico Scraper: Mexican public procurement records.
- Chile Companies Registry Scraper: Chilean company registry data.
- RUES Colombia Company Registry Scraper: Colombian company registry records.
- OFAC Sanctions List Scraper: US Treasury OFAC sanctions lists.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with SAT or the Mexican government. Accesses only the publicly published Lista 69-B. Use in accordance with the source terms of service.
Scraper de la Lista Negra 69-B del SAT (EFOS) y Verificador de RFC (Mexico)
Consulta cualquier RFC o exporta la Lista 69-B (EFOS) completa del SAT, el listado oficial de contribuyentes presuntos o confirmados por emitir facturas falsas (empresas que facturan operaciones simuladas), y obten todos los campos que publica el listado mas la validacion de RFC sin conexion. Hecho para KYB, revision de proveedores, CFDI y cumplimiento fiscal en Mexico.
Este es un resultado real, con todos los campos que devuelve el actor:
{"rfc": "AAA120730823","name": "ASESORES Y ADMINISTRADORES AGRICOLAS, S. DE R.L. DE C.V.","situacion": "Definitivo","situacionCode": "definitivo","listed": true,"listNumber": 4,"rfcFormatValid": true,"rfcType": "moral","rfcCheckDigitValid": true,"rfcValid": true,"presuncionOficio": "500-05-2016-38728 de fecha 16 de diciembre de 2016","presuncionOficioNumber": "500-05-2016-38728","satPublicationPresunto": "01/01/2017","presuncionOficioDof": "500-05-2016-38728 de fecha 16 de diciembre de 2016","dofPublicationPresunto": "19/01/2017","dofPublicationPresuntoISO": "2017-01-19","desvirtuadoOficio": null,"definitivoOficio": "500-05-2018-14172 de fecha 25 de mayo de 2018","definitivoOficioNumber": "500-05-2018-14172","satPublicationDefinitivo": "25/05/2018","definitivoOficioDof": "500-05-2018-14172 de fecha 25 de mayo de 2018","dofPublicationDefinitivo": "28/06/2018","dofPublicationDefinitivoISO": "2018-06-28","sentenciaOficio": null,"situacionDateISO": "2018-06-28","sourceUrl": "http://omawww.sat.gob.mx/cifras_sat/Documents/Listado_Completo_69-B.csv","observedAt": "2026-09-04T14:17:20.066Z","error": null}
📥 Entrada · 📤 Salida · 💰 Precio · ▶️ Ejemplos
Palabras clave: scraper SAT 69-B, API SAT 69-B, lista EFOS, EFOS EDOS, lista negra SAT, lista 69-B, contribuyentes 69-B, empresas con facturas falsas, lista negra del SAT Mexico, verificacion RFC, verificar RFC lista negra, validador RFC, KYB Mexico, cumplimiento CFDI, revision de proveedores Mexico.
Tabla de contenido
- Que hace
- Por que este actor
- Inicio rapido
- Referencia de entrada
- Referencia de salida
- Registro de ejemplo
- Casos de uso comunes
- Ejecutar por API y CLI
- Obtener resultados
- Cobro y limites
- Preguntas frecuentes
Que hace
El actor lee la Lista 69-B (EFOS) oficial del SAT, el listado de contribuyentes presuntos o confirmados por emitir facturas falsas, y escribe un registro normalizado por contribuyente en el dataset de la ejecucion. Funciona de dos formas:
- Consultar RFC. Pon uno o mas RFC en
rfcs. Cada RFC devuelve su registro completo de la 69-B conlistedentrue, o un resultado limpio conlisted: falsesi no esta en la lista. Cada RFC devuelto tambien trae la validacion sin conexion (estructura, tipo y digito verificador), asi sabes en una sola llamada si el RFC esta bien formado y si esta en la lista negra. - Exportar toda la lista. Deja
rfcsvacio para volcar toda la lista 69-B. Acotala consituacion(una sola etapa),nameQuery(el nombre contiene) ypublishedFrom/publishedTo(un rango de fecha de publicacion en el DOF) para traer, por ejemplo, solo los contribuyentes confirmados como EFOS desde una fecha dada.
Cada registro trae el RFC y el nombre o razon social del contribuyente, la etapa actual, el numero de lista y el numero de oficio con las fechas de publicacion del SAT y del DOF para cada una de las cuatro etapas (Presunto, Desvirtuado, Definitivo, Sentencia Favorable). Las fechas de publicacion vienen tal cual (DD/MM/YYYY) y tambien como fechas ISO limpias (YYYY-MM-DD) para ordenar y filtrar con facilidad. Usalo para KYB, revision de proveedores y verificacion de CFDI o cumplimiento fiscal.
Por que este actor
Es la herramienta mas completa de la 69-B del SAT disponible. Es un superconjunto estricto de las alternativas.
| Capacidad | Este actor | Verificador RFC (leongael) | Mexico RFC Validator (parseforge) |
|---|---|---|---|
| Consultar un RFC contra la lista negra 69-B | Si | Si | No |
| Exportar la lista 69-B completa (todos los contribuyentes) | Si | No | No |
| Filtrar por estatus, nombre y rango de fecha del DOF | Si | No | No |
| Etapa actual (Presunto, Desvirtuado, Definitivo, Sentencia Favorable) | Si | Parcial (solo bandera) | No |
| Numeros de oficio de las cuatro etapas | Si | No | No |
| Fechas de publicacion del SAT y del DOF de las cuatro etapas | Si | No | No |
| Campos de fecha ISO para ordenar y filtrar | Si | No | No |
| Numero de lista (posicion en el listado oficial) | Si | No | No |
| Validacion de RFC sin conexion (estructura, tipo y digito) | Si | Si | Parcial |
| Lote de muchos RFC por ejecucion | Si | Si (hasta 100) | Si |
| Exportar JSON, CSV, Excel | Si | Si | Si |
Comparado con una consulta manual en el portal del SAT, este actor devuelve los mismos datos oficiales de la 69-B para miles de contribuyentes a la vez, agrega numeros de oficio, fechas ISO y validacion de RFC, y te deja filtrar y exportar en una sola ejecucion en lugar de revisar RFC uno por uno.
Inicio rapido
Abre el actor, pega esto en la entrada y presiona Run. Consulta dos RFC contra la lista 69-B.
{"rfcs": ["AAA120730823", "XAXX010101000"],"maxRecords": 10}
Cada RFC devuelve un registro con listed en true o false y los campos de validacion de RFC. Para volcar toda la lista negra, deja rfcs vacio y agrega filtros opcionales:
{"situacion": "Definitivo","publishedFrom": "2024-01-01","maxRecords": 5000}
Referencia de entrada
| Campo | Tipo | Requerido | Predeterminado | Descripcion |
|---|---|---|---|---|
rfcs | string[] | no | ["AAA120730823","XAXX010101000"] | Uno o mas RFC de contribuyentes a consultar. Cada RFC devuelve su registro 69-B con listed en true o false. Deja vacio para volcar toda la lista. |
situacion | enum | no | (todas) | Solo modo volcado. Devuelve solo contribuyentes en esta etapa 69-B: Presunto, Desvirtuado, Definitivo o Sentencia Favorable. Se ignora cuando hay rfcs. |
nameQuery | string | no | (ninguno) | Solo modo volcado. Devuelve solo contribuyentes cuyo nombre contiene este texto. Sin distinguir acentos ni mayusculas. Se ignora cuando hay rfcs. |
publishedFrom | string | no | (ninguno) | Solo modo volcado. Conserva contribuyentes cuya etapa actual se publico en el DOF en o despues de esta fecha (YYYY-MM-DD). |
publishedTo | string | no | (ninguno) | Solo modo volcado. Conserva contribuyentes cuya etapa actual se publico en el DOF en o antes de esta fecha (YYYY-MM-DD). |
omitVerificationDigit | boolean | no | false | Cuando esta activo, un RFC se considera valido solo por su estructura y no se exige el digito verificador. |
maxRecords | integer | no | 10 | Maximo de registros a recolectar en esta ejecucion. |
Referencia de salida
Un elemento de dataset por contribuyente. Tipos: string, integer, boolean o null cuando el valor no existe.
| Campo | Tipo | Descripcion |
|---|---|---|
rfc | string | RFC del contribuyente (identificador fiscal unico). |
name | string | Nombre o razon social del contribuyente, o null cuando el RFC no esta en la lista. |
situacion | string | Etapa 69-B actual: Presunto, Desvirtuado, Definitivo o Sentencia Favorable. null si no esta en lista. |
situacionCode | string | Codigo de etapa para maquina: presunto, desvirtuado, definitivo, sentencia_favorable o null. |
listed | boolean | true cuando el RFC aparece en la lista 69-B, false cuando no. |
listNumber | integer | Numero de posicion en el listado oficial, o null. |
rfcFormatValid | boolean | true cuando el RFC cumple la estructura oficial de RFC. |
rfcType | string | moral (empresa), fisica (persona), generico (RFC generico) o null. |
rfcCheckDigitValid | boolean | true cuando el digito verificador coincide, false cuando no, null cuando se omitio la validacion. |
rfcValid | boolean | true cuando el RFC es estructuralmente valido y, salvo que se omita, su digito verificador coincide. |
presuncionOficio | string | Texto completo del oficio de presuncion con fecha, o null. |
presuncionOficioNumber | string | Numero del oficio de presuncion, o null. |
satPublicationPresunto | string | Fecha de publicacion en el SAT de la presuncion (DD/MM/YYYY), o null. |
presuncionOficioDof | string | Oficio de presuncion como se publico en el DOF, o null. |
dofPublicationPresunto | string | Fecha de publicacion en el DOF de la presuncion (DD/MM/YYYY), o null. |
dofPublicationPresuntoISO | string | La misma fecha de publicacion del DOF como ISO (YYYY-MM-DD), o null. |
desvirtuadoOficio | string | Texto completo del oficio de desvirtuado, o null. |
desvirtuadoOficioNumber | string | Numero del oficio de desvirtuado, o null. |
satPublicationDesvirtuado | string | Fecha de publicacion en el SAT del desvirtuado, o null. |
desvirtuadoOficioDof | string | Oficio de desvirtuado como se publico en el DOF, o null. |
dofPublicationDesvirtuado | string | Fecha de publicacion en el DOF del desvirtuado (DD/MM/YYYY), o null. |
dofPublicationDesvirtuadoISO | string | La misma fecha de publicacion del DOF como ISO, o null. |
definitivoOficio | string | Texto completo del oficio definitivo con fecha, o null. |
definitivoOficioNumber | string | Numero del oficio definitivo, o null. |
satPublicationDefinitivo | string | Fecha de publicacion en el SAT de la etapa definitiva, o null. |
definitivoOficioDof | string | Oficio definitivo como se publico en el DOF, o null. |
dofPublicationDefinitivo | string | Fecha de publicacion en el DOF de la etapa definitiva (DD/MM/YYYY), o null. |
dofPublicationDefinitivoISO | string | La misma fecha de publicacion del DOF como ISO, o null. |
sentenciaOficio | string | Texto completo del oficio de sentencia favorable, o null. |
sentenciaOficioNumber | string | Numero del oficio de sentencia favorable, o null. |
satPublicationSentencia | string | Fecha de publicacion en el SAT de la sentencia favorable, o null. |
sentenciaOficioDof | string | Oficio de sentencia favorable como se publico en el DOF, o null. |
dofPublicationSentencia | string | Fecha de publicacion en el DOF de la sentencia favorable (DD/MM/YYYY), o null. |
dofPublicationSentenciaISO | string | La misma fecha de publicacion del DOF como ISO, o null. |
situacionDateISO | string | Fecha de publicacion en el DOF de la etapa actual del contribuyente, como ISO (YYYY-MM-DD). La usa el filtro de rango de fechas. |
sourceUrl | string | URL del listado oficial 69-B del SAT usado. |
observedAt | string | Marca de tiempo ISO 8601 de cuando se recolecto el registro. |
error | string | null cuando todo sale bien. |
Registro de ejemplo
Registro real de una ejecucion en vivo (entrada {"rfcs":["AAA120730823","XAXX010101000"]}). Este RFC no esta en la lista, asi que listed es false, los campos de etapa son null, y los campos de validacion de RFC igual te dicen que es un RFC generico valido:
{"rfc": "XAXX010101000","name": null,"situacion": null,"situacionCode": null,"listed": false,"listNumber": null,"rfcFormatValid": true,"rfcType": "generico","rfcCheckDigitValid": true,"rfcValid": true,"presuncionOficio": null,"definitivoOficio": null,"sentenciaOficio": null,"situacionDateISO": null,"sourceUrl": "http://omawww.sat.gob.mx/cifras_sat/Documents/Listado_Completo_69-B.csv","observedAt": "2026-09-04T14:17:20.066Z","error": null}
Casos de uso comunes
- Revision de proveedores. Pega los RFC de tus proveedores en
rfcsy marca los que esten en Presunto o Definitivo antes de deducir sus facturas. - KYB y alta de clientes. Verifica el RFC de una contraparte al darla de alta y guarda el registro 69-B completo y la validacion de RFC como evidencia.
- Monitoreo de cumplimiento. Exporta
situacion: "Definitivo"conpublishedFromen la fecha de tu ultima ejecucion para traer solo contribuyentes confirmados como EFOS. - Revision de cartera. Vuelca toda la lista y cruzala con tu padron de clientes o proveedores por RFC.
- Higiene de RFC. Valida un lote de RFC por estructura, tipo y digito verificador aunque no esten en la lista negra.
Ejecutar por API y CLI
Inicia una ejecucion y espera a que termine, luego lee el dataset. Reemplaza <TOKEN> con tu token de API de Apify.
Ejecuta de forma sincrona y obten los elementos del dataset en una sola llamada:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~sat-69b-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"rfcs":["AAA120730823","XAXX010101000"],"maxRecords":10}'
Inicia una ejecucion de forma asincrona (modo volcado, EFOS confirmados publicados desde una fecha):
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~sat-69b-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"situacion":"Definitivo","publishedFrom":"2024-01-01","maxRecords":5000}'
Apify CLI:
apify call scrapers_lat/sat-69b-scraper \--input '{"rfcs":["AAA120730823"]}'
Obtener resultados
Cada ejecucion escribe en un dataset. Obten los elementos como JSON, CSV o Excel cambiando format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginar datasets grandescurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> se devuelve como defaultDatasetId en el objeto de la ejecucion. Usa offset y limit para paginar resultados grandes. clean=true quita campos vacios e internos.
Cobro y limites
- Pago por resultado. Se cobra por registro de contribuyente devuelto (evento
result), incluidos los registros de consulta dondelistedesfalse. Consulta la pestana de precio para el precio por resultado vigente. - Sin cobro por fallo. Si no se puede leer la fuente, el actor no envia registros cobrables, asi que una ejecucion fallida no cuesta nada.
- Se respeta el limite de gasto. Configura
maxTotalChargeUsden la ejecucion; al alcanzarlo, el actor deja de emitir y cobrar mas resultados. - Planes gratuitos de Apify con tope de 10 registros por ejecucion. Mejora tu plan para un
maxRecordsmayor.
Preguntas frecuentes
Como consulto un RFC especifico?
Pon uno o mas RFC en rfcs. Cada uno devuelve un registro; listed es true si el RFC esta en la lista 69-B y false si esta limpio. Los campos de validacion de RFC te dicen si el RFC en si esta bien formado.
Como descargo toda la lista negra?
Deja rfcs vacio. De forma opcional agrega situacion, nameQuery, publishedFrom y publishedTo para acotar la exportacion.
Como traigo solo los contribuyentes recien agregados?
Deja rfcs vacio, pon situacion en la etapa que te interesa (por ejemplo Definitivo) y pon publishedFrom en la fecha de tu ultima ejecucion. Los filtros publishedFrom y publishedTo usan la fecha de publicacion en el DOF de la etapa actual del contribuyente.
Que significan las cuatro etapas?
Presunto (presunto), Desvirtuado (desvirtuado o aclarado), Definitivo (EFOS confirmado) y Sentencia Favorable (fallo judicial a favor). Cada etapa tiene su propio numero de oficio y fechas de publicacion del SAT y del DOF en el registro.
Por que casi todos los campos son null para mi RFC?
Cuando un RFC no esta en la lista 69-B, listed es false y los campos de etapa son null. Eso es una consulta limpia, no un registro faltante. Los campos de validacion de RFC igual vienen llenos.
Cual es la diferencia entre las fechas del SAT y del DOF?
satPublication* es la fecha en que el SAT publico la etapa en su portal; dofPublication* es la fecha en que aparecio en el Diario Oficial de la Federacion. Ambas vienen por cada etapa, y las fechas del DOF tambien vienen como fechas ISO.
Que es EDOS y como se relaciona con la 69-B? Los EFOS son los contribuyentes de esta lista (emisores de operaciones simuladas). Los EDOS son los contribuyentes que usaron esas facturas. Este actor cubre la lista oficial 69-B de EFOS; consultar tus propios RFC contra ella es el primer paso de una revision de riesgo EDOS.
Es una herramienta oficial del SAT? No. Este actor es independiente y no tiene afiliacion con el SAT ni con el gobierno de Mexico. Lee solo el listado 69-B publicado. Usalo conforme a los terminos de la fuente.
Herramienta independiente, sin afiliacion con el SAT ni con el gobierno de Mexico. Accede solo a la Lista 69-B publicada. Usala conforme a los terminos de servicio de la fuente.
