Skip to main content
Connectors

Google Search Console connector

Set up the Google Search Console connector in Kaivo: authentication, configuration, the 14 BigQuery tables it syncs, and answers to common questions.

Written By Lauri Raivio

Last updated 15 days ago

Kaivo is a fully managed data platform that syncs your Google Search Console data into a Google BigQuery warehouse and keeps it up to date automatically. There is no pipeline to build and no infrastructure to run, so you can spend your time analysing your marketing and sales data instead of moving it.

What is the Google Search Console connector

Sync your Google Search Console data into BigQuery with Kaivo to analyse organic search performance alongside the rest of your data.

CategoryMarketing & Sales
AuthenticationOAuth or API key
SetupSelf-service

Getting started with the Google Search Console connector

  1. Sign up for Kaivo and create a workspace.
  2. Connect your Google Search Console account.
  3. Choose which tables to sync.
  4. Wait for the initial sync to finish.
  5. Query your data in BigQuery or your favourite AI or BI tool.

Authenticating Google Search Console

The Google Search Console connector supports 2 ways to connect. Pick the one that fits how you work.

Sign in with Google

Connect by signing in to your Google account. Kaivo runs the connection for you, so you never share a password.

Service account

Authenticate with your Google Search Console credentials. You provide:

FieldDescription
Service Account JSON Key

The JSON key of the service account to use for authorization. Read more here.

Admin Email

The email of the user which has permissions to access the Google Workspace Admin APIs.

Configuring the Google Search Console connector

When you set up the connector, you provide:

FieldDescription
Website URL Property

The URL of the website property attached to your Google Search Console account. The format is either https://example1.com/ or example1.com. Read more here.

Start Date

Any data before this date will not be fetched.

Tables and columns synced from Google Search Console

Kaivo syncs 14 tables from Google Search Console into a dedicated dataset in your BigQuery warehouse. Click any table to see its columns and types.

ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
site_urlSTRINGThe URL of the site from which the data originates.
search_typeSTRINGThe type of search (e.g., web, image, video) that triggered the search result.
dateDATEThe date when the search query occurred.
countrySTRINGThe country from which the search query originated.
deviceSTRINGThe type of device used by the user (e.g., desktop, mobile).
pageSTRINGThe page URL that appeared in the search results.
querySTRINGThe search query entered by the user.
clicksINT64The number of times users clicked on the search result for a specific query.
impressionsINT64The number of times a search result appeared in response to a query.
ctrFLOAT64Click-through rate, calculated as clicks divided by impressions.
positionFLOAT64The average position of the search result on the search engine results page.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
site_urlSTRINGThe URL of the site for which the search analytics data is being reported.
search_typeSTRINGThe type of search (web search, image search, video search, etc.) for which the data is being reported.
dateDATEThe date for which the search analytics data is being reported.
countrySTRINGThe country for which the search analytics data is being reported.
clicksINT64The number of times users clicked on the search result for a specific country.
impressionsINT64The total number of times a search result was shown in search results for a specific country.
ctrFLOAT64The click-through rate, i.e., the ratio of clicks to impressions for a specific country.
positionFLOAT64The average position at which the site's search result appeared for a specific country.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
site_urlSTRINGThe URL of the site for which the search analytics data is being reported.
search_typeSTRINGThe type of search query (e.g., web, image, video) that generated the search analytics data.
dateDATEThe date for which the search analytics data is being reported.
clicksINT64The total number of times users clicked on the search result for the site URL on the specific date.
impressionsINT64The number of times the site URL was displayed in the search results to users on the specific date.
ctrFLOAT64The click-through rate (CTR) represents the percentage of total impressions that resulted in a click to the site URL.
positionFLOAT64The average position of the site URL in the search results pages for the specific date.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
site_urlSTRINGThe URL of the site for which search analytics data is being provided.
search_typeSTRINGThe type of search performed (e.g., web search, image search, video search).
dateDATEThe date for which the search analytics data is provided.
deviceSTRINGThe type of device used by the user for the search query (e.g., desktop, mobile).
clicksINT64The total number of times a user clicked on a search result linking to the target site.
impressionsINT64The total number of times a user saw a link to the target site in search results.
ctrFLOAT64Click-through rate represents the ratio of clicks to impressions, showing the effectiveness of your site in attracting clicks from search results.
positionFLOAT64The average position of the site's URLs in search results for the given query or queries.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
site_urlSTRINGThe URL of the site for which the search analytics data is being reported.
search_typeSTRINGThe type of search query that led to the page being displayed in search results.
dateDATEThe date for which the search analytics data is reported.
pageSTRINGThe URL of the specific page being analyzed for search analytics data.
clicksINT64The number of times a user clicked on the search result linking to the page.
impressionsINT64The number of times a page from the site appeared in the search results viewed by users.
ctrFLOAT64Click-through rate (CTR) is the ratio of clicks to impressions, indicating the effectiveness of the page in generating clicks.
positionFLOAT64The average position at which the page appeared in search results.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
site_urlSTRINGThe URL of the site for which the search analytics data is captured.
search_typeSTRINGThe type of search result (e.g., web, image, video) for the specific query.
dateDATEThe date for which the search analytics data is recorded.
querySTRINGThe search query for which the search analytics data is recorded.
clicksINT64The number of times users clicked on the search result for the specific query.
impressionsINT64The number of times the search result was displayed for the specific query.
ctrFLOAT64The click-through rate (percentage) for the specific query, calculated as clicks divided by impressions.
positionFLOAT64The average position at which the search result appeared for the specific query.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
site_urlSTRINGThe URL of the website being monitored.
search_typeSTRINGThe type of search (e.g., web, image, video).
dateDATEThe date of the search data collected.
countrySTRINGThe country where the search is made.
deviceSTRINGThe device type used for the search (e.g., desktop, mobile).
pageSTRINGThe page URL on which the keyword appears in search results.
querySTRINGThe search query used to find the site.
clicksINT64The number of clicks for the keyword on a specific page.
impressionsINT64The number of times the keyword appeared in search results.
ctrFLOAT64Click-through rate which is the percentage of clicks divided by impressions.
positionFLOAT64The average position of the keyword on search results pages.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
site_urlSTRINGThe URL of the website for which the search analytics data is retrieved.
search_typeSTRINGThe type of search conducted (e.g., web, image, video).
dateDATEThe date when the search data was recorded.
countrySTRINGThe country from which the search query originated.
deviceSTRINGThe device type used for the search query (e.g., desktop, mobile).
querySTRINGThe search query used by the user.
clicksINT64The number of times users clicked on your website link in search results.
impressionsINT64The number of times your website link appeared in search results.
ctrFLOAT64Click-through rate: Number of clicks divided by the number of impressions.
positionFLOAT64The average position of your website link in search results.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
site_urlSTRINGThe URL of the site for which the search analytics data is recorded.
search_typeSTRINGThe type of search (e.g., web search, image search) that generated the analytics data.
dateDATEThe date for which the search analytics data is recorded.
countrySTRINGThe country from which the search originated.
deviceSTRINGThe type of device used by the user during the search (e.g., desktop, mobile).
querySTRINGThe search query used by the user to find the site in search results.
clicksINT64The number of times users clicked on the search result linking to the site.
impressionsINT64The number of times the site was shown in search results to users.
ctrFLOAT64Click-through rate represents the percentage of users who clicked on the site's link after seeing it in search results.
positionFLOAT64The average ranking position of the site in search results.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
site_urlSTRINGThe URL of the website for which the search analytics data is being reported.
search_typeSTRINGThe type of search (e.g., web, image, video) that led users to the website.
dateDATEThe date when the search data was recorded.
countrySTRINGThe country from which the search originated.
pageSTRINGThe specific page URL within the website that appeared in search results.
deviceSTRINGThe type of device used by the user for the search query (e.g., desktop, mobile).
clicksINT64The total number of times users clicked on search results that led to the linked website.
impressionsINT64The total number of times a search result from the linked website was shown to users.
ctrFLOAT64Click-through rate: The percentage of clicks out of the total impressions for a given search query.
positionFLOAT64The average position at which the website's search results appeared to users.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
site_urlSTRINGThe URL of the page on the site that is being reported.
search_typeSTRINGThe type of search query that led to the page being shown.
dateDATEThe date for which the data is being reported.
countrySTRINGThe country from which the search traffic originated.
deviceSTRINGThe type of device used by the searcher (e.g., desktop, mobile).
clicksINT64The total number of clicks received by the page from search results.
impressionsINT64The total number of times the page appeared in search results.
ctrFLOAT64The click-through rate, i.e., the percentage of total impressions that resulted in clicks.
positionFLOAT64The average position at which the page appeared in search results.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
site_urlSTRINGThe URL of the site being analyzed
search_typeSTRINGThe type of search (e.g., web, image, video)
dateDATEThe date of the search analytics data
countrySTRINGThe country where the search took place
deviceSTRINGThe type of device used for the search (e.g., mobile, desktop)
clicksINT64The number of times users clicked on a search result linking to the site
impressionsINT64The number of times the site appeared in search results
ctrFLOAT64Click-through rate calculated as clicks divided by impressions
positionFLOAT64The average position of the site in search results
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
pathSTRINGPath to the sitemap file
last_submittedTIMESTAMPTimestamp when the sitemap was last submitted
is_pendingBOOLFlag indicating if the sitemap is pending for processing
is_sitemaps_indexBOOLFlag indicating if the data represents a sitemap index
typeSTRINGType of the sitemap
last_downloadedTIMESTAMPTimestamp when the sitemap was last downloaded
warningsSTRINGWarnings encountered while processing the sitemaps
errorsSTRINGErrors encountered while processing the sitemaps
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: sitemaps__contents

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRINGType of the sitemap content
submittedSTRINGNumber of submitted sitemap URLs
indexedSTRINGNumber of indexed sitemap URLs
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
site_urlSTRINGThe URL of the site data being fetched
permission_levelSTRINGThe user's permission level for the site (owner, full, restricted, etc.)
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

How the Google Search Console sync works

After the first load, Kaivo keeps your BigQuery warehouse up to date for you. Where Google Search Console supports it, each sync pulls only new and changed records so it stays fast; otherwise it refreshes the whole table. Every record keeps its original ID, so you won't get duplicate rows.

Frequently asked questions

How long does the initial sync take for Google Search Console?

It depends on how much history is in your Google Search Console account. Most initial syncs finish within minutes, while large accounts can take a few hours. After that, syncs only fetch new and changed records, so they're much faster.

Can I sync only some tables or columns?

Yes. You pick which tables to sync when you set up the connection and can change the selection later. Tables you don't select are never copied to your warehouse.

What happens when Google Search Console's schema changes?

New fields are never added automatically. You choose which fields to sync, so data you haven't selected (sensitive personal data, for example) never lands in your warehouse. When a new field appears, it becomes available for you to add. What happens to removed or renamed fields depends on a table's sync mode: full-refresh tables always match what's currently in Google Search Console, so dropped fields disappear, while incremental tables keep their existing columns and history, so an old field stays and newly added fields fill in over time.

How do I handle GDPR or data deletion requests?

Your data lives in your own Kaivo-managed BigQuery warehouse, so the most direct option is to delete or anonymise specific records right in BigQuery. If you delete data in Google Search Console instead, full-refresh tables drop it on the next sync, while incremental tables keep it, so you would remove the row in BigQuery or ask us to run a full refresh. To remove everything, delete the Google Search Console connector in Kaivo and all of its synced data is deleted with it.

Common use cases for Google Search Console data

Query performance

Use search_analytics_by_query to track clicks, impressions, and position for your top search terms.

Page performance

Analyse search_analytics_by_page to see which pages earn the most organic traffic.

Report on search_analytics_by_date to monitor how organic visibility changes.

Device and country

Break performance down by device and country to find where to focus.

Use Google Search Console data in your AI and BI tools

Once Google Search Console data lands in your Kaivo-managed BigQuery warehouse, you can explore it with AI tools or any BI tool that connects to BigQuery. Here's how the most common destinations work with Google Search Console data.

Claude

Use Kaivo's MCP server to give Claude secure, workspace-scoped access to your data. Setup guide →

Power BI

Microsoft's BI tool with a native BigQuery connector. Supports direct query and scheduled refresh. Setup guide →

Data Studio

Free Google BI tool with native BigQuery support. One-click connection to your Kaivo warehouse; great for SMB teams on Google Workspace. Setup guide →

Tableau

The premium analytics standard, with native BigQuery integration. Setup guide →

Google Sheets

Use Connected Sheets to query BigQuery directly from a spreadsheet, with no SQL. Setup guide →

Excel

Connect via Power Query's BigQuery connector. Setup guide →

Metabase

Open-source BI tool with strong BigQuery support. Setup guide →

See our pricing page for Google Search Console connector pricing and plan details.

Was this helpful?

Still need help? Share an idea