# SEO Analyzer (`miccho27/seo-analyzer`) Actor

Analyze any webpage for SEO factors: title, meta, headings, images, links, Open Graph, structured data, and get an overall SEO score.

- **URL**: https://apify.com/miccho27/seo-analyzer.md
- **Developed by:** [Tatsuya Mizuno](https://apify.com/miccho27) (community)
- **Categories:** SEO tools, Developer tools
- **Stats:** 93 total users, 6 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

from $30.00 / 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.

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

## SEO Analyzer - Free Website SEO Audit & Scoring Tool

Run a comprehensive SEO audit on any webpage and get a weighted score out of 100. Checks 15+ on-page SEO factors including title tags, meta descriptions, heading structure, image alt text, internal/external links, Open Graph, Twitter Cards, JSON-LD structured data, and technical SEO. The best free alternative to Ahrefs Site Audit, Screaming Frog, Moz Pro, and Sitebulb.

### Who Is This For?

- **SEO specialists & agencies** -- Bulk audit client websites before and after optimization
- **Content marketers** -- Verify on-page SEO before publishing new pages
- **Web developers** -- SEO regression testing in CI/CD pipelines before deployments
- **E-commerce managers** -- Audit product pages for missing meta tags and structured data
- **Freelancers** -- Generate SEO audit reports for prospective clients in minutes
- **Site owners** -- Monitor SEO health across all pages with scheduled runs

### Features

- **Title & Meta Description** -- Length check, optimal range validation (50-60 chars title, 150-160 chars description)
- **Heading Structure** -- H1-H6 hierarchy analysis, missing H1 detection
- **Image Audit** -- Alt text coverage percentage across all images
- **Link Analysis** -- Internal/external/nofollow breakdown with counts
- **Open Graph & Twitter Cards** -- Social sharing metadata completeness check
- **JSON-LD Structured Data** -- Schema.org detection and validation
- **Technical SEO** -- Canonical URL, robots meta, viewport, favicon, hreflang, language attribute
- **SEO Score** -- Weighted 0-100 scoring with individual check breakdown

### Pricing -- Free to Start

| Tier | Cost | What You Get |
|------|------|-------------|
| **Free trial** | $0 | Apify free tier includes monthly compute credits |
| **Pay per URL** | ~$0.01-0.10/URL | Only pay for actual Apify compute used |
| **vs. Ahrefs** | Saves $99-999/mo | Same on-page checks, no subscription |
| **vs. Screaming Frog** | Saves $259/yr | Cloud-based, no desktop install needed |
| **vs. Moz Pro** | Saves $99-599/mo | More detailed on-page analysis |

### How It Compares to Paid SEO Audit Tools

| Feature | This Actor (FREE) | Ahrefs Site Audit ($99/mo) | Screaming Frog ($259/yr) | Moz Pro ($99/mo) | Sitebulb ($152/yr) |
|---------|-------------------|---------------------------|-------------------------|------------------|-------------------|
| SEO Score (0-100) | Yes (weighted) | Yes | No (raw data only) | Yes | Yes |
| Title/meta check | Yes | Yes | Yes | Yes | Yes |
| Heading structure | Yes | Yes | Yes | Yes | Yes |
| Image alt audit | Yes | Yes | Yes | Yes | Yes |
| JSON-LD detection | Yes | Yes | Yes | No | Yes |
| Open Graph check | Yes | No | No | No | Yes |
| Twitter Cards check | Yes | No | No | No | No |
| API/automation | Yes (Apify API) | Yes | Limited | Yes | No |
| CI/CD integration | Yes (webhook/API) | No | No | No | No |
| Bulk URLs | Unlimited | Site-based | 500 free | Site-based | Site-based |
| Cloud-based | Yes | Yes | Desktop only | Yes | Desktop only |
| Monthly cost | $0 (pay per run) | $99-999 | $259/yr | $99-599 | $152/yr |

### Quick Start (3 Steps)

1. **Click "Try for free"** on this Actor's page in Apify Store
2. **Paste URLs** you want to audit (e.g., `https://example.com`, `https://example.com/blog`)
3. **Click "Start"** and get SEO scores with detailed check breakdowns as JSON, CSV, or Excel

### Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `urls` | string\[] | Yes | URLs to analyze (no limit) |
| `analysisType` | string | No | `full` (default), `score` (score only), `headings` (heading structure), or `links` (link analysis) |

#### Example Input

```json
{
  "urls": [
    "https://example.com/",
    "https://example.com/about",
    "https://example.com/blog/seo-guide"
  ],
  "analysisType": "full"
}
```

### Output Example

```json
{
  "url": "https://example.com/",
  "success": true,
  "pageSize": 12345,
  "title": { "text": "Example Domain", "length": 14, "optimal": false },
  "metaDescription": { "text": "...", "length": 155, "optimal": true },
  "headings": { "h1Count": 1, "h2Count": 5, "h3Count": 8, "hasH1": true },
  "images": { "total": 12, "withAlt": 10, "altCoverage": 83.3 },
  "links": { "internal": 24, "external": 8, "nofollow": 2 },
  "openGraph": { "hasOG": true, "title": "...", "description": "...", "image": "..." },
  "twitterCard": { "hasCard": true, "type": "summary_large_image" },
  "structuredData": { "hasJsonLd": true, "types": ["WebPage", "Organization"] },
  "technical": { "hasCanonical": true, "hasViewport": true, "hasFavicon": true },
  "seoScore": { "score": 72, "maxPoints": 100, "earnedPoints": 72, "checks": [...] }
}
```

### Real-World Use Cases

#### 1. Pre-Publication SEO Checklist

Run this Actor on staging URLs before publishing to catch missing meta descriptions, broken heading hierarchy, and missing alt text before going live.

#### 2. Bulk Website Migration Audit

Analyzing 500+ pages during a site migration? Run before and after to ensure SEO parity and catch regressions.

#### 3. Competitor SEO Benchmarking

Audit competitors' top pages and compare their SEO scores to yours. Identify specific factors where they outperform you.

#### 4. Client SEO Audit Report

Freelancers and agencies: run this on a prospect's website, export results as JSON/CSV, and present a professional SEO audit in your sales process.

#### 5. CI/CD SEO Regression Testing

Trigger this Actor via API after every deployment. If SEO score drops below a threshold, fail the pipeline and alert the team.

#### 6. Monthly SEO Health Monitoring

Schedule weekly/monthly runs across your entire sitemap and track SEO score trends over time in Google Sheets or a dashboard.

### FAQ

**Q: How many URLs can I analyze in one run?**
A: No hard limit. Processing time and cost scale linearly with URL count. Typical runs analyze 10-1,000 URLs. For very large sites (10K+ pages), split into multiple runs.

**Q: What is the SEO score based on?**
A: Weighted scoring across all checks: title optimization (15pts), meta description (10pts), heading structure (10pts), image alt coverage (10pts), link health (10pts), technical SEO (15pts), structured data (10pts), social meta (10pts), and more. Each check has a clear pass/fail with points breakdown.

**Q: Can I use this in CI/CD pipelines?**
A: Yes. Trigger the Actor via Apify API and check results programmatically. Perfect for automated SEO regression testing before deployments. Integrates with GitHub Actions, Jenkins, and any webhook-capable CI system.

**Q: Does this check page speed or Core Web Vitals?**
A: No. This Actor focuses on on-page SEO factors (content, metadata, structure). For performance metrics, use Google PageSpeed Insights or Lighthouse.

**Q: Can I export results to CSV or Google Sheets?**
A: Yes. Apify datasets can be exported as JSON, CSV, Excel, or pushed directly to Google Sheets, Slack, email, or any webhook endpoint.

### Pricing

Pay Per Event -- charged per URL analyzed. Typical cost: $0.01-0.10 per URL depending on page complexity. Free Apify tier available for testing.

# Actor input Schema

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

List of webpage URLs to audit for SEO. Supports any publicly accessible URL. Add as many as needed -- processing scales linearly. Example: 'https://example.com/', 'https://example.com/blog/post-1'.

## `analysisType` (type: `string`):

'full' = complete 15+ factor audit with SEO score. 'score' = score only (fastest). 'headings' = heading hierarchy analysis. 'links' = internal/external link breakdown.

## Actor input object example

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

# 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/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("miccho27/seo-analyzer").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/"] }

# Run the Actor and wait for it to finish
run = client.actor("miccho27/seo-analyzer").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/"
  ]
}' |
apify call miccho27/seo-analyzer --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,miccho27/seo-analyzer"
        }
    }
}

```

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/mvGwGNnL0Um3ZRkSv/builds/CkFOUxl7IPGgoHmwd/openapi.json
