SAT 69-B EFOS Blacklist Scraper Mexico + RFC Verifier avatar

SAT 69-B EFOS Blacklist Scraper Mexico + RFC Verifier

Pricing

from $6.15 / 1,000 results

Go to Apify Store
SAT 69-B EFOS Blacklist Scraper Mexico + RFC Verifier

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

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

SAT Mexico 69-B EFOS Taxpayer Blacklist Scraper

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

Apify Coverage Output Billing

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

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:

  1. Screen RFCs. Pass one or more RFCs in rfcs. Each RFC returns its full 69-B record with listed set to true, or a clean listed: false result 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.
  2. Export the whole list. Leave rfcs empty to dump the entire 69-B list. Narrow it with situacion (a single stage), nameQuery (legal name contains), and publishedFrom / 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.

CapabilityThis actorVerificador RFC (leongael)Mexico RFC Validator (parseforge)
Screen an RFC against the 69-B blacklistYesYesNo
Export the full 69-B list (all taxpayers)YesNoNo
Filter by status, name and DOF date rangeYesNoNo
Current stage (Presunto, Desvirtuado, Definitivo, Sentencia Favorable)YesPartial (flag only)No
Oficio numbers for all four stagesYesNoNo
SAT and DOF publication dates for all four stagesYesNoNo
ISO date fields for sorting and date filtersYesNoNo
List number (position in the official list)YesNoNo
Offline RFC structure, type and check-digit validationYesYesPartial
Batch of many RFCs per runYesYes (up to 100)Yes
Export JSON, CSV, ExcelYesYesYes

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

FieldTypeRequiredDefaultDescription
rfcsstring[]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.
situacionenumno(all)Full-dump mode only. Return only taxpayers in this 69-B stage: Presunto, Desvirtuado, Definitivo, or Sentencia Favorable. Ignored when rfcs is set.
nameQuerystringno(none)Full-dump mode only. Return only taxpayers whose legal name contains this text. Accent and case insensitive. Ignored when rfcs is set.
publishedFromstringno(none)Full-dump mode only. Keep taxpayers whose current stage was published in the DOF on or after this date (YYYY-MM-DD).
publishedTostringno(none)Full-dump mode only. Keep taxpayers whose current stage was published in the DOF on or before this date (YYYY-MM-DD).
omitVerificationDigitbooleannofalseWhen on, an RFC counts as valid on structure alone and the check digit is not required.
maxRecordsintegerno10Maximum records to collect this run.

Output reference

One dataset item per taxpayer. Types: string, integer, boolean, or null when the value is absent.

FieldTypeDescription
rfcstringTaxpayer RFC (unique tax ID).
namestringTaxpayer legal name, or null when the RFC is not on the list.
situacionstringCurrent 69-B stage: Presunto, Desvirtuado, Definitivo, or Sentencia Favorable. null when not listed.
situacionCodestringMachine friendly stage code: presunto, desvirtuado, definitivo, sentencia_favorable, or null.
listedbooleantrue when the RFC appears on the 69-B list, false when it does not.
listNumberintegerPosition number in the official list, or null.
rfcFormatValidbooleantrue when the RFC matches the official RFC structure.
rfcTypestringmoral (company), fisica (individual), generico (generic public RFC), or null.
rfcCheckDigitValidbooleantrue when the RFC check digit matches, false when it does not, null when validation was skipped.
rfcValidbooleantrue when the RFC is structurally valid and, unless skipped, its check digit matches.
presuncionOficiostringFull presumption oficio text with date, or null.
presuncionOficioNumberstringPresumption oficio number, or null.
satPublicationPresuntostringSAT publication date of the presumption (DD/MM/YYYY), or null.
presuncionOficioDofstringPresumption oficio as published in the DOF, or null.
dofPublicationPresuntostringDOF publication date of the presumption (DD/MM/YYYY), or null.
dofPublicationPresuntoISOstringSame DOF publication date as ISO (YYYY-MM-DD), or null.
desvirtuadoOficiostringFull rebuttal (desvirtuado) oficio text, or null.
desvirtuadoOficioNumberstringRebuttal oficio number, or null.
satPublicationDesvirtuadostringSAT publication date of the rebuttal, or null.
desvirtuadoOficioDofstringRebuttal oficio as published in the DOF, or null.
dofPublicationDesvirtuadostringDOF publication date of the rebuttal (DD/MM/YYYY), or null.
dofPublicationDesvirtuadoISOstringSame DOF publication date as ISO, or null.
definitivoOficiostringFull definitive oficio text with date, or null.
definitivoOficioNumberstringDefinitive oficio number, or null.
satPublicationDefinitivostringSAT publication date of the definitive stage, or null.
definitivoOficioDofstringDefinitive oficio as published in the DOF, or null.
dofPublicationDefinitivostringDOF publication date of the definitive stage (DD/MM/YYYY), or null.
dofPublicationDefinitivoISOstringSame DOF publication date as ISO, or null.
sentenciaOficiostringFull favorable-ruling oficio text, or null.
sentenciaOficioNumberstringFavorable-ruling oficio number, or null.
satPublicationSentenciastringSAT publication date of the favorable ruling, or null.
sentenciaOficioDofstringFavorable-ruling oficio as published in the DOF, or null.
dofPublicationSentenciastringDOF publication date of the favorable ruling (DD/MM/YYYY), or null.
dofPublicationSentenciaISOstringSame DOF publication date as ISO, or null.
situacionDateISOstringDOF publication date of the taxpayer current stage, as ISO (YYYY-MM-DD). Used by the date range filter.
sourceUrlstringURL of the official SAT 69-B listing used.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull 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 rfcs and 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" with publishedFrom set 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:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "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 (result event), including screening records where listed is false. 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 maxTotalChargeUsd on 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.

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

Apify Cobertura Salida Cobro

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

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:

  1. Consultar RFC. Pon uno o mas RFC en rfcs. Cada RFC devuelve su registro completo de la 69-B con listed en true, o un resultado limpio con listed: false si 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.
  2. Exportar toda la lista. Deja rfcs vacio para volcar toda la lista 69-B. Acotala con situacion (una sola etapa), nameQuery (el nombre contiene) y publishedFrom / 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.

CapacidadEste actorVerificador RFC (leongael)Mexico RFC Validator (parseforge)
Consultar un RFC contra la lista negra 69-BSiSiNo
Exportar la lista 69-B completa (todos los contribuyentes)SiNoNo
Filtrar por estatus, nombre y rango de fecha del DOFSiNoNo
Etapa actual (Presunto, Desvirtuado, Definitivo, Sentencia Favorable)SiParcial (solo bandera)No
Numeros de oficio de las cuatro etapasSiNoNo
Fechas de publicacion del SAT y del DOF de las cuatro etapasSiNoNo
Campos de fecha ISO para ordenar y filtrarSiNoNo
Numero de lista (posicion en el listado oficial)SiNoNo
Validacion de RFC sin conexion (estructura, tipo y digito)SiSiParcial
Lote de muchos RFC por ejecucionSiSi (hasta 100)Si
Exportar JSON, CSV, ExcelSiSiSi

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

CampoTipoRequeridoPredeterminadoDescripcion
rfcsstring[]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.
situacionenumno(todas)Solo modo volcado. Devuelve solo contribuyentes en esta etapa 69-B: Presunto, Desvirtuado, Definitivo o Sentencia Favorable. Se ignora cuando hay rfcs.
nameQuerystringno(ninguno)Solo modo volcado. Devuelve solo contribuyentes cuyo nombre contiene este texto. Sin distinguir acentos ni mayusculas. Se ignora cuando hay rfcs.
publishedFromstringno(ninguno)Solo modo volcado. Conserva contribuyentes cuya etapa actual se publico en el DOF en o despues de esta fecha (YYYY-MM-DD).
publishedTostringno(ninguno)Solo modo volcado. Conserva contribuyentes cuya etapa actual se publico en el DOF en o antes de esta fecha (YYYY-MM-DD).
omitVerificationDigitbooleannofalseCuando esta activo, un RFC se considera valido solo por su estructura y no se exige el digito verificador.
maxRecordsintegerno10Maximo 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.

CampoTipoDescripcion
rfcstringRFC del contribuyente (identificador fiscal unico).
namestringNombre o razon social del contribuyente, o null cuando el RFC no esta en la lista.
situacionstringEtapa 69-B actual: Presunto, Desvirtuado, Definitivo o Sentencia Favorable. null si no esta en lista.
situacionCodestringCodigo de etapa para maquina: presunto, desvirtuado, definitivo, sentencia_favorable o null.
listedbooleantrue cuando el RFC aparece en la lista 69-B, false cuando no.
listNumberintegerNumero de posicion en el listado oficial, o null.
rfcFormatValidbooleantrue cuando el RFC cumple la estructura oficial de RFC.
rfcTypestringmoral (empresa), fisica (persona), generico (RFC generico) o null.
rfcCheckDigitValidbooleantrue cuando el digito verificador coincide, false cuando no, null cuando se omitio la validacion.
rfcValidbooleantrue cuando el RFC es estructuralmente valido y, salvo que se omita, su digito verificador coincide.
presuncionOficiostringTexto completo del oficio de presuncion con fecha, o null.
presuncionOficioNumberstringNumero del oficio de presuncion, o null.
satPublicationPresuntostringFecha de publicacion en el SAT de la presuncion (DD/MM/YYYY), o null.
presuncionOficioDofstringOficio de presuncion como se publico en el DOF, o null.
dofPublicationPresuntostringFecha de publicacion en el DOF de la presuncion (DD/MM/YYYY), o null.
dofPublicationPresuntoISOstringLa misma fecha de publicacion del DOF como ISO (YYYY-MM-DD), o null.
desvirtuadoOficiostringTexto completo del oficio de desvirtuado, o null.
desvirtuadoOficioNumberstringNumero del oficio de desvirtuado, o null.
satPublicationDesvirtuadostringFecha de publicacion en el SAT del desvirtuado, o null.
desvirtuadoOficioDofstringOficio de desvirtuado como se publico en el DOF, o null.
dofPublicationDesvirtuadostringFecha de publicacion en el DOF del desvirtuado (DD/MM/YYYY), o null.
dofPublicationDesvirtuadoISOstringLa misma fecha de publicacion del DOF como ISO, o null.
definitivoOficiostringTexto completo del oficio definitivo con fecha, o null.
definitivoOficioNumberstringNumero del oficio definitivo, o null.
satPublicationDefinitivostringFecha de publicacion en el SAT de la etapa definitiva, o null.
definitivoOficioDofstringOficio definitivo como se publico en el DOF, o null.
dofPublicationDefinitivostringFecha de publicacion en el DOF de la etapa definitiva (DD/MM/YYYY), o null.
dofPublicationDefinitivoISOstringLa misma fecha de publicacion del DOF como ISO, o null.
sentenciaOficiostringTexto completo del oficio de sentencia favorable, o null.
sentenciaOficioNumberstringNumero del oficio de sentencia favorable, o null.
satPublicationSentenciastringFecha de publicacion en el SAT de la sentencia favorable, o null.
sentenciaOficioDofstringOficio de sentencia favorable como se publico en el DOF, o null.
dofPublicationSentenciastringFecha de publicacion en el DOF de la sentencia favorable (DD/MM/YYYY), o null.
dofPublicationSentenciaISOstringLa misma fecha de publicacion del DOF como ISO, o null.
situacionDateISOstringFecha de publicacion en el DOF de la etapa actual del contribuyente, como ISO (YYYY-MM-DD). La usa el filtro de rango de fechas.
sourceUrlstringURL del listado oficial 69-B del SAT usado.
observedAtstringMarca de tiempo ISO 8601 de cuando se recolecto el registro.
errorstringnull 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 rfcs y 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" con publishedFrom en 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:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginar datasets grandes
curl "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 donde listed es false. 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 maxTotalChargeUsd en 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 maxRecords mayor.

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.