# Website Audit All-in-One: SEO, PageSpeed, Broken Links, SSL (`gmyri/website-audit`) Actor

Full website audit per URL in one run: SEO crawl and broken links, Lighthouse PageSpeed and Core Web Vitals, tech stack, DNS/SSL/SPF/DMARC checks, optional screenshot. Combined JSON plus a shareable HTML report. $0.03 per site.

- **URL**: https://apify.com/gmyri/website-audit.md
- **Developed by:** [Giorgos Myrianthous](https://apify.com/gmyri) (community)
- **Categories:** SEO tools, Lead generation, Developer tools
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $30.00 / 1,000 site 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

## Website Audit All-in-One: SEO, PageSpeed, Broken Links, SSL

**One run, one report per website**: an **SEO crawl with broken links**, **Lighthouse PageSpeed and Core Web Vitals**, the **tech stack**, and **SSL, domain-expiry and SPF/DMARC/DKIM** checks, with an optional **screenshot**. You also get an overall score, a prioritised list of the top issues and a **shareable HTML report** you can send to clients.

💲 **$0.03 per site ($30 per 1,000).** Unreachable sites are free. Pay only for results. No subscription, and the Apify free plan's monthly credit covers small jobs.

**Also known as:** website audit tool, SEO audit, site audit, website checker, website health check, SEO checker bulk, broken link checker, PageSpeed checker, SSL checker, agency prospect audit, website grader.

### Try it now (free-plan friendly)

1. Click **Start**. The prefilled input works as is. Fully audits books.toscrape.com (SEO crawl, broken links, Lighthouse, tech stack, SSL/DNS) and saves an HTML report, in about 30 seconds.
2. Or paste this input into the JSON tab:

```json
{
  "urls": [
    "https://books.toscrape.com/"
  ],
  "checks": [
    "seo",
    "pagespeed",
    "tech",
    "dns"
  ]
}
```

**Example output** (one dataset item, shortened):

```json
{
  "url": "https://books.toscrape.com/",
  "overallScore": 84,
  "performanceScore": 98,
  "seoScore": 91,
  "accessibilityScore": 87,
  "siteHealthScore": 76,
  "brokenLinkCount": 0,
  "coreWebVitals": "good",
  "technologies": [
    "jQuery",
    "Bootstrap"
  ],
  "domainScore": 74,
  "sslDaysToExpiry": 77,
  "topIssues": [
    "No SPF record (anyone can spoof mail from this domain)",
    "missing meta description on 10 page(s)",
    "No sitemap.xml found"
  ],
  "reportUrl": "https://api.apify.com/v2/key-value-stores/.../records/report-books-toscrape-com"
}
```

Small runs cost cents, and you can set a **Max cost per run** so you're never charged more.

### Use with AI agents / Apify MCP

Give your agent (Claude, ChatGPT, Cursor, n8n AI Agent, LangChain, OpenAI Agents SDK) this tool through **Apify's MCP server**:

```text
https://mcp.apify.com?tools=gmyri/website-audit
```

- **Example prompt:** "Audit https://example.com: SEO, speed, broken links and SSL. What should I fix first?"
- **Why agents like it:** the input has one required field and documented defaults and enums. The output has stable, flat field names, errors are returned as items with an `error` field and are never charged, and each run writes a summary to the `OUTPUT` record.
- Agents that use `search-actors` find it by searching for: website audit tool, SEO audit.

### API, Python, n8n, Make, Zapier

```bash
curl -X POST "https://api.apify.com/v2/acts/gmyri~website-audit/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"urls":["https://example.com"],"checks":["seo","pagespeed","tech","dns"]}'
```

- **Python:** `ApifyClient(token).actor("gmyri/website-audit").call(run_input={...})`
- **n8n / Make / Zapier:** use the Apify "Run Actor" action with `gmyri/website-audit`, then read the dataset items.

### Quick FAQ

- **Can I send the report to clients?** Yes. `reportUrl` is a standalone HTML page with scores, top issues, broken links, tech stack and domain checks.
- **How deep is the crawl?** 10 pages and 50 links per site by default (configurable up to 50 pages and 300 links). For full-site crawls use Broken Link Checker & SEO Audit.
- **Can I monitor sites on a schedule?** Yes. Create an Apify schedule and an integration (Slack, email or webhook) on run success.
- **What if I set a spending limit?** The Actor stops cleanly at your *Max cost per run* and you're never charged above it.

### Details

### What's checked on every site

| Module | What you get |
|---|---|
| **SEO crawl & broken links** | Crawls up to 10 pages (configurable) and checks up to 50 links. Reports 404s and 5xx errors with the page they were found on, plus titles, meta descriptions, H1, canonical, noindex, mixed content, JSON-LD, robots.txt and sitemap. |
| **PageSpeed (Lighthouse 12)** | Performance, SEO, Accessibility and Best-practices scores; Core Web Vitals (LCP, CLS, TBT); and the top speed fix. |
| **Tech stack** | CMS, ecommerce platform, analytics, CDN, frameworks and email provider. About 170 technologies are covered. |
| **Domain & email security** | SSL certificate expiry, domain expiry (RDAP), HTTPS redirect and HSTS, SPF, DMARC, DKIM, MX and CAA. |
| **Screenshot** (optional) | Homepage screenshot. |

The output also includes an **overall score**, a **prioritised "top issues" list** and a **shareable HTML report** (`reportUrl`) you can send to a client.

### Typical uses

- **Agencies and freelancers:** audit prospects' websites in bulk, then send each one their HTML report.
- **Site owners:** schedule a weekly check of your own sites and alert on broken links, SSL expiry or speed drops.
- **AI agents:** one tool call answers "audit this website" with structured JSON.

### Pricing

**$0.03 per site** ($30 per 1,000), whichever modules you choose, plus Apify's standard $0.00005 Actor start. Unreachable sites are free. Running the 4 single-purpose tools separately would cost about $0.05 per site.

### Notes

- Polite crawling: robots.txt is respected, at most 10 pages per site by default, and no logins or bot-protection bypass.
- Lighthouse lab scores vary by a few points between runs.
- Need more depth on one area? Use the single-purpose tools listed below.

### Related tools

- [Broken Link Checker & SEO Audit: 404s, Redirects, Sitemap](https://apify.com/gmyri/site-health-audit)
- [PageSpeed & Core Web Vitals Checker: Bulk Lighthouse Audit](https://apify.com/gmyri/pagespeed-checker)
- [Tech Stack Detector: Website Technology & CMS Lookup](https://apify.com/gmyri/tech-stack-detector)
- [DNS Lookup & SSL Checker: SPF, DMARC, DKIM, Domain Expiry](https://apify.com/gmyri/domain-health-check)
- [Website Screenshot API: Full Page, Mobile & URL to PDF](https://apify.com/gmyri/website-screenshot)

All tools by gmyri: [doc-to-markdown](https://apify.com/gmyri/doc-to-markdown), [dataset-merge-dedup](https://apify.com/gmyri/dataset-merge-dedup), [site-health-audit](https://apify.com/gmyri/site-health-audit), [website-screenshot](https://apify.com/gmyri/website-screenshot), [domain-health-check](https://apify.com/gmyri/domain-health-check), [image-pdf-ocr](https://apify.com/gmyri/image-pdf-ocr), [tech-stack-detector](https://apify.com/gmyri/tech-stack-detector), [rss-feed-reader](https://apify.com/gmyri/rss-feed-reader), [pagespeed-checker](https://apify.com/gmyri/pagespeed-checker).

# Actor input Schema

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

Websites to audit (homepage or any start URL), e.g. https://example.com. Domains without https:// are accepted. 1 charge per site.

## `checks` (type: `array`):

Which modules to run. Default: seo, pagespeed, tech, dns. Same price whichever you choose.

## `maxPagesPerSite` (type: `integer`):

Internal pages crawled for on-page SEO issues (title, meta description, H1, canonical, noindex, mixed content...).

## `maxLinksPerSite` (type: `integer`):

Links (internal and external) found on the crawled pages that are checked for 404s and errors.

## `device` (type: `string`):

Lighthouse form factor.

## `htmlReport` (type: `boolean`):

Save a client-ready HTML report per site and return its reportUrl.

## `timeoutSecs` (type: `integer`):

Per-request timeout for crawling and checks.

## Actor input object example

```json
{
  "urls": [
    "https://books.toscrape.com/"
  ],
  "checks": [
    "seo",
    "pagespeed",
    "tech",
    "dns"
  ],
  "maxPagesPerSite": 10,
  "maxLinksPerSite": 50,
  "device": "mobile",
  "htmlReport": true,
  "timeoutSecs": 15
}
```

# Actor output Schema

## `results` (type: `string`):

One combined audit report per website.

## `summary` (type: `string`):

Totals and per-input report.

# 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://books.toscrape.com/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("gmyri/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://books.toscrape.com/"] }

# Run the Actor and wait for it to finish
run = client.actor("gmyri/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://books.toscrape.com/"
  ]
}' |
apify call gmyri/website-audit --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,gmyri/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/SxrppCHKdsIZ32bFN/builds/RR9Wzp8EZS6ZheHzE/openapi.json
