On-Page SEO Audit – Bulk Meta Tags, Headings & Schema Checker
Pricing
from $2.00 / 1,000 audited pages
On-Page SEO Audit – Bulk Meta Tags, Headings & Schema Checker
Audit any list of URLs for on-page SEO: titles, meta descriptions, H1s, canonicals, robots/noindex, hreflang, JSON-LD schema, Open Graph, image alt text, links, redirects and speed basics. Score plus prioritised issues.
Audit hundreds or thousands of URLs for on-page SEO in one run. For every page you get a score from 0 to 100, a prioritised list of issues (errors → warnings → notices) and all the raw SEO facts, ready to export to CSV, Google Sheets or your dashboard.
What it checks on each page:
- Title tag: missing, too short or too long, multiple titles. Meta description: missing, length.
- Headings: H1 present or multiple, H1 vs title, skipped heading levels, H1–H6 counts.
- Indexability: meta robots / googlebot, X-Robots-Tag header, noindex/nofollow, canonical (missing, multiple, pointing elsewhere), HTTP status, redirect chains.
- International:
<html lang>, hreflang codes and self-reference. - Structured data: JSON-LD blocks and @type list (Article, Product, FAQPage, BreadcrumbList...), invalid JSON-LD, microdata types.
- Social previews: Open Graph (og:title, og:image...) and Twitter Card tags.
- Content: visible word count, thin content, text-to-HTML ratio.
- Images and links: images without alt text (with a sample list), lazy-loading, internal/external/nofollow links, links without anchor text.
- Tech basics: HTTPS, mixed content, HSTS, compression, HTML size, server response time, viewport, charset, favicon.
- Run summary: average score, duplicate titles and duplicate meta descriptions across all audited pages.
Why this Actor
- 💸 $2 per 1,000 pages. Popular SEO audit Actors charge $10–$40 per 1,000 pages.
- ⚡ Fast and light. Plain HTTP with no headless browser, so a 1,000-page audit takes minutes.
- 🧾 Actionable output. Every issue has a code, a severity and a human-readable message. The Issues view gives one row per issue, perfect for sorting and filtering.
- 🤝 Polite. Respects robots.txt by default, fetches each listed URL once (no crawling), identifies itself, and uses timeouts.
- 🤖 Agent-friendly. Structured JSON that AI agents and automations (Make, Zapier, n8n, MCP) can act on.
Input
{"urls": ["https://wordpress.org/news/", "https://www.gov.uk/", "apify.com"],"includeNotices": true}
| Field | Default | Description |
|---|---|---|
urls | – | Page URLs to audit (required). Up to 20,000. Bare domains get https://. |
includeNotices | true | Include low-priority suggestions |
respectRobotsTxt | true | Skip disallowed pages (not charged) |
maxConcurrency | 5 | Parallel requests |
timeoutSecs | 30 | Per page |
Tip: to audit a whole site, first list its URLs with a sitemap extractor (e.g. Sitemap URL Extractor) and paste them here.
Output (one row per page, shortened)
{"url": "https://www.gov.uk/","statusCode": 200,"score": 88,"issueCounts": { "error": 0, "warning": 1, "notice": 2 },"issues": [{ "severity": "warning", "code": "TITLE_TOO_SHORT", "message": "Title is 15 characters (aim for 30–60)." },{ "severity": "notice", "code": "META_DESCRIPTION_SHORT", "message": "Meta description is 64 characters (aim for 70–160)." }],"title": "Welcome to GOV.UK","metaDescription": "GOV.UK - The place to find government services and information","h1": ["..."],"headings": { "h1": 1, "h2": 6, "h3": 12, "h4": 0, "h5": 0, "h6": 0 },"canonical": "https://www.gov.uk/","robots": { "meta": null, "xRobotsTag": null, "indexable": true, "follow": true },"hreflang": [],"wordCount": 412,"images": { "total": 3, "withoutAlt": 0, "lazyLoaded": 0, "withoutAltSample": [] },"links": { "internal": 58, "external": 4, "nofollow": 0, "emptyAnchorText": 0 },"structuredData": { "jsonLdBlocks": 1, "jsonLdTypes": ["WebSite"], "invalidJsonLd": 0, "microdataTypes": [] },"openGraph": { "title": "...", "image": "..." },"redirects": [],"responseTimeMs": 61,"status": "ok"}
Issue codes include:
- Errors:
HTTP_ERROR,NOT_HTTPS,TITLE_MISSING,H1_MISSING,NOINDEX. - Warnings:
TITLE_TOO_LONG,META_DESCRIPTION_MISSING,CANONICAL_MISSING,REDIRECT_CHAIN,IMAGES_WITHOUT_ALT,MIXED_CONTENT,SLOW_RESPONSE,INVALID_JSON_LD,HREFLANG_INVALID,VIEWPORT_MISSING,LANG_MISSING. - Notices:
NO_STRUCTURED_DATA,OPEN_GRAPH_INCOMPLETE,THIN_CONTENT,HSTS_MISSING,NO_COMPRESSIONand more.
Score: starts at 100 and loses 12 points per error, 5 per warning and 1 per notice.
Pricing
Pay per event, plus a tiny Actor start fee ($0.00005 per GB of memory):
- Audited page: $0.002 per page ($2 per 1,000 pages), compute included.
- Pages that return HTTP 4xx/5xx, time out, don't resolve, aren't HTML or are blocked by robots.txt are reported but not charged.
- Set a maximum cost per run to cap spend; the Actor stops cleanly when it's reached.
Limitations (honest)
- No JavaScript rendering. The audit sees the HTML as served, which is what most search-engine first passes and all social previews see. Content injected only by client-side JavaScript isn't counted.
- One page per URL, no crawling. Combine with a sitemap extractor for full-site audits. Broken outbound links are not checked; use a broken-link checker for that.
- Not a Lighthouse/Core Web Vitals test. Response time is server time-to-HTML, not page-load metrics.
- Heuristic thresholds (e.g. title 30–60 characters) follow common SEO guidelines and are not search-engine rules.
FAQ
Can I audit a competitor's site? It fetches public pages like a normal visitor and respects robots.txt by default. Use it responsibly and keep concurrency low for small sites.
Can I schedule it? Yes. Run it weekly on your key pages with Apify Schedules and compare scores over time.