Complete SEO Audit Tool - Technical Website Audit avatar

Complete SEO Audit Tool - Technical Website Audit

Pricing

from $100.00 / 1,000 complete seo audits

Go to Apify Store
Complete SEO Audit Tool - Technical Website Audit

Complete SEO Audit Tool - Technical Website Audit

Audit one public website for crawlability, indexation, metadata, headings, links, images, structured data, hreflang, security, response-time and optional AI-crawler signals. Returns a prioritized, source-linked report. It does not query AI answers or claim rankings.

Pricing

from $100.00 / 1,000 complete seo audits

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Audit one public website across a bounded sample of same-origin HTML pages and return one validated technical report. It covers crawlability, indexation, metadata, heading structure, canonical integrity, internal-link graph coverage, sampled link health, images, structured data, hreflang, security, response-time signals, and optional AI-crawler signals. The report includes source-to-destination internal links with anchor text and rel directives, inbound/outbound coverage, redirect/broken-link counts, and bounded-sample orphan candidates so a team can prioritize real linking fixes rather than only seeing page-level totals.

Best fit and connected workflows

Use when

Use this Actor when the starting point is one public website and the goal is a focused technical audit across a bounded page sample. It fits workflows such as:

  • Baseline checks before a launch or migration
  • Evidence-linked repair queues for content, SEO, and engineering teams
  • Review of robots.txt, sitemap discovery, HTTPS, canonical and noindex signals
  • Mapping sampled internal links with source URL, destination, anchor text, rel directives, inbound/outbound coverage, and orphan candidates
  • Sampling metadata, headings, image alt text, structured data, and link health
  • Comparing a later audit against previousSnapshot.overallScore

Avoid when

Use a dedicated crawler for a whole-domain inventory beyond 50 pages, redirect-chain tracing, JavaScript-rendered field extraction, or authenticated Search Console inspections. This Actor does not claim rankings, index coverage, Core Web Vitals, or a site-wide orphan-page verdict; every internal-link coverage finding is limited to the sampled public HTML graph.

Practical scenario

Maya, an SEO lead, starts with https://example.com and wants a bounded audit before a release. She sends the homepage plus a page limit of 10 and keeps link checks enabled. The returned record shows the site score, category scores, page count, issue counts, and prioritized findings with evidence URLs. Maya uses the issue list to assign metadata updates to content owners and image alt text fixes to design support, then runs the Actor again after deployment and compares the score change.

Input fields

FieldTypeDescription
siteUrlstringPublic website origin or homepage to audit. Required. Same-origin links and sitemap URLs are followed from this starting point.
maxPagesintegerMaximum same-origin HTML pages to sample, including the homepage. Defaults to 10, range 1 to 50.
checkLinksbooleanSamples discovered links and classifies them as healthy, redirect, unavailable, access-restricted, timeout, or request-issue.
maxLinksPerPageintegerMaximum unique links sampled from each analyzed page when link checks are enabled. Defaults to 10, range 1 to 50.
maxInternalLinksPerPageintegerMaximum extracted internal-link details retained per analyzed page. Defaults to 25, range 1 to 100. It limits report size, not page discovery.
includeExternalLinksbooleanIncludes off-domain links in the bounded link-health sample.
checkAiReadinessbooleanChecks AI crawler directives, llms.txt, and structured-data availability alongside conventional SEO signals.
respectRobotsTxtbooleanSkips discovered same-origin pages disallowed for the default user-agent group.
requestTimeoutMsintegerMaximum time allowed for each public HTTP request. Defaults to 15000, range 3000 to 30000.
previousSnapshotobjectOptional prior report summary used to calculate overall score change.
demoModebooleanValidates the execution contract without fetching a site.

Focused input example

{
"siteUrl": "https://example.com",
"maxPages": 10,
"checkLinks": true,
"maxLinksPerPage": 10,
"maxInternalLinksPerPage": 25,
"includeExternalLinks": false,
"checkAiReadiness": true,
"respectRobotsTxt": true,
"requestTimeoutMs": 15000,
"previousSnapshot": {
"overallScore": 76
},
"demoMode": false
}

Output fields

This Actor writes a validated audit record to the default dataset and stores terminal run details in the default key-value store.

FieldTypeDescription
siteUrlstringNormalized public origin audited by the Actor.
auditedAtstringUTC timestamp when the report was created.
pagesRequestedintegerMaximum HTML page sample requested by the input.
pagesAuditedintegerNumber of usable same-origin HTML pages inspected.
crawlStatusstringWhether discovery completed fully or retained useful partial results.
overallScoreintegerBounded triage score derived from observed checks.
categoryScoresobjectScores for crawlability, indexation, on-page, links, structured data, performance, security, and optional AI readiness.
robotsStatusstringWhether robots.txt was present and reachable.
sitemapStatusstringWhether a reachable sitemap with same-origin URLs was found.
sitemapUrlCountintegerNumber of same-origin URLs extracted from the sitemap used for bounded discovery.
llmsStatusstringAI-readiness check result for the optional llms.txt file.
httpsbooleanWhether the normalized audited origin uses HTTPS.
issueCountsobjectCounts of critical, warning, and informational findings.
pagesarrayPage-level metadata, indexation, heading, image, link, structured-data, and response observations.
internalLinkSummaryobjectSampled internal-link totals, destination coverage, nofollow/empty-anchor counts, link-health classifications, and bounded-sample orphan candidates.
internalLinksarrayBounded source-to-destination internal-link details with anchor text, rel directives, and destination-audited status.
linkChecksarraySampled link responses with source URL, anchor text, rel directives, link type, and classification.
issuesarrayPrioritized findings with severity, category, evidence URL, and recommendation.
scoreChangeFromPreviousSnapshotinteger or nullSigned overall-score change when a previous snapshot was supplied.
warningsarrayNon-fatal discovery or transport warnings.

Illustrative output record

{
"siteUrl": "https://example.com",
"auditedAt": "2026-08-09T04:45:00.000Z",
"pagesRequested": 10,
"pagesAudited": 10,
"crawlStatus": "complete",
"overallScore": 78,
"categoryScores": {
"crawlability": 100,
"onPage": 72
},
"robotsStatus": "present",
"sitemapStatus": "present",
"llmsStatus": "missing",
"https": true,
"issueCounts": {
"critical": 1,
"warning": 4,
"info": 7
},
"pages": [
{
"url": "https://example.com/",
"status": 200,
"titleLength": 42,
"imagesMissingAlt": 0
}
],
"internalLinkSummary": {
"totalInternalLinks": 84,
"uniqueInternalDestinations": 17,
"brokenInternalLinks": 1,
"orphanCandidatePages": ["https://example.com/pricing"]
},
"internalLinks": [
{
"sourceUrl": "https://example.com/",
"url": "https://example.com/about",
"anchorText": "About us",
"rel": [],
"isNofollow": false,
"destinationAudited": true
}
],
"linkChecks": [
{
"url": "https://example.com/about",
"classification": "ok",
"status": 200
}
],
"issues": [
{
"severity": "warning",
"code": "images-missing-alt",
"evidenceUrl": "https://example.com/about"
}
],
"scoreChangeFromPreviousSnapshot": 6,
"warnings": []
}

How it works

The Actor starts from the supplied public homepage or origin, follows same-origin links and sitemap URLs, and samples up to the requested number of HTML pages. It retains a bounded internal-link graph for the sampled pages, including anchor text, rel directives, inbound/outbound coverage, and whether a linked destination was audited. It can separately check a bounded sample of discovered links, include or exclude external links in that network sample, and optionally evaluate AI-crawler signals such as named directives, llms.txt, and structured-data availability. When respectRobotsTxt is enabled, discovered pages disallowed for the default user-agent group stay outside the sample, while robots.txt itself is still recorded as an audit signal.

Pricing

Complete SEO Audit Tool - Technical Website Audit uses Pay per event plus Apify platform usage. The primary seo-audit-completed event is $0.10 per persisted audit report, while Apify platform usage is billed separately. Open the live Pricing tab for the current event details and platform billing view.

A bounded 10-page audit that writes one report costs $0.10 + Apify platform usage. The same is true of a 50-page audit because the primary event is charged once per persisted report, although higher maxPages, maxLinksPerPage, and maxInternalLinksPerPage can increase platform usage and report size. Keep the settings aligned with the decision you need to make.

Last verified against the live Apify contract on 2026-08-09. The report is derived from the public HTTP pages fetched during that run; it is a current bounded-sample audit, not a search-engine index or ranking measurement.

Use with AI agents (MCP)

This Actor is available as an Apify Actor usable through Apify MCP. The tool runs a public-site technical SEO audit and returns a dataset report plus terminal records for the run summary and output.

Actor identity: khadinakbar/complete-seo-audit

Audit https://example.com with a 10-page sample. Return the overall score, category scores, issue counts, top prioritized issues with evidence URLs, and any warnings. Keep the audit scoped to the supplied public site and summarize the results from the dataset output.

When you read the results through MCP or the Apify API, the dataset item is the source-linked report. issues contains prioritized findings, pages contains page-level observations, and linkChecks contains the bounded link sample. warnings helps you see whether discovery or transport produced partial coverage while still preserving useful results. scoreChangeFromPreviousSnapshot is present when previousSnapshot.overallScore was supplied. Pagination is bounded by maxPages, and link sampling is bounded by maxLinksPerPage, so an agent should treat the output as a sampled technical audit rather than a full site-wide inventory. Cost-wise, the audit event is charged per completed report, with Apify platform usage billed separately.

Apify API example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const input = {
siteUrl: 'https://example.com',
maxPages: 10,
checkLinks: true,
checkAiReadiness: true,
respectRobotsTxt: true,
};
const run = await client.actor('khadinakbar/complete-seo-audit').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log('Dataset items:', items);
const outputRecord = await client.keyValueStore(run.defaultKeyValueStoreId).getRecord('OUTPUT');
const runSummaryRecord = await client.keyValueStore(run.defaultKeyValueStoreId).getRecord('RUN_SUMMARY');
console.log('OUTPUT:', outputRecord?.value);
console.log('RUN_SUMMARY:', runSummaryRecord?.value);

Best results and outcome guidance

Use the same site URL, sample size, and audit settings when comparing runs so score changes are easier to interpret. Keep the scope focused when you are triaging a release, and expand maxPages only when you need a broader sample. If link health is already tracked elsewhere, you can turn off checkLinks to keep the audit centered on metadata, crawling, and indexation. If the comparison value in previousSnapshot comes from an earlier run, the report can include the signed change in overall score.

Design note

I found that the dataset schema always requires pages, linkChecks, issues, and warnings, which keeps the report structurally complete even when some arrays are empty.

FAQ

When should I use this Actor instead of a general crawler?

Use this Actor when you want a technical SEO audit focused on one public website and a bounded same-origin sample, with prioritized SEO findings and evidence URLs.

Can I compare one audit to a previous run?

Yes. Supply previousSnapshot.overallScore to receive scoreChangeFromPreviousSnapshot in the output record.

Does this Actor inspect search ranking or AI answers?

The contract describes a technical audit based on public HTTP evidence. It does not query AI answers or claim rankings.

How broad is the crawl?

The crawl starts from the supplied public site and samples up to maxPages same-origin HTML pages, with link sampling limited by maxLinksPerPage.

Yes. Set includeExternalLinks to true when outbound-link QA is part of the workflow.

What happens if I want a simpler audit?

Set checkAiReadiness to false for a conventional technical audit, and reduce maxPages or checkLinks to keep the scope tighter.

Focused standalone workflow

Complete SEO Audit Tool - Technical Website Audit is designed as a focused standalone workflow.

Responsible use

Audit only public websites you are authorized to evaluate. Respect applicable law, website terms, rate limits, intellectual property rights, and privacy obligations. Keep credentials, cookies, private URLs, and private-network addresses out of the input.