Skip to Content
AI visibility

Get AI visibility

Read the stored AI visibility and site health checks for one website, with a score per area.

GEThttps://api.rankparse.com/v1/site-scanFreeAPI key

Returns the latest stored AI visibility scan of one website: every check with its status, severity and evidence, and a score per area. It reads stored results only and never fetches the website. To scan again after a fix, use Re-check AI visibility.

Query parameters

site_idstringrequired

A website id from Websites. A missing, unknown, archived or other workspace's id returns 404 site_scan_site_not_found.

Response

site_idstring

The website asked for.

hoststring

The website's canonical host.

eligibleboolean

false when the website is not scanned. scanned_at, error_code and score are then null and checks is empty.

reasonstring | null

null when eligible. not_verified when no verified Google or Bing property is attached, plan_required when the workspace is on the Free plan. See Eligibility.

scanned_atinteger | null

When the last scan finished, in Unix milliseconds. null before the first scan.

error_codestring | null

Set when the last scan could not reach the home page (for example home_http_503, home_timeout). The checks then still show the previous results.

scoreobject | null

Scores (see Scoring). Each score object is { passing, failing, score }, where score is 0 to 100 or null when no check counted.

Show properties
overallobject

The AI visibility score. Site health checks are not included.

areasobject

One score object per area: discoverability, content, bot_access, capabilities, site_health.

checksarray

Stored checks in a fixed order. A check that has never run is absent. See Checks for every id.

Show properties
check_idstring

For example ai_answer_bots_blocked.

areastring

discoverability, content, bot_access, capabilities or site_health.

categorystring

site_health for the site_health area, else ai_visibility.

titlestring

What a passing check means, for example llms.txt is published.

statusstring

pass, fail or unknown (could not tell: timeout, server error). unknown is not a failure.

severitystring

bad, warn or info: how much a failure matters.

optionalboolean

true for info checks: optional features or choices, left out of the score and never an issue on their own.

evidenceobject | null

Small details behind the result, varying by check: for example url and http_status, reason (html_instead_of_file, not_text, not_json, missing_fields, empty, page_truncated), blocked (a list of { agent, via } where via is agent or wildcard), final_url, noindex_by (meta or header), canonical, block_count, valid_block_count and types. Evidence over 2 KB is replaced by { "truncated": true }.

checked_atinteger

When this result was recorded, in Unix milliseconds. An unknown result keeps the previous conclusion and its time.

first_failed_atinteger | null

When the check started failing (Unix milliseconds). Cleared when it passes.

last_passed_atinteger | null

When the check last passed (Unix milliseconds).

Behavior and limits

  • Cost: 0 credits.
  • Stored data: websites are scanned about once a day. The response never triggers a fetch.
  • Not eligible is not an error: an unverified website or a Free workspace gets 200 with eligible: false.
  • Permissions: needs the site.read capability.
  • Rate limit: 60 requests per minute per key. See Rate limiting.

Errors

HTTPCodeWhen
401invalid_api_keyMissing, invalid or revoked API key.
403capability_missingYour workspace role cannot read websites.
404site_scan_site_not_foundsite_id is missing or not a website in your workspace.
429rate_limitedMore than 60 requests in a minute.

See Errors for the error body format.

MCP tool: get_ai_visibility (accepts site_id).