AI Brand Comparison API

SEO API documentation for REST and MCP, generated from the implemented API contract.

API selector
AI Visibility

API overview

Independent target group metrics and provider union aggregate without summing overlapping groups. Historical provider database facts, not a live model execution. Domain filters use cited sources and keyword filters use answer text. Preserve nullable evidence and unsupported dimensions.

Try this API
Endpoint
/api/skill-api/v1/skills/seo-ai-target-comparison/run
MCP method
nexscope_seo_ai_target_comparison

Authentication

All run endpoints require a user API key. Send it as a bearer token in the Authorization header.

Authorization: Bearer nk_xxxxxxxxxxxxxxxxx
Missing or invalid API keys return an authentication error. Manage keys from .
POST/api/skill-api/v1/skills/seo-ai-target-comparison/run

Run an API

Send a JSON request body using the parameters described below.

Slugseo-ai-target-comparison
HeadersAuthorization: Bearer nk_...
Content-Type: application/json
Request bodyAPI-specific JSON object.
Response bodyComplete HTTP envelope, including code and data.

Status codes

CodeDescription
200API executed successfully. Body is the direct response payload.
400Request JSON or required API parameters are invalid.
401API key is missing, invalid, or cannot be matched to a user.
5xxAPI execution or upstream service failed.

Example request

curl -X POST https://api.nexscope.ai/api/skill-api/v1/skills/seo-ai-target-comparison/run \
  -H "Authorization: Bearer nk_xxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{   "groups": [     {       "key": "example",       "target": [         {           "domain": "example",           "includeSubdomains": false,           "kind": "DOMAIN",           "searchFilter": "include"         }       ]     },     {       "key": "example",       "target": [         {           "domain": "example",           "includeSubdomains": false,           "kind": "DOMAIN",           "searchFilter": "include"         }       ]     }   ],   "language": "en",   "market": "US",   "platform": "google" }'
All categories/ AI Visibility
POST/api/skill-api/v1/skills/seo-ai-target-comparison/run

Run this API

Send a JSON request to execute this API and receive the documented response payload.

Endpoint

MethodPOST
Path/api/skill-api/v1/skills/seo-ai-target-comparison/run
AuthBearer API key
Content-Typeapplication/json

Request body

NameTypeRequiredDescription
groupsarrayrequired
Groups value used by this API operation.
Minimum items: 2
Maximum items: 10
groups[]objectrequired
Item in groups.
groups[].keystringrequired
Key value used by this API operation.
Minimum length: 1
Maximum length: 80
groups[].targetarrayrequired
Target value used by this API operation.
Minimum items: 1
Maximum items: 10
groups[].target[]anyrequired
Item in groups[] target.
languagestringoptional
Language value used by this API operation.
Constant: en
Default: en
marketstringoptional
Market value used by this API operation.
Constant: US
Default: US
platformstringoptional
Platform value used by this API operation.
Allowed: google, chat_gpt
Default: google

One of option 1 — requires kind, domain

NameTypeRequiredDescription
groups[].target[]objectrequired
Item in groups[] target.
groups[].target[].domainstringrequired
Normalized ASCII hostname at most63 characters.
Minimum length: 1
groups[].target[].includeSubdomainsbooleanoptional
Include subdomains value used by this API operation.
Default: false
groups[].target[].kindstringrequired
Kind value used by this API operation.
Constant: DOMAIN
groups[].target[].searchFilterstringoptional
Search filter value used by this API operation.
Allowed: include, exclude
Default: include

One of option 2 — requires kind, keyword

NameTypeRequiredDescription
groups[].target[]objectrequired
Item in groups[] target.
groups[].target[].keywordstringrequired
Trim/NFC/lowercase1..80 code points,max10 words,no ASCII percent or plus.
Minimum length: 1
groups[].target[].kindstringrequired
Kind value used by this API operation.
Constant: KEYWORD
groups[].target[].matchTypestringoptional
Match type value used by this API operation.
Allowed: word_match, partial_match
Default: word_match
groups[].target[].searchFilterstringoptional
Search filter value used by this API operation.
Allowed: include, exclude
Default: include

Request example

{
  "groups": [
    {
      "key": "example",
      "target": [
        {
          "domain": "example",
          "includeSubdomains": false,
          "kind": "DOMAIN",
          "searchFilter": "include"
        }
      ]
    },
    {
      "key": "example",
      "target": [
        {
          "domain": "example",
          "includeSubdomains": false,
          "kind": "DOMAIN",
          "searchFilter": "include"
        }
      ]
    }
  ],
  "language": "en",
  "market": "US",
  "platform": "google"
}

Response body

NameTypeRequiredDescription
codeintegerrequired
0 is a successful envelope; inspect data.status separately.
Allowed: 0, 42008, 42009
coststringrequired
Elapsed processing milliseconds; not price. -1 for non-web context.
dataobjectrequired
Data value used by this API operation.
data.callIdstring | nulloptional
Call id value used by this API operation.
data.completedAtinteger | nulloptional
Completed at value used by this API operation.
data.coverageobjectoptional
Coverage value used by this API operation.
data.coverage.missingarrayoptional
Missing value used by this API operation.
data.coverage.missing[]objectrequired
Item in data coverage missing.
data.coverage.missing[].fieldstringoptional
Field value used by this API operation.
data.coverage.missing[].reasonstringoptional
Reason value used by this API operation.
data.coverage.statusstringoptional
Status value used by this API operation.
data.requestedAtinteger | nulloptional
Requested at value used by this API operation.
data.resultobject | nullrequired
Result value used by this API operation.
data.result.contextobjectrequired
Context value used by this API operation.
data.result.context.domainSearchScopestringrequired
Domain search scope value used by this API operation.
Constant: sources
data.result.context.groupsarrayrequired
Groups value used by this API operation.
Minimum items: 2
Maximum items: 10
data.result.context.groups[]objectrequired
Item in data result context groups.
data.result.context.groups[].inputTargetsarrayrequired
Input targets value used by this API operation.
Minimum items: 1
Maximum items: 10
data.result.context.groups[].inputTargets[]anyrequired
Item in data result context groups[] inputTargets.
data.result.context.groups[].keystringrequired
Key value used by this API operation.
data.result.context.groups[].normalizedTargetsarrayrequired
Normalized targets value used by this API operation.
Minimum items: 1
Maximum items: 10
data.result.context.groups[].normalizedTargets[]anyrequired
Item in data result context groups[] normalizedTargets.
data.result.context.keywordSearchScopestringrequired
Keyword search scope value used by this API operation.
Constant: answer
data.result.context.platformstringrequired
Platform value used by this API operation.
Allowed: google, chat_gpt
Default: google
data.result.context.unsupportedDimensionsarrayrequired
Unsupported dimensions value used by this API operation.
Minimum items: 0
Maximum items: 3
data.result.context.unsupportedDimensions[]stringrequired
Item in data result context unsupportedDimensions.
Allowed: searchResultDomains, brands, brandCategories
data.result.groupsarrayrequired
Groups value used by this API operation.
Minimum items: 2
Maximum items: 10
data.result.groups[]objectrequired
Item in data result groups.
data.result.groups[].keystringrequired
Key value used by this API operation.
data.result.groups[].metricsobjectrequired
Metrics value used by this API operation.
data.result.groups[].metrics.brandCategoriesarray | nullrequired
Brand categories value used by this API operation.
Minimum items: 0
Maximum items: 10
data.result.groups[].metrics.brandCategories[]objectrequired
Item in data result groups[] metrics brandCategories.
data.result.groups[].metrics.brandCategories[].countsobjectrequired
Counts value used by this API operation.
data.result.groups[].metrics.brandCategories[].counts.aiSearchVolumeinteger | nullrequired
Ai search volume value used by this API operation.
Minimum: 0
data.result.groups[].metrics.brandCategories[].counts.mentionsinteger | nullrequired
Mentions value used by this API operation.
Minimum: 0
data.result.groups[].metrics.brandCategories[].valuestringrequired
Value value used by this API operation.
data.result.groups[].metrics.brandsarray | nullrequired
Brands value used by this API operation.
Minimum items: 0
Maximum items: 10
data.result.groups[].metrics.brands[]objectrequired
Item in data result groups[] metrics brands.
data.result.groups[].metrics.brands[].countsobjectrequired
Counts value used by this API operation.
data.result.groups[].metrics.brands[].counts.aiSearchVolumeinteger | nullrequired
Ai search volume value used by this API operation.
Minimum: 0
data.result.groups[].metrics.brands[].counts.mentionsinteger | nullrequired
Mentions value used by this API operation.
Minimum: 0
data.result.groups[].metrics.brands[].valuestringrequired
Value value used by this API operation.
data.result.groups[].metrics.searchResultDomainsarray | nullrequired
Search result domains value used by this API operation.
Minimum items: 0
Maximum items: 10
data.result.groups[].metrics.searchResultDomains[]objectrequired
Item in data result groups[] metrics searchResultDomains.
data.result.groups[].metrics.searchResultDomains[].countsobjectrequired
Counts value used by this API operation.
data.result.groups[].metrics.searchResultDomains[].counts.aiSearchVolumeinteger | nullrequired
Ai search volume value used by this API operation.
Minimum: 0
data.result.groups[].metrics.searchResultDomains[].counts.mentionsinteger | nullrequired
Mentions value used by this API operation.
Minimum: 0
data.result.groups[].metrics.searchResultDomains[].domainstringrequired
Domain value used by this API operation.
data.result.groups[].metrics.sourceDomainsarray | nullrequired
Source domains value used by this API operation.
Minimum items: 0
Maximum items: 10
data.result.groups[].metrics.sourceDomains[]objectrequired
Item in data result groups[] metrics sourceDomains.
data.result.groups[].metrics.sourceDomains[].countsobjectrequired
Counts value used by this API operation.
data.result.groups[].metrics.sourceDomains[].counts.aiSearchVolumeinteger | nullrequired
Ai search volume value used by this API operation.
Minimum: 0
data.result.groups[].metrics.sourceDomains[].counts.mentionsinteger | nullrequired
Mentions value used by this API operation.
Minimum: 0
data.result.groups[].metrics.sourceDomains[].domainstringrequired
Domain value used by this API operation.
data.result.groups[].metrics.totalobjectrequired
Total value used by this API operation.
data.result.groups[].metrics.total.aiSearchVolumeinteger | nullrequired
Ai search volume value used by this API operation.
Minimum: 0
data.result.groups[].metrics.total.mentionsinteger | nullrequired
Mentions value used by this API operation.
Minimum: 0
data.result.groups[].missingarrayrequired
Missing value used by this API operation.
Minimum items: 0
data.result.groups[].missing[]objectrequired
Item in data result groups[] missing.
data.result.groups[].missing[].fieldstringrequired
Field value used by this API operation.
data.result.groups[].missing[].reasonstringrequired
Reason value used by this API operation.
Allowed: UPSTREAM_FIELD_MISSING, UPSTREAM_FIELD_INVALID, DUPLICATE_UPSTREAM_ITEM, UPSTREAM_ITEM_MISSING
data.result.languagestringrequired
Language value used by this API operation.
Constant: en
data.result.marketstringrequired
Market value used by this API operation.
Constant: US
data.result.missingarrayrequired
Missing value used by this API operation.
Minimum items: 0
data.result.missing[]objectrequired
Item in data result missing.
data.result.missing[].fieldstringrequired
Field value used by this API operation.
data.result.missing[].reasonstringrequired
Reason value used by this API operation.
Allowed: UPSTREAM_FIELD_MISSING, UPSTREAM_FIELD_INVALID, DUPLICATE_UPSTREAM_ITEM, UPSTREAM_ITEM_MISSING
data.result.returnedCountintegerrequired
Returned count value used by this API operation.
Minimum: 0
data.result.sourceKindstringrequired
Source kind value used by this API operation.
Constant: llm_mentions_database
data.result.sourceProductstringrequired
Source product value used by this API operation.
Constant: ai_optimization
data.result.truncatedbooleanrequired
Truncated value used by this API operation.
data.result.unionMetricsobjectrequired
Union metrics value used by this API operation.
data.result.unionMetrics.brandCategoriesarray | nullrequired
Brand categories value used by this API operation.
Minimum items: 0
Maximum items: 10
data.result.unionMetrics.brandCategories[]objectrequired
Item in data result unionMetrics brandCategories.
data.result.unionMetrics.brandCategories[].countsobjectrequired
Counts value used by this API operation.
data.result.unionMetrics.brandCategories[].counts.aiSearchVolumeinteger | nullrequired
Ai search volume value used by this API operation.
Minimum: 0
data.result.unionMetrics.brandCategories[].counts.mentionsinteger | nullrequired
Mentions value used by this API operation.
Minimum: 0
data.result.unionMetrics.brandCategories[].valuestringrequired
Value value used by this API operation.
data.result.unionMetrics.brandsarray | nullrequired
Brands value used by this API operation.
Minimum items: 0
Maximum items: 10
data.result.unionMetrics.brands[]objectrequired
Item in data result unionMetrics brands.
data.result.unionMetrics.brands[].countsobjectrequired
Counts value used by this API operation.
data.result.unionMetrics.brands[].counts.aiSearchVolumeinteger | nullrequired
Ai search volume value used by this API operation.
Minimum: 0
data.result.unionMetrics.brands[].counts.mentionsinteger | nullrequired
Mentions value used by this API operation.
Minimum: 0
data.result.unionMetrics.brands[].valuestringrequired
Value value used by this API operation.
data.result.unionMetrics.searchResultDomainsarray | nullrequired
Search result domains value used by this API operation.
Minimum items: 0
Maximum items: 10
data.result.unionMetrics.searchResultDomains[]objectrequired
Item in data result unionMetrics searchResultDomains.
data.result.unionMetrics.searchResultDomains[].countsobjectrequired
Counts value used by this API operation.
data.result.unionMetrics.searchResultDomains[].counts.aiSearchVolumeinteger | nullrequired
Ai search volume value used by this API operation.
Minimum: 0
data.result.unionMetrics.searchResultDomains[].counts.mentionsinteger | nullrequired
Mentions value used by this API operation.
Minimum: 0
data.result.unionMetrics.searchResultDomains[].domainstringrequired
Domain value used by this API operation.
data.result.unionMetrics.sourceDomainsarray | nullrequired
Source domains value used by this API operation.
Minimum items: 0
Maximum items: 10
data.result.unionMetrics.sourceDomains[]objectrequired
Item in data result unionMetrics sourceDomains.
data.result.unionMetrics.sourceDomains[].countsobjectrequired
Counts value used by this API operation.
data.result.unionMetrics.sourceDomains[].counts.aiSearchVolumeinteger | nullrequired
Ai search volume value used by this API operation.
Minimum: 0
data.result.unionMetrics.sourceDomains[].counts.mentionsinteger | nullrequired
Mentions value used by this API operation.
Minimum: 0
data.result.unionMetrics.sourceDomains[].domainstringrequired
Domain value used by this API operation.
data.result.unionMetrics.totalobjectrequired
Total value used by this API operation.
data.result.unionMetrics.total.aiSearchVolumeinteger | nullrequired
Ai search volume value used by this API operation.
Minimum: 0
data.result.unionMetrics.total.mentionsinteger | nullrequired
Mentions value used by this API operation.
Minimum: 0
data.schemaVersionstring | nulloptional
Schema version value used by this API operation.
data.sourcestring | nulloptional
Source value used by this API operation.
data.statusstringoptional
Status value used by this API operation.
Allowed: SUCCESS, PARTIAL, EMPTY, PROCESSING, UNKNOWN, FAILED
data.usageobjectoptional
Usage value used by this API operation.
data.usage.billingStatusstringoptional
Billing status value used by this API operation.
data.usage.chargedCreditsinteger | nulloptional
Charged credits value used by this API operation.
data.usage.providerCostStatusstringoptional
Provider cost status value used by this API operation.
data.usage.providerCostUsdstring | nulloptional
Provider cost usd value used by this API operation.
data.usage.providerRequestsintegeroptional
Provider requests value used by this API operation.
msgstring | nullrequired
Msg value used by this API operation.
timestringrequired
yyyy-MM-dd HH:mm:ss
traceIdstring | nullrequired
Trace id value used by this API operation.
tsstringrequired
Epoch milliseconds; global long serializer.

One of option 1 — requires kind, domain, searchFilter, includeSubdomains

NameTypeRequiredDescription
data.result.context.groups[].inputTargets[]objectrequired
Item in data result context groups[] inputTargets.
data.result.context.groups[].inputTargets[].domainstringrequired
Normalized ASCII hostname at most63 characters.
Minimum length: 1
data.result.context.groups[].inputTargets[].includeSubdomainsbooleanrequired
Include subdomains value used by this API operation.
Default: false
data.result.context.groups[].inputTargets[].kindstringrequired
Kind value used by this API operation.
Constant: DOMAIN
data.result.context.groups[].inputTargets[].searchFilterstringrequired
Search filter value used by this API operation.
Allowed: include, exclude
Default: include

One of option 2 — requires kind, keyword, searchFilter, matchType

NameTypeRequiredDescription
data.result.context.groups[].inputTargets[]objectrequired
Item in data result context groups[] inputTargets.
data.result.context.groups[].inputTargets[].keywordstringrequired
Trim/NFC/lowercase1..80 code points,max10 words,no ASCII percent or plus.
Minimum length: 1
data.result.context.groups[].inputTargets[].kindstringrequired
Kind value used by this API operation.
Constant: KEYWORD
data.result.context.groups[].inputTargets[].matchTypestringrequired
Match type value used by this API operation.
Allowed: word_match, partial_match
Default: word_match
data.result.context.groups[].inputTargets[].searchFilterstringrequired
Search filter value used by this API operation.
Allowed: include, exclude
Default: include

One of option 1 — requires kind, domain, searchFilter, includeSubdomains

NameTypeRequiredDescription
data.result.context.groups[].normalizedTargets[]objectrequired
Item in data result context groups[] normalizedTargets.
data.result.context.groups[].normalizedTargets[].domainstringrequired
Normalized ASCII hostname at most63 characters.
Minimum length: 1
data.result.context.groups[].normalizedTargets[].includeSubdomainsbooleanrequired
Include subdomains value used by this API operation.
Default: false
data.result.context.groups[].normalizedTargets[].kindstringrequired
Kind value used by this API operation.
Constant: DOMAIN
data.result.context.groups[].normalizedTargets[].searchFilterstringrequired
Search filter value used by this API operation.
Allowed: include, exclude
Default: include

One of option 2 — requires kind, keyword, searchFilter, matchType

NameTypeRequiredDescription
data.result.context.groups[].normalizedTargets[]objectrequired
Item in data result context groups[] normalizedTargets.
data.result.context.groups[].normalizedTargets[].keywordstringrequired
Trim/NFC/lowercase1..80 code points,max10 words,no ASCII percent or plus.
Minimum length: 1
data.result.context.groups[].normalizedTargets[].kindstringrequired
Kind value used by this API operation.
Constant: KEYWORD
data.result.context.groups[].normalizedTargets[].matchTypestringrequired
Match type value used by this API operation.
Allowed: word_match, partial_match
Default: word_match
data.result.context.groups[].normalizedTargets[].searchFilterstringrequired
Search filter value used by this API operation.
Allowed: include, exclude
Default: include

Response example

Example response envelope from the documented SEO API contract.

{
  "code": 0,
  "cost": "-1",
  "data": {
    "callId": "synthetic-call",
    "completedAt": null,
    "coverage": {
      "missing": [
        {
          "field": "synthetic",
          "reason": "UPSTREAM_FIELD_MISSING"
        }
      ],
      "status": "PARTIAL"
    },
    "requestedAt": 123,
    "result": {
      "context": {
        "domainSearchScope": "synthetic",
        "groups": [
          {
            "inputTargets": [],
            "key": "synthetic",
            "normalizedTargets": []
          }
        ],
        "keywordSearchScope": "synthetic",
        "platform": "synthetic",
        "unsupportedDimensions": [
          "synthetic"
        ]
      },
      "groups": [
        {
          "key": "synthetic",
          "metrics": {
            "brandCategories": [
              {
                "counts": {
                  "aiSearchVolume": 9007199254740992,
                  "mentions": 9007199254740992
                },
                "value": "synthetic"
              }
            ],
            "brands": [
              {
                "counts": {
                  "aiSearchVolume": 9007199254740992,
                  "mentions": 9007199254740992
                },
                "value": "synthetic"
              }
            ],
            "searchResultDomains": [
              {
                "counts": {
                  "aiSearchVolume": 9007199254740992,
                  "mentions": 9007199254740992
                },
                "domain": "synthetic"
              }
            ],
            "sourceDomains": [
              {
                "counts": {
                  "aiSearchVolume": 9007199254740992,
                  "mentions": 9007199254740992
                },
                "domain": "synthetic"
              }
            ],
            "total": {
              "aiSearchVolume": 9007199254740992,
              "mentions": 9007199254740992
            }
          },
          "missing": [
            {
              "field": "synthetic",
              "reason": "synthetic"
            }
          ]
        }
      ],
      "language": "synthetic",
      "market": "synthetic",
      "missing": [
        {
          "field": "synthetic",
          "reason": "synthetic"
        }
      ],
      "returnedCount": 1,
      "sourceKind": "synthetic",
      "sourceProduct": "synthetic",
      "truncated": false,
      "unionMetrics": {
        "brandCategories": [
          {
            "counts": {
              "aiSearchVolume": 9007199254740992,
              "mentions": 9007199254740992
            },
            "value": "synthetic"
          }
        ],
        "brands": [
          {
            "counts": {
              "aiSearchVolume": 9007199254740992,
              "mentions": 9007199254740992
            },
            "value": "synthetic"
          }
        ],
        "searchResultDomains": [
          {
            "counts": {
              "aiSearchVolume": 9007199254740992,
              "mentions": 9007199254740992
            },
            "domain": "synthetic"
          }
        ],
        "sourceDomains": [
          {
            "counts": {
              "aiSearchVolume": 9007199254740992,
              "mentions": 9007199254740992
            },
            "domain": "synthetic"
          }
        ],
        "total": {
          "aiSearchVolume": 9007199254740992,
          "mentions": 9007199254740992
        }
      }
    },
    "schemaVersion": "synthetic",
    "source": "synthetic",
    "status": "PARTIAL",
    "usage": {
      "billingStatus": "UNAPPROVED",
      "chargedCredits": 0,
      "providerCostStatus": "UNAPPROVED",
      "providerCostUsd": null,
      "providerRequests": 0
    }
  },
  "msg": null,
  "time": "2026-01-01 00:00:00",
  "traceId": null,
  "ts": "9007199254740993"
}

Responses

CodeDescription
200API executed successfully. Body is the direct response payload.
400Request JSON or required API parameters are invalid.
401API key is missing, invalid, or cannot be matched to a user.
5xxAPI execution or upstream service failed.

Data source, freshness, and limitations

Source, freshness, coverage, rate limits, and estimation notes are not specified in this API definition unless they appear in the request or response field documentation above. Do not assume official marketplace data or real-time freshness when it is not explicitly documented.

MCP

Use the MCP endpoint when an agent needs to discover and call API tools with JSON-RPC.

GET /api/skill-api/v1/mcp
POST /api/skill-api/v1/mcp
Authorization: Bearer nk_xxxxxxxxxxxxxxxxx
Content-Type: application/json

Call a tool

{
  "jsonrpc": "2.0",
  "id": "tool-call-1",
  "method": "tools/call",
  "params": {
    "name": "nexscope_seo_ai_target_comparison",
    "arguments": {
      "groups": [
        {
          "key": "example",
          "target": [
            {
              "domain": "example",
              "includeSubdomains": false,
              "kind": "DOMAIN",
              "searchFilter": "include"
            }
          ]
        },
        {
          "key": "example",
          "target": [
            {
              "domain": "example",
              "includeSubdomains": false,
              "kind": "DOMAIN",
              "searchFilter": "include"
            }
          ]
        }
      ],
      "language": "en",
      "market": "US",
      "platform": "google"
    }
  }
}

Online test

Execute the current API with your API key and JSON payload.

Try it

Send a real request with the same contract shown in the reference.

Endpoint
/api/skill-api/v1/skills/seo-ai-target-comparison/run
MCP method
nexscope_seo_ai_target_comparison
cURL
curl -X POST \
  https://api.nexscope.ai/api/skill-api/v1/skills/seo-ai-target-comparison/run \
  -H "Authorization: Bearer nk-..." \
  -H "Content-Type: application/json" \
  -d '{ "groups": [ { "key": "example", "target": [ { "domain": "example", "includeSubdomains": false, "kind": "DOMAIN", "searchFilter": "include" } ] }, { "key": "example", "target": [ { "domain": "example", "includeSubdomains": false, "kind": "DOMAIN", "searchFilter": "include" } ] } ], "language": "en", "market": "US", "platform": "google" }'
Response
No response yet. Run the request to see the response here.