# AI Visibility API: Track LLM Citations

> Track brand mentions, cited URLs and share of voice in ChatGPT search, Google AI Overviews and DeepSeek by API. $0.01 per answer, $2 free every month.

[Home](https://quanticdata.io/) / AI Visibility API

# AI Visibility API: brand mentions and citations in AI answers

The AI Visibility API asks AI engines the questions your buyers ask and returns, for every answer, whether your brand was named, which of your URLs were cited and at what rank, and which domains won where you are absent. One call covers up to 10 questions on ChatGPT search, Google AI Overviews and DeepSeek. On 26 October 2026 a two-question panel on all three came back in 12.7 seconds and cost $0.05.

By [Aldo Morese](https://quanticdata.io/about/), founder of QuanticData · Published Oct 26, 2026

[Get my free API key](https://app.quanticdata.io/register?utm_source=ai-visibility-api&utm_medium=website&utm_campaign=site&utm_content=ai-visibility-api-hero) · [Try it in the Playground](https://app.quanticdata.io/data-api/playground?tool=ai-visibility)

$2 of free API usage per month · No card required · Rows with an error are never billed

POST /v1/scraper/ai-visibility · run on 26 Oct 2026

```bash
$ curl https://api.quanticdata.io/v1/scraper/ai-visibility \
    -d '{ "url": "https://quanticdata.io/serp-api/",
          "queries": ["best serp api for ai agents",
                      "google search results api pay as you go"],
          "engines": ["openai", "aio", "deepseek"],
          "brand": "QuanticData", "country": "us",
          "no_render": true, "no_retrieval": true }'
{ "citations": { "rows": [ …,
    { "query": "google search results api pay as you go",
      "engine": "openai", "cited": true,
      "mentioned": true, "rank": 6,
      "ourUrls": ["…/collectors/google-search-results-api/…"] },
    … ],
    "coverage": { "openai": { "asked": 2, "cited": 1, … } } },
  "billing": { "citation_calls_billed": 4 },
  "usage": { "cost_usd": 0.05 } }
# 2 questions × 3 engines · 4 answers billed · 12.7 s
```

![AI Visibility API: the question "google search results api pay as you go" sent to ChatGPT search for the United States, the answer drawn with its six numbered sources where the third, a quanticdata.io collectors page, is highlighted, and the citation row the API returns: cited true at rank 3, brand mentioned, six cited domains, from a real run on 26 October 2026.](https://quanticdata.io/ai-visibility-api/diagram.webp?v=20261026a)

*One real row from 26 October 2026: the engine answered, listed six sources, and the API matched the third one to our domain.*

**$0.01 per answer** · one question on one engine, plus $0.01 per audit

**3 engines** · ChatGPT search, Google AI Overviews, DeepSeek

**10 questions** · per call, with up to 20 competitor domains flagged

**12.7 s** · for a 2 × 3 panel, measured on 26 Oct 2026

## What is an AI visibility API?

**An AI visibility API sends your questions to AI engines and returns structured data about the answers: who is named, which pages are cited, and how often you are among them.** It is LLM visibility tracking you can script, instead of typing the same prompts into three chat windows and pasting the results into a spreadsheet.

QuanticData adds the other half of the question in the same call. Next to the citation panel, every request audits the page you name the way an AI crawler sees it: access for 24 AI user agents in your robots.txt, the text that exists without JavaScript, structured data, answer-shaped copy, dates and authorship. When you are not cited, the response already holds the reasons that can be fixed on your side.

## What one call measures

### Brand mentions

**mentioned** is true when the answer text names your brand, linked or not. Set **brand** to the name buyers use; it defaults to the site name.

### Citations of your URLs

**cited**, **ourUrls** and **rank**: which of your pages the engine listed as a source, and where your domain sits among the distinct domains it cited.

### Every source, in order

**citedUrls** and **allDomains** keep the engine's own order, so you see the page that won the answer, not only the site.

### Share of voice

**shareOfVoice** counts every cited domain across the panel, with its share of answers, your domain flagged as **ours** and the domains you pass in **competitors** flagged too.

### Where you lose

**losingTo** lists the domains cited in the answers where you are absent: the pages to study, or to get yourself mentioned on.

### Per engine and country

**coverage** gives asked, cited and mentioned for each engine; **country** sets where the question is asked from, one market per call.

## Which AI engines it checks

Three engines answer on the panel today. Each one is a different kind of answer, and the response says exactly what each is in `citations.engineNotes`, so nobody mistakes an API for the consumer app.

| engine | What answers | What you get |
| --- | --- | --- |
| `openai` | OpenAI's API with its web search tool, the closest programmatic equivalent of ChatGPT search (not chatgpt.com itself) | cited URLs in order, mention, rank |
| `aio` | the Google AI Overview, read from a live Google results page in the country you choose | whether the overview names your brand, and its text; citations when the overview exposes its sources |
| `deepseek` | Google's top 10 for the question, handed to DeepSeek with the instruction to answer and cite | which of the same results a model picks: cited URLs, mention, rank |

Pass `engines` explicitly. A row an engine could not answer, because Google showed no AI Overview for that question or because an engine is not available, comes back with an `error` field, is left out of coverage and share of voice, and is not billed.

How it works

## From your questions to one row per answer

### 1. Send the page and the questions

A URL, up to 10 questions, the engines, your brand name and the competitor domains to watch. The URL's domain is what counts as yours in every answer.

### 2. Every question goes to every engine

The pairs run in parallel from the country you pick, while the page itself is audited the way an AI crawler fetches it.

### 3. One row per answer comes back

Mention, citations and rank for each question on each engine, then coverage, share of voice and losingTo across the panel. You pay for the answers obtained.

| Field | What it does |
| --- | --- |
| `url` | required: the page to audit; its domain is matched in every answer |
| `queries` | up to 10 questions; leave it out for the on-page audit alone |
| `engines` | `openai`, `aio`, `deepseek` |
| `brand` | the name to look for in the answer text, up to 80 characters |
| `competitors` | up to 20 domains flagged in the share of voice |
| `country` | two-letter code: where the question is asked from |
| `no_retrieval` | skips the 2 searches that check where the page ranks for its own H1 question and whether it is indexed |
| `offsite` | adds 5 searches for your brand on YouTube, Reddit, Wikipedia, LinkedIn and review sites |

Integration

## One POST, one row per answer

cURL:

```bash
curl https://api.quanticdata.io/v1/scraper/ai-visibility \
  -H "Authorization: Bearer $QD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://example.com/pricing/",
        "queries": ["best invoicing app for freelancers",
                    "invoicing software with recurring billing"],
        "engines": ["openai", "aio", "deepseek"],
        "brand": "Example",
        "competitors": ["rival-one.example", "rival-two.example"],
        "country": "us", "no_retrieval": true }'
```

Python:

```python
import requests

r = requests.post("https://api.quanticdata.io/v1/scraper/ai-visibility",
    headers={"Authorization": f"Bearer {KEY}"},
    json={"url": "https://example.com/pricing/",
          "queries": ["best invoicing app for freelancers",
                      "invoicing software with recurring billing"],
          "engines": ["openai", "aio", "deepseek"],
          "brand": "Example",
          "competitors": ["rival-one.example", "rival-two.example"],
          "country": "us", "no_retrieval": True},
    timeout=300)
panel = r.json()["payload"]["citations"]

for row in panel["rows"]:
    if row.get("error"):
        continue                      # not billed, not counted
    print(row["engine"], row["query"], "cited" if row["cited"] else "-",
          row["rank"], "mentioned" if row["mentioned"] else "")
for d in panel["shareOfVoice"][:5]:
    print(d["domain"], d["times"], d["share"], "ours" if d["ours"] else "")
```

Node.js:

```javascript
const r = await fetch("https://api.quanticdata.io/v1/scraper/ai-visibility", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.QD_API_KEY}`,
             "Content-Type": "application/json" },
  body: JSON.stringify({
    url: "https://example.com/pricing/",
    queries: ["best invoicing app for freelancers",
              "invoicing software with recurring billing"],
    engines: ["openai", "aio", "deepseek"],
    brand: "Example",
    competitors: ["rival-one.example", "rival-two.example"],
    country: "us", no_retrieval: true })
});
const { payload } = await r.json();
console.log(payload.citations.coverage);       // asked / cited / mentioned per engine
console.log(payload.citations.losingTo);       // who wins where you are absent
console.log(payload.usage.cost_usd);
```

Response:

```
{ "type": "response",
  "message": "AI visibility audit successful",
  "payload": {
    "url": "https://example.com/pricing/",
    "score": { "overall": 84, "blockers": [] },
    "citations": {
      "engines": ["openai", "aio", "deepseek"],
      "rows": [
        { "query": "best invoicing app for freelancers", "engine": "openai",
          "cited": true, "mentioned": true, "rank": 2,
          "ourUrls": ["https://example.com/pricing/"],
          "allDomains": ["rival-one.example", "example.com", "reddit.com"],
          "competitors": ["rival-one.example"],
          "answerExcerpt": "For freelancers who bill every month, …" },
        { "query": "best invoicing app for freelancers", "engine": "aio",
          "cited": false, "mentioned": false, "answerExcerpt": "",
          "error": "no AI Overview for this query" },
        …
      ],
      "coverage": { "openai":   { "asked": 2, "cited": 1, "mentioned": 2 },
                    "deepseek": { "asked": 2, "cited": 1, "mentioned": 1 } },
      "shareOfVoice": [
        { "domain": "rival-one.example", "times": 3, "share": 0.75, "ours": false, "competitor": true },
        { "domain": "example.com", "times": 2, "share": 0.5, "ours": true, "competitor": false } ],
      "losingTo": [ { "domain": "rival-one.example", "times": 2 } ]
    },
    "billing": { "citation_calls_billed": 4, "offsite_serps_billed": 0 },
    "usage": { "cost_usd": 0.05, "free_usd": 0.05, "paid_usd": 0 }
  } }
```

The field names in the Response tab are the real ones; the values belong to the example request. Every field, every error code and the full on-page audit are in the [API reference](https://quanticdata.io/docs/#tag/AI-visibility/operation/aiVisibilityAudit).

## The same question, asked twice

On 26 October 2026 we ran the API on our own SERP API page from the United States, with two questions. The run shown at the top of this page asked all three engines with `no_retrieval` set, so the bill is exactly the audit plus the answers.

| What we measured | Result |
| --- | --- |
| Answers billed | 4 of 6 rows: ChatGPT search and DeepSeek on both questions |
| AI Overview rows | Google showed no AI Overview for either question; both rows free |
| Cost | $0.05: $0.01 for the audit, 4 × $0.01 for the answers |
| Time for the whole call | 12.7 seconds |
| "google search results api pay as you go" on ChatGPT search | cited a quanticdata.io collectors page, 3rd of 6 domains in a first run and 6th of 6 in a second run minutes later |

The last row is the reason AI visibility tracking means repeating the panel. The same engine, asked the same question from the same country, cited the same page both times in a different position. One answer is a sample; a trend needs the same questions asked on a schedule.

Pricing

## Per answer. No subscription.

Each call pays the audit once and then one price per answer obtained, where an answer is one question on one engine: the prices shown in the dashboard and the [API reference](https://quanticdata.io/docs/#tag/AI-visibility/operation/aiVisibilityAudit). Before a panel runs, the API checks that your balance covers every pair; afterwards it bills only the rows that came back without an error.

**$0.01** per answer · *one question on one engine*

**$0.01** per audit · *once per call, on-page pass included*

**$0** for a row with an error · *no overview, no answer: not billed*

**$2 free** · every month · *no card required*

### Worked example: N questions × M engines

Cost of one run = $0.01 + N × M × $0.01, at most. Rows with an error lower it.

| Panel | Cost per run | Answers | Four runs a month |
| --- | --- | --- | --- |
| 1 question × 1 engine | $0.02 | 1 | $0.08 |
| 5 questions × 2 engines | $0.11 | 10 | $0.44 |
| 10 questions × 2 engines | $0.21 | 20 | $0.84 |
| 10 questions × 3 engines | $0.31 | 30 | $1.24 |

Ten questions on ChatGPT search and DeepSeek once a week, four runs a month, cost at most $0.84, which fits inside the $2 of free usage every account gets. By default each call also runs 2 searches to see where the page ranks for its own H1 question, billed as [SERP API](https://quanticdata.io/serp-api/) searches; `no_retrieval: true` gives exactly the figures above, and `offsite: true` adds 5. Monthly plans are on the [pricing page](https://quanticdata.io/pricing/).

Mentions · citations · rank · Share of voice · Competitor flags · One country per call · On-page audit included · Error rows never billed

![Cost of one AI Visibility API call with 10 questions on 3 engines: a grid of 10 question rows by ChatGPT, AI Overview and DeepSeek columns, one cell per answer, and a card with $0.01 for the audit, 30 × $0.01 for the answers and $0.31 as the most the run can cost; rows that come back with an error are not billed, and $2 of usage is free every month.](https://quanticdata.io/ai-visibility-api/diagram2.webp?v=20261026a)

*The largest panel one call allows on today's three engines: 30 answers, $0.31 at most, less when some rows come back with an error.*

## Who uses an AI visibility API

### SEO and GEO agencies

One call per client page and question set, the rows straight into the monthly report, and a cost per answer instead of a seat per client.

### In-house content teams

Find the questions where you are absent and the pages that win them, then check after a rewrite whether the engines changed their minds.

### Product builders

Put AI visibility data inside your own dashboard, CRM or alerting. The JSON is per answer, so you decide how to score it.

## Give it to your agent as a tool

The [QuanticData MCP server](https://quanticdata.io/mcp-server/) exposes this API as the `ai_visibility` tool, so Claude, Cursor or any MCP client can run a panel mid-conversation and reason over the rows. To try a request before writing code, open the [AI Visibility Audit in the Playground](https://app.quanticdata.io/data-api/playground?tool=ai-visibility). To see what a single page looks like to an AI crawler first, the [free AI visibility audit](https://quanticdata.io/tools/ai-visibility-audit/) runs the on-page pass with no account; the rest of the data layer for agents is in the [web data API for AI](https://quanticdata.io/web-data-api-for-ai/).

## QuanticData vs a typical AI visibility tool

|  | QuanticData AI Visibility API | Typical AI visibility tool |
| --- | --- | --- |
| How you pay | $0.01 per answer obtained, no subscription | a monthly plan sized by the number of tracked prompts |
| What comes back | JSON per question and engine: cited URLs in order, mention, rank | a dashboard; API access depends on the plan |
| Why you are not cited | the on-page audit runs in the same call | usually a separate audit |
| Free tier | $2 every month, renews forever | usually a time-limited trial |
| AI agent access | native MCP tool ai_visibility | a wrapper to write |

### The setting to start with

`POST /v1/scraper/ai-visibility` with your page as `url`, the ten questions your buyers ask, `engines: ["openai", "deepseek"]`, your brand, two or three competitor domains and your main `country`: 20 answers for $0.21 at most. Run it weekly from cron or n8n, and the $2 of free API usage per month covers it.

[Get my free API key](https://app.quanticdata.io/register?utm_source=ai-visibility-api&utm_medium=website&utm_campaign=site&utm_content=ai-visibility-api-strip)

## Sources and standards

What this product reads or implements, so you can verify a claim yourself:

- [OpenAI API documentation: the web search tool behind the openai engine](https://platform.openai.com/docs/guides/tools-web-search)
- [Google Search Central: AI features and your website](https://developers.google.com/search/docs/appearance/ai-features)
- [RFC 9309, Robots Exclusion Protocol: how the audit resolves AI crawler access](https://www.rfc-editor.org/rfc/rfc9309.html)
- [Aggarwal et al., Generative Engine Optimization (KDD 2024)](https://arxiv.org/abs/2311.09735)

## FAQ

The short answers on engines, mentions, cost and limits.

[Something else? Ask us](https://quanticdata.io/ai-visibility-api/#ask)

### What is an AI visibility API?

An AI visibility API sends your questions to AI engines and returns structured data about the answers: whether your brand is named, which of your URLs are cited and in what position, and every other domain the engine relied on. QuanticData does it in one POST for up to 10 questions on ChatGPT search, Google AI Overviews and DeepSeek.

### Which AI engines does it check?

Three today: openai, OpenAI's API with its web search tool, the closest programmatic equivalent of ChatGPT search; aio, the Google AI Overview read from a live results page in your country; and deepseek, Google's top 10 for the question handed to DeepSeek to answer and cite. Rows an engine cannot answer are not billed.

### What is the difference between a mention and a citation?

A mention means the answer text names your brand; a citation means the engine lists one of your URLs among its sources. The API reports both for every answer, because an engine can recommend you without linking you, or link one of your pages without naming the brand. The brand field sets the name to look for.

### How much does the AI Visibility API cost?

$0.01 per audit plus $0.01 per answer obtained, where an answer is one question on one engine. Ten questions on three engines cost at most $0.31 a run. Rows that come back with an error, such as a question with no AI Overview, are not billed, and every account gets $2 of free usage a month.

### Is there a free AI visibility API?

Every account with a permanent email address gets $2 of API usage free each month, with no card required, shared across all QuanticData Data APIs. That covers ten questions on two engines every week, with credit to spare. The free AI visibility audit tool checks a single page the way an AI crawler sees it, without an account.

### Can I track share of voice against competitors?

Yes. shareOfVoice lists every domain cited across the panel with the number of answers that cited it and its share, and flags your domain and up to 20 competitor domains you pass in competitors. losingTo lists the domains cited in the answers where you are absent, which shows the pages that win the questions you are missing.

### Can I check AI answers by country?

Yes, one country per call. country sets the proxy exit and the locale of the Google results page the AI Overview is read from, passes an approximate country location to ChatGPT search, and localizes the Google results DeepSeek answers from. To compare markets, run the same panel once per country and keep the responses side by side.

### Is this the real ChatGPT?

It is OpenAI's own API with its web search tool, the closest a program can get to ChatGPT search; it is not chatgpt.com in a browser, and the response says so in engineNotes. Answers move between runs: the same question, asked twice on 26 October 2026, cited our page third and then sixth.

### How often should I run it?

On the schedule your report needs: daily, weekly, or before and after you change a page. There is no scheduler inside the API, so call it from cron, n8n or an agent and store each response as a dated snapshot. Read a trend over several runs, because a single answer can change from one run to the next.

### What are the limits?

Up to 10 questions per call, 20 competitor domains and a brand name of up to 80 characters. Each account can get 300 answers a day from ChatGPT search and DeepSeek together, counted as questions × those engines; AI Overview rows do not count. When the limit is reached the API answers 429 with the time it resets.

### Can AI agents use it directly?

Yes. The QuanticData MCP server exposes the same call as the ai_visibility tool, so Claude, Cursor or any MCP client can run a panel mid-conversation and read the rows. From your own code it is one HTTPS POST with a Bearer key, and the Playground builds the request for you before you write any.

## Run your first panel in a minute

$2 free every month, no card. Mentions, citations and share of voice from the first call.

[Get my free API key](https://app.quanticdata.io/register?utm_source=ai-visibility-api&utm_medium=website&utm_campaign=site&utm_content=ai-visibility-api-closing)

Also on the platform:

- [Free AI visibility audit](https://quanticdata.io/tools/ai-visibility-audit/)
- [AI crawler access checker](https://quanticdata.io/tools/ai-crawler-checker/)
- [SEO Audit API](https://quanticdata.io/seo-audit/)
- [SERP API](https://quanticdata.io/serp-api/)
- [MCP Server](https://quanticdata.io/mcp-server/)
- [Web Data API for AI](https://quanticdata.io/web-data-api-for-ai/)
- [AI Web Scraping Service](https://quanticdata.io/ai-web-scraping-service/)
- [Video API](https://quanticdata.io/video-api/)
- [Pricing](https://quanticdata.io/pricing/)

---

Source: https://quanticdata.io/ai-visibility-api/ · Site index for AI: https://quanticdata.io/llms.txt
