PHPackages                             blacktrue/sat-scraper - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. blacktrue/sat-scraper

AbandonedArchivedLibrary

blacktrue/sat-scraper
=====================

Web Scraping para extraer facturas electronicas masivamente desde la pagina del SAT

v2.1.1(8y ago)163699MITPHPPHP &gt;=5.6

Since Apr 10Pushed 8y ago5 watchersCompare

[ Source](https://github.com/blacktrue/sat-scraper)[ Packagist](https://packagist.org/packages/blacktrue/sat-scraper)[ RSS](/packages/blacktrue-sat-scraper/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependencies (3)Versions (13)Used By (0)

SAT-SCRAPER
===========

[](#sat-scraper)

Obtiene las facturas emitidias, recibidas, cancelados por medio de web scraping desde la pagina del SAT.

Instalacion por composer
------------------------

[](#instalacion-por-composer)

**Requerir libreria como modulo de composer**

```
composer require blacktrue/sat-scraper

```

Ejemplo de descarga por rango de fechas
---------------------------------------

[](#ejemplo-de-descarga-por-rango-de-fechas)

```
require "vendor/autoload.php";

use Blacktrue\Scraping\SATScraper;

$satScraper = new SATScraper([
    'rfc' => 'XAXX010101000',
    'ciec' => '123456',
    'tipoDescarga' => 'recibidos',//emitidos
    'cancelados' => true,//false, * todos,
    //'loginUrl' => 'https://cfdiau.sat.gob.mx/nidp/app/login?id=4&sid=1&option=credential' //Opcional para sobreescribir la url del login
]);

$satScraper->downloadPeriod(2016,7,1,2016,7,1);
print_r($satScraper->getData());
```

Ejemplo de descarga por lista de uuids
--------------------------------------

[](#ejemplo-de-descarga-por-lista-de-uuids)

```
$satScraper->downloadListUUID([
    '5cc88a1a-8672-11e6-ae22-56b6b6499611',
    '5cc88c4a-8672-11e6-ae22-56b6b6499611',
    '5cc88d4e-8672-11e6-ae22-56b6b6499611'
]);
print_r($satScraper->getData());
```

Excepciones
-----------

[](#excepciones)

```
require "vendor/autoload.php";

use Blacktrue\Scraping\SATScraper;
use Blacktrue\Scraping\Exceptions\SATCredentialsException;
use Blacktrue\Scraping\Exceptions\SATAuthenticatedException;

try{
    $satScraper = new SATScraper([
        'rfc' => 'XAXX010101000',
        'ciec' => '123456',
        'tipoDescarga' => 'recibidos',//emitidos
        'cancelados' => true,//false
    ]);
}catch(SATCredentialsException $e){ //Error de credenciales
    echo $e->getMessage();
}catch(SATAuthenticatedException $e){ //Error en login, posible cambio en metodo de login
    echo $e->getMessage();
}
```

Comprobar si existen errores de 500 comprobantes
------------------------------------------------

[](#comprobar-si-existen-errores-de-500-comprobantes)

```
require "vendor/autoload.php";

use Blacktrue\Scraping\SATScraper;

$satScraper = new SATScraper([
    'rfc' => 'XAXX010101000',
    'ciec' => '123456',
    'tipoDescarga' => 'recibidos',//emitidos
    'cancelados' => true,//false
]);

$satScraper->setOnFiveHundred(function($data){
	print_r($data);
});

$satScraper->downloadPeriod(2016,7,1,2016,7,1);
print_r($satScraper->getData());
```

Descargar CFDIS
---------------

[](#descargar-cfdis)

```
require "vendor/autoload.php";

use Blacktrue\Scraping\DownloadXML;
use Blacktrue\Scraping\SATScraper;

$satScraper = new SATScraper([
    'rfc' => 'XAXX010101000',
    'ciec' => '123456',
    'tipoDescarga' => 'recibidos',//emitidos
    'cancelados' => true,//false
]);

$satScraper->downloadPeriod(2016,7,1,2016,7,1);

(new DownloadXML)
    ->setSatScraper($satScraper)
    ->setConcurrency(50)
    ->download(function ($contentXml,$name) use ($rfc){
        $f = new SplFileObject($rfc.DIRECTORY_SEPARATOR.$name,'w');
        $f->fwrite($contentXml);
        $f = null;
    });
```

###  Health Score

33

—

LowBetter than 75% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity23

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity65

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~20 days

Recently: every ~33 days

Total

11

Last Release

3115d ago

Major Versions

v1.5.0 → v2.0.02017-09-28

### Community

Maintainers

![](https://www.gravatar.com/avatar/146de51d7c3887a67b67f1aec9ce4c88a9fa95b08e630d331bbd1b2d31167474?d=identicon)[blacktrue](/maintainers/blacktrue)

---

Top Contributors

[![blacktrue](https://avatars.githubusercontent.com/u/15004512?v=4)](https://github.com/blacktrue "blacktrue (12 commits)")

### Embed Badge

![Health badge](/badges/blacktrue-sat-scraper/health.svg)

```
[![Health](https://phpackages.com/badges/blacktrue-sat-scraper/health.svg)](https://phpackages.com/packages/blacktrue-sat-scraper)
```

###  Alternatives

[neuron-core/neuron-ai

The PHP Agentic Framework.

1.8k245.3k21](/packages/neuron-core-neuron-ai)[tencentcloud/tencentcloud-sdk-php

TencentCloudApi php sdk

3731.2M42](/packages/tencentcloud-tencentcloud-sdk-php)[concrete5/core

Concrete core subtree split

19159.3k48](/packages/concrete5-core)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
