Skip to content

Auditing the head of a page without a browser

4 min read API guides

page head
page head

Most search problems announce themselves in the head of a page: a title that runs past the snippet, a missing canonical, a noindex left over from staging, a social image that was never added. Opening the page in a browser and reading the source works for one URL. A project with a template, a plugin and three languages needs a repeatable check.

The page meta endpoint reads one page and returns what a crawler and a social network see: title, description, canonical, robots, language, viewport, hreflang pairs, Open Graph and Twitter tags, JSON-LD types, headings, images and links. It runs one request and parses the HTML on the API side.

Length, with the preview

Character counts alone are not enough, because search engines cut at a pixel width rather than a fixed number. The response returns both counts and a preview trimmed at 60 and 160 characters on a word boundary. That preview shows the part a reader would actually see, which is where an over-long title stops being abstract.

// response excerpt
"serp": {
    "title_chars": 74,
    "description_chars": 182,
    "title_over_limit": true,
    "title_preview": "How to audit the head of a page and every meta tag ..."
}

The endpoint does not promise a pixel measurement. It gives a consistent character check that catches the common case and leaves the exact rendering to the tool that a team already trusts.

Beyond the meta tags

Canonical and hreflang matter on sites with translations, filters or pagination. The endpoint returns the canonical link and a list of hreflang pairs, so a missing x-default or a self-referencing alternate is visible in the same answer.

Headings are counted, with the text of the first H1. Zero H1 is a defect on most templates, and several H1 on one page usually means a heading level was used for styling in the body content.

JSON-LD is validated for syntax and the @type values are collected, including items inside @graph. A single broken JSON-LD block is worse than a missing one: it removes every rich result on the page and leaves no visible symptom.

Images and links

Images are counted with three separate defects: no alt attribute, an empty alt used for decoration, and missing width or height. The last one is a layout stability issue rather than an accessibility one, and it appears in pages built without a design system.

Links are split into internal and external, and nofollow is counted. That is enough to notice a template that accidentally marks every link nofollow, which happens after a plugin change more often than an audit would suggest.

What the issues list is for

The issues array names the concrete problems, in the language of the fix: missing title, over-long description, no canonical, robots meta disables indexing, no H1, no language attribute, no viewport, no og:image, images without alt, broken JSON-LD.

A CI check can read the list and fail a build. A weekly review can read it without parsing the rest of the payload.

Limits and privacy

Redirects are followed and the HTML limit is 2 MB. Only the page the client asked about is fetched: the endpoint does not crawl links, does not run scripts and does not load assets. Answers are cached for an hour, which is long enough to make a repeated report cheap and short enough for a deployment check.

Private and reserved hosts are refused, so the endpoint cannot be used to read an internal page.

The catalogue page has the parameter table and a live example: page meta API.

Custom work

Need an API that does not exist yet?

Describe the task and the response format. We will estimate the endpoint, the integration and the maintenance.

Start a conversation