# Website SEO, Accessibility & Security Audit (`blond_ramen/agency-website-audit`) Actor

Audit websites for SEO, accessibility, security headers, performance, and broken links. Get prioritized findings, screenshots, structured data, and a client-ready HTML report.

- **URL**: https://apify.com/blond_ramen/agency-website-audit.md
- **Developed by:** [Betelgeuse](https://apify.com/blond_ramen) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $50.00 / 1,000 website audits

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Agentic Revenue Studio

This repository is the first deployable product in an autonomous micro-product pipeline. It is designed to earn usage-based revenue on Apify Store without client meetings or manual delivery.

### Product 1: Agency Website Audit

The Actor accepts public website URLs and produces:

- a weighted 0–100 health score;
- SEO and structured-data findings;
- axe-core accessibility violations;
- security-header checks;
- page timing measurements;
- broken same-origin links;
- an optional full-page screenshot;
- a client-ready HTML report.

The implementation blocks local/private network targets to reduce SSRF risk. It audits only public HTTP/HTTPS pages and does not bypass login, paywalls, CAPTCHAs, or access controls.

### Revenue model

Use Apify pay-per-event pricing with a `page-audit` event. Suggested launch pricing:

- Free/first-run allowance: one page;
- retail price: **$0.05 per audited page**;
- Bronze: $0.04;
- Silver: $0.03;
- Gold+: $0.025.

Apify collects payment and pays Actor proceeds monthly. Revenue is not guaranteed; the operating target is to validate demand cheaply and remove or reposition products that do not attract repeat users.

### Autonomous loop

1. `npm run radar` queries the current public Apify Store API and writes `market-radar.json`.
2. `npm run model:review` sends the report to the local LM Studio model `qwen3-coder-local`.
3. The coding model proposes the next build or improvement using explicit legal and commercial filters.
4. Type checking, local browser tests, and an Apify test run gate every release.
5. Store stats, failure rate, reviews, and revenue determine whether to improve, retain, or kill the product.

Thirty-day kill criteria for a published product:

- fewer than five genuine users;
- no repeat usage;
- success rate below 95%;
- infrastructure cost above 45% of revenue;
- unresolved policy or target-site compliance risk.

### Local setup

```powershell
npm install
npm run typecheck
npm run radar
npm run model:review
```

To run the Actor locally, set `storage/key_value_stores/default/INPUT.json` and use the Apify CLI, or compile and run it with the standard Apify environment variables.

The local model server expected by the review script is:

- URL: `http://127.0.0.1:1234/v1`
- model identifier: `qwen3-coder-local`

### One-time human steps

The owner must create and verify an Apify account, accept the Store terms, configure payouts/tax details, create the Actor, and enable `page-audit` pay-per-event pricing. These identity and financial steps cannot be delegated lawfully. Development, testing, documentation, publishing after authorization, monitoring, and maintenance can be automated.

# Actor input Schema

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

One or more public HTTP/HTTPS pages to audit.

## `maxLinksToCheck` (type: `integer`):

Higher values improve coverage but increase run time.

## `includeScreenshot` (type: `boolean`):

Stores a PNG in the run key-value store for each audited page.

## `navigationTimeoutSecs` (type: `integer`):

Maximum time to wait for a page to load.

## `concurrency` (type: `integer`):

Keep this low for stable browser runs.

## Actor input object example

```json
{
  "urls": [
    "https://example.com"
  ],
  "maxLinksToCheck": 20,
  "includeScreenshot": true,
  "navigationTimeoutSecs": 30,
  "concurrency": 2
}
```

# Actor output Schema

## `audits` (type: `string`):

No description

## `files` (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 = {
    "urls": [
        "https://example.com"
    ],
    "maxLinksToCheck": 20,
    "includeScreenshot": true,
    "navigationTimeoutSecs": 30,
    "concurrency": 2
};

// Run the Actor and wait for it to finish
const run = await client.actor("blond_ramen/agency-website-audit").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 = {
    "urls": ["https://example.com"],
    "maxLinksToCheck": 20,
    "includeScreenshot": True,
    "navigationTimeoutSecs": 30,
    "concurrency": 2,
}

# Run the Actor and wait for it to finish
run = client.actor("blond_ramen/agency-website-audit").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 '{
  "urls": [
    "https://example.com"
  ],
  "maxLinksToCheck": 20,
  "includeScreenshot": true,
  "navigationTimeoutSecs": 30,
  "concurrency": 2
}' |
apify call blond_ramen/agency-website-audit --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,blond_ramen/agency-website-audit"
        }
    }
}
```

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/SUWrLDeJDVsn37qGa/builds/PNHcr55ouV0mELIPS/openapi.json
