Search & AI visibility

Read Search Console data and saved AI visibility results for sites you own.

AI visibility

GET/sites/:slug/ai-visibility

Get the stored AI visibility snapshot

Returns visibility score, tracked questions, per-platform answers and mentions, cited pages, and run history for ChatGPT, Perplexity, Google AI and Claude. A read never starts or spends a vendor run.

Same call in the CLIvdr sites:visibility example.com
Request
curl https://verifieddr.com/api/v1/sites/example.com/ai-visibility \
  -H "Authorization: Bearer vdr_your_api_key"
Response
{
  "status": "ready",
  "snapshot": { "visibilityScore": 42, "questions": [] },
  "prompts": [],
  "history": []
}
  • If no run is stored, status is pending with instructions to start the first run in the dashboard.
POST/sites/:slug/ai-visibility

Add or reset tracked questions

Send {"prompt":"..."} to add a question, or {"action":"reset"} to reseed questions from the site keywords. This edits the next-run input and never runs a vendor immediately. Verified free trial keys may configure questions.

Same call in the CLIvdr sites:visibility example.com --add-prompt "best crm tools"
Request
curl https://verifieddr.com/api/v1/sites/example.com/ai-visibility \
  -X POST \
  -H "Authorization: Bearer vdr_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"best crm tools"}'
Response
{ "ok": true, "prompts": [{ "id": "prompt-id", "prompt": "best crm tools" }] }
POST/sites/:slug/ai-visibility

Run an AI visibility scan

Send {"action":"run"}. Running a scan needs a running growth program, unless the account still has the one limited scan granted during onboarding. That scan asks up to 4 neutral buyer questions that do not name the website on ChatGPT, Perplexity, Google AI and Claude.

Same call in the CLIvdr sites:visibility example.com --run
Request
curl https://verifieddr.com/api/v1/sites/example.com/ai-visibility \
  -X POST \
  -H "Authorization: Bearer vdr_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"action":"run"}'
Response
{ "ok": true, "status": "ready", "locked": true, "snapshot": { "visibilityScore": 24 } }
  • The onboarding funnel grants one free scan. An account or API key starts with the saved result.
  • A free result includes the full answer grid; paid results add history, exact cited pages, and outreach evidence.
POST/sites/:slug/ai-visibility

Edit tracked questions in bulk

Every edit the dashboard question list can make. {"action":"edit","promptId","prompt"} rewrites one question. {"action":"delete_many","promptIds":[]} removes several. {"action":"set_prompt_locations","promptIds":[],"location"} pins a selection to one market. {"action":"reorder","promptIds":[]} and {"action":"import","prompts":[]} round it out. None of these run a vendor.

Same call in the CLIvdr sites:visibility example.com --edit-prompt prompt-id --prompt "best crm for agencies"
Request
curl https://verifieddr.com/api/v1/sites/example.com/ai-visibility \
  -X POST \
  -H "Authorization: Bearer vdr_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"action":"delete_many","promptIds":["prompt-a","prompt-b"]}'
Response
{ "ok": true, "prompts": [{ "id": "prompt-id", "prompt": "best crm for agencies" }] }
  • Every write answers with the full remaining question list, so a client never needs a second read.
  • Question edits are free on every plan; pinning a location needs a paid plan.
DELETE/sites/:slug/ai-visibility?promptId=:id

Remove a tracked question

Stops tracking one question by the prompt ID returned by the GET endpoint.

Same call in the CLIvdr sites:visibility example.com --remove-prompt prompt-id
Request
curl "https://verifieddr.com/api/v1/sites/example.com/ai-visibility?promptId=prompt-id" \
  -X DELETE \
  -H "Authorization: Bearer vdr_your_api_key"
Response
{ "ok": true, "prompts": [] }

Google Search Console

These owner-scoped endpoints require a connected Search Console property and a running growth program.

GET/sites/:slug/gsc-performance?range=28d

Get Search Console performance

Returns daily clicks, impressions, CTR, and position; current and immediately preceding totals; and top queries, pages, countries, and devices.

Same call in the CLIvdr sites:gsc-performance example.com --range 28d
Request
curl "https://verifieddr.com/api/v1/sites/example.com/gsc-performance?range=28d" \
  -H "Authorization: Bearer vdr_your_api_key"
Response
{
  "range": "28d",
  "performance": {
    "totals": { "clicks": 1200, "impressions": 48000, "ctr": 0.025, "position": 18.4 },
    "previousTotals": { "clicks": 980, "impressions": 42000 },
    "series": [],
    "snapshot": { "queries": [], "pages": [], "countries": [], "devices": [] }
  }
}
  • Supported ranges: 28d, 3m, 6m, 12m, and 16m.
GET/sites/:slug/gsc-audit

Get the latest index audit

Reads the most recent stored audit of sitemap health, pages with impressions, and sampled indexed or excluded states.

Same call in the CLIvdr sites:gsc-audit example.com
Request
curl https://verifieddr.com/api/v1/sites/example.com/gsc-audit \
  -H "Authorization: Bearer vdr_your_api_key"
Response
{ "audit": { "status": "complete", "createdAt": "2026-07-21T10:00:00.000Z", "issues": [] } }
POST/sites/:slug/gsc-audit

Run a fresh index audit

Starts and waits for a fresh audit using budgeted URL Inspection samples. This is the consequential variant; use GET when stored evidence is sufficient.

Same call in the CLIvdr sites:gsc-audit example.com --run
Request
curl https://verifieddr.com/api/v1/sites/example.com/gsc-audit \
  -X POST \
  -H "Authorization: Bearer vdr_your_api_key"
Response
{ "audit": { "status": "complete", "issues": [], "sampledUrls": 25 } }
  • Fresh runs have a 12-hour cooldown.

AI crawlers

Which AI crawlers fetch your pages. Hits are pushed from your own infrastructure and read back as the same report the Crawlers tab shows.

GET/crawler-logs?site=:slug&range=28d

Get AI crawler logs

Hits per crawler (GPTBot, ClaudeBot, PerplexityBot and the rest), the pages they took, status codes, and the insights drawn from them, for one of your sites. A free plan gets the empty preview the dashboard shows it.

Same call in the CLIvdr crawlers:logs example.com --range 28d
Request
curl "https://verifieddr.com/api/v1/crawler-logs?site=example.com&range=28d" \
  -H "Authorization: Bearer vdr_your_api_key"
Response
{ "ok": true, "range": "28d", "totals": { "hits": 412, "crawlers": 4 }, "crawlers": [], "pages": [], "insights": [] }
  • Supported ranges: 7d, 28d, and 90d.
POST/crawler-logs

Push crawler hits

Send raw request events from your server or CDN. Only events whose user agent matches a known AI crawler are stored; the rest are discarded on arrival, so forwarding unfiltered logs is safe. Takes the site ingest token from the Crawlers tab or an account key.

Request
curl https://verifieddr.com/api/v1/crawler-logs \
  -X POST \
  -H "Authorization: Bearer vdrcrawl_your_site_token" \
  -H "Content-Type: application/json" \
  -d '[{"hostname":"example.com","path":"/pricing","user_agent":"GPTBot/1.2","method":"GET","status":200,"timestamp":"2026-08-14T09:30:00Z"}]'
Response
{ "ok": true, "stored": 1, "rejected": 0, "overflow": 0 }
  • Quota-free: pushed logs never consume the account's API call allowance. The per-key rate limit still applies.
  • At most 25 AI-crawler hits are stored per request; overflow says how many to re-batch.

Boost your Domain Rating

Earn links from websites in your market. Follow a clear plan and track your DR growth.

Start my DR growth planTrack DR and TrueDR each week for free. No credit card required.Already have an account? Sign in