On Page SEO Analysis API | Website SEO Audit API - Version 2.0 - VebAPI

On Page Analysis

Comprehensive on-page SEO analysis including meta tags and issues.

On Page Analysis

GET Version: 2.0
GET /seo/analyze/v2

Parameters

website
Required query
string

The website URL to analyze (Do NOT Include http:// or https://)

X-API-KEY
Required header
string

Your Vebapi api key

Example Request


curl -X GET "https://vebapi.com/api/seo/analyze/v2?website=vebapi.com" \
  -H "X-API-KEY: YOUR_API_KEY" \
  -H "Content-Type: application/json"

Response

{
    "summary": {
        "overall_score": 87,
        "grade": "B",
        "priority_issues": [
            "Canonical tag missing.",
            "Missing alt text on 1 images.",
            "No JSON-LD schema found.",
            "Render-blocking scripts found (1)."
        ]
    },
    "scores": {
        "overall": 87,
        "buckets": {
            "performance": 85,
            "technical": 70,
            "onpage": 85,
            "security": 100,
            "ai_readiness": 100,
            "accessibility": 100
        },
        "weights": {
            "performance": 15,
            "technical": 25,
            "onpage": 25,
            "security": 10,
            "ai_readiness": 15,
            "accessibility": 10
        }
    },
    "basic": {
        "requested_url": "https://vebapi.com/",
        "final_url": "https://vebapi.com/",
        "http_code": 200,
        "title": "VebAPI \u2013 All\u2011in\u2011One SEO API for Developers & SaaS",
        "favicon": "https://vebapi.com/1favicon.png",
        "canonical": null
    },
    "meta": {
        "analyzed_url": "https://vebapi.com/",
        "generated_at_utc": "2026-02-14T01:33:17+00:00",
        "duration_ms": 4038,
        "engine": "single-page-seo-ai-audit-v3",
        "server": "Europe",
        "handler": "Vebapi.com"
    },
    "headings": {
        "counts": {
            "h1": 1,
            "h2": 4,
            "h3": 42,
            "h4": 0,
            "h5": 0,
            "h6": 0
        },
        "data": {
            "h1": [
                "Complete SEO Analysis in One Powerful API"
            ],
            "h2": [
                "Most Popular APIs",
                "Why developers choose VebAPI",
                "Simple, Transparent Pricing",
                "Frequently Asked Questions"
            ],
            "h3": [
                "On Page SEO Analysis",
                "Search Keyword Research",
                "Keyword Research Youtube",
                "Website Speed Check",
                "Keyword Research Endpoints",
                "Related Keywords",
                "Keyword Research - Single",
                "Keyword Density Checker",
                "SEO API Endpoints",
                "On Page Analysis",
                "Onpage Website Audit"
            ],
            "h4": [],
            "h5": [],
            "h6": []
        },
        "hierarchy": {
            "ok": true,
            "issues": []
        }
    },
    "links": {
        "counts": {
            "total": 69,
            "internal": 68,
            "external": 1,
            "nofollow": 0,
            "sponsored": 0,
            "ugc": 0,
            "empty_text": 1,
            "hash_only": 1,
            "mailto_tel_js": 0
        },
        "empty_anchors": [
            "/"
        ],
        "sample": [
            {
                "href": "/",
                "abs": "https://vebapi.com/",
                "text": "",
                "rel": "",
                "internal": true
            },
            {
                "href": "/#features",
                "abs": "https://vebapi.com/#features",
                "text": "Features",
                "rel": "",
                "internal": true
            },
            {
                "href": "/#endpoints",
                "abs": "https://vebapi.com/#endpoints",
                "text": "Endpoints",
                "rel": "",
                "internal": true
            },
            {
                "href": "/#pricing",
                "abs": "https://vebapi.com/#pricing",
                "text": "Pricing",
                "rel": "",
                "internal": true
            },
            {
                "href": "/playground",
                "abs": "https://vebapi.com/playground",
                "text": "API Playground \ud83d\ude80",
                "rel": "",
                "internal": true
            },
            {
                "href": "/updates",
                "abs": "https://vebapi.com/updates",
                "text": "Updates",
                "rel": "",
                "internal": true
            },
            {
                "href": "/#faq",
                "abs": "https://vebapi.com/#faq",
                "text": "FAQ",
                "rel": "",
                "internal": true
            },
            {
                "href": "/register",
                "abs": "https://vebapi.com/register",
                "text": "Get API Key",
                "rel": "",
                "internal": true
            },
            {
                "href": "/#pricing",
                "abs": "https://vebapi.com/#pricing",
                "text": "View Plans",
                "rel": "",
                "internal": true
            },
            {
                "href": "/dashboard",
                "abs": "https://vebapi.com/dashboard",
                "text": "Get Your API Key",
                "rel": "",
                "internal": true
            },
            {
                "href": "/apis",
                "abs": "https://vebapi.com/apis",
                "text": "View Docs",
                "rel": "",
                "internal": true
            },
            {
                "href": "/apis",
                "abs": "https://vebapi.com/apis",
                "text": "Explore Docs",
                "rel": "",
                "internal": true
            }
        ],
        "health_sample": {
            "checked": 10,
            "broken_estimate": 0,
            "results": [
                {
                    "url": "https://vebapi.com/",
                    "http_code": 200
                },
                {
                    "url": "https://vebapi.com/#features",
                    "http_code": 200
                },
                {
                    "url": "https://vebapi.com/#endpoints",
                    "http_code": 200
                },
                {
                    "url": "https://vebapi.com/#pricing",
                    "http_code": 200
                },
                {
                    "url": "https://vebapi.com/register",
                    "http_code": 200
                }
            ]
        }
    },
    "images": {
        "counts": {
            "total": 25,
            "lazy": 0
        },
        "alt": {
            "missing": 1,
            "coverage_pct": 96
        },
        "formats": {
            "jpg_jpeg": 0,
            "png": 24,
            "gif": 0,
            "webp": 0,
            "avif": 0,
            "svg": 0,
            "unknown": 1,
            "data_uri": 0
        },
        "sample": [
            {
                "src": "https://vebapi.com/logo1.png",
                "data_src": null,
                "abs": "https://vebapi.com/logo1.png",
                "alt": "VebAPI",
                "loading": null,
                "format": "png"
            },
            {
                "src": "/icons/857fe87f-89c6-48b4-a698-9625f15cb493.png",
                "data_src": null,
                "abs": "https://vebapi.com/icons/857fe87f-89c6-48b4-a698-9625f15cb493.png",
                "alt": "Related Keywords icon",
                "loading": null,
                "format": "png"
            },
            {
                "src": "/icons/e4a1020b-6013-46fb-8f57-db3a9bed2854.png",
                "data_src": null,
                "abs": "https://vebapi.com/icons/e4a1020b-6013-46fb-8f57-db3a9bed2854.png",
                "alt": "Keyword Research - Single icon",
                "loading": null,
                "format": "png"
            },
            {
                "src": "/icons/4b9854f0-8243-4d3d-a987-7d0ffb3dc358.png",
                "data_src": null,
                "abs": "https://vebapi.com/icons/4b9854f0-8243-4d3d-a987-7d0ffb3dc358.png",
                "alt": "Keyword Density Checker icon",
                "loading": null,
                "format": "png"
            },
            {
                "src": "https://www.facebook.com/tr?id=759383993705951&ev=PageView&noscript=1",
                "data_src": null,
                "abs": "https://www.facebook.com/tr?id=759383993705951&ev=PageView&noscript=1",
                "alt": "",
                "loading": null,
                "format": null
            }
        ]
    },
    "resources": {
        "scripts": {
            "count": 3,
            "blocking_count": 1,
            "inline_bytes_estimate": 2602,
            "data": [
                {
                    "src": "https://cdn.tailwindcss.com",
                    "abs": "https://cdn.tailwindcss.com",
                    "defer": false,
                    "async": false,
                    "type": null
                },
                {
                    "src": "https://www.googletagmanager.com/gtag/js?id=G-ZRZKZGFQYL",
                    "abs": "https://www.googletagmanager.com/gtag/js?id=G-ZRZKZGFQYL",
                    "defer": false,
                    "async": true,
                    "type": null
                },
                {
                    "src": "https://analytics.ahrefs.com/analytics.js",
                    "abs": "https://analytics.ahrefs.com/analytics.js",
                    "defer": false,
                    "async": true,
                    "type": null
                }
            ]
        },
        "styles": {
            "count": 1,
            "inline_bytes_estimate": 928,
            "data": [
                {
                    "href": "https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap",
                    "abs": "https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap",
                    "media": null
                }
            ]
        }
    },
    "structured_data": {
        "jsonld_count": 0,
        "jsonld_errors": 0,
        "detected_types": [],
        "items": []
    },
    "content": {
        "word_count_estimate": 1415,
        "content_to_html_ratio_pct": 11,
        "avg_sentence_words": 7,
        "avg_paragraph_words": 11,
        "paragraph_count": 50
    },
    "performance": {
        "ttfb_seconds": 0.280479,
        "total_time_seconds": 0.281223,
        "content_encoding": "br",
        "cache_control": "no-cache, private",
        "server": "cloudflare",
        "scripts": {
            "count": 3,
            "blocking_count": 1
        },
        "stylesheets": {
            "count": 1
        },
        "images": {
            "count": 25,
            "lazy_count": 0
        },
        "suggestions": [
            "Reduce render-blocking scripts: add defer/async where safe.",
            "Enable lazy-loading for below-the-fold images."
        ]
    },
    "security": {
        "https": true,
        "hsts": true,
        "x_frame_options": false,
        "x_content_type_options": false,
        "referrer_policy": false,
        "content_security_policy": false,
        "permissions_policy": false,
        "mixed_content_found": true,
        "suggestions": [
            "Add X-Frame-Options or CSP frame-ancestors to prevent clickjacking.",
            "Add X-Content-Type-Options: nosniff to reduce MIME sniffing risks.",
            "Add a Content-Security-Policy (start with report-only if needed).",
            "Fix mixed-content: remove http:// resources on an https:// page."
        ]
    },
    "crawl_signals": {
        "robots": {
            "url": "https://vebapi.com/robots.txt",
            "found": true,
            "http_code": 200,
            "mentions_sitemap": false,
            "ai_bots": {
                "gptbot": "no-specific-rules",
                "anthropic-ai": "no-specific-rules",
                "claudebot": "no-specific-rules",
                "google-extended": "no-specific-rules",
                "ccbot": "no-specific-rules",
                "bingbot": "no-specific-rules"
            }
        },
        "sitemap": {
            "url": "https://vebapi.com/sitemap.xml",
            "found": false,
            "http_code": 404,
            "looks_like_xml": false
        },
        "llms_txt": {
            "url": "https://vebapi.com/llms.txt",
            "found": true,
            "http_code": 200,
            "notes": "llms.txt present (AI indexing readiness)."
        },
        "ai_txt": {
            "url": "https://vebapi.com/ai.txt",
            "found": false,
            "http_code": 404
        }
    },
    "accessibility": {
        "images_missing_alt": 1,
        "form_controls_missing_label": 0,
        "heading_hierarchy_ok": true
    },
    "technology": {
        "detected": {
            "server": null,
            "cms": null,
            "framework": [],
            "js": [],
            "css": [
                "Tailwind (heuristic)"
            ],
            "analytics": [
                "Google Tag Manager",
                "Google Analytics"
            ],
            "cdn_waf": [
                "Cloudflare"
            ]
        },
        "confidence": 65,
        "evidence": [
            {
                "type": "header",
                "key": "server",
                "value": "cloudflare"
            },
            {
                "type": "header",
                "key": "cloudflare",
                "value": "cf-ray/cf-cache-status"
            },
            {
                "type": "html",
                "key": "tailwind",
                "value": "utility classes detected"
            }
        ]
    },
    "hosting": {
        "ip": "104.21.15.84",
        "ipv6": [
            "2606:4700:3035::ac43:a1f9",
            "2606:4700:3033::6815:f54"
        ],
        "reverse_dns": "104.21.15.84",
        "nameservers": [
            "kimora.ns.cloudflare.com",
            "valentin.ns.cloudflare.com"
        ],
        "cname": [],
        "limitations": "Exact hosting provider/ASN requires whois/ASN lookup (external source)."
    },
    "legal_pages": {
        "privacy_policy": {
            "found": true,
            "url": "https://vebapi.com/privacy",
            "match": "privacy"
        },
        "terms": {
            "found": true,
            "url": "https://vebapi.com/terms",
            "match": "terms"
        },
        "cookie_policy": {
            "found": false,
            "url": null,
            "match": null
        },
        "refund_policy": {
            "found": false,
            "url": null,
            "match": null
        },
        "gdpr": {
            "found": false,
            "url": null,
            "match": null
        },
        "imprint": {
            "found": false,
            "url": null,
            "match": null
        }
    },
    "raw": {
        "timings": {
            "total_time": 0.281223,
            "namelookup_time": 0.012193,
            "connect_time": 0.015762,
            "pretransfer_time": 0.033347,
            "starttransfer_time": 0.280479
        },
        "response_headers": {
            "date": "Sat, 14 Feb 2026 01:33:13 GMT",
            "content-type": "text/html; charset=UTF-8",
            "transfer-encoding": "chunked",
            "connection": "keep-alive",
            "server": "cloudflare",
            "vary": "Accept-Encoding",
            "cache-control": "no-cache, private",
            "set-cookie": "XSRF-TOKEN=eyJpdiI6ImV2Q0owdjExQzOGNkNWEyoiIn0%3D; expires=Sat, 14 Feb 2026 03:33:13 GMT; Max-Age=7200; path=/; secure; httponly; samesite=lax",
            "strict-transport-security": "max-age=31536000",
            "report-to": "{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=aY2pajx1ylckJtbU8KXD91NSBe6ImKvZJkRSzcKHHwSiFxgZRqstsm78HpsO6JiZPBd7zoK2mgnuV4tG9YV0yHh3n9f5s2PCXWg%3D\"}]}",
            "cf-cache-status": "DYNAMIC",
            "nel": "{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}",
            "content-encoding": "br",
            "cf-ray": "9cd8d0f0bc2de7b2-FRA",
            "alt-svc": "h3=\":443\"; ma=86400"
        },
        "html_bytes": 98224
    },
    "findings": [
        {
            "category": "title",
            "severity": "good",
            "issue": "Title length looks fine.",
            "fix": "Keep it unique per page."
        },
        {
            "category": "meta_description",
            "severity": "good",
            "issue": "Meta description length looks fine.",
            "fix": "Avoid duplicates across pages."
        },
        {
            "category": "canonical",
            "severity": "warning",
            "issue": "Canonical tag missing.",
            "fix": "Add <link rel=\"canonical\" href=\"...\"> to avoid duplicate URL issues."
        },
        {
            "category": "images",
            "severity": "warning",
            "issue": "Missing alt text on 1 images.",
            "fix": "Add descriptive ALT text (helps SEO + accessibility)."
        },
        {
            "category": "structured_data",
            "severity": "warning",
            "issue": "No JSON-LD schema found.",
            "fix": "Add Organization + WebSite + Breadcrumb + Article/Product schema where relevant."
        },
        {
            "category": "performance",
            "severity": "warning",
            "issue": "Render-blocking scripts found (1).",
            "fix": "Use defer/async and remove unnecessary scripts."
        },
        {
            "category": "ai_readiness",
            "severity": "good",
            "issue": "llms.txt detected.",
            "fix": "Keep it updated with key sections and canonical URLs."
        }
    ]
}

Single-Page SEO + AI Audit API (v3)

This API audits a single web page and returns an SEO + technical + security + accessibility + AI-readiness report in JSON. It is designed for fast, lightweight checks (no crawling).

Base URL

https://vebapi.com/api

Endpoint

GET /seo/page-audit/v2

Authentication

Send your API key in the header:

X-API-KEY: YOUR_API_KEY

Request

Query parameters

Parameter Type Required Default Description Example
url string (URL) Yes Full URL to audit. Must include http:// or https://. https://vebapi.com/
timeout_ms integer No 10000 Maximum time allowed for the fetch + analysis. 12000
user_agent string No VebAPI-AuditBot Custom User-Agent for the request (useful for testing). Mozilla/5.0 ...
follow_redirects boolean No true Follow redirects to get final URL and status. true
max_links_sample integer No 30 Number of links to include in links.sample. 50
max_images_sample integer No 30 Number of images to include in images.sample. 50

Headers

Header Required Description Example
X-API-KEY Yes Your API key. 1f41efcd-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Accept No Response format. Use JSON. application/json

cURL Example

curl -X GET "https://vebapi.com/api/seo/page-audit/v2?url=https%3A%2F%2Fvebapi.com%2F" \
  -H "X-API-KEY: YOUR_API_KEY" \
  -H "Accept: application/json"

Response

The response is JSON with these main sections:

  • summary — overall score, grade, top issues
  • scores — bucket scores + weights used
  • basic — URL, status, title, canonical, favicon
  • meta — engine info, runtime, timestamps
  • headings — counts and samples for H1..H6
  • links — internal/external counts and samples
  • images — format breakdown and ALT coverage
  • resources — scripts and styles detected
  • structured_data — JSON-LD detection summary
  • content — word count, ratio, paragraph stats
  • performance — TTFB, timings, caching hints
  • security — headers + mixed content + suggestions
  • crawl_signals — robots/sitemap/llms.txt checks
  • accessibility — basic accessibility signals
  • technology — detected stack heuristics
  • hosting — IP, nameservers, IPv6, rDNS
  • legal_pages — privacy/terms/cookie/refund/GDPR detection
  • raw — timings, response headers, byte sizes
  • findings — normalized issues list with severity + fix

Response fields (detailed)

summary

Field Type Description Example
summary.overall_score integer (0–100) Final overall score. 87
summary.grade string Letter grade derived from score. B
summary.priority_issues array<string> Short list of highest-impact issues. ["Canonical tag missing.", "No JSON-LD schema found."]

scores

Field Type Description Example
scores.overall integer Overall score. 87
scores.buckets object Bucket scores used to compute overall score. {"performance":85,"technical":70,"onpage":85,"security":100}
scores.weights object Weights applied to buckets (sum ≈ 100). {"technical":25,"onpage":25,"performance":15}

basic

Field Type Description Example
basic.requested_url string URL provided by the user. https://vebapi.com/
basic.final_url string Final URL after redirects (if enabled). https://vebapi.com/
basic.http_code integer HTTP status code for the final URL. 200
basic.title string|null HTML title tag text. VebAPI – All-in-One SEO API for Developers & SaaS
basic.favicon string|null Detected favicon URL. https://vebapi.com/1favicon.png
basic.canonical string|null Canonical URL from <link rel="canonical">. null

meta

Field Type Description Example
meta.generated_at_utc string (ISO 8601) Time audit was generated (UTC). 2026-02-14T01:33:17+00:00
meta.duration_ms integer Total analysis duration in milliseconds. 4038
meta.engine string Audit engine identifier. single-page-seo-ai-audit-v3
meta.server string Processing region. Europe
meta.handler string Internal handler name. Vebapi.com

headings

Section Field Type Description
Counts headings.counts object Count of H1..H6 tags.
Data headings.data object Arrays of texts for each heading level (sampled).
Hierarchy headings.hierarchy object Checks if the heading order looks valid and lists issues if not.

links

Field Type Description
links.counts object Totals for internal/external/nofollow/empty anchors etc.
links.empty_anchors array<string> List of URLs where anchor text is empty.
links.sample array<object> Sample of links with href, absolute URL, text, rel, and internal flag.
links.health_sample object Optional link health sampling (broken estimate + results).

images

Field Type Description
images.counts.total integer Total images detected on the page.
images.alt.coverage_pct integer ALT coverage percentage across images.
images.formats object Image format breakdown (png/jpg/webp/etc.).
images.sample array<object> Sample list of images with src, absolute URL, alt, loading, format.

resources

Section Field Type Description
Scripts resources.scripts object Script count, blocking count, and list of detected scripts with async/defer.
Styles resources.styles object Stylesheet count and list of detected CSS resources.

structured_data

Field Type Description
structured_data.jsonld_count integer How many JSON-LD blocks were found.
structured_data.detected_types array<string> Schema types found (Organization, FAQPage, etc.).
structured_data.items array<object> Parsed JSON-LD objects (if exposed).

performance

Field Type Description
performance.ttfb_seconds number Estimated time to first byte.
performance.total_time_seconds number Total fetch time (network-level), not full browser load.
performance.cache_control string|null Cache-Control header value (if available).
performance.suggestions array<string> High-level performance suggestions.

security

Field Type Description
security.https boolean Whether HTTPS is used.
security.hsts boolean Whether HSTS header is present.
security.mixed_content_found boolean True if any http:// resources are detected on https:// pages.
security.suggestions array<string> Recommended header fixes and hardening steps.

crawl_signals

Section Fields Description
robots url, found, mentions_sitemap, ai_bots robots.txt discovery + AI bot rule summary (if parsed).
sitemap url, found, http_code Sitemap XML presence check.
llms_txt url, found, notes Checks if /llms.txt exists for AI indexing/readiness.
ai_txt url, found Checks if /ai.txt exists.

legal_pages

Policy Fields Description Example
Privacy Policy found, url, match Detects privacy policy link based on common keywords. {"found":true,"url":"https://vebapi.com/privacy"}
Terms found, url, match Detects terms/conditions link. {"found":true,"url":"https://vebapi.com/terms"}
Refund / Cookie / GDPR found, url Checks for common legal pages if present. {"found":false,"url":null}

findings

findings is a normalized list of issues and notes. Each entry contains a category, severity, issue message, and a suggested fix.

Field Type Description Example
findings[].category string Issue group (title, canonical, structured_data, performance, etc.). canonical
findings[].severity string good | warning | critical (if used) warning
findings[].issue string Human-readable issue summary. Canonical tag missing.
findings[].fix string Recommended action to fix/improve. Add <link rel="canonical" href="...">

 

HTTP Status Codes

Status Meaning Typical reasons
200 OK Audit completed successfully.
400 Bad Request Missing/invalid url parameter.
401 Unauthorized Missing/invalid API key.
402 Payment Required No credits / plan limits reached (if enforced).
429 Too Many Requests Rate limit exceeded.
500 Server Error Unexpected error during fetch/parse/analyze.

Error Response Format

{
  "error": {
    "message": "Missing url parameter",
    "code": "BAD_REQUEST"
  }
}