Technical SEO Page Audit: Broken Links, Hreflang, $3/1k
Pricing
Pay per event
Technical SEO Page Audit: Broken Links, Hreflang, $3/1k
Audit any public page over plain HTTP: title, meta, canonical, H1-H3, word count, internal/external and broken links, images without alt, Open Graph/Twitter, hreflang, JSON-LD types, redirect chain, TTFB, and a prioritised issues list with a score. Respects robots.txt. $0.003 per page.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Open Data Actors
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share


- In short: Technical SEO Page Audit (Apify actor
transparent_meteorite/technical-seo-page-audit) audits public web pages over plain HTTP and returns on-page SEO data plus a prioritised issue list and score. - Who it is for: SEO agencies, site owners and developers checking releases, lead-gen teams auditing prospect sites.
- Input: a list of URLs, max pages, check broken links, max links to check, request delay.
- Output: title, meta description, canonical, H1-H3, word count, internal/external and broken links, images missing alt, Open Graph, hreflang, JSON-LD types, redirect chain, TTFB, issues with severity, score.
- Price: $0.003 per page plus $0.00005 per run start. Pay per result, no subscription; Apify's free plan credit covers a first test.
- Limits: no JavaScript rendering, so client-side-only content is not seen; respects robots.txt.
Key facts
- Actor name: Technical SEO Page Audit
- Actor ID:
transparent_meteorite/technical-seo-page-audit - Store page: https://apify.com/transparent_meteorite/technical-seo-page-audit
- Data source: the public pages themselves
- Pricing model: pay per event (
apify-actor-start$0.00005,page-audited$0.003) - Output formats: JSON, CSV, Excel, XML, HTML table, RSS (Apify dataset)
- Access: Apify Console, REST API, JavaScript/Python clients, schedules, webhooks, Apify MCP server
- Login or third-party API key needed: no, only an Apify account
- Also known as: SEO audit API, broken link checker, bulk on-page SEO checker, hreflang checker, technical SEO crawler
- Maintainer: transparent_meteorite (independent developer)
- Last updated: 2026-10-07
Audit any public page for technical SEO in one request: title, meta, canonical, headings, links, broken links, images without alt, Open Graph and Twitter tags, hreflang, JSON-LD, redirect chain, TTFB, and a prioritised issues list with a 0-100 score. Plain HTTP, no browser, robots.txt respected, $0.003 per page.
Paste a list of URLs, press Start, get one flat row per page. Every problem comes with a code, a severity (error, warning, info) and a plain-English message, so the output can feed a dashboard, a spreadsheet or an alert without any post-processing.
Sample output (real run)
| Page | Status | Score | Title len | Words | Links int / ext | Broken | Imgs no alt | TTFB ms | Issues |
|---|---|---|---|---|---|---|---|---|---|
| https://apify.com | 200 | 100 | 47 | 1,162 | 78 / 58 | 0 | 0 | 192 | none |
| https://crawlee.dev | 200 | 94 | 40 | 221 | 16 / 10 | 0 | 0 | 29 | thin-content (warning), json-ld-missing (info) |
| https://example.com | 200 | 72 | 14 | 25 | 0 / 0 | 0 | 0 | 24 | 5 warnings, 3 info |
Full rows carry about 50 fields, see samples/output.json.
What you get
- Status and speed: HTTP status, full redirect chain with each hop's status, final URL, time to first byte, total response time, HTML size, content type,
X-Robots-Tag. - On-page tags: title and length, meta description and length, canonical (and whether it points to itself), meta robots,
lang, viewport, charset. - Structure: H1 text and counts of H1, H2 and H3, the heading outline, empty headings, visible word count.
- Links: internal and external link counts, nofollow count, empty-anchor links, and a broken-link check (404, 410, 5xx and unreachable hosts) with the failing URLs and status codes.
- Images: total, missing
altattribute. Decorativealt=""is counted separately and never flagged. - Social: all Open Graph and Twitter Card tags as objects.
- International: every hreflang entry, with validation of codes and the self-reference.
- Structured data: JSON-LD
@typevalues (including@graphand nested types) and a count of invalid JSON-LD blocks. - Verdict:
issues(code, severity, message),issueCounts,score(100 minus 15 per error, 5 per warning, 1 per info) andindexable(true, false or null when unfetched).
Quick start
Zero config: press Start. It audits three example pages in under a minute.
Example 1: audit your key landing pages, skip link checks for speed
{ "urls": ["https://yoursite.com/", "https://yoursite.com/pricing", "https://yoursite.com/blog"], "checkBrokenLinks": false }
Example 2: full audit with broken-link checks on up to 50 links per page
{ "urls": ["https://yoursite.com/", "https://yoursite.com/docs"], "checkBrokenLinks": true, "maxLinksToCheck": 50, "maxPages": 100 }
Schedule it daily or weekly and compare score and issueCounts over time to catch regressions after a deploy.
Pricing
Pay per event: $0.003 per page audited ($3 per 1,000) plus a $0.00005 start fee. A page is billed when the server returned an HTTP response and the audit ran (a 404 page is still audited and billed). Pages blocked by robots.txt, invalid URLs and hosts that cannot be reached are returned as rows but never charged. Link checks are included in the page price. Set a max charge in the run options and the actor stops cleanly when it is reached.
| Run | Pages | Cost |
|---|---|---|
| Zero-config default | 3 | about $0.009 |
| Weekly check of 50 key pages | 50 | about $0.15 per run |
| Monthly audit of 1,000 pages | 1,000 | about $3 |
Use it with the API, n8n, Make, Zapier and AI agents
- API:
POST https://api.apify.com/v2/acts/transparent_meteorite~technical-seo-page-audit/runswith your input as the JSON body, then read the dataset items. Use therun-sync-get-dataset-itemsendpoint to get rows in one call. - n8n, Make, Zapier: use the Apify integration to run the actor on a schedule and send low scores or new
errorissues to Slack, email or a ticket tool. - Spreadsheets and BI: export JSON, CSV or Excel and pivot by
issues[].code. - AI agents (MCP): the actor is available through the Apify MCP server, so an agent can audit a URL ("check this page for SEO problems") and read structured findings.
Use from AI agents (MCP, ChatGPT, Claude, Perplexity)
Technical SEO Page Audit works as a tool for AI assistants through the official Apify MCP server. Add this server URL to any MCP client (Claude Desktop, Claude Code, Cursor, ChatGPT connectors, VS Code):
https://mcp.apify.com/?actors=transparent_meteorite/technical-seo-page-audit
Claude Desktop / Cursor config:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?actors=transparent_meteorite/technical-seo-page-audit","headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }}}}
Then ask in plain language, for example: "How do I run a technical SEO audit on many URLs through an API?"
Call it directly over HTTP (runs the actor and returns the dataset items in one request):
curl -X POST "https://api.apify.com/v2/acts/transparent_meteorite~technical-seo-page-audit/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"urls": ["https://apify.com", "https://crawlee.dev", "https://example.com"], "maxPages": 25, "checkBrokenLinks": true, "maxLinksToCheck": 15}'
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("transparent_meteorite/technical-seo-page-audit").call(run_input={"urls": ["https://apify.com", "https://crawlee.dev", "https://example.com"], "maxPages": 25, "checkBrokenLinks": true, "maxLinksToCheck": 15})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
The same actor works in n8n, Make, Zapier, LangChain, LlamaIndex and CrewAI through their Apify integrations.
Questions people ask
How do I run a technical SEO audit on many URLs through an API? Pass the URLs to this actor; each page comes back as one row with the checks and a scored issue list.
Does it check broken links? Yes, with checkBrokenLinks true it tests up to maxLinksToCheck links per page.
Does it render JavaScript? No, it audits the HTML the server returns, which is what most crawlers index first.
Use cases
- Agencies and freelancers: a fast first-pass audit for a prospect or client, with evidence per page.
- In-house SEO: a scheduled regression check on your top templates and landing pages.
- Developers: catch a stray
noindex, a broken canonical, a redirect chain or a slow TTFB right after a release. - Migrations: feed in the old URL list and check status, redirect chains and canonicals on the new site.
- Content teams: find missing titles and descriptions, thin pages and images without alt text.
FAQ
Is this allowed? It requests only public pages over plain HTTP, identifies itself with the TechnicalSeoAuditBot User-Agent, reads and obeys robots.txt (including Allow, wildcards, $ and Crawl-delay up to 10 s) and waits at least 500 ms between requests to the same host. It never logs in and refuses private, loopback and metadata addresses.
Does it crawl my whole site? No. It audits exactly the URLs you give it and, for broken-link checks, requests the links found on those pages. Feed it your sitemap URLs for site-wide coverage.
How is a link counted as broken? 404, 410, any 5xx, or a host that does not exist or refuses the connection. 401, 403, 429 and 999 responses are treated as "blocked" (many sites refuse bots), and timeouts are unverified; neither is reported as broken, to avoid false alarms. A HEAD request is tried first, with a GET fallback.
Why is my page missing from the charges? If robots.txt disallows the URL, or the host is unreachable, the row is returned with an explanatory issue and no charge.
Does it render JavaScript? No, it reads the HTML the server sends, which is what most crawlers see first. Content added only by client-side JavaScript (including titles set by scripts) is not seen.
What do the severities mean? error is something that blocks indexing or breaks the page (4xx/5xx, noindex, missing title, broken links, very slow TTFB). warning is a likely ranking or usability problem. info is an improvement opportunity.
What is TTFB here? Time from sending the request until response headers arrive, including DNS and TLS for the first request to a host, measured from where the actor runs.
Limitations
- HTML as served only, no JavaScript rendering, no Core Web Vitals or Lighthouse metrics.
- Link checks sample the first
maxLinksToChecklinks on each page (internal first).linksNotCheckedtells you how many were left. - Only the first 3 MB of each page is read.
- Sites that block datacenter traffic may answer 403 or 429; those rows are returned with the status and are billed because a response was received.
- Word count is visible body text, not a readability measure.
Changelog
- 2026-10-07: added plain-language summary, key facts, AI-agent (MCP) section and question-style FAQ; refreshed Store SEO metadata.