Meta Tag Audit
Pricing
$3.99/month + usage
Meta Tag Audit
Meta tag audit tool that reads title tags, meta descriptions, Open Graph fields, and Twitter Cards from any webpage, returning character counts, length checks, and a 0-100 SEO score per page.
Meta Tag Audit: Check Meta Tags and SEO Issues on Any Webpage
Meta tag audit tool that reads every tag in a page's HTML head and flags what's broken. Drop in one URL or a batch, and it returns title tags, meta descriptions, Open Graph data, Twitter Cards, canonical URLs, robots directives, viewport settings, and charset for each page. Every field includes a character count and a length check against Google's recommended limits, plus a 0-100 SEO score and a list of issues found.
Use cases
- SEO auditing: check title and description tags across hundreds of pages without opening DevTools on each one
- Content QA: catch missing or oversized titles and descriptions before a page goes live
- Open Graph validation: verify og:title, og:description, and og:image are present for proper social sharing previews
- Technical SEO: detect noindex directives, missing canonical tags, and absent viewport meta in one pass
- Site migrations: audit meta tags after a domain move or CMS switch to spot regressions early
- Competitor research: pull structured meta tag data from competitor pages for analysis
What data does this actor extract?
Each URL produces one output record with the following fields:
- Title tag: text, character count, and status (ok / missing / too_short / too_long)
- Meta description: text, character count, and status
- Open Graph: og:title, og:description, og:image, og:type, og:url
- Twitter Cards: twitter:card, twitter:title, twitter:description, twitter:image
- Canonical URL
- Robots meta directive (noindex, nofollow, etc.)
- Viewport meta content
- Charset
- Hreflang tags (for international SEO)
- Issues list (plain strings, one issue per item)
- SEO score (0-100)
- HTTP status code and error message (if the page failed to load)
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
url | string | Single URL to audit | |
urls | array | List of URLs to audit, one per line | |
maxUrls | integer | 100 | Maximum URLs to process per run |
timeoutSecs | integer | 300 | Total run timeout in seconds |
requestTimeoutSecs | integer | 30 | Per-page request timeout in seconds |
proxyConfiguration | object | Datacenter (Anywhere) | Proxy type and location for requests. Supports Datacenter, Residential, Special, and custom proxies. Optional. |
At least one of url or urls must be provided. Both can be used together.
Example input
{"urls": ["https://apify.com","https://docs.python.org/3/"],"maxUrls": 50,"requestTimeoutSecs": 30,"proxyConfiguration": { "useApifyProxy": true }}
Output
The actor saves one record per URL to the default dataset.
{"url": "https://apify.com/","statusCode": 200,"pageTitle": "Apify: Full-stack web scraping and data extraction platform","titleLength": 58,"titleStatus": "ok","metaDescription": "Cloud platform for web scraping, browser automation, and data extraction. Build, deploy, and monitor your scrapers at scale.","descriptionLength": 123,"descriptionStatus": "ok","metaKeywords": "","canonicalUrl": "https://apify.com/","robotsDirective": "","ogTitle": "Apify: Full-stack web scraping and data extraction platform","ogDescription": "Cloud platform for web scraping, browser automation, and data extraction.","ogImage": "https://apify.com/og-image.png","ogPageType": "website","ogUrl": "https://apify.com/","twitterCard": "summary_large_image","twitterTitle": "Apify","twitterDescription": "Web scraping and automation platform.","twitterImage": "https://apify.com/og-image.png","viewport": "width=device-width, initial-scale=1","charset": "utf-8","hreflang": [],"issues": [],"seoScore": 100,"scrapedAt": "2025-01-15T12:34:56.789000+00:00","errorMessage": ""}
| Field | Type | Description |
|---|---|---|
url | string | Final URL after redirects |
statusCode | integer | HTTP response status code |
pageTitle | string | Text content of the title tag |
titleLength | integer | Character count of the title |
titleStatus | string | ok, missing, too_short, or too_long (30-60 chars is ok) |
metaDescription | string | Meta description content |
descriptionLength | integer | Character count of the description |
descriptionStatus | string | ok, missing, too_short, or too_long (70-160 chars is ok) |
metaKeywords | string | Meta keywords content (deprecated by Google, still extracted if present) |
canonicalUrl | string | Canonical link href |
robotsDirective | string | Robots meta content |
ogTitle | string | Open Graph title |
ogDescription | string | Open Graph description |
ogImage | string | Open Graph image URL |
ogPageType | string | Open Graph type (e.g. website, article) |
ogUrl | string | Open Graph URL |
twitterCard | string | Twitter Card type |
twitterTitle | string | Twitter title |
twitterDescription | string | Twitter description |
twitterImage | string | Twitter image URL |
viewport | string | Viewport meta content |
charset | string | Document charset |
hreflang | array | Hreflang link tags, each with lang and href |
issues | array | SEO issues found, one string per issue |
seoScore | integer | Score from 0 to 100 |
scrapedAt | string | ISO 8601 audit timestamp |
errorMessage | string | Set if the page failed to load |
How it works
- Accepts one or more URLs from the
urlandurlsinputs, deduplicates them, and applies themaxUrlscap - Fetches each page with a realistic browser User-Agent header, following redirects automatically
- Parses the HTML head section with BeautifulSoup
- Extracts the title tag, all meta tags, link tags (canonical, hreflang), and charset declarations
- Checks title and description character counts against Google's recommended ranges
- Evaluates presence of canonical, viewport, Open Graph, and Twitter Card tags
- Computes a 0-100 SEO score and assembles a plain issues list
- Saves the full audit record to the dataset
How the SEO score works
The score starts at 100 and loses points for each missing or out-of-range tag:
| Condition | Points deducted |
|---|---|
| Missing title | 25 |
| Title too short or too long | 10 |
| Missing meta description | 20 |
| Description too short or too long | 8 |
| Missing canonical URL | 5 |
| Missing viewport meta | 5 |
| Missing og:title | 5 |
| Missing og:description | 5 |
| Missing og:image | 5 |
| Missing twitter:card | 5 |
A page with all tags present and within recommended lengths scores 100.
Integrations
Connect Meta Tag Audit with other tools using Apify integrations. You can pipe results into Google Sheets, trigger Slack alerts via Make or Zapier, or sync data with Airbyte. Use webhooks to kick off a downstream action whenever audit results land.
FAQ
What character limits does this actor use for titles and descriptions? Titles between 30 and 60 characters get a status of "ok". Under 30 is "too_short", over 60 is "too_long". For meta descriptions, 70-160 characters is "ok". These match Google's commonly cited recommendations. Google does not publish hard limits, so treat these as guidelines rather than rules.
Does this actor handle JavaScript-rendered pages? No. It fetches raw HTML and parses the static document. Most meta tags are server-rendered and appear in the initial HTML response, so this works for the majority of sites. If a site injects meta tags via JavaScript after page load, those tags will not be captured.
How many URLs can I audit per run?
Up to 1000, controlled by maxUrls. The default is 100. For large batches, consider scheduling multiple runs or increasing maxUrls.
Will websites block this actor? The actor sends requests with a realistic Chrome User-Agent and supports Apify proxies. For sites with aggressive bot detection, switch to Residential proxies in the proxy configuration.
What does a noindex flag mean in the results? If a page's robots meta tag contains "noindex", the issues list will note it. This is not always a problem (login pages and staging sites are often intentionally noindexed), but it is worth checking on pages you expect to rank in search.
Meta tag audits take minutes and often surface quick SEO wins. Run this actor to get a structured snapshot of any site's meta tag coverage before starting optimization work.
