# HTTP Cache & Compression Auditor (`quanmatrix/http-cache-compression-auditor`) Actor

Audit public URLs for HTTP caching, validators, compression, Vary behavior, HTTPS delivery, and actionable performance gaps in a structured dataset.

- **URL**: https://apify.com/quanmatrix/http-cache-compression-auditor.md
- **Developed by:** [Rafael Barreto Haddad](https://apify.com/quanmatrix) (community)
- **Categories:** Developer tools, SEO tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.78 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## HTTP Cache & Compression Auditor

Audit the HTTP delivery hygiene of public URLs with one compact result per URL. The Actor checks caching headers, cache validators, compression, `Vary`, HTTPS delivery, and machine-readable performance issues without requiring a browser or third-party API key.

### What it does

For every URL, the Actor follows safe public redirects and returns the final URL, status code, Cache-Control, ETag, Last-Modified, Vary, Content-Encoding, Content-Type and Content-Length. It also calculates a simple 0-100 delivery-hygiene score and emits explicit issue flags.

### Use cases

- Check cache and compression configuration after a website release.
- Audit agency or multi-site inventories on a schedule.
- Detect missing cache validators such as ETag or Last-Modified.
- Flag text, JSON, JavaScript, XML or SVG responses that appear uncompressed.
- Feed deterministic HTTP delivery checks into CI, monitoring, QA or technical SEO pipelines.

### Input

Provide `urls`, an array of up to 100 public HTTP(S) URLs. URLs without a scheme are normalized to HTTPS.

### Output

Each input produces one dataset row including `status`, `score`, `cacheControl`, `etag`, `lastModified`, `vary`, `contentEncoding`, `contentType`, `hasCacheControl`, `hasValidator`, `hasVary`, `usesCompression`, `httpsFinal`, and `issues`.

### Example

Input: `{"urls":["https://example.com"]}`. The output reports whether caching metadata, validators, Vary and compression are present, whether the final page uses HTTPS, and any issue flags detected.

### Pricing

Pay per result: **$0.001 USD per URL result**. This keeps recurring bulk audits inexpensive while preserving a clear result-based charging model.

### Key features

- One structured cache and compression decision record per URL.
- Explicit issue flags rather than an opaque performance score alone.
- SSRF-aware validation of public targets and redirect destinations.
- No browser, external performance API, login, or paid AI dependency.

### Why use this Actor

It sits between a raw `curl -I` check and a heavyweight browser performance suite. It is useful when you want fast, structured HTTP delivery evidence that can be scheduled, compared, stored, or used as a pipeline gate.

### Why this Actor

1. It combines caching, validators, compression, Vary and HTTPS checks in one result.
2. It reports the underlying response metadata alongside the score so findings are auditable.
3. It flags likely uncompressed compressible content in machine-readable form.
4. It is designed for low-cost batch automation and requires no external API credentials.

### Limitations

This Actor inspects response metadata only. It does not measure Core Web Vitals, JavaScript rendering, real-user performance, CDN internals, or authenticated sessions. Cache choices can be intentional and should be interpreted in the context of the resource. Some sites may block automated requests.

### Responsible use

Audit only public URLs you are authorized to access. Keep batch sizes reasonable and respect website terms, rate limits, and applicable law.

# Actor input Schema

## `urls` (type: `array`):

Up to 100 public HTTP(S) URLs to audit.

## Actor input object example

```json
{
  "urls": [
    "https://example.com"
  ]
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("quanmatrix/http-cache-compression-auditor").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("quanmatrix/http-cache-compression-auditor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call quanmatrix/http-cache-compression-auditor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,quanmatrix/http-cache-compression-auditor"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/bzqINGlDITeHkI4G2/builds/0V2PKVxuJch2QcWi3/openapi.json
