superagnt-com SEO: AI visibility API

How often LLMs mention a domain in their answers.

Operations 8

POST /v1/data/seo/ai-visibility How often LLMs mention a domain #
POST /v1/data/seo/chatgpt-app-answer ChatGPT app answer #
POST /v1/data/seo/gemini-app-answer Gemini app answer #
POST /v1/data/seo/chatgpt-api-answer OpenAI API answer with citations #
POST /v1/data/seo/claude-api-answer Claude API answer with citations #
POST /v1/data/seo/gemini-api-answer Gemini API answer with citations #
POST /v1/data/seo/perplexity-api-answer Perplexity API answer with citations #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/superagnt-com:superagnt-com-seo-ai-visibility-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

superagnt-com-seo-ai-visibility-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: 'superagnt SEO: AI visibility API'
  description: Unified API for social media data. Access LinkedIn, YouTube, TikTok, X, Instagram, Reddit, and Facebook through a single API key.
  version: 1.0.0
  contact:
    name: superagnt
    url: https://superagnt.com
servers:
- url: https://api.superagnt.com
  description: superagnt API
security:
- ApiKeyAuth: []
tags:
- name: 'SEO: AI visibility'
  description: How often LLMs mention a domain in their answers.
paths:
  /v1/data/seo/serp-ai-mode:
    post:
      operationId: google_ai_mode_search
      summary: Google AI Mode results
      x-agnt-permission: act
      description: 'Runs the query through Google''s AI Mode and returns the AI-generated answer with its cited sources and references. Use it to see how Google''s AI answers a question and which pages it cites, which is the core check for answer-engine optimization: is your (or a competitor''s) content being used as a source? Costs about 2x a classic search.'
      tags:
      - 'SEO: AI visibility'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - keyword
              properties:
                keyword:
                  type: string
                  maxLength: 700
                  description: The question or query to run through Google AI Mode.
                location_code:
                  type: integer
                  description: 'Geo target as a location code. Common values: 2840 United States (default), 2826 United Kingdom, 2124 Canada, 2036 Australia, 2276 Germany.'
                  default: 2840
                language_code:
                  type: string
                  description: Two-letter language code, e.g. 'en' (default).
                  default: en
            example:
              keyword: what is the best email warmup tool
      responses:
        '200':
          description: The AI-generated answer with cited sources in `result[0].items`.
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad request or upstream task error.
        '401':
          description: Unauthorized.
        '429':
          description: Too many requests.
        5XX:
          description: Upstream error.
      security:
      - ApiKeyAuth: []
  /v1/data/seo/ai-visibility:
    post:
      operationId: ai_visibility
      summary: How often LLMs mention a domain
      x-agnt-permission: act
      description: 'Returns aggregated metrics on how often large language models mention or cite the target domains or keywords in their answers. Navigation: the data lives at result[0].aggregated_metrics (by platform/location/language) — the items array is often legitimately EMPTY, so do not treat items_count 0 as no data. Priced per request (roughly 40x a search, ~18 cents) regardless of returned rows, so run it for periodic brand tracking, not in loops.'
      tags:
      - 'SEO: AI visibility'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                targets:
                  type: array
                  items:
                    type: string
                  maxItems: 10
                  description: Domains to measure LLM mention metrics for, no protocol. Pass at least one of targets or keywords.
                keywords:
                  type: array
                  items:
                    type: string
                  maxItems: 10
                  description: Keyword phrases to measure LLM mention metrics for, as an alternative or addition to domains.
                limit:
                  type: integer
                  minimum: 1
                  maximum: 1000
                  default: 100
                  description: Max rows to return. Default 100. Cost scales with rows.
            example:
              targets:
              - yourapp.com
      responses:
        '200':
          description: LLM mention metrics for the targets in `result[0].items`.
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad request or upstream task error.
        '401':
          description: Unauthorized.
        '429':
          description: Too many requests.
        5XX:
          description: Upstream error.
      security:
      - ApiKeyAuth: []
  /v1/data/seo/chatgpt-app-answer:
    post:
      operationId: chatgpt_app_answer
      summary: ChatGPT app answer
      x-agnt-permission: act
      description: Asks ChatGPT a question the way a logged-out user in the chosen country would in the ChatGPT app, and returns the answer as Markdown in `result[0].markdown` with every source it cited in `result[0].sources[]` (each with `url`, `title` and `domain`), the web results it read in `result[0].search_results[]`, the follow-up queries it ran in `result[0].fan_out_queries[]` and the brands it named in `result[0].brand_entities[]`. Use it to see whether ChatGPT cites a site and how it describes a brand. A live answer can take up to 95 seconds; one that runs longer fails with an error and is not charged. An answer with no sources is a valid answer, not an error.
      tags:
      - 'SEO: AI visibility'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - keyword
              properties:
                keyword:
                  type: string
                  maxLength: 2000
                  description: The question to ask ChatGPT, as a user would type it.
                location_code:
                  type: integer
                  description: 'Geo target as a location code. Common values: 2840 United States (default), 2826 United Kingdom, 2124 Canada, 2036 Australia, 2276 Germany.'
                  default: 2840
                language_code:
                  type: string
                  description: Two-letter language code, e.g. 'en' (default).
                  default: en
                force_web_search:
                  type: boolean
                  default: false
                  description: Push ChatGPT to search the web and cite current sources. Citations are still not guaranteed.
            example:
              keyword: what is the best email warmup tool
      responses:
        '200':
          description: ChatGPT's answer in `result[0].markdown`, its cited sources in `result[0].sources[]`.
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad request or upstream task error.
        '401':
          description: Unauthorized.
        '429':
          description: 'Too many requests, or every live slot for this engine is busy: retry after `Retry-After` seconds.'
        5XX:
          description: Upstream error.
      security:
      - ApiKeyAuth: []
      x-agnt-timeout-ms: 95000
  /v1/data/seo/gemini-app-answer:
    post:
      operationId: gemini_app_answer
      summary: Gemini app answer
      x-agnt-permission: act
      description: Asks Gemini a question the way a logged-out user in the chosen country would in the Gemini app, and returns the answer as Markdown in `result[0].markdown` with every source it cited in `result[0].sources[]` (each with `url`, `title` and `domain`). Use it to see whether Gemini cites a site and how it describes a brand. A live answer can take up to 95 seconds; one that runs longer fails with an error and is not charged. An answer with no sources is a valid answer, not an error.
      tags:
      - 'SEO: AI visibility'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - keyword
              properties:
                keyword:
                  type: string
                  maxLength: 2000
                  description: The question to ask Gemini, as a user would type it.
                location_code:
                  type: integer
                  description: 'Geo target as a location code. Common values: 2840 United States (default), 2826 United Kingdom, 2124 Canada, 2036 Australia, 2276 Germany.'
                  default: 2840
                language_code:
                  type: string
                  description: Two-letter language code, e.g. 'en' (default).
                  default: en
            example:
              keyword: what is the best email warmup tool
      responses:
        '200':
          description: Gemini's answer in `result[0].markdown`, its cited sources in `result[0].sources[]`.
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad request or upstream task error.
        '401':
          description: Unauthorized.
        '429':
          description: 'Too many requests, or every live slot for this engine is busy: retry after `Retry-After` seconds.'
        5XX:
          description: Upstream error.
      security:
      - ApiKeyAuth: []
      x-agnt-timeout-ms: 95000
  /v1/data/seo/chatgpt-api-answer:
    post:
      operationId: chatgpt_api_answer
      summary: OpenAI API answer with citations
      x-agnt-permission: act
      description: 'Asks an OpenAI model through its API (not the consumer app) and returns its answer with citations: the `result[0].items[]` element with `type: "message"` holds the answer in `sections[].text` and its citations in `sections[].annotations[]` (each with `url` and `title`). Token counts are on `result[0]`. Numbers measured this way are API answers, which can differ from what the OpenAI app shows. A live answer can take up to 95 seconds; one that runs longer fails with an error and is not charged. An answer with no sources is a valid answer, not an error.'
      tags:
      - 'SEO: AI visibility'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - user_prompt
              properties:
                user_prompt:
                  type: string
                  maxLength: 500
                  description: The question to ask the model.
                model_name:
                  type: string
                  enum:
                  - gpt-4o-mini
                  - gpt-4o
                  - gpt-5-mini
                  default: gpt-4o-mini
                  description: 'The model to ask: gpt-4o-mini, gpt-4o, gpt-5-mini (default gpt-4o-mini).'
                max_output_tokens:
                  type: integer
                  minimum: 16
                  maximum: 2048
                  default: 1024
                  description: Cap on the answer's length in tokens, 16-2048 (default 1024). Web search can push a model slightly past it. gpt-5-mini needs at least 1024.
                web_search:
                  type: boolean
                  default: true
                  description: Let the model search the web and cite sources (default true). Citations are still not guaranteed.
                force_web_search:
                  type: boolean
                  default: false
                  description: Push the model to search the web before answering. Needs `web_search`; citations are still not guaranteed.
                web_search_country_iso_code:
                  type: string
                  description: Two-letter country code the web search runs from, e.g. 'US'.
            example:
              user_prompt: What is the best email warmup tool?
              model_name: gpt-4o-mini
      responses:
        '200':
          description: 'The OpenAI model''s answer in `result[0].items[]` (`type: "message"`), with citations in its `sections[].annotations[]`.'
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad request or upstream task error.
        '401':
          description: Unauthorized.
        '429':
          description: 'Too many requests, or every live slot for this engine is busy: retry after `Retry-After` seconds.'
        5XX:
          description: Upstream error.
      security:
      - ApiKeyAuth: []
      x-agnt-timeout-ms: 95000
  /v1/data/seo/claude-api-answer:
    post:
      operationId: claude_api_answer
      summary: Claude API answer with citations
      x-agnt-permission: act
      description: 'Asks a Claude model through its API (not the consumer app) and returns its answer with citations: the `result[0].items[]` element with `type: "message"` holds the answer in `sections[].text` and its citations in `sections[].annotations[]` (each with `url` and `title`). Token counts are on `result[0]`. Numbers measured this way are API answers, which can differ from what the Claude app shows. A live answer can take up to 95 seconds; one that runs longer fails with an error and is not charged. An answer with no sources is a valid answer, not an error.'
      tags:
      - 'SEO: AI visibility'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - user_prompt
              properties:
                user_prompt:
                  type: string
                  maxLength: 500
                  description: The question to ask the model.
                model_name:
                  type: string
                  enum:
                  - claude-haiku-4-5
                  - claude-sonnet-4-5
                  default: claude-haiku-4-5
                  description: 'The model to ask: claude-haiku-4-5, claude-sonnet-4-5 (default claude-haiku-4-5).'
                max_output_tokens:
                  type: integer
                  minimum: 16
                  maximum: 2048
                  default: 1024
                  description: Cap on the answer's length in tokens, 16-2048 (default 1024). Web search can push a model slightly past it.
                web_search:
                  type: boolean
                  default: true
                  description: Let the model search the web and cite sources (default true). Citations are still not guaranteed.
                force_web_search:
                  type: boolean
                  default: false
                  description: Push the model to search the web before answering. Needs `web_search`; citations are still not guaranteed.
                web_search_country_iso_code:
                  type: string
                  description: Two-letter country code the web search runs from, e.g. 'US'.
            example:
              user_prompt: What is the best email warmup tool?
              model_name: claude-haiku-4-5
      responses:
        '200':
          description: 'The Claude model''s answer in `result[0].items[]` (`type: "message"`), with citations in its `sections[].annotations[]`.'
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad request or upstream task error.
        '401':
          description: Unauthorized.
        '429':
          description: 'Too many requests, or every live slot for this engine is busy: retry after `Retry-After` seconds.'
        5XX:
          description: Upstream error.
      security:
      - ApiKeyAuth: []
      x-agnt-timeout-ms: 95000
  /v1/data/seo/gemini-api-answer:
    post:
      operationId: gemini_api_answer
      summary: Gemini API answer with citations
      x-agnt-permission: act
      description: 'Asks a Gemini model through its API (not the consumer app) and returns its answer with citations: the `result[0].items[]` element with `type: "message"` holds the answer in `sections[].text` and its citations in `sections[].annotations[]` (each with `url` and `title`); a Gemini citation''s `url` is a redirect, and `direct_url` holds the page itself. Token counts are on `result[0]`. Numbers measured this way are API answers, which can differ from what the Gemini app shows. A live answer can take up to 95 seconds; one that runs longer fails with an error and is not charged. An answer with no sources is a valid answer, not an error.'
      tags:
      - 'SEO: AI visibility'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - user_prompt
              properties:
                user_prompt:
                  type: string
                  maxLength: 500
                  description: The question to ask the model.
                model_name:
                  type: string
                  enum:
                  - gemini-2.5-flash-lite
                  - gemini-2.5-flash
                  - gemini-2.0-flash
                  default: gemini-2.5-flash-lite
                  description: 'The model to ask: gemini-2.5-flash-lite, gemini-2.5-flash, gemini-2.0-flash (default gemini-2.5-flash-lite).'
                max_output_tokens:
                  type: integer
                  minimum: 16
                  maximum: 2048
                  default: 1024
                  description: Cap on the answer's length in tokens, 16-2048 (default 1024). Web search can push a model slightly past it.
                web_search:
                  type: boolean
                  default: true
                  description: Let the model search the web and cite sources (default true). Citations are still not guaranteed.
            example:
              user_prompt: What is the best email warmup tool?
              model_name: gemini-2.5-flash-lite
      responses:
        '200':
          description: 'The Gemini model''s answer in `result[0].items[]` (`type: "message"`), with citations in its `sections[].annotations[]`.'
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad request or upstream task error.
        '401':
          description: Unauthorized.
        '429':
          description: 'Too many requests, or every live slot for this engine is busy: retry after `Retry-After` seconds.'
        5XX:
          description: Upstream error.
      security:
      - ApiKeyAuth: []
      x-agnt-timeout-ms: 95000
  /v1/data/seo/perplexity-api-answer:
    post:
      operationId: perplexity_api_answer
      summary: Perplexity API answer with citations
      x-agnt-permission: act
      description: 'Asks a Perplexity model through its API (not the consumer app) and returns its answer with citations: the `result[0].items[]` element with `type: "message"` holds the answer in `sections[].text` and its citations in `sections[].annotations[]` (each with `url` and `title`). Token counts are on `result[0]`. Numbers measured this way are API answers, which can differ from what the Perplexity app shows. A live answer can take up to 95 seconds; one that runs longer fails with an error and is not charged. An answer with no sources is a valid answer, not an error.'
      tags:
      - 'SEO: AI visibility'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - user_prompt
              properties:
                user_prompt:
                  type: string
                  maxLength: 500
                  description: The question to ask the model.
                model_name:
                  type: string
                  enum:
                  - sonar
                  - sonar-pro
                  default: sonar
                  description: 'The model to ask: sonar, sonar-pro (default sonar).'
                max_output_tokens:
                  type: integer
                  minimum: 16
                  maximum: 2048
                  default: 1024
                  description: Cap on the answer's length in tokens, 16-2048 (default 1024). Web search can push a model slightly past it.
                web_search_country_iso_code:
                  type: string
                  description: Two-letter country code the web search runs from, e.g. 'US'. Sonar models always search the web.
            example:
              user_prompt: What is the best email warmup tool?
              model_name: sonar
      responses:
        '200':
          description: 'The Perplexity model''s answer in `result[0].items[]` (`type: "message"`), with citations in its `sections[].annotations[]`.'
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad request or upstream task error.
        '401':
          description: Unauthorized.
        '429':
          description: 'Too many requests, or every live slot for this engine is busy: retry after `Retry-After` seconds.'
        5XX:
          description: Upstream error.
      security:
      - ApiKeyAuth: []
      x-agnt-timeout-ms: 95000
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: 'Bearer token. Pass your agntdata API key as: Authorization: Bearer agnt_live_...'