On-Page SEO Audit – Bulk Meta, Headings & Schema Checker avatar

On-Page SEO Audit – Bulk Meta, Headings & Schema Checker

Pricing

from $2.00 / 1,000 page auditeds

Go to Apify Store
On-Page SEO Audit – Bulk Meta, Headings & Schema Checker

On-Page SEO Audit – Bulk Meta, Headings & Schema Checker

Crawl URLs or a sitemap and score each page 0-100 for on-page SEO: title, meta description, H1, canonical, robots/noindex, hreflang, Open Graph, JSON-LD, image alt text and duplicates, with concrete fixes. $3 per 1,000 pages; failed pages are free.

Pricing

from $2.00 / 1,000 page auditeds

Rating

0.0

(0)

Developer

Chris Elder

Chris Elder

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

Share

On-Page SEO Audit – bulk meta tags, headings & schema checker

On-Page SEO Audit checks hundreds or thousands of pages for on-page SEO problems in minutes – no browser, no API key, no proxies. Give it a list of URLs, a whole website (it crawls internal links) or its XML sitemap, and get one clean row per page with a 0–100 SEO score, every issue with its severity, and a concrete fix for each one.

It is a lightweight, pay-per-page Screaming Frog / Sitebulb alternative for the checks that matter most: titles, meta descriptions, H1–H6, canonical tags, noindex / X-Robots-Tag, robots.txt, hreflang, Open Graph and Twitter cards, JSON-LD / schema.org structured data, image alt text, empty links, mixed content, thin content, redirects, slow responses and duplicate titles and descriptions across the site.

What does the SEO audit check?

AreaChecks
Titles & metamissing / too short / too long title, multiple titles, missing / short / long / duplicate meta description
Headingsmissing, empty or multiple H1, skipped heading levels, H1–H6 counts
IndexabilityHTTP status, redirect chains, noindex / nofollow in meta robots and X-Robots-Tag header, robots.txt blocking, canonical missing / pointing elsewhere / multiple
International<html lang>, hreflang alternates and missing self-reference
Social & rich resultsOpen Graph (og:title, og:image…), Twitter cards, JSON-LD and microdata types, invalid JSON-LD
Content & UXword count (thin content), images without alt, links without anchor text, meta viewport (mobile), HTTPS, mixed content, HTML size, server response time
Linksinternal / external / nofollow link counts (and crawl of internal links)

Every issue comes with a code, severity (critical / high / medium / low), a human-readable message and a fix. The score starts at 100 and subtracts 20 / 10 / 5 / 2 points per critical / high / medium / low issue.

Who is it for?

  • SEO agencies & freelancers – audit client sites and prospects in bulk, export to Google Sheets or Excel, re-run monthly on a schedule
  • In-house SEO & content teams – find pages with missing descriptions, duplicate titles or accidental noindex before Google does
  • Developers & QA – add an SEO regression check to your release pipeline via the API (fail the build if the score drops)
  • AI agents (MCP) – a fast, deterministic "audit this URL's SEO" tool

How much does it cost?

$3 per 1,000 audited pages ($0.003 per page) plus $0.0005 per run – up to 13× cheaper than the most popular SEO audit tool on the Store ($0.04 per page). Higher Apify plans get automatic discounts (Silver $0.0025, Gold+ $0.002 per page).

JobPrice
100 pages~$0.30
1,000 pages~$3
10,000 pages~$30

You only pay for successfully audited HTML pages (HTTP 2xx). Pages that time out, return 4xx/5xx, are not HTML (PDFs, images) or are blocked by robots.txt are listed in the dataset for free. Set Max pages or Apify's Max cost per run to cap spending – the Actor stops cleanly at the limit.

How to use it

  1. Click Try for free.
  2. Add one or more URLs.
  3. Choose the mode:
    • List mode (default) – audits exactly the URLs you entered;
    • Crawl the website – follows internal links from the start URL up to Max pages / Max crawl depth;
    • Add pages from the sitemap – pulls URLs from the site's XML sitemap (found via robots.txt).
  4. Optionally restrict with include/exclude regex patterns (e.g. only /blog/) and adjust thresholds (title 30–60 chars, description 70–160 chars by default).
  5. Click Start. Open the SEO overview table (one row per page) or the Issues & fixes table (one row per issue), and export to JSON, CSV, Excel or Google Sheets.

Input example

{
"startUrls": [{ "url": "https://www.example.com" }],
"crawl": true,
"useSitemap": true,
"maxPages": 500,
"excludeUrlPatterns": ["/tag/", "\\?page="]
}

Output example (shortened)

{
"url": "https://example.com",
"finalUrl": "https://example.com",
"statusCode": 200,
"score": 64,
"issueCount": 7,
"indexable": true,
"title": "Example Domain",
"titleLength": 14,
"metaDescription": null,
"h1": [],
"canonical": null,
"canonicalStatus": "missing",
"structuredDataTypes": [],
"wordCount": 25,
"responseTimeMs": 11,
"issues": [
{ "code": "TITLE_TOO_SHORT", "severity": "medium", "message": "Title is 14 characters (min 30).", "fix": "Expand the title with the main keyword and brand." },
{ "code": "META_DESCRIPTION_MISSING", "severity": "high", "message": "No meta description.", "fix": "Add a compelling meta description of 70–160 characters." },
{ "code": "H1_MISSING", "severity": "high", "message": "No <h1> heading.", "fix": "Add one <h1> that describes the page topic." }
],
"openGraph": {}, "twitterCard": {}, "hreflang": [],
"images": { "total": 0, "missingAlt": 0 },
"links": { "internal": 0, "external": 1, "nofollow": 0, "emptyAnchor": 0 }
}

A RUN_SUMMARY record in the key-value store lists the most frequent issues across the site, failures and counts – a ready-made executive summary.

📊 Want these results in Google Sheets? Send them straight to a Sheet with Google Sheets Sync – run it after this Actor, or add it on this Actor's Integrations tab so every run exports automatically.

Polite by default

  • One request at a time per host with a 500 ms delay, at most 4 pages in parallel overall
  • Honest User-Agent (OnPageSeoAuditBot) and robots.txt respected (turn off only for sites you own)
  • Retries with back-off, Retry-After honoured, 8 MB page cap, private/internal addresses refused

Tips

  • JavaScript-heavy sites: the audit reads the HTML that the server sends (what most crawlers see first). If a single-page app renders titles only in the browser, those pages will show as missing titles – which is itself a real SEO risk worth fixing.
  • Monitoring: schedule a weekly run and send the dataset to Slack, Google Sheets or a webhook through Apify integrations.
  • Pair it with our Sitemap URL Extractor, Broken Link Checker and Bulk Lighthouse Auditor for a complete technical SEO toolkit.

The Actor fetches public web pages the same way a search engine crawler does, respects robots.txt, keeps load minimal and collects no personal data. Audit sites you own or are authorised to review, and follow each website's terms. See Is web scraping legal?.

FAQ

Does it render JavaScript? No – it is fast and cheap because it parses server HTML. For performance and Core Web Vitals use a Lighthouse-based audit.

Can I use it through the API, Make, Zapier, n8n or with AI agents? Yes – like every Apify Actor.

Found a false positive or want a new check? Open an issue on the Issues tab with the URL; we respond quickly.

Need the data done for you?

If you'd rather not set up runs yourself, the UK company behind these tools (GPT Shop Ltd) offers a fixed-price done-for-you scrape. Tell us the website and the fields you need, and you get a clean CSV or Google Sheet within 48 hours of the confirmed brief, up to 5,000 rows, for £149 or $179. If we can't get the data, you're refunded in full. See the done-for-you scraper service