Built-in tool
Track AI / LLM Mentions
Find the pages AI cites (ChatGPT / Google AI) for a keyword, brand, or domain, with mention counts and AI search volume.
Endpoint
Parameters
| Name | Type | Required | Note |
|---|---|---|---|
| querystring · required | string | required | Brand, product, or keyword to track in AI answers — or a domain when targetType=domain. |
| limitnumber · optional | number | optional | Maximum number of records to return (1-1000). Defaults to 100. Default: |
| scopestring · optional | string | optional | Where the query must appear in the AI record, when tracking a keyword. "question" (default) = the question people asked; "answer" = anywhere in the AI's reply (use for brand share-of-voice — much broader, and matches passing mentions); "any" = either. Ignored when targetType=domain. One of: Default: |
| platformstring · optional | string | optional | AI platform to search. chat_gpt covers the United States in English only; google covers other locations and languages. Leave empty to try chat_gpt and fall back to google where chat_gpt has no data. One of: |
| targetTypestring · optional | string | optional | Whether `query` is a keyword (default) or a domain. One of: |
| language_namestring · optional | string | optional | Language for results. Defaults to English. Each country collects only certain languages, so not every pairing exists. One of: Default: |
| location_namestring · optional | string | optional | Country for results. Defaults to United States. AI answer data is collected in 94 countries — fewer than the other SEO actions cover. One of: Default: |
Response schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"elements"
],
"properties": {
"elements": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": [
"string",
"null"
]
},
"title": {
"type": [
"string",
"null"
]
},
"domain": {
"type": [
"string",
"null"
]
},
"mentions": {
"type": [
"number",
"null"
]
},
"ai_search_volume": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": true
}
},
"returned": {
"type": "number",
"description": "How many rows this run returned, after any Limit was applied."
},
"truncated": {
"type": "boolean"
},
"suggestion": {
"type": "string"
},
"totalCount": {
"type": "number",
"description": "How many records the provider says MATCH in total, independent of Limit — routinely in the millions (spotify.com has 2,583,327 ranking pages). It is a match count, NOT how many this endpoint will serve: Limit caps what one call returns, so do not compare it against the row count to judge completeness and do not paginate towards it. Absent when the provider sent no count."
},
"totalElements": {
"type": "number",
"description": "DEPRECATED — despite the name this is the count RETURNED by this run, not a grand total, so it equals your Limit on a limited run. Kept at that value deliberately: ENG-17058 asked for depth 5 to report 5, and it is a live number in existing flows. Use `returned` for this number or `totalCount` for how many records match."
}
},
"additionalProperties": true
}