PHPackages                             gregpriday/laravel-zyte-api - 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. [API Development](/categories/api)
4. /
5. gregpriday/laravel-zyte-api

ActiveLibrary[API Development](/categories/api)

gregpriday/laravel-zyte-api
===========================

A Laravel package for seamless integration with Zyte's web scraping API, offering functionalities for extracting raw HTML, browser-rendered HTML, and structured article content.

0.2.4(1y ago)030MITPHPPHP ^8.1

Since Mar 1Pushed 1y ago1 watchersCompare

[ Source](https://github.com/gregpriday/laravel-zyte-api)[ Packagist](https://packagist.org/packages/gregpriday/laravel-zyte-api)[ Docs](https://github.com/gregpriday/laravel-zyte-api)[ RSS](/packages/gregpriday-laravel-zyte-api/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (14)Versions (7)Used By (0)

Laravel Zyte API
================

[](#laravel-zyte-api)

> ⚠️ **Important Notice** ⚠️: This package is currently in an early development stage, and breaking changes may be introduced with each new release. While we strive to maintain stability, users should exercise caution and closely review the changelog when upgrading to newer versions. Contributions and feedback are welcome to help improve the package's stability and functionality.

Laravel Zyte API is a powerful Laravel package that seamlessly integrates Zyte's web scraping capabilities into your Laravel applications. With a focus on flexibility and ease of use, this package simplifies the process of extracting data from web pages using Zyte's advanced data extraction API.

Features
--------

[](#features)

- Easy integration with Zyte API services through a simple Laravel facade
- Flexible `extract` method for concurrent fetching of multiple URLs
- Support for extracting raw HTML, browser-rendered HTML, structured article data, and more
- Customizable concurrency for efficient handling of batch requests
- Built-in retry logic for robust handling of API request failures
- Utilizes GuzzleHttp for efficient communication with the Zyte API
- Provides a `Processors` class with utility methods for processing extracted data, such as converting HTML to clean Markdown

Installation
------------

[](#installation)

Install the package via Composer by running the following command in your Laravel project directory:

```
composer require gregpriday/laravel-zyte-api
```

Configuration
-------------

[](#configuration)

To configure your Zyte API key, proxy, and other settings, publish the package configuration file:

```
php artisan vendor:publish --provider="GregPriday\ZyteApi\ZyteApiServiceProvider"
```

This command will create a `config/zyte.php` file in your project. Open this file to review the available configuration options.

Next, add the following entries to your `.env` file:

```
ZYTE_API_KEY=your-zyte-api-key-here
ZYTE_API_CONCURRENCY=5
ZYTE_PROXY=your-proxy-url-here

```

Make sure to replace `your-zyte-api-key-here` with your actual Zyte API key and `your-proxy-url-here` with the appropriate proxy URL.

Usage
-----

[](#usage)

### Extracting Data

[](#extracting-data)

To extract data from a URL or multiple URLs, use the `extract` method:

```
use GregPriday\ZyteApi\Facades\ZyteApi;

$url = 'https://example.com';
$response = ZyteApi::extract($url, ['browserHtml' => true]);

// Access the browser-rendered HTML
echo $response['browserHtml'];

$urls = [
    'https://example.com/article1',
    'https://example.com/article2',
    'https://example.com/article3',
];

$responses = ZyteApi::extract($urls, ['article' => true]);

// Access the extracted article data for each URL
foreach ($responses as $url => $articleData) {
    echo "URL: $url\n";
    echo "Headline: {$articleData['headline']}\n";
    echo "Article Body: {$articleData['articleBody']}\n";
    // ...
}
```

The `extract` method accepts the following parameters:

- `$urls` (array|string): A single URL or an array of URLs to extract data from.
- `$args` (array): Additional request parameters to customize the extraction process. Refer to the Zyte API documentation for available options.
- `$processCallback` (callable|null): An optional callback function to process each API response. If not provided, the raw API response will be returned.

### Handling Errors

[](#handling-errors)

The package includes built-in retry logic to handle API request failures. If a request fails, it will automatically retry up to 5 times before returning an error message. You can customize the retry behavior by modifying the `GuzzleRetryMiddleware` configuration in the `ZyteApi` constructor.

### Using the Zyte Proxy

[](#using-the-zyte-proxy)

To make requests through the Zyte proxy, you can use the `ZyteClient` class:

```
use GregPriday\ZyteApi\Proxy\ZyteClient;

$client = app(ZyteClient::class);
$response = $client->get('https://example.com');

$httpResponseBody = $response->getBody()->getContents();
// ...
```

Make sure to set the `ZYTE_PROXY` value in your `.env` file to the appropriate proxy URL.

Processors
----------

[](#processors)

The package includes a `Processors` class that provides utility methods for processing extracted data. For example, the `htmlToCleanMarkdown` method can be used to convert HTML content to clean Markdown format:

```
use GregPriday\ZyteApi\Facades\ZyteApi;
use GregPriday\ZyteApi\Processors;

$urls = [
    'https://example.com/article1',
    'https://example.com/article2',
    'https://example.com/article3',
];

$responses = ZyteApi::extract($urls, ['article' => true], function ($response) {
    $articleData = $response['article'];

    // Convert article HTML content to Markdown
    $articleData['articleBodyMarkdown'] = Processors::htmlToCleanMarkdown($articleData['articleBodyHtml']);

    return $articleData;
});

// Access the extracted article data and converted Markdown content for each URL
foreach ($responses as $url => $articleData) {
    echo "URL: $url\n";
    echo "Headline: {$articleData['headline']}\n";
    echo "Article Body (HTML): {$articleData['articleBodyHtml']}\n";
    echo "Article Body (Markdown): {$articleData['articleBodyMarkdown']}\n";
    // ...
}
```

Testing
-------

[](#testing)

The package includes PHPUnit tests to ensure its functionality. To run the tests, navigate to your project directory and execute:

```
vendor/bin/phpunit
```

Make sure to configure your test environment properly to prevent real API calls to Zyte during testing.

Contributing
------------

[](#contributing)

Contributions to the Laravel Zyte API package are welcome! If you find any bugs, have suggestions for improvements, or want to add new features, please submit a pull request. Ensure that your contributions adhere to the project's coding standards and conventions.

License
-------

[](#license)

The Laravel Zyte API package is open-source software licensed under the [MIT License](http://opensource.org/licenses/MIT).

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance32

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 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 ~14 days

Recently: every ~2 days

Total

6

Last Release

728d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/c936acc8bcc60aa08303d15f12692319c15ef4c3b783c057abb0570fd1e0f2fb?d=identicon)[gpriday](/maintainers/gpriday)

---

Top Contributors

[![gregpriday](https://avatars.githubusercontent.com/u/1126859?v=4)](https://github.com/gregpriday "gregpriday (22 commits)")

---

Tags

laravel-packageapi integrationweb-scraping data extractionlaravel-extensionHTML extractionzytearticle content extraction

###  Code Quality

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/gregpriday-laravel-zyte-api/health.svg)

```
[![Health](https://phpackages.com/badges/gregpriday-laravel-zyte-api/health.svg)](https://phpackages.com/packages/gregpriday-laravel-zyte-api)
```

###  Alternatives

[helgesverre/extractor

AI-Powered Data Extraction for your Laravel application.

22128.0k](/packages/helgesverre-extractor)[simplestats-io/laravel-client

Client for SimpleStats!

4515.5k](/packages/simplestats-io-laravel-client)[codebar-ag/laravel-docuware

DocuWare integration with Laravel

1221.1k](/packages/codebar-ag-laravel-docuware)[codebar-ag/laravel-zammad

Zammad integration with Laravel

106.1k](/packages/codebar-ag-laravel-zammad)[xelon-ag/vmware-php-client

PHP API Client for VmWare

114.3k](/packages/xelon-ag-vmware-php-client)[musahmusah/laravel-multipayment-gateways

A Laravel Package that makes implementation of multiple payment Gateways endpoints and webhooks seamless

852.2k1](/packages/musahmusah-laravel-multipayment-gateways)

PHPackages © 2026

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