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: 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_...'