🎉 Limited time — 20% off all plans. View pricing →
Docs · SEO

On-page SEO meta audit

Score a page's SEO meta fields A–F: title, meta description, canonical, H1, Open Graph, robots.

POST /v1/seo/meta-audit

Fetches the page (follows redirects so the final landing page is graded), parses the head with BeautifulSoup, and scores 0–100 across nine criteria: title length 30–60, meta description 120–160, exactly one H1, canonical present, og:image / og:title / og:description, viewport tag, and not-noindex. Returns the raw values plus a flat list of issues for the customer to fix.

Premium residential proxy: pass use_residential_proxy: true to fetch via our partner residential pool — useful for sites that block our default crawler. Bills +3 credits (4 total) per premium call. The response field proxy_used indicates which pool was used.

Parameters

Name Type Required Default Description
url string yes Page URL to audit.
use_residential_proxy boolean no false Premium fetch via residential IP pool. Bills +3 credits. Use when the site blocks our default crawler.

Request

curl -X POST https://api.qcrawl.com/v1/seo/meta-audit \
  -H "Authorization: Bearer osk_..." \
  -d '{"url": "https://qcrawl.com/architecture/"}'

Response

{
  "status": "success",
  "url": "https://qcrawl.com/architecture/",
  "final_url": "https://qcrawl.com/architecture/",
  "score": 95,
  "grade": "A",
  "title": "How Qcrawl is built — architecture, reliability, and operational guarantees",
  "title_length": 73,
  "meta_description": "A plain-language tour of how Qcrawl serves scraping...",
  "meta_description_length": 158,
  "h1_count": 1,
  "h1_text": "How Qcrawl is built.",
  "canonical": "https://qcrawl.com/architecture/",
  "robots_directive": null,
  "is_indexable": true,
  "viewport": "width=device-width,initial-scale=1",
  "og_image": "https://qcrawl.com/og-default.png",
  "og_title": "How Qcrawl is built",
  "og_description": "Subsystems, design principles, and operational guarantees.",
  "issues": ["Title is 73 characters; aim for 30–60."]
}

Errors

Code Meaning
400 URL blocked by SSRF guard.
500 Page fetch failed or returned a non-2xx response.

Related