{
"api": {
"name": "AI Visibility Audit API",
"provider": "vebapi.com",
"engine": "ai-ready-max",
"version": "1",
"mode": "scan"
},
"url": "https://vebapi.com",
"fetch": {
"status_code": 200,
"final_url": "https://vebapi.com/",
"content_type": "text/html; charset=UTF-8",
"redirect_chain": [],
"server": "cloudflare",
"x_robots_tag": null,
"runtime_ms": 1759,
"dom_load_ok": true
},
"ai_discovery": {
"robots_txt": {
"exists": true,
"status_code": 200,
"size_bytes": 24,
"sitemaps_found": [],
"ai_specific_agents_listed": [],
"parsed": {
"groups_count": 1,
"crawl_delay_any": false
},
"url": "https://vebapi.com/robots.txt"
},
"llms_txt": {
"url": "https://vebapi.com/llms.txt",
"exists": true,
"status_code": 200,
"size_bytes": 3480,
"lines": 86,
"summary": "# llms.txt \u2014 VebAPI (https://vebapi.com) | # Purpose: Help LLMs understand what this site is, where the docs live, and what to ignore. | # Last updated: 2026-02-06"
},
"sitemap_intel": {
"discovered": [
"https://vebapi.com/sitemap.xml",
"https://vebapi.com/sitemap_index.xml",
"https://vebapi.com/sitemap-index.xml"
],
"checked": [
{
"url": "https://vebapi.com/sitemap.xml",
"status_code": 404,
"content_type": "text/html",
"size_bytes": 146,
"ok": false
},
{
"url": "https://vebapi.com/sitemap_index.xml",
"status_code": 404,
"content_type": "text/html",
"size_bytes": 146,
"ok": false
},
{
"url": "https://vebapi.com/sitemap-index.xml",
"status_code": 404,
"content_type": "text/html",
"size_bytes": 146,
"ok": false
}
],
"parsed": [],
"total_url_count_estimate": 0,
"has_lastmod": false,
"parsed_sitemaps_count": 0
}
},
"ai_visibility": {
"indexable": true,
"block_reasons": [],
"robots_meta": null,
"canonical": null,
"lang": "en"
},
"structure": {
"title": "VebAPI \u2013 All\u2011in\u2011One SEO API for Developers & SaaS",
"meta_description": "Complete SEO analysis in one powerful API. Fast endpoints for page analysis, speed, keyword research, domain data, backlinks, and more. One API key. Simple pricing.",
"headings": {
"h1": 1,
"h2": 4,
"h3": 41,
"h4": 0,
"h5": 0,
"h6": 0
},
"main_selector_used": "//body"
},
"content": {
"main_word_count": 1029,
"reading_time_minutes": 6,
"text_density_percent": 10.93,
"script_count": 8,
"js_heavy": false
},
"links": {
"total": 68,
"internal": 66,
"external": 1,
"nofollow": 0,
"sponsored": 0,
"ugc": 0
},
"schema": {
"jsonld_count": 0,
"jsonld_parse_errors": 0,
"types_found": []
},
"trust_signals": {
"pages_found": {
"privacy": true,
"terms": true,
"refund": false,
"contact": true,
"about": false,
"pricing": true
},
"page_urls": {
"privacy": "https://vebapi.com/privacy",
"terms": "https://vebapi.com/terms",
"refund": null,
"contact": "https://vebapi.com/contact",
"about": null,
"pricing": "https://vebapi.com/#pricing"
}
},
"ai_simulation": {
"indexable": true,
"block_reasons": [],
"ai_bots": {
"chatgpt": {
"bot": "GPTBot",
"allowed_by_robots": true
},
"google_ai_overviews": {
"bot": "Google-Extended",
"allowed_by_robots": true
},
"anthropic": {
"bot": "anthropic-ai",
"allowed_by_robots": true
},
"perplexity": {
"bot": "CCBot",
"allowed_by_robots": true
},
"bytespider": {
"bot": "Bytespider",
"allowed_by_robots": true
}
}
},
"ai_score": {
"crawlability": 16,
"structure": 16,
"content_depth": 20,
"semantic_markup": 12,
"technical_cleanliness": 14,
"total": 78,
"grade": "C"
},
"ai_scrapable": true,
"issues": [
{
"id": "missing_canonical",
"severity": "medium",
"evidence": "Canonical link tag not found",
"impact": "Deduping + consistent indexing"
},
{
"id": "low_text_density",
"severity": "medium",
"evidence": "Text density low: 10.93%",
"impact": "AI scrapability"
}
],
"suggestions": [
{
"priority": "medium",
"category": "Discovery",
"message": "Add `Sitemap:` lines in robots.txt.",
"impact": "Faster discovery for search + AI crawlers."
},
{
"priority": "medium",
"category": "Structure",
"message": "Add a canonical URL tag.",
"impact": "Avoid duplicate indexing and inconsistent AI citations."
},
{
"priority": "medium",
"category": "Semantic Markup",
"message": "Add JSON-LD schema (Organization, WebSite, Article/Product where relevant).",
"impact": "Better entity understanding + rich results."
},
{
"priority": "medium",
"category": "Technical",
"message": "Reduce boilerplate or increase meaningful text in main content.",
"impact": "AI extraction improves when content dominates the page."
}
]
}
AI Visibility Checker API (v2)
Analyze a website’s AI-search readiness and “AI crawl visibility” signals: robots/LLMs directives, sitemap discovery, indexability, on-page structure/content, schema detection, trust pages, and a scored report.
Base URL
https://vebapi.com
Endpoint
GET /api/seo/ai-visibility-checker/v2
Authentication
Send your API key in the request header:
X-API-KEY: YOUR_API_KEY
Request
Query Parameters
| Parameter |
Type |
Required |
Example |
Description |
website |
string |
Yes |
vebapi.com |
Target website hostname or URL. If you pass a hostname, the API will typically resolve it to a final URL. |
Headers
| Header |
Required |
Example |
Description |
X-API-KEY |
Yes |
YOUR_API_KEY |
Your VebAPI key. |
Content-Type |
Recommended |
application/json |
Included for consistency (even for GET requests). |
Response
The API returns a JSON object containing the analysis and recommendations.
Top-level Fields
| Field |
Type |
Description |
api |
object |
Metadata about the API engine and scan mode. |
url |
string | null |
Optional normalized URL field (may be null depending on implementation). |
fetch |
object |
HTTP fetch and runtime diagnostics (status, final URL, server, timings, etc.). |
ai_discovery |
object |
Discovery signals for AI & search crawlers (robots.txt, llms.txt, sitemap intelligence). |
ai_visibility |
object |
Indexability and basic AI crawl visibility signals (robots meta, canonical, lang). |
structure |
object |
Title, meta description, headings distribution, and main content selector used. |
content |
object |
Content depth stats (word count, density, scripts, reading time, etc.). |
links |
object |
Internal/external links and rel flags (nofollow/sponsored/ugc). |
schema |
object |
JSON-LD presence and detected schema types. |
trust_signals |
object |
Detects common trust pages (privacy, terms, contact, pricing, etc.). |
ai_simulation |
object |
Simulation of whether key AI bots appear allowed by robots directives. |
ai_score |
object |
Scored breakdown with grade. |
ai_scrapable |
boolean |
Overall boolean indicating if the page is reasonably extractable by AI. |
issues |
array |
Detected issues with severity, evidence, and impact. |
suggestions |
array |
Actionable recommendations with priority and category. |
Response Schema Details
api object
| Field |
Type |
Description |
name |
string |
API report name. |
provider |
string |
Provider name (vebapi.com). |
engine |
string |
Engine identifier (example: ai-ready-max). |
version |
string |
Engine version. |
mode |
string |
Scan mode (example: scan). |
fetch object
| Field |
Type |
Description |
status_code |
number |
HTTP status of final fetch. |
final_url |
string |
Resolved final URL after redirects. |
content_type |
string | null |
Response content type. |
redirect_chain |
array |
List of redirects (if any). |
server |
string | null |
Server header or inferred edge (e.g., cloudflare). |
x_robots_tag |
string | null |
X-Robots-Tag header if present. |
runtime_ms |
number |
Total runtime in milliseconds. |
dom_load_ok |
boolean |
Whether DOM parsing succeeded. |
ai_discovery object
ai_discovery.robots_txt
| Field |
Type |
Description |
exists |
boolean |
Whether /robots.txt exists. |
status_code |
number |
Status code of robots fetch. |
size_bytes |
number |
Robots file size. |
sitemaps_found |
array |
Sitemap URLs found inside robots.txt. |
ai_specific_agents_listed |
array |
AI bot user-agents explicitly mentioned (if any). |
parsed |
object |
Parsed robots summary. |
parsed.groups_count |
number |
How many user-agent groups were detected. |
parsed.crawl_delay_any |
boolean |
Whether crawl-delay exists for any group. |
url |
string |
Robots URL. |
ai_discovery.llms_txt
| Field |
Type |
Description |
url |
string |
LLMs file URL (default /llms.txt). |
exists |
boolean |
Whether it exists. |
status_code |
number |
Status code of LLMs file fetch. |
size_bytes |
number |
File size. |
lines |
number |
Line count. |
summary |
string |
Short extracted summary (first line(s) / header). |
ai_discovery.sitemap_intel
| Field |
Type |
Description |
discovered |
array |
Sitemap candidates discovered by heuristics. |
checked |
array |
Checked sitemap URLs with status and size. |
checked[].url |
string |
Sitemap URL checked. |
checked[].status_code |
number |
Status code. |
checked[].content_type |
string | null |
Content type. |
checked[].size_bytes |
number |
Response size. |
checked[].ok |
boolean |
Whether it looks like a valid sitemap. |
parsed |
array |
Parsed sitemap summaries (if parsing succeeded). |
total_url_count_estimate |
number |
Estimated URL count across parsed sitemaps. |
has_lastmod |
boolean |
Whether <lastmod> was found in parsed sitemaps. |
parsed_sitemaps_count |
number |
Number of successfully parsed sitemaps. |
ai_visibility object
| Field |
Type |
Description |
indexable |
boolean |
Whether the page appears indexable. |
block_reasons |
array |
If not indexable, reasons detected (robots/meta/header). |
robots_meta |
string | null |
Robots meta content if present. |
canonical |
string | null |
Canonical URL if present. |
lang |
string | null |
Detected HTML lang attribute. |
structure object
| Field |
Type |
Description |
title |
string | null |
Document title. |
meta_description |
string | null |
Meta description content. |
headings |
object |
Heading counts by level. |
headings.h1 |
number |
Count of H1 tags. |
headings.h2 |
number |
Count of H2 tags. |
headings.h3 |
number |
Count of H3 tags. |
headings.h4 |
number |
Count of H4 tags. |
headings.h5 |
number |
Count of H5 tags. |
headings.h6 |
number |
Count of H6 tags. |
main_selector_used |
string |
Main content selector or heuristic used to extract text. |
content object
| Field |
Type |
Description |
main_word_count |
number |
Main content word count. |
reading_time_minutes |
number |
Estimated reading time. |
text_density_percent |
number |
Text ratio versus total page content. |
script_count |
number |
Number of script tags. |
js_heavy |
boolean |
Heuristic flag for JS-heavy pages. |
links object
| Field |
Type |
Description |
total |
number |
Total links detected. |
internal |
number |
Internal links count. |
external |
number |
External links count. |
nofollow |
number |
Links with rel="nofollow". |
sponsored |
number |
Links with rel="sponsored". |
ugc |
number |
Links with rel="ugc". |
schema object
| Field |
Type |
Description |
jsonld_count |
number |
Number of JSON-LD blocks found. |
jsonld_parse_errors |
number |
How many JSON-LD blocks failed to parse. |
types_found |
array |
Schema.org types detected (best-effort). |
trust_signals object
| Field |
Type |
Description |
pages_found |
object |
Booleans indicating detected trust/legal pages. |
page_urls |
object |
URLs to detected pages when available. |
ai_simulation object
| Field |
Type |
Description |
indexable |
boolean |
Simulation result for indexability. |
block_reasons |
array |
Simulation reasons if blocked. |
ai_bots |
object |
Bot-by-bot allow/deny interpretation. |
ai_bots.chatgpt.bot |
string |
Example: GPTBot |
ai_bots.chatgpt.allowed_by_robots |
boolean |
Whether robots appears to allow it. |
ai_score object
| Field |
Type |
Description |
crawlability |
number |
Score bucket (crawl access + discovery). |
structure |
number |
Score bucket (headings/meta/structure signals). |
content_depth |
number |
Score bucket (meaningful content). |
semantic_markup |
number |
Score bucket (schema/markup). |
technical_cleanliness |
number |
Score bucket (canonicals, tag hygiene, etc.). |
total |
number |
Total score. |
grade |
string |
Grade label (example: A/B/C/D/F). |
Issues
issues is an array of detected problems.
| Field |
Type |
Description |
id |
string |
Machine-readable issue id. |
severity |
string |
Severity level (example: low/medium/high). |
evidence |
string |
What triggered the issue. |
impact |
string |
Why it matters. |
Suggestions
suggestions is an array of recommended actions.
| Field |
Type |
Description |
priority |
string |
Priority label (example: low/medium/high). |
category |
string |
Suggestion category (Discovery/Structure/Semantic Markup/Technical/etc.). |
message |
string |
What to do. |
impact |
string |
Expected benefit. |
Status Codes
| Status Code |
Meaning |
200 |
Success — report generated. |
400 |
Bad Request — missing/invalid parameters (e.g., website). |
401 |
Unauthorized — missing/invalid API key. |
429 |
Too Many Requests — rate limit exceeded. |
500 |
Server Error — unexpected failure generating the report. |