> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getcitable.com/llms.txt
> Use this file to discover all available pages before exploring further.

# get_search_console

> Returns Google search demand from the brand's connected Google Search Console: the Google search queries the brand's pages showed for, and the pages themselves, with googleImpre...

Returns Google search demand from the brand's connected Google Search Console: the Google search queries the brand's pages showed for, and the pages themselves, with googleImpressions (times shown in Google results), googleClicks and googlePosition (average rank, 1 = top). Read from the daily Search Console import, which covers a fixed window (usually the last 90 days, ending on the import day). The response gives that window as windowStart / windowEnd. Google's last 2–3 days are incomplete, so when checking against the Search Console UI, use exactly that window. This tool cannot pick another date range.

This is Google search data only. It does not show what anyone asked ChatGPT, Gemini, Perplexity or any other AI assistant. Never present a row as an AI question or as AI demand.

view "queries" (default) returns one row per Google search query with Google's own total for it (the Search Console UI's Performance → Queries). view "query\_pages" returns one row per query and page; a query's query\_pages rows do not add up to its "queries" total, so never sum them. Passing pageContains on "queries" returns "query\_pages" rows, because per-query totals carry no page. Query rows may carry matchedTrackedQuestionId / matchedTrackedQuestionText with matchMethod "inferred\_word\_overlap": that is our inference, from shared words, that the Google search relates to one of the brand's tracked questions (its question bank). It is not evidence that the tracked question was asked of an AI assistant. When you mention a match, say it is inferred. matchStatus says whether matching ran: "ok" (a null match is a real no-match), "unavailable" (the question bank could not be read, so rows are unmatched because we could not check; say so), "skipped" (not attempted).

view "pages" returns one row per page with its Google totals (Performance → Pages). A page row sums its URL variants (trailing slash, tracking parameters) and lists them in urls, so it can read above any single row in Search Console.

If the brand has no Search Console connection, status is "not\_connected" (say Search Console is not connected; point to /connectors). "no\_data\_yet" means connected but the first import has not run. "unavailable" means the stored data could not be read right now; never report that as zero. "ok" with no rows means the import ran and nothing matched.

Use this when the user asks:

* "Which Google searches bring people to our pricing page?"
* "Which pages get Google clicks?"
* "Is there Google search demand around this tracked question?"

Skip when the user wants AI visibility (use get\_brand\_visibility) or tracked questions themselves (use search\_prompt\_intelligence).

Response shape: \{ source: "google\_search\_console", status, view, windowStart, windowEnd, pulledAt, totalMatchingRows, truncated, matchStatus, queries: \[\{ searchQuery, page (null on "queries"), googleImpressions, googleClicks, googlePosition, matchedTrackedQuestionId, matchedTrackedQuestionText, matchMethod }], pages: \[\{ page, urls, googleImpressions, googleClicks, googlePosition }] }.

Example: calling with \{ pageContains: "/pricing", limit: 10 } returns the 10 query\_pages rows with the most Google impressions on pricing pages; \{ queryContains: "citable" } returns per-query totals for searches containing "citable".

## Inputs

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `view` | `'queries' \| 'query_pages' \| 'pages'` | no | — | "queries" (default): one row per Google search query, Google's own total. "query\_pages": one row per query and page. "pages": one row per page. |
| `pageContains` | `string` | no | — | Only rows whose page URL contains this text (case-insensitive), e.g. "/pricing". On view "queries" this returns "query\_pages" rows. |
| `queryContains` | `string` | no | — | Only Google search queries containing this text (case-insensitive). Not used on view "pages". |
| `limit` | `integer` | no | — | Max rows, sorted by Google impressions. Defaults to 25, max 100. |
| `matchTrackedQuestions` | `boolean` | no | — | Query views: add an inferred match to a tracked question on each row. Defaults to true. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.