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. |