Website SEO Audit Intelligence avatar

Website SEO Audit Intelligence

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Website SEO Audit Intelligence

Website SEO Audit Intelligence

Bounded website SEO audit with explainable issues, structured page records, agent summaries, API output, scheduling, and monitoring.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Skootle

Skootle

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Website SEO audit illustration

TL;DR

Website SEO Audit Intelligence crawls buyer-provided public websites, remains on each starting origin, and returns one agent-ready SUMMARY row followed by one page_audit row per fetched page. Each page row includes status and final URL, title, meta description, canonical, heading counts, image alt coverage, internal and external links, Open Graph fields, JSON-LD types, robots signals, sitemap hint, word count, a numeric SEO health score, and prioritized fixes. It does not claim Core Web Vitals because browser-based performance measurement is outside this Actor's scope.

Export audit data, run the Actor via API, schedule and monitor runs, or integrate with other tools.

What does this website SEO audit do?

The Actor is for a bounded first-pass technical and on-page review. Give it one or more public starting URLs. It fetches each page, follows same-origin links until maxPagesPerSite, and emits normalized rows that a human, workflow, or AI agent can rank and act on. The summary provides count, source status, warnings, numeric health-score aggregate, and crawl boundaries.

The crawl respects its own bounds and reads the page-level noindex signal plus robots.txt availability. A page with noindex is recorded as a signal, not silently removed. This helps distinguish an intentional private or utility page from an accidental indexing issue.

Why use this SEO audit for lead qualification and content operations?

Agencies can route high-priority fixes into a ticket queue. Content teams can find missing titles, descriptions, H1s, canonical tags, image alt text, and structured-data opportunities. Sales teams can qualify a website with a concrete, reproducible technical finding rather than a vague audit score. AI agents receive stable IDs, source URLs, timestamps, completeness scores, and Markdown briefings for every row.

Why choose this Actor?

The leader category is proven, but the useful difference is operational: rows are already suitable for agents, failures are deterministic, and crawling stays same-origin and bounded. It does not substitute a silent empty result for a blocked response, parser change, malformed HTML response, or unexpected empty crawl. The leader evidence used in design was 20 users in 30 days and 87 successful runs, while other competitors showed 23 failures in 26 runs. This Actor focuses on predictable semantics and concrete prioritized fixes, not price claims.

Input

{
"startUrls": ["https://example.com"],
"maxPagesPerSite": 5,
"includeExternalLinkChecks": false,
"requestTimeoutSecs": 15
}
  • startUrls: public buyer-provided URLs. The Actor does not discover targets for you.
  • maxPagesPerSite: 1 to 50 same-origin pages per input origin.
  • includeExternalLinkChecks: checks up to 10 external links per audited page and reports status where reachable.
  • requestTimeoutSecs: per-request timeout from 3 to 60 seconds.

How do I run a website SEO audit?

  1. Open the Actor in Apify and paste public URLs you are authorized to assess.
  2. Begin with five pages per site for a quick audit.
  3. Run the Actor and open the dataset. Read the first SUMMARY row first.
  4. Sort page_audit rows by seoHealthScore or inspect prioritizedIssues.
  5. Use agentMarkdown as a compact handoff to a task, CRM, or agent workflow.

Output format

All rows contain schemaVersion, recordType, id, sourceUrl, retrievedAt, fieldCompletenessScore, and agentMarkdown. Dates are ISO 8601. Counts and scores are numeric. Enum values use lowercase snake case where applicable.

{
"recordType": "summary",
"count": 1,
"sourceStatus": "success",
"averageSeoHealthScore": 90,
"boundedMaxPagesPerSite": 5,
"domainIntelligence": { "sameOriginCrawl": true, "coreWebVitalsClaimed": false }
}
{
"recordType": "page_audit",
"sourceUrl": "https://example.com/",
"statusCode": 200,
"title": "Example Domain",
"headings": { "h1": 1, "h2": 0, "h3": 0 },
"images": { "total": 0, "missingAlt": 0 },
"seoHealthScore": 90,
"prioritizedIssues": [{ "priority": "low", "code": "missing_canonical" }]
}

Worked examples

These examples use the same row shape exercised by the live E2E run against https://example.com and https://www.shopify.com. Values vary as websites change.

Audit one landing page

Input: {"startUrls":["https://example.com"],"maxPagesPerSite":1}. Output starts with a summary and then a page_audit whose keys include statusCode, title, metaDescription, canonical, headings, images, links, openGraph, jsonLdTypes, robots, wordCount, seoHealthScore, and prioritizedIssues.

Compare a commercial page and an example page

Input: {"startUrls":["https://www.shopify.com","https://example.com"],"maxPagesPerSite":1}. The live E2E output had three rows: one summary plus two page_audit records, each retaining its input source URL and retrieval timestamp.

Check image accessibility and SEO coverage

Input: {"startUrls":["https://example.com"],"maxPagesPerSite":3}. Inspect images.missingAlt, headings.h1, and prioritizedIssues to create an accessible-content backlog.

Input: {"startUrls":["https://example.com"],"maxPagesPerSite":2,"includeExternalLinkChecks":true}. The links object adds externalChecksRequested and externalLinkChecks, capped at 10 links per page.

How much will a website SEO audit cost?

Live Store pricing is $0.01 per Actor start plus $0.003 per dataset result, displayed as $3.00 per 1,000 results. Apify platform usage is included rather than billed separately. Use the input page limits and your Apify run-charge controls to keep each audit within budget.

How should an agent prioritize SEO audit findings?

Start with prioritizedIssues, not the aggregate score. A missing title can make a page harder to understand in search results, while a missing canonical becomes more relevant when the same content is served on multiple paths. The recommended order is: check noindex_signal against the page's business purpose, repair absent titles and descriptions for important pages, correct heading and image-alt gaps, then decide whether canonical or structured-data additions fit the site's architecture. The actor gives a bounded evidence set. A change should still be reviewed in the site's CMS, template, and release process.

Use the row's sourceUrl, finalUrl, and statusCode together. A source URL that lands on a different final URL may indicate a normal redirect, an outdated campaign link, or a migration artifact. The Actor records the response it reached but does not make a judgment that every redirect is wrong. Pair this evidence with the intended URL map before changing redirects.

fieldCompletenessScore is data quality context, not an SEO ranking score. It reflects whether key collected fields were available on the page. A page with a complete set of collected fields can still need SEO work, and a partially complete record can reflect a simple or intentionally minimal page.

What can I learn from robots, sitemap, and structured data signals?

The robots object reports the page-level robots meta value, whether robots.txt was retrievable, and whether the page contains a noindex signal. sitemapHint is only a hint found in robots.txt; it is not proof that the sitemap was fetched or validated. This distinction matters when a robots file is unavailable due to a transient response or a site policy.

jsonLdTypes collects readable @type declarations from JSON-LD blocks when they parse. It is a discovery aid for types such as Organization, Product, Article, or FAQPage. It does not validate schema eligibility, required properties, rich-result eligibility, or search-engine indexing. Use it to identify pages worth a structured-data review.

Open Graph fields are included because many marketing teams use the same page as a search landing page and social sharing page. Missing Open Graph does not directly prove a search issue, but it is a useful cross-channel content-quality check.

What are sensible crawl boundaries for an SEO audit?

Begin with one to five pages per site while validating that the input is the intended public origin. Increase toward 50 only when the buyer needs a broader inventory and accepts the additional time. The Actor queues same-origin HTTP and HTTPS links only. It does not log in, submit forms, bypass a challenge, or crawl a linked external domain. This bounded behavior avoids turning a quick audit into an unbounded crawler.

For a multi-site portfolio, submit one representative page from each domain and keep maxPagesPerSite low. The summary row preserves the query and bound, which lets a downstream agent distinguish a shallow landscape scan from a deeper single-domain audit. For a redesign migration, use the most important old and new public pages as separate inputs, then compare their row-level titles, canonicals, robots values, and issue lists outside the Actor.

Troubleshooting public website audits

If the run reports a source failure, first open the same URL in a normal browser and verify it is public, responds without authentication, and is spelled correctly. A 403, 429, network failure, malformed source response, or empty source body is intentionally not converted into a zero-result success. Retry later only when the public source has recovered. Do not reduce the request timeout to work around a blocked site.

If an expected empty summary appears, the submitted list was empty. Provide at least one public starting URL for an audit. If a real website unexpectedly returns no page rows, that is a failure condition and should be reported with the run timestamp and URL.

Limits and responsible use

The audit is a snapshot of the public response at retrievedAt. Content can vary by geography, device, cookie state, language, A/B experiment, cache, and deployment. Keep the timestamp with the finding and rerun before treating a historical row as current. The Actor does not attempt to identify people, collect personal data, or access pages that require a session. It should be used as a repeatable quality signal, not as a substitute for editorial judgment or a contractual accessibility review.

Integrations and API use

The first row is always the summary, so a workflow can safely inspect recordType: "summary" before processing page rows. Store id as an idempotency key for a point-in-time row, preserve retrievedAt for audit history, and attach agentMarkdown to a concise handoff. For a ticketing workflow, map high-priority codes to a review queue and keep lower-priority suggestions in a backlog until the page owner confirms intent.

Do not treat this output as a replacement for consent, accessibility, legal, performance, or security reviews. The Actor fetches public HTML and headers only. It does not use a browser performance trace and does not inspect authenticated or personalized content.

Use it only on public websites you are authorized to assess. Respect applicable laws, website terms, rate limits, copyright, and robots directives. Do not use it to bypass authentication, paywalls, access controls, or anti-bot systems. This Actor is not affiliated with, endorsed by, or sponsored by any audited website or search engine.

FAQ

Does it measure Core Web Vitals?

No. It explicitly does not claim Core Web Vitals because that needs browser-based measurement.

No. It follows only same-origin links. Optional external checks are status checks, not an external crawl.

What happens if a page is blocked or returns an error?

The run fails closed with a source failure. It does not write a misleading successful empty audit.

What does an expected empty result mean?

An empty startUrls list produces a zero-count expected_no_match summary. A malformed response or unexpected empty crawl throws instead.

Can I schedule audits with the Apify API?

Yes. The input and normalized output are designed for API, scheduler, and integration use.

Does a score guarantee rankings?

No. The score is a prioritized on-page and technical heuristic, not a ranking prediction.

Can it find every SEO issue?

No. It is a bounded audit and should complement a full technical review where needed.

Other Skootle actors you might like

Support and feedback

Open an issue or use the Actor support channel with the input shape, failing public URL, timestamp, and run ID. Do not include credentials. If this Actor saves time, leave a review through the Store review prompt. Feedback on missing high-value SEO checks is especially useful.