Technical SEO Auditor — Screaming Frog Alternative
Pricing
from $250.00 / 1,000 seo audit reports
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
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.
| Decision | This Actor | Screaming Frog SEO Spider | Best fit |
|---|---|---|---|
| Scope | One bounded public raw-HTML audit report per start URL | Broader desktop crawler suite | Choose this Actor for a compact cloud report; choose the desktop product for wider crawler work. |
| Billing model | Pay per persisted report plus Apify platform usage | Annual per-user desktop licence | Compare the live Pricing tab and the licence terms against the actual crawl volume. |
| Same-job cost | Depends on selected page budget, retrieval route, and platform usage | Depends on licence allocation and the buyer's desktop workflow | Neither model is universally lower cost; evaluate the same workload. |
| Input | Public HTTP(S) start URL and documented crawl settings | Desktop product workflow and configuration | This Actor suits a JSON/API handoff; the desktop interface suits interactive crawling. |
| Output | One Dataset report with issue counts, source-linked samples, timestamps, and terminal records | Desktop crawl reports and exports | Use this Actor when one structured report is the downstream entity. |
| Automation | Repeatable Actor input with API-accessible Dataset and terminal records | Desktop scheduling and integration features | Use the route that fits the existing operator workflow. |
| Reliability evidence | Terminal outcomes, warnings, Dataset, OUTPUT, and RUN_SUMMARY are explicit | No comparative reliability test is asserted here | Interpret 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
| Field | Required | Meaning |
|---|---|---|
| startUrls | Yes | One to five authorized public HTTP(S) URLs. Each accepted URL produces at most one report. |
| crawlScope | No | same-hostname follows only exact-hostname HTML links; page-only audits only the supplied URLs. |
| maxPages | No | Per-report hard cap from 1 to 100. Reaching it is marked as bounded coverage. |
| maxDepth | No | Same-hostname link hops from the seed. 0 means the seed only. |
| maxConcurrency | No | Parallel requests per start URL. Lower it for a rate-limited target you are authorized to audit. |
| respectRobotsTxt | No | Reads a public robots policy before enqueueing matching paths. Keep it enabled unless you have authority to do otherwise. |
| ignoreUrlParameters | No | Removes query strings for deduplication so tracking variants stay outside the page budget. |
| fetchMode | No | direct is the lower-cost default; residential uses Apify Proxy and can add platform usage. |
| proxyConfiguration | No | Optional 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
| Field | Meaning |
|---|---|
| reportId | Identifier for the audit snapshot. |
| outcome | COMPLETE, PARTIAL, VALID_EMPTY, or UPSTREAM_FAILED. |
| startUrl and scannedAt | Source URL and collection timestamp for freshness and provenance. |
| pagesCrawled, pagesFailed, maxPages, coverageStatus | Bounded coverage context for interpreting the report. |
| issueCounts | Totals by severity and finding code. |
| priorityFindings | Up to ten issue groups ranked by severity and affected-page count, with sample source URLs. |
| pageSamples | A small set of observed page URLs, statuses, titles, link depth, and finding codes. |
| failureSamples and warnings | Retrieval, 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.
Legal and responsible use
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.
| Event | Billing unit | When it applies |
|---|---|---|
apify-actor-start | Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). |
seo-audit-report | SEO audit report | Charged 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.