Technical SEO Auditor — Screaming Frog Alternative avatar

Technical SEO Auditor — Screaming Frog Alternative

Pricing

from $250.00 / 1,000 seo audit reports

Go to Apify Store
Technical SEO Auditor — Screaming Frog Alternative

Technical SEO Auditor — Screaming Frog Alternative

Audit technical SEO across public websites. Crawl raw HTML and return one prioritized report per start URL covering titles, descriptions, canonicals, headings, status codes, image alt text, and duplicate titles.

Pricing

from $250.00 / 1,000 seo audit reports

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Audit technical SEO across public websites. Crawl raw HTML and return one prioritized report per start URL covering titles, descriptions, canonicals, headings, status codes, image alt text, and duplicate titles. For technical SEO teams, each dataset item is one site audit report per accepted start URL, with page-level evidence inside the report.

Workflow: put the results to work

Set the website, crawl scope, and page cap for a repair sprint. Review the prioritized findings and their page evidence, then group fixes by issue type. Each dataset item is a site audit report, so use the separate page-level crawler when your next step needs one row per page.

Best fit for this Actor

Start here when you have a public site URL and want a concise technical SEO report that explains which finding types affect which sampled URLs.

  • Audit public, raw-HTML pages on one hostname with a defined page and depth budget.
  • Feed a source URL, severity, issue count, and sample affected pages into a repair triage or reporting workflow.
  • Run the same bounded request again when a fresh snapshot is needed.
  • Keep collection read-only: the Actor does not log in, alter the target, submit forms, or access a private network.

For a row-per-page cloud export rather than one prioritized report, use the public Website SEO Spider. It returns per-URL on-page fields for spreadsheet-style or downstream data processing.

When a desktop SEO suite is the better fit

This is a deliberately narrow workflow alternative, not a replacement for every feature in a desktop crawler suite. Choose a broader product when the work centrally needs browser-rendered JavaScript, authenticated or staging environments, persisted crawl history and comparison, visualisations, custom extraction, broad desktop integrations, or a large unbounded crawl.

How this Screaming Frog alternative compares

This Actor is a focused alternative for creating an on-demand, source-linked technical SEO audit report from a public raw-HTML URL. Screaming Frog remains the broader choice for its desktop crawler environment and related suite workflows.

DecisionThis ActorScreaming Frog SEO SpiderBest fit
ScopeOne bounded public raw-HTML audit report per start URLBroader desktop crawler suiteChoose this Actor for a compact cloud report; choose the desktop product for wider crawler work.
Billing modelPay per persisted report plus Apify platform usageAnnual per-user desktop licenceCompare the live Pricing tab and the licence terms against the actual crawl volume.
Same-job costDepends on selected page budget, retrieval route, and platform usageDepends on licence allocation and the buyer's desktop workflowNeither model is universally lower cost; evaluate the same workload.
InputPublic HTTP(S) start URL and documented crawl settingsDesktop product workflow and configurationThis Actor suits a JSON/API handoff; the desktop interface suits interactive crawling.
OutputOne Dataset report with issue counts, source-linked samples, timestamps, and terminal recordsDesktop crawl reports and exportsUse this Actor when one structured report is the downstream entity.
AutomationRepeatable Actor input with API-accessible Dataset and terminal recordsDesktop scheduling and integration featuresUse the route that fits the existing operator workflow.
Reliability evidenceTerminal outcomes, warnings, Dataset, OUTPUT, and RUN_SUMMARY are explicitNo comparative reliability test is asserted hereInterpret each product using its own current evidence and workload.

Screaming Frog is a trademark of its owner. This independent Actor is not affiliated, associated, or endorsed by Screaming Frog.

From a public URL to an audit queue

An SEO lead can start with a production marketing-site URL, choose a 25-page budget, and receive one report that ranks the observed issue groups by severity and affected-page count. The lead can assign priorityFindings and their sampleUrls to an editor or developer, retain startUrl and scannedAt as provenance, and rerun the same bounded input after a release.

The Actor keeps change decisions with the operator. It reports observed raw-HTML signals and labels coverage as bounded, partial, robots-governed, or incomplete when that context matters.

Quick start and input

FieldRequiredMeaning
startUrlsYesOne to five authorized public HTTP(S) URLs. Each accepted URL produces at most one report.
crawlScopeNosame-hostname follows only exact-hostname HTML links; page-only audits only the supplied URLs.
maxPagesNoPer-report hard cap from 1 to 100. Reaching it is marked as bounded coverage.
maxDepthNoSame-hostname link hops from the seed. 0 means the seed only.
maxConcurrencyNoParallel requests per start URL. Lower it for a rate-limited target you are authorized to audit.
respectRobotsTxtNoReads a public robots policy before enqueueing matching paths. Keep it enabled unless you have authority to do otherwise.
ignoreUrlParametersNoRemoves query strings for deduplication so tracking variants stay outside the page budget.
fetchModeNodirect is the lower-cost default; residential uses Apify Proxy and can add platform usage.
proxyConfigurationNoOptional advanced Apify Proxy configuration that overrides fetchMode. It does not add login or browser-rendering support.

Quick start

{
"startUrls": [
{
"url": "https://example.com"
}
],
"crawlScope": "same-hostname",
"maxPages": 25,
"maxDepth": 3,
"maxConcurrency": 3,
"respectRobotsTxt": true,
"ignoreUrlParameters": true,
"fetchMode": "direct"
}

Use only targets you are authorized to inspect. The Actor rejects local, private, credentialed, and non-HTTP(S) starts, then verifies that accepted start hostnames resolve publicly. It follows only same-hostname links and does not follow external or unsafe redirects.

Output data

FieldMeaning
reportIdIdentifier for the audit snapshot.
outcomeCOMPLETE, PARTIAL, VALID_EMPTY, or UPSTREAM_FAILED.
startUrl and scannedAtSource URL and collection timestamp for freshness and provenance.
pagesCrawled, pagesFailed, maxPages, coverageStatusBounded coverage context for interpreting the report.
issueCountsTotals by severity and finding code.
priorityFindingsUp to ten issue groups ranked by severity and affected-page count, with sample source URLs.
pageSamplesA small set of observed page URLs, statuses, titles, link depth, and finding codes.
failureSamples and warningsRetrieval, robots, timeout, proxy, or coverage context that should not be mistaken for findings.

Representative result shape:

{
"reportId": "seo-audit-example",
"reportType": "technical-seo-audit",
"outcome": "COMPLETE",
"startUrl": "https://example.com/",
"crawlScope": "page-only",
"fetchMode": "direct",
"pagesCrawled": 1,
"pagesFailed": 0,
"maxPages": 5,
"hitMaxPages": false,
"coverageStatus": "complete",
"issueCounts": {
"total": 4,
"critical": 0,
"error": 0,
"warning": 3,
"notice": 1,
"byCode": {
"title_too_short": 1,
"meta_description_missing": 1,
"canonical_missing": 1,
"thin_content": 1
}
},
"priorityFindings": [
{
"code": "canonical_missing",
"severity": "warning",
"message": "Page has no resolvable canonical URL.",
"affectedPages": 1,
"sampleUrls": ["https://example.com/"]
}
],
"pageSamples": [
{
"url": "https://example.com/",
"statusCode": 200,
"title": "Example Domain",
"issueCodes": ["title_too_short", "meta_description_missing", "canonical_missing", "thin_content"],
"crawlDepth": 0
}
],
"failureSamples": [],
"warnings": [],
"scannedAt": "1999-12-31T23:59:59.000Z"
}

The Actor also writes two control records to the default key-value store:

  • OUTPUT is a concise terminal summary for a workflow branch.
  • RUN_SUMMARY contains accepted inputs, report summaries, page totals, event counts, and warnings.

Finding semantics

The current raw-HTML checks include missing, short, and long titles; missing, short, and long meta descriptions; missing canonicals; noindex; missing or multiple H1s; short visible body text; images without non-empty alt text; HTTP errors and redirects; and duplicate titles across the crawled set.

These are audit signals, not universal prescriptions. For example, noindex, a short page, or a missing canonical can be intentional. Use the source-linked sample URLs and the target's business context before making a change.

Builder's note

I designed this Actor around one report per start URL after building and testing the raw-HTML crawler path. That report-first shape keeps the Dataset useful for a triage queue: it preserves source URLs, timestamps, coverage context, and the highest-priority issue groups without making a downstream system infer meaning from a large raw crawl export.

API and automation

Start a run through the Apify API:

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~screamingfrog-alternative/runs?token=$APIFY_TOKEN" \
-H "content-type: application/json" \
-d '{
"startUrls": [{ "url": "https://example.com" }],
"crawlScope": "page-only",
"maxPages": 1,
"maxDepth": 0,
"fetchMode": "direct"
}'

Read the completed Dataset with the returned defaultDatasetId. For a workflow branch, read the default key-value-store records named OUTPUT and RUN_SUMMARY after the run has finished.

JavaScript example:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('khadinakbar/screamingfrog-alternative').call({
startUrls: [{ url: 'https://example.com' }],
crawlScope: 'page-only',
maxPages: 1,
maxDepth: 0,
fetchMode: 'direct',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

Prompt card for an AI agent

Audit this authorized public website as a raw-HTML technical SEO report. Start at https://example.com, stay on the same hostname, inspect at most 25 pages, respect robots.txt, and return the report outcome, issue counts, priority findings, sample URLs, coverage status, and collection time. If the site requires a logged-in or JavaScript-rendered crawl, explain that this workflow does not support it.

The required starting information is a public URL. The action is read-only. An agent should retrieve the Dataset report and OUTPUT/RUN_SUMMARY after completion rather than infer a result from a terminal status alone.

Limits, reliability, and troubleshooting

  • Raw HTML only: JavaScript rendering is intentionally out of scope. A client-rendered page can have fewer visible signals than a browser-rendered audit.
  • Public access only: No login, cookies, forms-based authentication, private networks, local hosts, or staging environments.
  • Robots policy: With respectRobotsTxt enabled, disallowed paths are skipped. An unreadable public robots file is reported in warnings.
  • Same-hostname boundary: External links and external redirects are not crawled.
  • Bounded coverage: Hitting maxPages makes coverageStatus bounded and the report outcome PARTIAL, even when retrieved pages are valid.
  • Partial retrieval: Exhausted request failures are retained in failureSamples; successful page observations remain available in the report.
  • No output is distinct from success: SUCCEEDED alone is not the audit result. Read the Dataset and terminal records to distinguish complete, partial, empty, and upstream-unavailable runs.
  • No third-party SEO data API: The core uses direct public-page retrieval. The only optional recovery route is an Apify Proxy configuration supplied by the caller; it is not a data provider.

Freshness and provenance

Every report includes its public startUrl and scannedAt timestamp. The report is a current observation of the pages reachable during that run, subject to the page budget, raw-HTML behavior, target availability, robots policy, and selected retrieval route. It is not a historical crawl archive, a search-engine ranking guarantee, or proof of indexation.

Use this Actor only for public pages you are authorized to audit and in compliance with applicable law, target terms, and robots policies. Its intended boundary is publicly reachable content, with access-control and private-network protections preserved. The Actor is read-only and does not provide legal advice.

FAQ

Does this replace the complete Screaming Frog application?

No. It replaces a narrow workflow: producing a current, programmatic technical SEO audit report from an authorized public raw-HTML site. Use the broader desktop suite when its rendering, history, visualisation, integration, or interactive features are required.

Why is the report PARTIAL?

PARTIAL means some usable observations exist, but the requested coverage was bounded or a retrieval warning occurred. Check coverageStatus, pagesFailed, failureSamples, and warnings before treating finding counts as site-wide.

Can I retrieve raw per-page rows?

This Actor keeps its Dataset homogeneous: one report per start URL. For an export of per-URL SEO fields, continue with the Website SEO Spider workflow instead.

Does the Actor use an external SEO API?

No. The core retrieves public raw HTML directly. Apify Proxy is an optional network route, not an SEO data provider.

Your feedback

If a supported public raw-HTML audit produces an unclear report, include the input shape, expected report field, observed OUTPUT outcome, and any relevant warning. Please never include credentials or private URLs in public support messages.

Pricing and run costs

This Actor uses Pay per event plus Apify platform usage. The Pricing tab lists the current event rates and billing terms.

EventBilling unitWhen it applies
apify-actor-startActor StartCharged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).
seo-audit-reportSEO audit reportCharged once for each validated source-linked technical SEO report persisted to the Dataset.

Run cost combines the charged events and Apify platform usage. Review the run charge limit and requested result count before starting.

Connect an AI agent

Use the Apify MCP configurator to choose an available client connection. Inspect this Actor’s current input schema and required credentials before running it.