Skip to content
SEO Optimizer is live, Audit on page SEO and AI-search readiness. Try it free
Scanverra
SEO Optimizer

API Reference

SEO Optimizer

Analyzes a page's on-page SEO, GEO/AI-search readiness, and E-E-A-T trust signals, with optional JavaScript rendering, keyword/competitor comparison, and Google Search Console data.

POST/api/seo-optimizerasync

Starts a scan - on-page SEO, GEO, E-E-A-T, and optional JS rendering

docsApiSeoOptimizer.scanCallout

Request body

{
  "url": "https://example.com/page",
  "keyword": "target keyword",
  "competitorUrl": "https://competitor.com/page",
  "renderJs": false
}

Response (immediate)

{
  "scanId": "clxyz..."
}

Example

curl -X POST https://www.scanverra.com/api/seo-optimizer \
  -H "X-API-Key: sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/page","keyword":"widgets"}'
GET/api/seo-optimizersynchronous

Fetches a scan's status and full results once complete

Query params

?id={scanId}

Response

{
  "id": "clxyz...",
  "status": "done",
  "score": 88,
  "pageData": {...},
  "findings": [...],
  "keywordAnalyses": [...],
  "crawlability": {...},
  "aiSuggestions": {...},
  "competitorPageData": {...},
  "competitorFindings": [...]
}

status is running, done, or failed. pageData, findings, and aiSuggestions are only populated once status is done.

Example

curl "https://www.scanverra.com/api/seo-optimizer?id=clxyz..." \
  -H "X-API-Key: sk_live_..."

Optional request fields

keyword: comma-separated target keywords to check placement/density for. competitorUrl: a second URL to scan and compare against in the same report. renderJs: set to true to render the page in a headless browser first - slower, but sees content that a plain fetch would miss on React/Vue/SPA sites.