SEO Audit & Metadata Checker: Title, Meta, Canonical
Pricing
from $3.00 / 1,000 page auditeds
SEO Audit & Metadata Checker: Title, Meta, Canonical
Audit pages or crawl a website for on-page SEO: titles, meta descriptions, canonicals, hreflang, Open Graph, structured data, headings, alt text, redirects, robots and response time. Every page gets clear issues and a 0–100 score.
Pricing
from $3.00 / 1,000 page auditeds
Rating
0.0
(0)
Developer
Pavel Tashev
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
What does SEO Audit & Metadata Checker do?
SEO Audit & Metadata Checker audits web pages for on-page SEO and extracts their metadata: title, meta description, canonical, hreflang, Open Graph, Twitter cards, structured data, headings, image alt text, redirects, robots directives and server response time. Every page gets a list of plain-language issues (error, warning or notice) and a 0–100 SEO score.
Audit a list of pages, or turn on crawling to follow links across a whole website (optionally seeded from its sitemap) and get a site summary with duplicate titles, duplicate meta descriptions, the most common issues and the slowest pages. Because it runs on the Apify platform, you can schedule weekly audits, call it through the API, and send results to Google Sheets, Slack, Make, Zapier or n8n.
Why use this SEO audit tool?
- Find what hurts rankings before Google does: missing or duplicate titles, noindex pages, canonicals pointing elsewhere, redirect chains, pages blocked for Googlebot, broken status codes.
- Check social previews: Open Graph and Twitter card tags for every page.
- Validate structured data: schema.org types from JSON-LD and microdata, and invalid JSON-LD blocks.
- Monitor sites on a schedule and compare scores over time.
- Audit many client sites at once for agencies, or run it before and after a site migration.
- Affordable: pay per page audited, a fraction of the price of most audit tools.
How to audit a website for SEO
- Click Try for free.
- In Pages or websites, enter page URLs or a domain such as
example.com. - To audit a whole site, turn on Crawl the website and set Maximum pages per website.
- Click Start.
- Open the Output tab: Overview shows score and key metrics per page, Issues lists the problems, Metadata and Technical show the details. In crawl mode, the Site summary link opens the per-site report.
Input
| Field | Description | Default |
|---|---|---|
| Pages or websites | Page URLs or domains. | – |
| Crawl the website | Follow same-site links instead of auditing only the listed pages. | off |
| Maximum pages per website | Crawl limit per site (up to 5,000). | 50 |
| Maximum crawl depth | Clicks away from the start page. | 3 |
| Also use the sitemap | Add pages from the sitemap when crawling. | on |
| Include subdomains | Follow links to blog.example.com etc. | off |
| Only crawl / Skip URLs matching | Globs, text or /regex/ patterns. | – |
| Respect robots.txt | Skip pages disallowed for crawlers. Turn off only for your own sites. | on |
| Parallel requests per website | Politeness setting. | 5 |
| Slow response threshold (ms) | Flag slower pages. | 2000 |
| Include full structured data | Add parsed JSON-LD objects. | off |
Example input:
{"startUrls": ["example.com"],"crawl": true,"maxPagesPerSite": 200,"excludePatterns": ["*/tag/*"]}
Output
One item per page. A real example (shortened) from auditing https://www.python.org/about/:
{"url": "https://www.python.org/about/","finalUrl": "https://www.python.org/about/","statusCode": 200,"score": 94,"errors": 0,"warnings": 0,"notices": 3,"indexable": true,"issues": [{ "severity": "notice", "code": "title-too-short", "message": "The title has 26 characters; 30–60 is typical." },{ "severity": "notice", "code": "meta-description-too-short", "message": "The meta description has only 52 characters." },{ "severity": "notice", "code": "missing-canonical", "message": "The page has no canonical link." }],"redirectCount": 0,"responseTimeMs": 112,"title": "About Python™ | Python.org","titleLength": 26,"titlePixelWidth": 220,"metaDescription": "The official home of the Python Programming Language","metaDescriptionLength": 52,"canonical": null,"lang": "en","viewport": "width=device-width, initial-scale=1.0","h1": ["Python is powerful... and fast; plays well with others; runs everywhere; is friendly & easy to learn; is Open."],"h1Count": 1,"wordCount": 692,"openGraph": { "title": "Welcome to Python.org", "image": "https://www.python.org/static/opengraph-icon-200x200.png", "type": "website" },"structuredDataTypes": ["WebSite"],"imagesCount": 1,"imagesMissingAlt": 0,"internalLinks": 163,"externalLinks": 17,"robotsTxtAllowed": true,"mixedContentCount": 0}
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. Pages that could not be loaded, non-HTML files and pages skipped by robots.txt appear with an error message and are not charged.
Checks and data fields
| Area | Fields | Issues flagged |
|---|---|---|
| HTTP | statusCode, redirectChain, redirectCount, responseTimeMs, contentType | http-error, redirect-chain, redirected, slow-response, not-https |
| Indexing | indexable, metaRobots, xRobotsTag, canonical, canonicalIsSelf, robotsTxtAllowed | noindex, nofollow-page, canonical-to-other-url, multiple-canonicals, missing-canonical, blocked-by-robots-txt |
| Title & description | title, titleLength, titlePixelWidth (estimate), metaDescription, metaDescriptionLength | missing-title, empty-title, multiple-titles, title-too-long, title-too-short, missing-meta-description, meta-description-too-long/short, duplicate-title, duplicate-meta-description (crawl) |
| Content | h1, h1Count, headingCounts, wordCount, lang, charset, viewport | missing-h1, multiple-h1, thin-content, missing-lang, missing-viewport, missing-charset |
| International | hreflang | invalid-hreflang |
| Social | openGraph, twitterCard | missing-open-graph |
| Structured data | structuredDataTypes, microdataTypes, structuredData (optional) | invalid-structured-data, no-structured-data |
| Images & links | imagesCount, imagesMissingAlt, internalLinks, externalLinks, nofollowLinks, mixedContentCount, favicon | images-missing-alt, mixed-content |
Score: 100 minus a penalty for each distinct issue type on the page: error −20, warning −8, notice −2 (minimum 0).
Site summary (crawl mode): key-value record SITE_SUMMARY with pages audited, average score, status codes, number of pages per issue, duplicate title and meta description groups, slowest pages and why the crawl stopped.
How much does an SEO audit cost?
This Actor uses pay-per-event pricing: you pay per HTML page audited. Pages that fail to load, return an error status, are not HTML or are skipped by robots.txt are free. See the Pricing tab for the current price per 1,000 pages. You can set a maximum cost per run; crawling stops cleanly when it is reached.
Tips
- Start small: crawl 50 pages first, then raise the limit.
- Large sites: use Skip URLs matching for tag, search and pagination URLs, and keep depth at 2–3.
- Schedule a weekly crawl and compare
averageScorein the site summary. - Staging sites: turn off Respect robots.txt only for sites you own.
Related tools
More website audit tools:
- Broken Link Checker: crawl a website and find broken links, images and redirect chains.
- Sitemap URL Extractor: list every URL of a website from its sitemaps, or only new and removed pages.
- Website Tech Stack Detector: detect the CMS, frameworks, analytics and hosting of any website.
FAQ and limitations
Does it render JavaScript? No. It audits the HTML the server returns, like most search engine crawlers see on the first pass. Content injected later by JavaScript is not included.
Does it measure Core Web Vitals? No. responseTimeMs is the server response time (including redirects), not a Lighthouse score.
Is the title pixel width exact? No, it is an estimate based on average character widths in Google's desktop font.
Does it collect personal data? No emails or phone numbers are extracted. Full structured data is off by default.
Blocked pages? Some sites refuse automated requests (HTTP 403 or 429); these pages are reported with an error and not charged.
Need another check? Open an issue in the Issues tab. Only audit websites you are allowed to crawl.